diff --git a/src/components/production/ProductionDashboard/types.ts b/src/components/production/ProductionDashboard/types.ts index 267b232c..87903135 100644 --- a/src/components/production/ProductionDashboard/types.ts +++ b/src/components/production/ProductionDashboard/types.ts @@ -33,6 +33,7 @@ export interface WorkOrder { salesOrderNo?: string; // 수주번호 salesManager?: string; // 수주 담당자 (orders.options.manager_name) managerPhone?: string; // 담당자 연락처 (orders.client_contact) + assigneeId?: number | null; // 주 담당자 ID (work_orders.assignee_id) teamId?: number | null; // 배정 부서 ID (work_orders.team_id) teamName?: string; // 배정 부서명 processDepartment?: string; // 공정 담당부서명 (processes.department) diff --git a/src/components/production/WorkerScreen/actions.ts b/src/components/production/WorkerScreen/actions.ts index 084b6644..ac554c95 100644 --- a/src/components/production/WorkerScreen/actions.ts +++ b/src/components/production/WorkerScreen/actions.ts @@ -200,6 +200,7 @@ function transformToWorkerScreenFormat(api: WorkOrderApiItem): WorkOrder { salesOrderNo: api.sales_order?.order_no || undefined, salesManager: api.sales_order?.options?.manager_name as string || undefined, managerPhone: api.sales_order?.client_contact || undefined, + assigneeId: api.assignee?.id ?? null, teamId: api.team_id ?? null, teamName: api.team?.name || undefined, processDepartment: api.process?.department || undefined, @@ -251,16 +252,16 @@ export async function completeWorkOrder( return { success: true, lotNo }; } -// ===== 작업지시 생산일자 업데이트 ===== -export async function updateWorkOrderScheduledDate( +// ===== 작업지시 작업정보 업데이트 (생산일자/부서/담당자) ===== +export async function updateWorkOrderInfo( id: string, - scheduledDate: string + data: { scheduled_date?: string; team_id?: number | null; assignee_id?: number | null } ): Promise<{ success: boolean; error?: string }> { const result = await executeServerAction({ url: `${API_URL}/api/v1/work-orders/${id}`, method: 'PUT', - body: { scheduled_date: scheduledDate }, - errorMessage: '생산일자 저장에 실패했습니다.', + body: data, + errorMessage: '작업정보 저장에 실패했습니다.', }); return { success: result.success, error: result.error }; } diff --git a/src/components/production/WorkerScreen/index.tsx b/src/components/production/WorkerScreen/index.tsx index 5a4a2eaa..10ffea83 100644 --- a/src/components/production/WorkerScreen/index.tsx +++ b/src/components/production/WorkerScreen/index.tsx @@ -49,7 +49,7 @@ import { Button } from '@/components/ui/button'; import { PageLayout } from '@/components/organisms/PageLayout'; import { cn } from '@/lib/utils'; import { toast } from 'sonner'; -import { getMyWorkOrders, completeWorkOrder, saveItemInspection, getWorkOrderInspectionData, saveInspectionDocument, getInspectionTemplate, getStepProgress, toggleStepProgress, deleteMaterialInput, updateMaterialInput, getDepartments, getDepartmentUsers, updateWorkOrderScheduledDate } from './actions'; +import { getMyWorkOrders, completeWorkOrder, saveItemInspection, getWorkOrderInspectionData, saveInspectionDocument, getInspectionTemplate, getStepProgress, toggleStepProgress, deleteMaterialInput, updateMaterialInput, getDepartments, getDepartmentUsers, updateWorkOrderInfo } from './actions'; import type { StepProgressItem, DepartmentOption, DepartmentUser } from './actions'; import type { InspectionTemplateData } from './types'; import { getProcessList } from '@/components/process-management/actions'; @@ -876,6 +876,8 @@ export default function WorkerScreen() { } else { setDepartmentId(''); } + // 생산담당자 세팅 + setProductionManagerId(apiOrder.assigneeId ? String(apiOrder.assigneeId) : ''); // 생산일자 세팅 setProductionDate(apiOrder.scheduledDate || ''); } else { @@ -1369,7 +1371,7 @@ export default function WorkerScreen() { // 4. 생산일자 자동 저장 (검사 완료 시점 = 생산일자) if (selectedOrder) { const today = new Date().toISOString().slice(0, 10); - await updateWorkOrderScheduledDate(selectedOrder.id, today); + await updateWorkOrderInfo(selectedOrder.id, { scheduled_date: today }); setProductionDate(today); } @@ -1577,7 +1579,12 @@ export default function WorkerScreen() { { + setProductionManagerId(v); + if (selectedOrder && v) { + updateWorkOrderInfo(selectedOrder.id, { assignee_id: Number(v) }); + } + }} disabled={!departmentId} > @@ -1615,7 +1627,12 @@ export default function WorkerScreen() { setProductionDate(date)} + onChange={(date) => { + setProductionDate(date); + if (selectedOrder && date) { + updateWorkOrderInfo(selectedOrder.id, { scheduled_date: date }); + } + }} />