import type { QcWorkOrder } from '@/api/qc-work-order' import { resolveGateWorkOrderForSampleGroup } from '@/utils/qc-work-order-groups' export type InboundSampleSpecialMarkTarget = { receptionSource: 'cell_storage' | 'research_donation' protocolSampleId: string sampleCode: string isSpecial: boolean specialRemark: string } export function canEditInboundSampleSpecialMark(row: QcWorkOrder): boolean { const source = (row.receptionSource || '').trim() if (source !== 'cell_storage' && source !== 'research_donation') return false return !!(row.protocolSampleId || '').trim() } export function resolveInboundSampleSpecialMarkTarget( workOrders: QcWorkOrder[] ): InboundSampleSpecialMarkTarget | null { const gate = resolveGateWorkOrderForSampleGroup(workOrders) if (!gate || !canEditInboundSampleSpecialMark(gate)) return null const source = (gate.receptionSource || 'cell_storage').trim() as | 'cell_storage' | 'research_donation' return { receptionSource: source, protocolSampleId: String(gate.protocolSampleId || '').trim(), sampleCode: String(gate.sampleCode || '').trim(), isSpecial: !!gate.isSpecial, specialRemark: String(gate.specialRemark || '').trim() } } export function resolveInboundSampleSpecialMarkTargetFromRow( row: QcWorkOrder ): InboundSampleSpecialMarkTarget | null { if (!canEditInboundSampleSpecialMark(row)) return null const source = (row.receptionSource || 'cell_storage').trim() as | 'cell_storage' | 'research_donation' return { receptionSource: source, protocolSampleId: String(row.protocolSampleId || '').trim(), sampleCode: String(row.sampleCode || '').trim(), isSpecial: !!row.isSpecial, specialRemark: String(row.specialRemark || '').trim() } }