diff --git a/src/components/production/ProductionDashboard/actions.ts b/src/components/production/ProductionDashboard/actions.ts
index 1003f69e..29127f48 100644
--- a/src/components/production/ProductionDashboard/actions.ts
+++ b/src/components/production/ProductionDashboard/actions.ts
@@ -23,10 +23,11 @@ interface WorkOrderApiItem {
created_at: string;
sales_order?: {
id: number; order_no: string; client_id?: number; client_name?: string;
+ item?: { id: number; code: string; name: string } | null;
client?: { id: number; name: string }; root_nodes_count?: number;
};
assignee?: { id: number; name: string };
- items?: { id: number; item_name: string; quantity: number }[];
+ items?: { id: number; item_name: string; item_id?: number | null; item?: { id: number; code: string; name: string } | null; quantity: number }[];
}
// ===== 상태 변환 =====
@@ -41,6 +42,7 @@ function mapApiStatus(status: WorkOrderApiItem['status']): 'waiting' | 'inProgre
// ===== API → WorkOrder 변환 =====
function transformToProductionFormat(api: WorkOrderApiItem): WorkOrder {
const totalQuantity = (api.items || []).reduce((sum, item) => sum + Number(item.quantity), 0);
+ const productCode = api.sales_order?.item?.code || '-';
const productName = api.items?.[0]?.item_name || '-';
const dueDate = api.scheduled_date || '';
const today = new Date();
@@ -57,6 +59,7 @@ function transformToProductionFormat(api: WorkOrderApiItem): WorkOrder {
return {
id: String(api.id),
orderNo: api.work_order_no,
+ productCode,
productName,
processCode: api.process?.process_code || '-',
processName: api.process?.process_name || '-',
diff --git a/src/components/production/ProductionDashboard/types.ts b/src/components/production/ProductionDashboard/types.ts
index bf3abc27..1fa899b0 100644
--- a/src/components/production/ProductionDashboard/types.ts
+++ b/src/components/production/ProductionDashboard/types.ts
@@ -14,6 +14,7 @@ export interface ProcessOption {
export interface WorkOrder {
id: string;
orderNo: string; // KD-WO-251216-01
+ productCode: string; // 제품코드 (KQTS01 등)
productName: string; // 스크린 서터 (표준형) - 추가
processCode: string; // 공정 코드 (P-001, P-002, ...)
processName: string; // 공정명 (슬랫, 스크린, 절곡, ...)
diff --git a/src/components/production/WorkerScreen/WorkOrderListPanel.tsx b/src/components/production/WorkerScreen/WorkOrderListPanel.tsx
index e9f0a881..df90be9f 100644
--- a/src/components/production/WorkerScreen/WorkOrderListPanel.tsx
+++ b/src/components/production/WorkerScreen/WorkOrderListPanel.tsx
@@ -74,8 +74,8 @@ export function WorkOrderListPanel({
- {/* 품목명 */}
-
{order.productName}
+ {/* 제품코드 - 제품명 */}
+ {order.productCode} - {order.productName}
{/* 현장명 + 수량 */}
diff --git a/src/components/production/WorkerScreen/actions.ts b/src/components/production/WorkerScreen/actions.ts
index d63dcb2e..a526ee3b 100644
--- a/src/components/production/WorkerScreen/actions.ts
+++ b/src/components/production/WorkerScreen/actions.ts
@@ -38,6 +38,7 @@ interface WorkOrderApiItem {
sales_order?: {
id: number;
order_no: string;
+ item?: { id: number; code: string; name: string } | null;
client?: { id: number; name: string };
client_contact?: string;
options?: { manager_name?: string; [key: string]: unknown };
@@ -50,6 +51,8 @@ interface WorkOrderApiItem {
items?: {
id: number;
item_name: string;
+ item_id?: number | null;
+ item?: { id: number; code: string; name: string } | null;
quantity: number;
specification?: string | null;
options?: Record | null;
@@ -89,6 +92,7 @@ function mapApiStatus(status: WorkOrderApiItem['status']): WorkOrderStatus {
// ===== API → WorkOrder 변환 =====
function transformToWorkerScreenFormat(api: WorkOrderApiItem): WorkOrder {
const totalQuantity = (api.items || []).reduce((sum, item) => sum + Number(item.quantity), 0);
+ const productCode = api.sales_order?.item?.code || '-';
const productName = api.items?.[0]?.item_name || '-';
// 납기일 계산 (지연 여부)
@@ -173,6 +177,7 @@ function transformToWorkerScreenFormat(api: WorkOrderApiItem): WorkOrder {
return {
id: String(api.id),
orderNo: api.work_order_no,
+ productCode,
productName,
processCode: processInfo.code,
processName: processInfo.name,
diff --git a/src/components/production/WorkerScreen/index.tsx b/src/components/production/WorkerScreen/index.tsx
index 8ffa88fd..848966f3 100644
--- a/src/components/production/WorkerScreen/index.tsx
+++ b/src/components/production/WorkerScreen/index.tsx
@@ -714,7 +714,7 @@ export default function WorkerScreen() {
workOrderId: selectedOrder.id,
itemNo: index + 1,
itemCode: selectedOrder.orderNo || '-',
- itemName: itemSummary,
+ itemName: `${selectedOrder.productCode !== '-' ? selectedOrder.productCode + ' - ' : ''}${itemSummary}`,
floor: (opts.floor as string) || '-',
code: (opts.code as string) || '-',
width: (opts.width as number) || 0,
@@ -774,7 +774,7 @@ export default function WorkerScreen() {
workOrderId: selectedOrder.id,
itemNo: 1,
itemCode: selectedOrder.orderNo || '-',
- itemName: selectedOrder.productName || '-',
+ itemName: `${selectedOrder.productCode !== '-' ? selectedOrder.productCode + ' - ' : ''}${selectedOrder.productName || '-'}`,
floor: '-',
code: '-',
width: 0,
@@ -940,6 +940,7 @@ export default function WorkerScreen() {
const syntheticOrder: WorkOrder = {
id: item.id,
orderNo: item.itemCode,
+ productCode: item.itemCode,
productName: item.itemName,
processCode: item.processType,
processName: PROCESS_TAB_LABELS[item.processType],
@@ -999,6 +1000,7 @@ export default function WorkerScreen() {
const syntheticOrder: WorkOrder = {
id: mockItem.id,
orderNo: mockItem.itemCode,
+ productCode: mockItem.itemCode,
productName: mockItem.itemName,
processCode: mockItem.processType,
processName: PROCESS_TAB_LABELS[mockItem.processType],
@@ -1239,6 +1241,7 @@ export default function WorkerScreen() {
return {
id: mockItem.id,
orderNo: mockItem.itemCode,
+ productCode: mockItem.itemCode,
productName: mockItem.itemName,
processCode: mockItem.processType,
processName: PROCESS_TAB_LABELS[mockItem.processType],