fix(WEB): 작업지시 상세/작업자 화면 개소(층/부호) 표시 수정

- WorkOrderDetail: 개소 그룹핑을 order_node_id → floor_code/symbol_code 기반으로 변경
- WorkerScreen: 아이템 그룹핑을 floor_code/symbol_code 기반으로 변경, '미지정' 라벨 제거
- types.ts: source_order_item에 floor_code/symbol_code 필드 추가, floorCode 변환 로직 적용
This commit is contained in:
2026-02-10 20:13:11 +09:00
parent e508014224
commit de2b7dd6ce
3 changed files with 17 additions and 9 deletions

View File

@@ -46,6 +46,8 @@ interface WorkOrderApiItem {
source_order_item?: {
id: number;
order_node_id: number | null;
floor_code?: string | null;
symbol_code?: string | null;
node?: { id: number; name: string; code: string } | null;
} | null;
}[];
@@ -111,12 +113,15 @@ function transformToWorkerScreenFormat(api: WorkOrderApiItem): WorkOrder {
processInfo = { code: rawProcessCode || 'unknown', name: rawProcessName || '알수없음' };
}
// 아이템을 개소(node)별로 그룹핑
// 아이템을 개소(floor_code/symbol_code)별로 그룹핑
const nodeMap = new Map<string, { nodeId: number | null; nodeName: string; items: typeof api.items }>();
for (const item of (api.items || [])) {
const nodeId = item.source_order_item?.order_node_id ?? null;
const nodeName = item.source_order_item?.node?.name || '미지정';
const key = nodeId != null ? String(nodeId) : 'unassigned';
const floorCode = item.source_order_item?.floor_code;
const symbolCode = item.source_order_item?.symbol_code;
const floorLabel = [floorCode, symbolCode].filter(Boolean).join('/');
const nodeName = floorLabel || item.source_order_item?.node?.name || '미지정';
const key = floorLabel || (nodeId != null ? String(nodeId) : `unassigned-${item.id}`);
if (!nodeMap.has(key)) {
nodeMap.set(key, { nodeId, nodeName, items: [] });
}