From 9a8196a395e8bc9d85432a688dd2ff00c2b368a6 Mon Sep 17 00:00:00 2001 From: chpark Date: Thu, 30 Apr 2026 10:36:21 +0900 Subject: [PATCH] =?UTF-8?q?RPS=20=EB=B8=8C=EB=9E=9C=EB=94=A9=20=C2=B7=20CO?= =?UTF-8?q?MPANY=5F16=20=EB=8B=A8=EB=8F=85=20=EC=9A=B4=EC=98=81=20=C2=B7?= =?UTF-8?q?=20Pipeline=20=EB=94=94=EC=9E=90=EC=9D=B8=20=EC=B1=84=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 주요 변경: - 회사 라우트 정리: COMPANY_7/8/9/10/29/30 6개 폴더 삭제, COMPANY_16(하이큐마그)만 유지 - 모듈 수 17,470 → 16,121, /main 컴파일 시간 110s → 53s - 브랜딩: VEXPLOR → RPS (로고/파비콘/타이틀/메타데이터/푸터 회사정보 전부 교체) - 로그인 페이지 fito 스타일 리디자인 (다크 그라디언트 + 글래스 카드 + 격자 배경 + 하단 푸터) - AppLayout/TabBar/ThemeToggle/ThemeProvider/Logo Pipeline 디자인 채용 - 6색 컬러 테마 시스템 (blue/teal/green/purple/red/dark) + 좌→우 커튼 전환 애니메이션 - 우상단 모드 전환 알약 버튼 (관리자만 노출) - 시안톤 탭 + Teal 활성 탭, 130px 컴팩트 너비 - 도커 포트 충돌 회피: 백엔드 8080→8090, 프론트 9771→9781, 컨테이너명 rps_backend/rps-front - DB: vexplor_rps 신규 생성 후 vexplor_dev 데이터 이관, DATABASE_URL 변경 - useAuth: SUPER_ADMIN userType도 isAdmin으로 인정 Co-Authored-By: Claude Opus 4.7 (1M context) --- docker/dev/docker-compose.backend.mac.yml | 6 +- docker/dev/docker-compose.frontend.mac.yml | 8 +- frontend/app/(auth)/login/page.tsx | 90 +- .../design/change-management/page.tsx | 1524 --------- .../COMPANY_10/design/design-request/page.tsx | 781 ----- .../(main)/COMPANY_10/design/my-work/page.tsx | 1958 ----------- .../(main)/COMPANY_10/design/project/page.tsx | 1501 --------- .../design/task-management/page.tsx | 1288 -------- .../(main)/COMPANY_10/equipment/info/page.tsx | 1126 ------- .../equipment/inspection-record/page.tsx | 369 --- .../equipment/plc-settings/page.tsx | 501 --- .../logistics/inbound-outbound/page.tsx | 432 --- .../(main)/COMPANY_10/logistics/info/page.tsx | 940 ------ .../COMPANY_10/logistics/inventory/page.tsx | 953 ------ .../logistics/material-status/page.tsx | 661 ---- .../COMPANY_10/logistics/outbound/page.tsx | 1709 ---------- .../COMPANY_10/logistics/packaging/page.tsx | 1126 ------- .../COMPANY_10/logistics/receiving/page.tsx | 1785 ---------- .../COMPANY_10/logistics/warehouse/page.tsx | 1650 ---------- .../COMPANY_10/master-data/company/page.tsx | 806 ----- .../master-data/department/page.tsx | 821 ----- .../COMPANY_10/master-data/item-info/page.tsx | 902 ------ .../COMPANY_10/master-data/options/page.tsx | 223 -- .../app/(main)/COMPANY_10/mold/info/page.tsx | 1509 --------- .../COMPANY_10/monitoring/equipment/page.tsx | 666 ---- .../COMPANY_10/monitoring/production/page.tsx | 557 ---- .../COMPANY_10/monitoring/quality/page.tsx | 426 --- .../outsourcing/subcontractor-item/page.tsx | 629 ---- .../outsourcing/subcontractor/page.tsx | 1417 -------- .../_components/common/BarcodeScanModal.tsx | 420 --- .../pop/_components/common/ConfirmModal.tsx | 82 - .../pop/_components/common/EquipmentModal.tsx | 195 -- .../pop/_components/common/PopButton.tsx | 48 - .../pop/_components/common/PopCard.tsx | 38 - .../pop/_components/common/PopCardGrid.tsx | 77 - .../pop/_components/common/PopModal.tsx | 88 - .../pop/_components/common/PopShell.tsx | 445 --- .../_components/common/SimpleKeypadModal.tsx | 188 -- .../pop/_components/common/theme.ts | 107 - .../pop/_components/common/useCartSync.ts | 27 - .../pop/_components/inbound/ChangeInbound.tsx | 598 ---- .../pop/_components/inbound/ErrorInbound.tsx | 598 ---- .../pop/_components/inbound/InboundCart.tsx | 737 ----- .../_components/inbound/InboundCartPage.tsx | 1475 --------- .../pop/_components/inbound/InboundManage.tsx | 890 ----- .../_components/inbound/InspectionModal.tsx | 727 ----- .../_components/inbound/LoadingUnitModal.tsx | 178 - .../_components/inbound/NumberPadModal.tsx | 596 ---- .../_components/inbound/PackagingModal.tsx | 122 - .../_components/inbound/ProductionInbound.tsx | 679 ---- .../_components/inbound/PurchaseInbound.tsx | 684 ---- .../_components/inbound/RecoveryInbound.tsx | 598 ---- .../inbound/ReturnExternalInbound.tsx | 601 ---- .../inbound/ReturnInternalInbound.tsx | 598 ---- .../inbound/SubcontractorInbound.tsx | 598 ---- .../_components/inbound/SuppliedInbound.tsx | 598 ---- .../pop/_components/inbound/SupplierModal.tsx | 329 -- .../pop/_components/outbound/EtcOutbound.tsx | 564 ---- .../_components/outbound/OutboundCartPage.tsx | 1244 ------- .../_components/outbound/OutboundManage.tsx | 876 ----- .../outbound/ProductionOutbound.tsx | 550 ---- .../_components/outbound/ReturnOutbound.tsx | 564 ---- .../_components/outbound/SalesOutbound.tsx | 593 ---- .../outbound/SubcontractorOutbound.tsx | 550 ---- .../_components/outbound/SuppliedOutbound.tsx | 550 ---- .../production/AcceptProcessModal.tsx | 184 -- .../production/DefectTypeModal.tsx | 365 --- .../production/ProcessDetailModal.tsx | 230 -- .../_components/production/ProcessTimer.tsx | 243 -- .../_components/production/ProcessWork.tsx | 2858 ----------------- .../_components/production/WorkOrderList.tsx | 1589 --------- .../sections/MaterialInputSection.tsx | 370 --- .../pop/_components/production/types.ts | 234 -- .../_components/production/useProcessData.ts | 229 -- .../COMPANY_10/pop/inbound/cart/page.tsx | 28 - .../COMPANY_10/pop/inbound/change/page.tsx | 34 - .../COMPANY_10/pop/inbound/error/page.tsx | 34 - .../pop/inbound/inbound-manage/page.tsx | 7 - .../(main)/COMPANY_10/pop/inbound/page.tsx | 440 --- .../pop/inbound/production/page.tsx | 34 - .../COMPANY_10/pop/inbound/purchase/page.tsx | 34 - .../COMPANY_10/pop/inbound/recovery/page.tsx | 34 - .../pop/inbound/return-external/page.tsx | 34 - .../pop/inbound/return-internal/page.tsx | 34 - .../pop/inbound/subcontractor/page.tsx | 34 - .../COMPANY_10/pop/inbound/supplied/page.tsx | 34 - frontend/app/(main)/COMPANY_10/pop/layout.tsx | 19 - .../app/(main)/COMPANY_10/pop/main/page.tsx | 147 - .../COMPANY_10/pop/outbound/cart/page.tsx | 28 - .../COMPANY_10/pop/outbound/etc/page.tsx | 34 - .../pop/outbound/outbound-manage/page.tsx | 7 - .../(main)/COMPANY_10/pop/outbound/page.tsx | 404 --- .../pop/outbound/production/page.tsx | 34 - .../COMPANY_10/pop/outbound/return/page.tsx | 34 - .../COMPANY_10/pop/outbound/sales/page.tsx | 34 - .../pop/outbound/subcontractor/page.tsx | 34 - .../COMPANY_10/pop/outbound/supplied/page.tsx | 34 - .../(main)/COMPANY_10/pop/production/page.tsx | 244 -- .../pop/production/process/page.tsx | 328 -- .../pop/production/work/[processId]/page.tsx | 71 - .../(main)/COMPANY_10/production/bom/page.tsx | 2548 --------------- .../production/plan-management/page.tsx | 2136 ------------ .../process-info/ItemRoutingTab.tsx | 1134 ------- .../process-info/ProcessMasterTab.tsx | 684 ---- .../process-info/ProcessWorkStandardTab.tsx | 17 - .../production/process-info/page.tsx | 155 - .../COMPANY_10/production/result/page.tsx | 775 ----- .../WorkStandardEditModal.tsx | 1784 ---------- .../production/work-instruction/page.tsx | 1057 ------ .../(main)/COMPANY_10/purchase/order/page.tsx | 1323 -------- .../purchase/purchase-item/page.tsx | 2044 ------------ .../COMPANY_10/purchase/supplier/page.tsx | 2800 ---------------- .../quality/inspection-result/page.tsx | 360 --- .../COMPANY_10/quality/inspection/page.tsx | 2556 --------------- .../quality/item-inspection/page.tsx | 1819 ----------- .../(main)/COMPANY_10/sales/claim/page.tsx | 932 ------ .../(main)/COMPANY_10/sales/customer/page.tsx | 2789 ---------------- .../(main)/COMPANY_10/sales/order/page.tsx | 1957 ----------- .../(main)/COMPANY_10/sales/quote/page.tsx | 1064 ------ .../COMPANY_10/sales/sales-item/page.tsx | 2025 ------------ .../COMPANY_10/sales/shipping-order/page.tsx | 947 ------ .../COMPANY_10/sales/shipping-plan/page.tsx | 471 --- .../COMPANY_16/logistics/outbound/page.tsx | 2 +- .../COMPANY_16/quality/inspection/page.tsx | 2 +- .../(main)/COMPANY_16/sales/quote/page.tsx | 2 +- .../design/change-management/page.tsx | 1524 --------- .../COMPANY_29/design/design-request/page.tsx | 781 ----- .../(main)/COMPANY_29/design/my-work/page.tsx | 1958 ----------- .../(main)/COMPANY_29/design/project/page.tsx | 1501 --------- .../design/task-management/page.tsx | 1288 -------- .../(main)/COMPANY_29/equipment/info/page.tsx | 1126 ------- .../equipment/inspection-record/page.tsx | 369 --- .../equipment/plc-settings/page.tsx | 501 --- .../logistics/inbound-outbound/page.tsx | 432 --- .../(main)/COMPANY_29/logistics/info/page.tsx | 940 ------ .../COMPANY_29/logistics/inventory/page.tsx | 953 ------ .../logistics/material-status/page.tsx | 661 ---- .../COMPANY_29/logistics/outbound/page.tsx | 1709 ---------- .../COMPANY_29/logistics/packaging/page.tsx | 1126 ------- .../COMPANY_29/logistics/receiving/page.tsx | 1785 ---------- .../COMPANY_29/logistics/warehouse/page.tsx | 1650 ---------- .../COMPANY_29/master-data/company/page.tsx | 806 ----- .../master-data/department/page.tsx | 821 ----- .../COMPANY_29/master-data/item-info/page.tsx | 902 ------ .../COMPANY_29/master-data/options/page.tsx | 223 -- .../app/(main)/COMPANY_29/mold/info/page.tsx | 1509 --------- .../COMPANY_29/monitoring/equipment/page.tsx | 666 ---- .../COMPANY_29/monitoring/production/page.tsx | 557 ---- .../COMPANY_29/monitoring/quality/page.tsx | 426 --- .../outsourcing/subcontractor-item/page.tsx | 629 ---- .../outsourcing/subcontractor/page.tsx | 1417 -------- .../_components/common/BarcodeScanModal.tsx | 420 --- .../pop/_components/common/ConfirmModal.tsx | 82 - .../pop/_components/common/EquipmentModal.tsx | 195 -- .../pop/_components/common/PopButton.tsx | 48 - .../pop/_components/common/PopCard.tsx | 38 - .../pop/_components/common/PopCardGrid.tsx | 77 - .../pop/_components/common/PopModal.tsx | 88 - .../pop/_components/common/PopShell.tsx | 445 --- .../_components/common/SimpleKeypadModal.tsx | 188 -- .../pop/_components/common/theme.ts | 107 - .../pop/_components/common/useCartSync.ts | 27 - .../pop/_components/inbound/ChangeInbound.tsx | 598 ---- .../pop/_components/inbound/ErrorInbound.tsx | 598 ---- .../pop/_components/inbound/InboundCart.tsx | 737 ----- .../_components/inbound/InboundCartPage.tsx | 1475 --------- .../pop/_components/inbound/InboundManage.tsx | 890 ----- .../_components/inbound/InspectionModal.tsx | 727 ----- .../_components/inbound/LoadingUnitModal.tsx | 178 - .../_components/inbound/NumberPadModal.tsx | 596 ---- .../_components/inbound/PackagingModal.tsx | 122 - .../_components/inbound/ProductionInbound.tsx | 679 ---- .../_components/inbound/PurchaseInbound.tsx | 684 ---- .../_components/inbound/RecoveryInbound.tsx | 598 ---- .../inbound/ReturnExternalInbound.tsx | 601 ---- .../inbound/ReturnInternalInbound.tsx | 598 ---- .../inbound/SubcontractorInbound.tsx | 598 ---- .../_components/inbound/SuppliedInbound.tsx | 598 ---- .../pop/_components/inbound/SupplierModal.tsx | 329 -- .../pop/_components/outbound/EtcOutbound.tsx | 564 ---- .../_components/outbound/OutboundCartPage.tsx | 1244 ------- .../_components/outbound/OutboundManage.tsx | 876 ----- .../outbound/ProductionOutbound.tsx | 550 ---- .../_components/outbound/ReturnOutbound.tsx | 564 ---- .../_components/outbound/SalesOutbound.tsx | 593 ---- .../outbound/SubcontractorOutbound.tsx | 550 ---- .../_components/outbound/SuppliedOutbound.tsx | 550 ---- .../production/AcceptProcessModal.tsx | 184 -- .../production/DefectTypeModal.tsx | 365 --- .../production/ProcessDetailModal.tsx | 230 -- .../_components/production/ProcessTimer.tsx | 243 -- .../_components/production/ProcessWork.tsx | 2858 ----------------- .../_components/production/WorkOrderList.tsx | 1589 --------- .../sections/MaterialInputSection.tsx | 370 --- .../pop/_components/production/types.ts | 234 -- .../_components/production/useProcessData.ts | 229 -- .../COMPANY_29/pop/inbound/cart/page.tsx | 28 - .../COMPANY_29/pop/inbound/change/page.tsx | 34 - .../COMPANY_29/pop/inbound/error/page.tsx | 34 - .../pop/inbound/inbound-manage/page.tsx | 7 - .../(main)/COMPANY_29/pop/inbound/page.tsx | 440 --- .../pop/inbound/production/page.tsx | 34 - .../COMPANY_29/pop/inbound/purchase/page.tsx | 34 - .../COMPANY_29/pop/inbound/recovery/page.tsx | 34 - .../pop/inbound/return-external/page.tsx | 34 - .../pop/inbound/return-internal/page.tsx | 34 - .../pop/inbound/subcontractor/page.tsx | 34 - .../COMPANY_29/pop/inbound/supplied/page.tsx | 34 - frontend/app/(main)/COMPANY_29/pop/layout.tsx | 19 - .../app/(main)/COMPANY_29/pop/main/page.tsx | 147 - .../COMPANY_29/pop/outbound/cart/page.tsx | 28 - .../COMPANY_29/pop/outbound/etc/page.tsx | 34 - .../pop/outbound/outbound-manage/page.tsx | 7 - .../(main)/COMPANY_29/pop/outbound/page.tsx | 404 --- .../pop/outbound/production/page.tsx | 34 - .../COMPANY_29/pop/outbound/return/page.tsx | 34 - .../COMPANY_29/pop/outbound/sales/page.tsx | 34 - .../pop/outbound/subcontractor/page.tsx | 34 - .../COMPANY_29/pop/outbound/supplied/page.tsx | 34 - .../(main)/COMPANY_29/pop/production/page.tsx | 244 -- .../pop/production/process/page.tsx | 328 -- .../pop/production/work/[processId]/page.tsx | 71 - .../(main)/COMPANY_29/production/bom/page.tsx | 2548 --------------- .../production/plan-management/page.tsx | 2136 ------------ .../process-info/ItemRoutingTab.tsx | 1134 ------- .../process-info/ProcessMasterTab.tsx | 684 ---- .../process-info/ProcessWorkStandardTab.tsx | 17 - .../production/process-info/page.tsx | 155 - .../COMPANY_29/production/result/page.tsx | 775 ----- .../WorkStandardEditModal.tsx | 1784 ---------- .../production/work-instruction/page.tsx | 1057 ------ .../(main)/COMPANY_29/purchase/order/page.tsx | 1323 -------- .../purchase/purchase-item/page.tsx | 2044 ------------ .../COMPANY_29/purchase/supplier/page.tsx | 2800 ---------------- .../quality/inspection-result/page.tsx | 360 --- .../COMPANY_29/quality/inspection/page.tsx | 2556 --------------- .../quality/item-inspection/page.tsx | 1819 ----------- .../(main)/COMPANY_29/sales/claim/page.tsx | 932 ------ .../(main)/COMPANY_29/sales/customer/page.tsx | 2789 ---------------- .../(main)/COMPANY_29/sales/order/page.tsx | 1957 ----------- .../(main)/COMPANY_29/sales/quote/page.tsx | 1064 ------ .../COMPANY_29/sales/sales-item/page.tsx | 2025 ------------ .../COMPANY_29/sales/shipping-order/page.tsx | 947 ------ .../COMPANY_29/sales/shipping-plan/page.tsx | 471 --- .../design/change-management/page.tsx | 1524 --------- .../COMPANY_30/design/design-request/page.tsx | 781 ----- .../(main)/COMPANY_30/design/my-work/page.tsx | 1958 ----------- .../(main)/COMPANY_30/design/project/page.tsx | 1501 --------- .../design/task-management/page.tsx | 1288 -------- .../(main)/COMPANY_30/equipment/info/page.tsx | 1126 ------- .../equipment/inspection-record/page.tsx | 380 --- .../equipment/plc-settings/page.tsx | 501 --- .../COMPANY_30/kpi/production/daily/page.tsx | 185 -- .../logistics/inbound-outbound/page.tsx | 432 --- .../(main)/COMPANY_30/logistics/info/page.tsx | 940 ------ .../COMPANY_30/logistics/inventory/page.tsx | 962 ------ .../logistics/material-status/page.tsx | 681 ---- .../COMPANY_30/logistics/outbound/page.tsx | 1791 ----------- .../COMPANY_30/logistics/packaging/page.tsx | 1126 ------- .../COMPANY_30/logistics/receiving/page.tsx | 1817 ----------- .../COMPANY_30/logistics/warehouse/page.tsx | 1650 ---------- .../COMPANY_30/master-data/company/page.tsx | 806 ----- .../master-data/department/page.tsx | 821 ----- .../COMPANY_30/master-data/item-info/page.tsx | 923 ------ .../COMPANY_30/master-data/options/page.tsx | 223 -- .../app/(main)/COMPANY_30/mold/info/page.tsx | 1509 --------- .../COMPANY_30/monitoring/equipment/page.tsx | 711 ---- .../COMPANY_30/monitoring/production/page.tsx | 603 ---- .../COMPANY_30/monitoring/quality/page.tsx | 469 --- .../outsourcing/subcontractor-item/page.tsx | 636 ---- .../outsourcing/subcontractor/page.tsx | 1417 -------- .../_components/common/BarcodeScanModal.tsx | 420 --- .../pop/_components/common/ConfirmModal.tsx | 82 - .../pop/_components/common/EquipmentModal.tsx | 195 -- .../pop/_components/common/PopButton.tsx | 48 - .../pop/_components/common/PopCard.tsx | 38 - .../pop/_components/common/PopCardGrid.tsx | 77 - .../pop/_components/common/PopModal.tsx | 88 - .../pop/_components/common/PopShell.tsx | 445 --- .../_components/common/SimpleKeypadModal.tsx | 188 -- .../pop/_components/common/theme.ts | 107 - .../pop/_components/common/useCartSync.ts | 27 - .../pop/_components/inbound/ChangeInbound.tsx | 598 ---- .../pop/_components/inbound/ErrorInbound.tsx | 598 ---- .../pop/_components/inbound/InboundCart.tsx | 737 ----- .../_components/inbound/InboundCartPage.tsx | 1475 --------- .../pop/_components/inbound/InboundManage.tsx | 890 ----- .../_components/inbound/InspectionModal.tsx | 727 ----- .../_components/inbound/LoadingUnitModal.tsx | 178 - .../_components/inbound/NumberPadModal.tsx | 596 ---- .../_components/inbound/PackagingModal.tsx | 122 - .../_components/inbound/ProductionInbound.tsx | 679 ---- .../_components/inbound/PurchaseInbound.tsx | 684 ---- .../_components/inbound/RecoveryInbound.tsx | 598 ---- .../inbound/ReturnExternalInbound.tsx | 601 ---- .../inbound/ReturnInternalInbound.tsx | 598 ---- .../inbound/SubcontractorInbound.tsx | 598 ---- .../_components/inbound/SuppliedInbound.tsx | 598 ---- .../pop/_components/inbound/SupplierModal.tsx | 329 -- .../pop/_components/outbound/EtcOutbound.tsx | 564 ---- .../_components/outbound/OutboundCartPage.tsx | 1244 ------- .../_components/outbound/OutboundManage.tsx | 876 ----- .../outbound/ProductionOutbound.tsx | 550 ---- .../_components/outbound/ReturnOutbound.tsx | 564 ---- .../_components/outbound/SalesOutbound.tsx | 593 ---- .../outbound/SubcontractorOutbound.tsx | 550 ---- .../_components/outbound/SuppliedOutbound.tsx | 550 ---- .../production/AcceptProcessModal.tsx | 184 -- .../production/DefectTypeModal.tsx | 365 --- .../production/ProcessDetailModal.tsx | 230 -- .../_components/production/ProcessTimer.tsx | 243 -- .../_components/production/ProcessWork.tsx | 2858 ----------------- .../_components/production/WorkOrderList.tsx | 1589 --------- .../sections/MaterialInputSection.tsx | 370 --- .../pop/_components/production/types.ts | 234 -- .../_components/production/useProcessData.ts | 229 -- .../COMPANY_30/pop/inbound/cart/page.tsx | 28 - .../COMPANY_30/pop/inbound/change/page.tsx | 34 - .../COMPANY_30/pop/inbound/error/page.tsx | 34 - .../pop/inbound/inbound-manage/page.tsx | 7 - .../(main)/COMPANY_30/pop/inbound/page.tsx | 440 --- .../pop/inbound/production/page.tsx | 34 - .../COMPANY_30/pop/inbound/purchase/page.tsx | 34 - .../COMPANY_30/pop/inbound/recovery/page.tsx | 34 - .../pop/inbound/return-external/page.tsx | 34 - .../pop/inbound/return-internal/page.tsx | 34 - .../pop/inbound/subcontractor/page.tsx | 34 - .../COMPANY_30/pop/inbound/supplied/page.tsx | 34 - frontend/app/(main)/COMPANY_30/pop/layout.tsx | 19 - .../app/(main)/COMPANY_30/pop/main/page.tsx | 147 - .../COMPANY_30/pop/outbound/cart/page.tsx | 28 - .../COMPANY_30/pop/outbound/etc/page.tsx | 34 - .../pop/outbound/outbound-manage/page.tsx | 7 - .../(main)/COMPANY_30/pop/outbound/page.tsx | 404 --- .../pop/outbound/production/page.tsx | 34 - .../COMPANY_30/pop/outbound/return/page.tsx | 34 - .../COMPANY_30/pop/outbound/sales/page.tsx | 34 - .../pop/outbound/subcontractor/page.tsx | 34 - .../COMPANY_30/pop/outbound/supplied/page.tsx | 34 - .../(main)/COMPANY_30/pop/production/page.tsx | 244 -- .../pop/production/process/page.tsx | 328 -- .../pop/production/work/[processId]/page.tsx | 71 - .../(main)/COMPANY_30/production/bom/page.tsx | 2595 --------------- .../WorkInstructionApplyModal.tsx | 376 --- .../production/cutting-plan/page.tsx | 2785 ---------------- .../production/plan-management/page.tsx | 2136 ------------ .../process-info/ItemRoutingTab.tsx | 1134 ------- .../process-info/ProcessMasterTab.tsx | 684 ---- .../process-info/ProcessWorkStandardTab.tsx | 17 - .../production/process-info/page.tsx | 155 - .../COMPANY_30/production/result/page.tsx | 778 ----- .../WorkStandardEditModal.tsx | 1784 ---------- .../production/work-instruction/page.tsx | 1080 ------- .../(main)/COMPANY_30/purchase/order/page.tsx | 1379 -------- .../purchase/purchase-item/page.tsx | 2066 ------------ .../COMPANY_30/purchase/supplier/page.tsx | 2800 ---------------- .../quality/inspection-result/page.tsx | 380 --- .../COMPANY_30/quality/inspection/page.tsx | 2556 --------------- .../quality/item-inspection/page.tsx | 1821 ----------- .../(main)/COMPANY_30/sales/claim/page.tsx | 932 ------ .../(main)/COMPANY_30/sales/customer/page.tsx | 2798 ---------------- .../(main)/COMPANY_30/sales/order/page.tsx | 1431 --------- .../(main)/COMPANY_30/sales/quote/page.tsx | 1064 ------ .../COMPANY_30/sales/sales-item/page.tsx | 2050 ------------ .../COMPANY_30/sales/shipping-order/page.tsx | 971 ------ .../COMPANY_30/sales/shipping-plan/page.tsx | 477 --- .../design/change-management/page.tsx | 1524 --------- .../COMPANY_7/design/design-request/page.tsx | 781 ----- .../(main)/COMPANY_7/design/my-work/page.tsx | 1958 ----------- .../(main)/COMPANY_7/design/project/page.tsx | 1501 --------- .../COMPANY_7/design/task-management/page.tsx | 1288 -------- .../(main)/COMPANY_7/equipment/info/page.tsx | 1126 ------- .../equipment/inspection-record/page.tsx | 369 --- .../COMPANY_7/equipment/plc-settings/page.tsx | 501 --- .../logistics/inbound-outbound/page.tsx | 432 --- .../(main)/COMPANY_7/logistics/info/page.tsx | 944 ------ .../COMPANY_7/logistics/inventory/page.tsx | 956 ------ .../logistics/material-status/page.tsx | 661 ---- .../COMPANY_7/logistics/outbound/page.tsx | 1709 ---------- .../COMPANY_7/logistics/packaging/page.tsx | 1126 ------- .../COMPANY_7/logistics/receiving/page.tsx | 1785 ---------- .../COMPANY_7/logistics/warehouse/page.tsx | 1678 ---------- .../COMPANY_7/master-data/company/page.tsx | 806 ----- .../COMPANY_7/master-data/department/page.tsx | 821 ----- .../COMPANY_7/master-data/item-info/page.tsx | 906 ------ .../COMPANY_7/master-data/options/page.tsx | 223 -- .../app/(main)/COMPANY_7/mold/info/page.tsx | 1509 --------- .../COMPANY_7/monitoring/equipment/page.tsx | 666 ---- .../COMPANY_7/monitoring/production/page.tsx | 557 ---- .../COMPANY_7/monitoring/quality/page.tsx | 426 --- .../outsourcing/subcontractor-item/page.tsx | 629 ---- .../outsourcing/subcontractor/page.tsx | 1417 -------- frontend/app/(main)/COMPANY_7/pop/POP.md | 730 ----- .../_components/common/BarcodeScanModal.tsx | 420 --- .../pop/_components/common/ConfirmModal.tsx | 82 - .../pop/_components/common/EquipmentModal.tsx | 195 -- .../pop/_components/common/PopButton.tsx | 48 - .../pop/_components/common/PopCard.tsx | 38 - .../pop/_components/common/PopCardGrid.tsx | 77 - .../pop/_components/common/PopModal.tsx | 88 - .../pop/_components/common/PopShell.tsx | 445 --- .../_components/common/SimpleKeypadModal.tsx | 188 -- .../COMPANY_7/pop/_components/common/theme.ts | 107 - .../pop/_components/common/useCartSync.ts | 27 - .../pop/_components/inbound/ChangeInbound.tsx | 598 ---- .../pop/_components/inbound/ErrorInbound.tsx | 598 ---- .../pop/_components/inbound/InboundCart.tsx | 737 ----- .../_components/inbound/InboundCartPage.tsx | 1475 --------- .../pop/_components/inbound/InboundManage.tsx | 890 ----- .../_components/inbound/InspectionModal.tsx | 727 ----- .../_components/inbound/LoadingUnitModal.tsx | 178 - .../_components/inbound/NumberPadModal.tsx | 596 ---- .../_components/inbound/PackagingModal.tsx | 122 - .../_components/inbound/ProductionInbound.tsx | 679 ---- .../_components/inbound/PurchaseInbound.tsx | 684 ---- .../_components/inbound/RecoveryInbound.tsx | 598 ---- .../inbound/ReturnExternalInbound.tsx | 601 ---- .../inbound/ReturnInternalInbound.tsx | 598 ---- .../inbound/SubcontractorInbound.tsx | 598 ---- .../_components/inbound/SuppliedInbound.tsx | 598 ---- .../pop/_components/inbound/SupplierModal.tsx | 329 -- .../pop/_components/outbound/EtcOutbound.tsx | 564 ---- .../_components/outbound/OutboundCartPage.tsx | 1244 ------- .../_components/outbound/OutboundManage.tsx | 876 ----- .../outbound/ProductionOutbound.tsx | 550 ---- .../_components/outbound/ReturnOutbound.tsx | 564 ---- .../_components/outbound/SalesOutbound.tsx | 593 ---- .../outbound/SubcontractorOutbound.tsx | 550 ---- .../_components/outbound/SuppliedOutbound.tsx | 550 ---- .../production/AcceptProcessModal.tsx | 184 -- .../production/DefectTypeModal.tsx | 365 --- .../production/ProcessDetailModal.tsx | 230 -- .../_components/production/ProcessTimer.tsx | 243 -- .../_components/production/ProcessWork.tsx | 2858 ----------------- .../_components/production/WorkOrderList.tsx | 1648 ---------- .../sections/MaterialInputSection.tsx | 370 --- .../pop/_components/production/types.ts | 234 -- .../_components/production/useProcessData.ts | 306 -- .../COMPANY_7/pop/inbound/cart/page.tsx | 28 - .../COMPANY_7/pop/inbound/change/page.tsx | 34 - .../COMPANY_7/pop/inbound/error/page.tsx | 34 - .../pop/inbound/inbound-manage/page.tsx | 7 - .../app/(main)/COMPANY_7/pop/inbound/page.tsx | 440 --- .../COMPANY_7/pop/inbound/production/page.tsx | 34 - .../COMPANY_7/pop/inbound/purchase/page.tsx | 34 - .../COMPANY_7/pop/inbound/recovery/page.tsx | 34 - .../pop/inbound/return-external/page.tsx | 34 - .../pop/inbound/return-internal/page.tsx | 34 - .../pop/inbound/subcontractor/page.tsx | 34 - .../COMPANY_7/pop/inbound/supplied/page.tsx | 34 - frontend/app/(main)/COMPANY_7/pop/layout.tsx | 19 - .../app/(main)/COMPANY_7/pop/main/page.tsx | 147 - .../COMPANY_7/pop/outbound/cart/page.tsx | 28 - .../COMPANY_7/pop/outbound/etc/page.tsx | 34 - .../pop/outbound/outbound-manage/page.tsx | 7 - .../(main)/COMPANY_7/pop/outbound/page.tsx | 404 --- .../pop/outbound/production/page.tsx | 34 - .../COMPANY_7/pop/outbound/return/page.tsx | 34 - .../COMPANY_7/pop/outbound/sales/page.tsx | 34 - .../pop/outbound/subcontractor/page.tsx | 34 - .../COMPANY_7/pop/outbound/supplied/page.tsx | 34 - .../(main)/COMPANY_7/pop/production/page.tsx | 244 -- .../COMPANY_7/pop/production/process/page.tsx | 328 -- .../pop/production/work/[processId]/page.tsx | 71 - .../(main)/COMPANY_7/production/bom/page.tsx | 2548 --------------- .../production/plan-management/page.tsx | 2136 ------------ .../process-info/ItemRoutingTab.tsx | 1134 ------- .../process-info/ProcessMasterTab.tsx | 684 ---- .../process-info/ProcessWorkStandardTab.tsx | 17 - .../production/process-info/page.tsx | 155 - .../COMPANY_7/production/result/page.tsx | 775 ----- .../WorkStandardEditModal.tsx | 1784 ---------- .../production/work-instruction/page.tsx | 1057 ------ .../(main)/COMPANY_7/purchase/order/page.tsx | 1319 -------- .../COMPANY_7/purchase/purchase-item/page.tsx | 2090 ------------ .../COMPANY_7/purchase/supplier/page.tsx | 2800 ---------------- .../quality/inspection-result/page.tsx | 360 --- .../COMPANY_7/quality/inspection/page.tsx | 2556 --------------- .../quality/item-inspection/page.tsx | 1876 ----------- .../app/(main)/COMPANY_7/sales/claim/page.tsx | 932 ------ .../(main)/COMPANY_7/sales/customer/page.tsx | 2789 ---------------- .../app/(main)/COMPANY_7/sales/order/page.tsx | 1957 ----------- .../app/(main)/COMPANY_7/sales/quote/page.tsx | 1064 ------ .../COMPANY_7/sales/sales-item/page.tsx | 2072 ------------ .../COMPANY_7/sales/shipping-order/page.tsx | 947 ------ .../COMPANY_7/sales/shipping-plan/page.tsx | 471 --- .../design/change-management/page.tsx | 1524 --------- .../COMPANY_8/design/design-request/page.tsx | 781 ----- .../(main)/COMPANY_8/design/my-work/page.tsx | 1958 ----------- .../(main)/COMPANY_8/design/project/page.tsx | 1501 --------- .../COMPANY_8/design/task-management/page.tsx | 1288 -------- .../(main)/COMPANY_8/equipment/info/page.tsx | 1126 ------- .../equipment/inspection-record/page.tsx | 369 --- .../COMPANY_8/equipment/plc-settings/page.tsx | 501 --- .../logistics/inbound-outbound/page.tsx | 432 --- .../(main)/COMPANY_8/logistics/info/page.tsx | 940 ------ .../COMPANY_8/logistics/inventory/page.tsx | 955 ------ .../logistics/material-status/page.tsx | 661 ---- .../COMPANY_8/logistics/outbound/page.tsx | 1709 ---------- .../COMPANY_8/logistics/packaging/page.tsx | 1126 ------- .../COMPANY_8/logistics/receiving/page.tsx | 1780 ---------- .../COMPANY_8/logistics/warehouse/page.tsx | 1650 ---------- .../COMPANY_8/master-data/company/page.tsx | 806 ----- .../COMPANY_8/master-data/department/page.tsx | 821 ----- .../COMPANY_8/master-data/item-info/page.tsx | 948 ------ .../COMPANY_8/master-data/options/page.tsx | 223 -- .../app/(main)/COMPANY_8/mold/info/page.tsx | 1509 --------- .../COMPANY_8/monitoring/equipment/page.tsx | 666 ---- .../COMPANY_8/monitoring/production/page.tsx | 557 ---- .../COMPANY_8/monitoring/quality/page.tsx | 426 --- .../outsourcing/subcontractor-item/page.tsx | 629 ---- .../outsourcing/subcontractor/page.tsx | 1444 --------- .../_components/common/BarcodeScanModal.tsx | 420 --- .../pop/_components/common/ConfirmModal.tsx | 82 - .../pop/_components/common/EquipmentModal.tsx | 195 -- .../pop/_components/common/PopButton.tsx | 48 - .../pop/_components/common/PopCard.tsx | 38 - .../pop/_components/common/PopCardGrid.tsx | 77 - .../pop/_components/common/PopModal.tsx | 88 - .../pop/_components/common/PopShell.tsx | 445 --- .../_components/common/SimpleKeypadModal.tsx | 188 -- .../COMPANY_8/pop/_components/common/theme.ts | 107 - .../pop/_components/common/useCartSync.ts | 27 - .../pop/_components/inbound/ChangeInbound.tsx | 598 ---- .../pop/_components/inbound/ErrorInbound.tsx | 598 ---- .../pop/_components/inbound/InboundCart.tsx | 737 ----- .../_components/inbound/InboundCartPage.tsx | 1475 --------- .../pop/_components/inbound/InboundManage.tsx | 890 ----- .../_components/inbound/InspectionModal.tsx | 727 ----- .../_components/inbound/LoadingUnitModal.tsx | 178 - .../_components/inbound/NumberPadModal.tsx | 596 ---- .../_components/inbound/PackagingModal.tsx | 122 - .../_components/inbound/ProductionInbound.tsx | 679 ---- .../_components/inbound/PurchaseInbound.tsx | 684 ---- .../_components/inbound/RecoveryInbound.tsx | 598 ---- .../inbound/ReturnExternalInbound.tsx | 601 ---- .../inbound/ReturnInternalInbound.tsx | 598 ---- .../inbound/SubcontractorInbound.tsx | 598 ---- .../_components/inbound/SuppliedInbound.tsx | 598 ---- .../pop/_components/inbound/SupplierModal.tsx | 329 -- .../pop/_components/outbound/EtcOutbound.tsx | 564 ---- .../_components/outbound/OutboundCartPage.tsx | 1244 ------- .../_components/outbound/OutboundManage.tsx | 876 ----- .../outbound/ProductionOutbound.tsx | 550 ---- .../_components/outbound/ReturnOutbound.tsx | 564 ---- .../_components/outbound/SalesOutbound.tsx | 593 ---- .../outbound/SubcontractorOutbound.tsx | 550 ---- .../_components/outbound/SuppliedOutbound.tsx | 550 ---- .../production/AcceptProcessModal.tsx | 184 -- .../production/DefectTypeModal.tsx | 365 --- .../production/ProcessDetailModal.tsx | 230 -- .../_components/production/ProcessTimer.tsx | 243 -- .../_components/production/ProcessWork.tsx | 2858 ----------------- .../_components/production/WorkOrderList.tsx | 1589 --------- .../sections/MaterialInputSection.tsx | 370 --- .../pop/_components/production/types.ts | 234 -- .../_components/production/useProcessData.ts | 229 -- .../COMPANY_8/pop/inbound/cart/page.tsx | 28 - .../COMPANY_8/pop/inbound/change/page.tsx | 34 - .../COMPANY_8/pop/inbound/error/page.tsx | 34 - .../pop/inbound/inbound-manage/page.tsx | 7 - .../app/(main)/COMPANY_8/pop/inbound/page.tsx | 440 --- .../COMPANY_8/pop/inbound/production/page.tsx | 34 - .../COMPANY_8/pop/inbound/purchase/page.tsx | 34 - .../COMPANY_8/pop/inbound/recovery/page.tsx | 34 - .../pop/inbound/return-external/page.tsx | 34 - .../pop/inbound/return-internal/page.tsx | 34 - .../pop/inbound/subcontractor/page.tsx | 34 - .../COMPANY_8/pop/inbound/supplied/page.tsx | 34 - frontend/app/(main)/COMPANY_8/pop/layout.tsx | 19 - .../app/(main)/COMPANY_8/pop/main/page.tsx | 147 - .../COMPANY_8/pop/outbound/cart/page.tsx | 28 - .../COMPANY_8/pop/outbound/etc/page.tsx | 34 - .../pop/outbound/outbound-manage/page.tsx | 7 - .../(main)/COMPANY_8/pop/outbound/page.tsx | 404 --- .../pop/outbound/production/page.tsx | 34 - .../COMPANY_8/pop/outbound/return/page.tsx | 34 - .../COMPANY_8/pop/outbound/sales/page.tsx | 34 - .../pop/outbound/subcontractor/page.tsx | 34 - .../COMPANY_8/pop/outbound/supplied/page.tsx | 34 - .../(main)/COMPANY_8/pop/production/page.tsx | 244 -- .../COMPANY_8/pop/production/process/page.tsx | 328 -- .../pop/production/work/[processId]/page.tsx | 71 - .../(main)/COMPANY_8/production/bom/page.tsx | 2548 --------------- .../production/plan-management/page.tsx | 2136 ------------ .../process-info/ItemRoutingTab.tsx | 1134 ------- .../process-info/ProcessMasterTab.tsx | 685 ---- .../process-info/ProcessWorkStandardTab.tsx | 17 - .../production/process-info/page.tsx | 155 - .../COMPANY_8/production/result/page.tsx | 775 ----- .../WorkStandardEditModal.tsx | 1784 ---------- .../production/work-instruction/page.tsx | 1057 ------ .../(main)/COMPANY_8/purchase/order/page.tsx | 1323 -------- .../COMPANY_8/purchase/purchase-item/page.tsx | 2044 ------------ .../COMPANY_8/purchase/supplier/page.tsx | 2827 ---------------- .../quality/inspection-result/page.tsx | 360 --- .../COMPANY_8/quality/inspection/page.tsx | 2556 --------------- .../quality/item-inspection/page.tsx | 1819 ----------- .../app/(main)/COMPANY_8/sales/claim/page.tsx | 932 ------ .../(main)/COMPANY_8/sales/customer/page.tsx | 2826 ---------------- .../app/(main)/COMPANY_8/sales/order/page.tsx | 1957 ----------- .../app/(main)/COMPANY_8/sales/quote/page.tsx | 1064 ------ .../COMPANY_8/sales/sales-item/page.tsx | 2025 ------------ .../COMPANY_8/sales/shipping-order/page.tsx | 947 ------ .../COMPANY_8/sales/shipping-plan/page.tsx | 471 --- .../design/change-management/page.tsx | 1524 --------- .../COMPANY_9/design/design-request/page.tsx | 781 ----- .../(main)/COMPANY_9/design/my-work/page.tsx | 1958 ----------- .../(main)/COMPANY_9/design/project/page.tsx | 1501 --------- .../COMPANY_9/design/task-management/page.tsx | 1288 -------- .../(main)/COMPANY_9/equipment/info/page.tsx | 1126 ------- .../equipment/inspection-record/page.tsx | 356 -- .../COMPANY_9/equipment/plc-settings/page.tsx | 501 --- .../logistics/inbound-outbound/page.tsx | 432 --- .../(main)/COMPANY_9/logistics/info/page.tsx | 940 ------ .../COMPANY_9/logistics/inventory/page.tsx | 953 ------ .../logistics/material-status/page.tsx | 661 ---- .../COMPANY_9/logistics/outbound/page.tsx | 1755 ---------- .../COMPANY_9/logistics/packaging/page.tsx | 1126 ------- .../COMPANY_9/logistics/receiving/page.tsx | 1785 ---------- .../COMPANY_9/logistics/warehouse/page.tsx | 1650 ---------- .../COMPANY_9/master-data/company/page.tsx | 806 ----- .../COMPANY_9/master-data/department/page.tsx | 821 ----- .../COMPANY_9/master-data/item-info/page.tsx | 912 ------ .../COMPANY_9/master-data/options/page.tsx | 223 -- .../app/(main)/COMPANY_9/mold/info/page.tsx | 1509 --------- .../COMPANY_9/monitoring/equipment/page.tsx | 666 ---- .../COMPANY_9/monitoring/production/page.tsx | 557 ---- .../COMPANY_9/monitoring/quality/page.tsx | 426 --- .../outsourcing/subcontractor-item/page.tsx | 629 ---- .../outsourcing/subcontractor/page.tsx | 1417 -------- .../_components/common/BarcodeScanModal.tsx | 420 --- .../pop/_components/common/ConfirmModal.tsx | 82 - .../pop/_components/common/EquipmentModal.tsx | 195 -- .../pop/_components/common/PopButton.tsx | 48 - .../pop/_components/common/PopCard.tsx | 38 - .../pop/_components/common/PopCardGrid.tsx | 77 - .../pop/_components/common/PopModal.tsx | 88 - .../pop/_components/common/PopShell.tsx | 445 --- .../_components/common/SimpleKeypadModal.tsx | 188 -- .../COMPANY_9/pop/_components/common/theme.ts | 107 - .../pop/_components/common/useCartSync.ts | 27 - .../pop/_components/inbound/ChangeInbound.tsx | 598 ---- .../pop/_components/inbound/ErrorInbound.tsx | 598 ---- .../pop/_components/inbound/InboundCart.tsx | 737 ----- .../_components/inbound/InboundCartPage.tsx | 1475 --------- .../pop/_components/inbound/InboundManage.tsx | 890 ----- .../_components/inbound/InspectionModal.tsx | 727 ----- .../_components/inbound/LoadingUnitModal.tsx | 178 - .../_components/inbound/NumberPadModal.tsx | 596 ---- .../_components/inbound/PackagingModal.tsx | 122 - .../_components/inbound/ProductionInbound.tsx | 679 ---- .../_components/inbound/PurchaseInbound.tsx | 684 ---- .../_components/inbound/RecoveryInbound.tsx | 598 ---- .../inbound/ReturnExternalInbound.tsx | 601 ---- .../inbound/ReturnInternalInbound.tsx | 598 ---- .../inbound/SubcontractorInbound.tsx | 598 ---- .../_components/inbound/SuppliedInbound.tsx | 598 ---- .../pop/_components/inbound/SupplierModal.tsx | 329 -- .../pop/_components/outbound/EtcOutbound.tsx | 564 ---- .../_components/outbound/OutboundCartPage.tsx | 1244 ------- .../_components/outbound/OutboundManage.tsx | 876 ----- .../outbound/ProductionOutbound.tsx | 550 ---- .../_components/outbound/ReturnOutbound.tsx | 564 ---- .../_components/outbound/SalesOutbound.tsx | 593 ---- .../outbound/SubcontractorOutbound.tsx | 550 ---- .../_components/outbound/SuppliedOutbound.tsx | 550 ---- .../production/AcceptProcessModal.tsx | 184 -- .../production/DefectTypeModal.tsx | 365 --- .../production/ProcessDetailModal.tsx | 230 -- .../_components/production/ProcessTimer.tsx | 243 -- .../_components/production/ProcessWork.tsx | 2858 ----------------- .../_components/production/WorkOrderList.tsx | 1589 --------- .../sections/MaterialInputSection.tsx | 370 --- .../pop/_components/production/types.ts | 234 -- .../_components/production/useProcessData.ts | 229 -- .../COMPANY_9/pop/inbound/cart/page.tsx | 28 - .../COMPANY_9/pop/inbound/change/page.tsx | 34 - .../COMPANY_9/pop/inbound/error/page.tsx | 34 - .../pop/inbound/inbound-manage/page.tsx | 7 - .../app/(main)/COMPANY_9/pop/inbound/page.tsx | 440 --- .../COMPANY_9/pop/inbound/production/page.tsx | 34 - .../COMPANY_9/pop/inbound/purchase/page.tsx | 34 - .../COMPANY_9/pop/inbound/recovery/page.tsx | 34 - .../pop/inbound/return-external/page.tsx | 34 - .../pop/inbound/return-internal/page.tsx | 34 - .../pop/inbound/subcontractor/page.tsx | 34 - .../COMPANY_9/pop/inbound/supplied/page.tsx | 34 - frontend/app/(main)/COMPANY_9/pop/layout.tsx | 19 - .../app/(main)/COMPANY_9/pop/main/page.tsx | 147 - .../COMPANY_9/pop/outbound/cart/page.tsx | 28 - .../COMPANY_9/pop/outbound/etc/page.tsx | 34 - .../pop/outbound/outbound-manage/page.tsx | 7 - .../(main)/COMPANY_9/pop/outbound/page.tsx | 404 --- .../pop/outbound/production/page.tsx | 34 - .../COMPANY_9/pop/outbound/return/page.tsx | 34 - .../COMPANY_9/pop/outbound/sales/page.tsx | 34 - .../pop/outbound/subcontractor/page.tsx | 34 - .../COMPANY_9/pop/outbound/supplied/page.tsx | 34 - .../(main)/COMPANY_9/pop/production/page.tsx | 244 -- .../COMPANY_9/pop/production/process/page.tsx | 328 -- .../pop/production/work/[processId]/page.tsx | 71 - .../(main)/COMPANY_9/production/bom/page.tsx | 2591 --------------- .../WorkInstructionApplyModal.tsx | 376 --- .../production/cutting-plan/page.tsx | 2785 ---------------- .../production/plan-management/page.tsx | 2136 ------------ .../process-info/ItemRoutingTab.tsx | 1134 ------- .../process-info/ProcessMasterTab.tsx | 684 ---- .../process-info/ProcessWorkStandardTab.tsx | 17 - .../production/process-info/page.tsx | 155 - .../COMPANY_9/production/result/page.tsx | 775 ----- .../WorkStandardEditModal.tsx | 1784 ---------- .../production/work-instruction/page.tsx | 1064 ------ .../(main)/COMPANY_9/purchase/order/page.tsx | 1347 -------- .../COMPANY_9/purchase/purchase-item/page.tsx | 2050 ------------ .../COMPANY_9/purchase/supplier/page.tsx | 2800 ---------------- .../quality/inspection-result/page.tsx | 360 --- .../COMPANY_9/quality/inspection/page.tsx | 2556 --------------- .../quality/item-inspection/page.tsx | 1819 ----------- .../app/(main)/COMPANY_9/sales/claim/page.tsx | 932 ------ .../(main)/COMPANY_9/sales/customer/page.tsx | 2789 ---------------- .../sales/order/SalesOrderExcelModal.tsx | 371 --- .../app/(main)/COMPANY_9/sales/order/page.tsx | 1238 ------- .../app/(main)/COMPANY_9/sales/quote/page.tsx | 1064 ------ .../COMPANY_9/sales/sales-item/page.tsx | 2034 ------------ .../COMPANY_9/sales/shipping-order/page.tsx | 947 ------ .../COMPANY_9/sales/shipping-plan/page.tsx | 471 --- .../app/(main)/admin/report/sales/page.tsx | 2 +- .../admin/screenMng/popSettingsMng/page.tsx | 4 +- frontend/app/favicon.ico | Bin 25931 -> 0 bytes frontend/app/globals.css | 65 + frontend/app/icon.svg | 12 + frontend/app/layout.tsx | 11 +- frontend/components/auth/LoginForm.tsx | 160 +- frontend/components/auth/LoginHeader.tsx | 8 +- .../components/layout/AdminPageRenderer.tsx | 479 --- frontend/components/layout/AppLayout.tsx | 428 +-- frontend/components/layout/Logo.tsx | 24 +- frontend/components/layout/TabBar.tsx | 15 +- frontend/components/layout/ThemeToggle.tsx | 84 +- .../components/providers/ThemeProvider.tsx | 95 +- frontend/constants/auth.ts | 11 +- frontend/hooks/useAuth.ts | 6 +- 743 files changed, 532 insertions(+), 512390 deletions(-) delete mode 100644 frontend/app/(main)/COMPANY_10/design/change-management/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/design/design-request/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/design/my-work/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/design/project/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/design/task-management/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/equipment/info/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/equipment/inspection-record/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/equipment/plc-settings/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/logistics/inbound-outbound/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/logistics/info/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/logistics/inventory/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/logistics/material-status/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/logistics/outbound/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/logistics/packaging/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/logistics/receiving/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/logistics/warehouse/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/master-data/company/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/master-data/department/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/master-data/item-info/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/master-data/options/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/mold/info/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/monitoring/equipment/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/monitoring/production/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/monitoring/quality/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/outsourcing/subcontractor-item/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/outsourcing/subcontractor/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/common/BarcodeScanModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/common/ConfirmModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/common/EquipmentModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/common/PopButton.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/common/PopCard.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/common/PopCardGrid.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/common/PopModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/common/PopShell.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/common/SimpleKeypadModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/common/theme.ts delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/common/useCartSync.ts delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/inbound/ChangeInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/inbound/ErrorInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/inbound/InboundCart.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/inbound/InboundCartPage.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/inbound/InboundManage.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/inbound/InspectionModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/inbound/LoadingUnitModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/inbound/NumberPadModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/inbound/PackagingModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/inbound/ProductionInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/inbound/PurchaseInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/inbound/RecoveryInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/inbound/ReturnExternalInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/inbound/ReturnInternalInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/inbound/SubcontractorInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/inbound/SuppliedInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/inbound/SupplierModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/outbound/EtcOutbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/outbound/OutboundCartPage.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/outbound/OutboundManage.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/outbound/ProductionOutbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/outbound/ReturnOutbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/outbound/SalesOutbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/outbound/SubcontractorOutbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/outbound/SuppliedOutbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/production/AcceptProcessModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/production/DefectTypeModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/production/ProcessDetailModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/production/ProcessTimer.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/production/ProcessWork.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/production/WorkOrderList.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/production/sections/MaterialInputSection.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/production/types.ts delete mode 100644 frontend/app/(main)/COMPANY_10/pop/_components/production/useProcessData.ts delete mode 100644 frontend/app/(main)/COMPANY_10/pop/inbound/cart/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/inbound/change/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/inbound/error/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/inbound/inbound-manage/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/inbound/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/inbound/production/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/inbound/purchase/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/inbound/recovery/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/inbound/return-external/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/inbound/return-internal/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/inbound/subcontractor/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/inbound/supplied/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/layout.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/main/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/outbound/cart/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/outbound/etc/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/outbound/outbound-manage/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/outbound/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/outbound/production/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/outbound/return/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/outbound/sales/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/outbound/subcontractor/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/outbound/supplied/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/production/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/production/process/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/pop/production/work/[processId]/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/production/bom/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/production/plan-management/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/production/process-info/ItemRoutingTab.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/production/process-info/ProcessMasterTab.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/production/process-info/ProcessWorkStandardTab.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/production/process-info/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/production/result/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/production/work-instruction/WorkStandardEditModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/production/work-instruction/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/purchase/order/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/purchase/purchase-item/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/purchase/supplier/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/quality/inspection-result/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/quality/inspection/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/quality/item-inspection/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/sales/claim/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/sales/customer/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/sales/order/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/sales/quote/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/sales/sales-item/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/sales/shipping-order/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_10/sales/shipping-plan/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/design/change-management/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/design/design-request/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/design/my-work/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/design/project/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/design/task-management/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/equipment/info/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/equipment/inspection-record/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/equipment/plc-settings/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/logistics/inbound-outbound/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/logistics/info/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/logistics/inventory/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/logistics/material-status/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/logistics/outbound/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/logistics/packaging/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/logistics/receiving/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/logistics/warehouse/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/master-data/company/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/master-data/department/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/master-data/item-info/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/master-data/options/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/mold/info/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/monitoring/equipment/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/monitoring/production/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/monitoring/quality/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/outsourcing/subcontractor-item/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/outsourcing/subcontractor/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/common/BarcodeScanModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/common/ConfirmModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/common/EquipmentModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/common/PopButton.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/common/PopCard.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/common/PopCardGrid.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/common/PopModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/common/PopShell.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/common/SimpleKeypadModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/common/theme.ts delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/common/useCartSync.ts delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/inbound/ChangeInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/inbound/ErrorInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/inbound/InboundCart.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/inbound/InboundCartPage.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/inbound/InboundManage.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/inbound/InspectionModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/inbound/LoadingUnitModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/inbound/NumberPadModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/inbound/PackagingModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/inbound/ProductionInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/inbound/PurchaseInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/inbound/RecoveryInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/inbound/ReturnExternalInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/inbound/ReturnInternalInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/inbound/SubcontractorInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/inbound/SuppliedInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/inbound/SupplierModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/outbound/EtcOutbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/outbound/OutboundCartPage.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/outbound/OutboundManage.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/outbound/ProductionOutbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/outbound/ReturnOutbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/outbound/SalesOutbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/outbound/SubcontractorOutbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/outbound/SuppliedOutbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/production/AcceptProcessModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/production/DefectTypeModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/production/ProcessDetailModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/production/ProcessTimer.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/production/ProcessWork.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/production/WorkOrderList.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/production/sections/MaterialInputSection.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/production/types.ts delete mode 100644 frontend/app/(main)/COMPANY_29/pop/_components/production/useProcessData.ts delete mode 100644 frontend/app/(main)/COMPANY_29/pop/inbound/cart/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/inbound/change/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/inbound/error/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/inbound/inbound-manage/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/inbound/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/inbound/production/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/inbound/purchase/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/inbound/recovery/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/inbound/return-external/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/inbound/return-internal/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/inbound/subcontractor/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/inbound/supplied/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/layout.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/main/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/outbound/cart/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/outbound/etc/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/outbound/outbound-manage/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/outbound/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/outbound/production/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/outbound/return/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/outbound/sales/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/outbound/subcontractor/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/outbound/supplied/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/production/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/production/process/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/pop/production/work/[processId]/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/production/bom/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/production/plan-management/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/production/process-info/ItemRoutingTab.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/production/process-info/ProcessMasterTab.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/production/process-info/ProcessWorkStandardTab.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/production/process-info/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/production/result/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/production/work-instruction/WorkStandardEditModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/production/work-instruction/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/purchase/order/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/purchase/purchase-item/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/purchase/supplier/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/quality/inspection-result/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/quality/inspection/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/quality/item-inspection/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/sales/claim/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/sales/customer/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/sales/order/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/sales/quote/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/sales/sales-item/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/sales/shipping-order/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_29/sales/shipping-plan/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/design/change-management/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/design/design-request/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/design/my-work/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/design/project/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/design/task-management/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/equipment/info/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/equipment/inspection-record/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/equipment/plc-settings/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/kpi/production/daily/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/logistics/inbound-outbound/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/logistics/info/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/logistics/inventory/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/logistics/material-status/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/logistics/outbound/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/logistics/packaging/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/logistics/receiving/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/logistics/warehouse/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/master-data/company/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/master-data/department/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/master-data/item-info/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/master-data/options/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/mold/info/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/monitoring/equipment/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/monitoring/production/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/monitoring/quality/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/outsourcing/subcontractor-item/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/outsourcing/subcontractor/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/common/BarcodeScanModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/common/ConfirmModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/common/EquipmentModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/common/PopButton.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/common/PopCard.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/common/PopCardGrid.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/common/PopModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/common/PopShell.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/common/SimpleKeypadModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/common/theme.ts delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/common/useCartSync.ts delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/inbound/ChangeInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/inbound/ErrorInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/inbound/InboundCart.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/inbound/InboundCartPage.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/inbound/InboundManage.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/inbound/InspectionModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/inbound/LoadingUnitModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/inbound/NumberPadModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/inbound/PackagingModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/inbound/ProductionInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/inbound/PurchaseInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/inbound/RecoveryInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/inbound/ReturnExternalInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/inbound/ReturnInternalInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/inbound/SubcontractorInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/inbound/SuppliedInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/inbound/SupplierModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/outbound/EtcOutbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/outbound/OutboundCartPage.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/outbound/OutboundManage.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/outbound/ProductionOutbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/outbound/ReturnOutbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/outbound/SalesOutbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/outbound/SubcontractorOutbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/outbound/SuppliedOutbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/production/AcceptProcessModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/production/DefectTypeModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/production/ProcessDetailModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/production/ProcessTimer.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/production/ProcessWork.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/production/WorkOrderList.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/production/sections/MaterialInputSection.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/production/types.ts delete mode 100644 frontend/app/(main)/COMPANY_30/pop/_components/production/useProcessData.ts delete mode 100644 frontend/app/(main)/COMPANY_30/pop/inbound/cart/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/inbound/change/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/inbound/error/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/inbound/inbound-manage/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/inbound/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/inbound/production/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/inbound/purchase/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/inbound/recovery/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/inbound/return-external/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/inbound/return-internal/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/inbound/subcontractor/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/inbound/supplied/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/layout.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/main/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/outbound/cart/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/outbound/etc/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/outbound/outbound-manage/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/outbound/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/outbound/production/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/outbound/return/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/outbound/sales/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/outbound/subcontractor/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/outbound/supplied/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/production/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/production/process/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/pop/production/work/[processId]/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/production/bom/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/production/cutting-plan/WorkInstructionApplyModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/production/cutting-plan/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/production/plan-management/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/production/process-info/ItemRoutingTab.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/production/process-info/ProcessMasterTab.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/production/process-info/ProcessWorkStandardTab.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/production/process-info/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/production/result/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/production/work-instruction/WorkStandardEditModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/production/work-instruction/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/purchase/order/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/purchase/purchase-item/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/purchase/supplier/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/quality/inspection-result/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/quality/inspection/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/quality/item-inspection/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/sales/claim/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/sales/customer/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/sales/order/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/sales/quote/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/sales/sales-item/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/sales/shipping-order/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_30/sales/shipping-plan/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/design/change-management/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/design/design-request/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/design/my-work/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/design/project/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/design/task-management/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/equipment/info/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/equipment/inspection-record/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/equipment/plc-settings/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/logistics/inbound-outbound/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/logistics/info/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/logistics/inventory/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/logistics/material-status/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/logistics/outbound/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/logistics/packaging/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/logistics/receiving/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/logistics/warehouse/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/master-data/company/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/master-data/department/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/master-data/item-info/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/master-data/options/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/mold/info/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/monitoring/equipment/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/monitoring/production/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/monitoring/quality/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/outsourcing/subcontractor-item/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/outsourcing/subcontractor/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/POP.md delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/common/BarcodeScanModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/common/ConfirmModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/common/EquipmentModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/common/PopButton.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/common/PopCard.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/common/PopCardGrid.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/common/PopModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/common/PopShell.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/common/SimpleKeypadModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/common/theme.ts delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/common/useCartSync.ts delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/inbound/ChangeInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/inbound/ErrorInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/inbound/InboundCart.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/inbound/InboundCartPage.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/inbound/InboundManage.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/inbound/InspectionModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/inbound/LoadingUnitModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/inbound/NumberPadModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/inbound/PackagingModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/inbound/ProductionInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/inbound/PurchaseInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/inbound/RecoveryInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/inbound/ReturnExternalInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/inbound/ReturnInternalInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/inbound/SubcontractorInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/inbound/SuppliedInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/inbound/SupplierModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/outbound/EtcOutbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/outbound/OutboundCartPage.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/outbound/OutboundManage.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/outbound/ProductionOutbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/outbound/ReturnOutbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/outbound/SalesOutbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/outbound/SubcontractorOutbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/outbound/SuppliedOutbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/production/AcceptProcessModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/production/DefectTypeModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/production/ProcessDetailModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/production/ProcessTimer.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/production/ProcessWork.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/production/WorkOrderList.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/production/sections/MaterialInputSection.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/production/types.ts delete mode 100644 frontend/app/(main)/COMPANY_7/pop/_components/production/useProcessData.ts delete mode 100644 frontend/app/(main)/COMPANY_7/pop/inbound/cart/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/inbound/change/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/inbound/error/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/inbound/inbound-manage/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/inbound/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/inbound/production/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/inbound/purchase/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/inbound/recovery/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/inbound/return-external/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/inbound/return-internal/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/inbound/subcontractor/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/inbound/supplied/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/layout.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/main/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/outbound/cart/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/outbound/etc/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/outbound/outbound-manage/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/outbound/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/outbound/production/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/outbound/return/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/outbound/sales/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/outbound/subcontractor/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/outbound/supplied/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/production/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/production/process/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/pop/production/work/[processId]/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/production/bom/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/production/plan-management/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/production/process-info/ItemRoutingTab.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/production/process-info/ProcessMasterTab.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/production/process-info/ProcessWorkStandardTab.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/production/process-info/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/production/result/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/production/work-instruction/WorkStandardEditModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/production/work-instruction/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/purchase/order/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/purchase/purchase-item/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/purchase/supplier/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/quality/inspection-result/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/quality/inspection/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/quality/item-inspection/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/sales/claim/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/sales/customer/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/sales/order/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/sales/quote/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/sales/sales-item/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/sales/shipping-order/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_7/sales/shipping-plan/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/design/change-management/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/design/design-request/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/design/my-work/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/design/project/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/design/task-management/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/equipment/info/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/equipment/inspection-record/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/equipment/plc-settings/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/logistics/inbound-outbound/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/logistics/info/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/logistics/inventory/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/logistics/material-status/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/logistics/outbound/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/logistics/packaging/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/logistics/receiving/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/logistics/warehouse/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/master-data/company/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/master-data/department/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/master-data/item-info/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/master-data/options/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/mold/info/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/monitoring/equipment/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/monitoring/production/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/monitoring/quality/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/outsourcing/subcontractor-item/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/outsourcing/subcontractor/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/common/BarcodeScanModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/common/ConfirmModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/common/EquipmentModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/common/PopButton.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/common/PopCard.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/common/PopCardGrid.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/common/PopModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/common/PopShell.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/common/SimpleKeypadModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/common/theme.ts delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/common/useCartSync.ts delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/inbound/ChangeInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/inbound/ErrorInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/inbound/InboundCart.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/inbound/InboundCartPage.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/inbound/InboundManage.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/inbound/InspectionModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/inbound/LoadingUnitModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/inbound/NumberPadModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/inbound/PackagingModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/inbound/ProductionInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/inbound/PurchaseInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/inbound/RecoveryInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/inbound/ReturnExternalInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/inbound/ReturnInternalInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/inbound/SubcontractorInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/inbound/SuppliedInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/inbound/SupplierModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/outbound/EtcOutbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/outbound/OutboundCartPage.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/outbound/OutboundManage.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/outbound/ProductionOutbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/outbound/ReturnOutbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/outbound/SalesOutbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/outbound/SubcontractorOutbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/outbound/SuppliedOutbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/production/AcceptProcessModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/production/DefectTypeModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/production/ProcessDetailModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/production/ProcessTimer.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/production/ProcessWork.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/production/WorkOrderList.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/production/sections/MaterialInputSection.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/production/types.ts delete mode 100644 frontend/app/(main)/COMPANY_8/pop/_components/production/useProcessData.ts delete mode 100644 frontend/app/(main)/COMPANY_8/pop/inbound/cart/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/inbound/change/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/inbound/error/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/inbound/inbound-manage/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/inbound/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/inbound/production/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/inbound/purchase/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/inbound/recovery/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/inbound/return-external/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/inbound/return-internal/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/inbound/subcontractor/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/inbound/supplied/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/layout.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/main/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/outbound/cart/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/outbound/etc/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/outbound/outbound-manage/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/outbound/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/outbound/production/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/outbound/return/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/outbound/sales/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/outbound/subcontractor/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/outbound/supplied/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/production/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/production/process/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/pop/production/work/[processId]/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/production/bom/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/production/plan-management/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/production/process-info/ItemRoutingTab.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/production/process-info/ProcessMasterTab.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/production/process-info/ProcessWorkStandardTab.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/production/process-info/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/production/result/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/production/work-instruction/WorkStandardEditModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/production/work-instruction/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/purchase/order/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/purchase/purchase-item/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/purchase/supplier/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/quality/inspection-result/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/quality/inspection/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/quality/item-inspection/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/sales/claim/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/sales/customer/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/sales/order/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/sales/quote/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/sales/sales-item/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/sales/shipping-order/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_8/sales/shipping-plan/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/design/change-management/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/design/design-request/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/design/my-work/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/design/project/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/design/task-management/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/equipment/info/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/equipment/inspection-record/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/equipment/plc-settings/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/logistics/inbound-outbound/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/logistics/info/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/logistics/inventory/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/logistics/material-status/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/logistics/outbound/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/logistics/packaging/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/logistics/receiving/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/logistics/warehouse/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/master-data/company/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/master-data/department/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/master-data/item-info/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/master-data/options/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/mold/info/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/monitoring/equipment/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/monitoring/production/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/monitoring/quality/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/outsourcing/subcontractor-item/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/outsourcing/subcontractor/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/common/BarcodeScanModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/common/ConfirmModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/common/EquipmentModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/common/PopButton.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/common/PopCard.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/common/PopCardGrid.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/common/PopModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/common/PopShell.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/common/SimpleKeypadModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/common/theme.ts delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/common/useCartSync.ts delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/inbound/ChangeInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/inbound/ErrorInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/inbound/InboundCart.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/inbound/InboundCartPage.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/inbound/InboundManage.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/inbound/InspectionModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/inbound/LoadingUnitModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/inbound/NumberPadModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/inbound/PackagingModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/inbound/ProductionInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/inbound/PurchaseInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/inbound/RecoveryInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/inbound/ReturnExternalInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/inbound/ReturnInternalInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/inbound/SubcontractorInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/inbound/SuppliedInbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/inbound/SupplierModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/outbound/EtcOutbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/outbound/OutboundCartPage.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/outbound/OutboundManage.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/outbound/ProductionOutbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/outbound/ReturnOutbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/outbound/SalesOutbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/outbound/SubcontractorOutbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/outbound/SuppliedOutbound.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/production/AcceptProcessModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/production/DefectTypeModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/production/ProcessDetailModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/production/ProcessTimer.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/production/ProcessWork.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/production/WorkOrderList.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/production/sections/MaterialInputSection.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/production/types.ts delete mode 100644 frontend/app/(main)/COMPANY_9/pop/_components/production/useProcessData.ts delete mode 100644 frontend/app/(main)/COMPANY_9/pop/inbound/cart/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/inbound/change/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/inbound/error/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/inbound/inbound-manage/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/inbound/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/inbound/production/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/inbound/purchase/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/inbound/recovery/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/inbound/return-external/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/inbound/return-internal/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/inbound/subcontractor/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/inbound/supplied/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/layout.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/main/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/outbound/cart/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/outbound/etc/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/outbound/outbound-manage/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/outbound/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/outbound/production/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/outbound/return/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/outbound/sales/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/outbound/subcontractor/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/outbound/supplied/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/production/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/production/process/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/pop/production/work/[processId]/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/production/bom/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/production/cutting-plan/WorkInstructionApplyModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/production/cutting-plan/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/production/plan-management/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/production/process-info/ItemRoutingTab.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/production/process-info/ProcessMasterTab.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/production/process-info/ProcessWorkStandardTab.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/production/process-info/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/production/result/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/production/work-instruction/WorkStandardEditModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/production/work-instruction/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/purchase/order/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/purchase/purchase-item/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/purchase/supplier/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/quality/inspection-result/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/quality/inspection/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/quality/item-inspection/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/sales/claim/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/sales/customer/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/sales/order/SalesOrderExcelModal.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/sales/order/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/sales/quote/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/sales/sales-item/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/sales/shipping-order/page.tsx delete mode 100644 frontend/app/(main)/COMPANY_9/sales/shipping-plan/page.tsx delete mode 100644 frontend/app/favicon.ico create mode 100644 frontend/app/icon.svg diff --git a/docker/dev/docker-compose.backend.mac.yml b/docker/dev/docker-compose.backend.mac.yml index 5002e813..48e1fa09 100644 --- a/docker/dev/docker-compose.backend.mac.yml +++ b/docker/dev/docker-compose.backend.mac.yml @@ -4,9 +4,9 @@ services: build: context: ../../backend-node dockerfile: ../docker/dev/backend.Dockerfile - container_name: pms-backend-mac + container_name: rps_backend ports: - - "8080:8080" + - "8090:8080" extra_hosts: - "host.docker.internal:host-gateway" environment: @@ -15,7 +15,7 @@ services: - DATABASE_URL=${DATABASE_URL} - JWT_SECRET=${JWT_SECRET} - JWT_EXPIRES_IN=${JWT_EXPIRES_IN:-24h} - - CORS_ORIGIN=http://localhost:9771 + - CORS_ORIGIN=http://localhost:9781 - CORS_CREDENTIALS=true - LOG_LEVEL=debug - ENCRYPTION_KEY=${ENCRYPTION_KEY} diff --git a/docker/dev/docker-compose.frontend.mac.yml b/docker/dev/docker-compose.frontend.mac.yml index eda932da..4103d2ca 100644 --- a/docker/dev/docker-compose.frontend.mac.yml +++ b/docker/dev/docker-compose.frontend.mac.yml @@ -4,12 +4,12 @@ services: build: context: ../../frontend dockerfile: ../docker/dev/frontend.Dockerfile - container_name: pms-frontend-mac + container_name: rps-front ports: - - "9771:3000" + - "9781:3000" environment: - - NEXT_PUBLIC_API_URL=http://localhost:8080/api - - SERVER_API_URL=http://pms-backend-mac:8080 + - NEXT_PUBLIC_API_URL=http://localhost:8090/api + - SERVER_API_URL=http://rps_backend:8080 - NODE_OPTIONS=--max-old-space-size=8192 - NEXT_TELEMETRY_DISABLED=1 volumes: diff --git a/frontend/app/(auth)/login/page.tsx b/frontend/app/(auth)/login/page.tsx index 73a8de80..5050c2e4 100644 --- a/frontend/app/(auth)/login/page.tsx +++ b/frontend/app/(auth)/login/page.tsx @@ -1,9 +1,9 @@ "use client"; +import Image from "next/image"; import { useLogin } from "@/hooks/useLogin"; -import { LoginHeader } from "@/components/auth/LoginHeader"; import { LoginForm } from "@/components/auth/LoginForm"; -import { LoginFooter } from "@/components/auth/LoginFooter"; +import { UI_CONFIG } from "@/constants/auth"; export default function LoginPage() { const { @@ -19,9 +19,55 @@ export default function LoginPage() { } = useLogin(); return ( -
-
- +
+ {/* 라디얼 글로우 (블루/시안/퍼플) */} +
+ + {/* 격자 무늬 오버레이 */} +
+ + {/* 글래스 카드 */} +
+
+ (주)알피에스 RPS 로고 +

+ 업무관리 시스템 +

+
- -
+ + {/* 하단 고정 푸터 */} +
+
+ RPS +
+

+ {UI_CONFIG.COMPANY_KR} +

+

+ 본사 : {UI_CONFIG.ADDRESS} +

+

+ TEL : {UI_CONFIG.TEL}  |  FAX : {UI_CONFIG.FAX} +  |  {UI_CONFIG.EMAIL} +

+
+
+

{UI_CONFIG.COPYRIGHT}

+
); } diff --git a/frontend/app/(main)/COMPANY_10/design/change-management/page.tsx b/frontend/app/(main)/COMPANY_10/design/change-management/page.tsx deleted file mode 100644 index 1e5fb7a0..00000000 --- a/frontend/app/(main)/COMPANY_10/design/change-management/page.tsx +++ /dev/null @@ -1,1524 +0,0 @@ -"use client"; - -import React, { useState, useMemo, useEffect, useCallback } from "react"; -import { Button } from "@/components/ui/button"; -import { Input } from "@/components/ui/input"; -import { - Select, - SelectContent, - SelectItem, - SelectTrigger, - SelectValue, -} from "@/components/ui/select"; -import { - Table, - TableBody, - TableCell, - TableHead, - TableHeader, - TableRow, -} from "@/components/ui/table"; -import { Badge } from "@/components/ui/badge"; -import { Checkbox } from "@/components/ui/checkbox"; -import { - Dialog, - DialogContent, - DialogHeader, - DialogTitle, - DialogFooter, - DialogDescription, -} from "@/components/ui/dialog"; -import { Label } from "@/components/ui/label"; -import { Textarea } from "@/components/ui/textarea"; -import { - Plus, - Save, - Inbox, - Pencil, - FileText, - XCircle, - ArrowRight, - Paperclip, - Upload, - Loader2, - Settings2, -} from "lucide-react"; -import { cn } from "@/lib/utils"; -import { toast } from "sonner"; -import { - getDesignRequestList, - createDesignRequest, - updateDesignRequest, - addRequestHistory, - getEcnList, - createEcn, - updateEcn, -} from "@/lib/api/design"; -import { useTableSettings } from "@/hooks/useTableSettings"; -import { TableSettingsModal } from "@/components/common/TableSettingsModal"; -import { DynamicSearchFilter, FilterValue } from "@/components/common/DynamicSearchFilter"; -import { EDataTable, EDataTableColumn } from "@/components/common/EDataTable"; - -// --- Types --- -type ChangeType = "설계오류" | "원가절감" | "고객요청" | "공정개선" | "법규대응"; -type EcrStatus = "요청접수" | "영향도분석" | "ECN발행" | "기각"; -type EcnStatus = "ECN발행" | "도면변경" | "통보완료" | "적용완료"; -type TabType = "ecr" | "ecn"; - -interface EcrHistory { - status: string; - date: string; - user: string; - desc: string; -} - -interface EcrItem { - id: string; - _id?: string; - date: string; - changeType: ChangeType; - urgency: "보통" | "긴급"; - status: EcrStatus; - target: string; - drawingNo: string; - reqDept: string; - requester: string; - reason: string; - content: string; - impact: string[]; - applyTiming: string; - ecnNo: string; - history: EcrHistory[]; -} - -interface EcnItem { - id: string; - _id?: string; - ecrNo: string; - ecrId?: string; - date: string; - applyDate: string; - status: EcnStatus; - target: string; - drawingBefore: string; - drawingAfter: string; - designer: string; - before: string; - after: string; - reason: string; - notifyDepts: string[]; - remark: string; - history: EcrHistory[]; -} - -// --- Style Helpers --- -const getChangeTypeStyle = (type: ChangeType) => { - switch (type) { - case "설계오류": - return "bg-destructive/10 text-destructive border-destructive/20"; - case "원가절감": - return "bg-success/10 text-success border-success/20"; - case "고객요청": - return "bg-info/10 text-info border-info/20"; - case "공정개선": - return "bg-warning/10 text-warning border-warning/20"; - case "법규대응": - return "bg-primary/10 text-primary border-primary/20"; - default: - return "bg-muted text-muted-foreground border-border"; - } -}; - -const getEcrStatusStyle = (status: EcrStatus) => { - switch (status) { - case "요청접수": - return "bg-info/10 text-info border-info/20"; - case "영향도분석": - return "bg-warning/10 text-warning border-warning/20"; - case "ECN발행": - return "bg-success/10 text-success border-success/20"; - case "기각": - return "bg-muted text-muted-foreground border-border"; - default: - return "bg-muted text-muted-foreground border-border"; - } -}; - -const getEcnStatusStyle = (status: EcnStatus) => { - switch (status) { - case "ECN발행": - return "bg-info/10 text-info border-info/20"; - case "도면변경": - return "bg-primary/10 text-primary border-primary/20"; - case "통보완료": - return "bg-warning/10 text-warning border-warning/20"; - case "적용완료": - return "bg-success/10 text-success border-success/20"; - default: - return "bg-muted text-muted-foreground border-border"; - } -}; - -const getImpactBadgeStyle = (impact: string) => { - switch (impact) { - case "BOM": - return "bg-info/10 text-info border-info/20"; - case "공정": - return "bg-warning/10 text-warning border-warning/20"; - case "금형": - return "bg-destructive/10 text-destructive border-destructive/20"; - case "검사기준": - return "bg-primary/10 text-primary border-primary/20"; - case "구매": - case "원가": - return "bg-success/10 text-success border-success/20"; - default: - return "bg-muted text-muted-foreground border-border"; - } -}; - -const getTimelineStatusStyle = (status: string) => { - switch (status) { - case "기각": - return "bg-muted text-muted-foreground border-border"; - case "적용완료": - case "ECN발행": - return "bg-success/10 text-success border-success/20"; - case "영향도분석": - return "bg-warning/10 text-warning border-warning/20"; - case "도면변경": - return "bg-primary/10 text-primary border-primary/20"; - case "통보완료": - return "bg-info/10 text-info border-info/20"; - default: - return "bg-info/10 text-info border-info/20"; - } -}; - -// --- Constants --- -const CHANGE_TYPES: ChangeType[] = ["설계오류", "원가절감", "고객요청", "공정개선", "법규대응"]; -const ECR_STATUSES: EcrStatus[] = ["요청접수", "영향도분석", "ECN발행", "기각"]; -const ECN_STATUSES: EcnStatus[] = ["ECN발행", "도면변경", "통보완료", "적용완료"]; -const DEPARTMENTS = ["품질팀", "생산팀", "영업팀", "구매팀", "설계팀"]; -const DESIGNERS = ["이설계", "박도면", "최기구", "김전장"]; -const IMPACT_OPTIONS = [ - { key: "BOM", label: "BOM 변경" }, - { key: "공정", label: "공정 변경" }, - { key: "금형", label: "금형 변경" }, - { key: "검사기준", label: "검사기준 변경" }, - { key: "구매", label: "구매 변경" }, - { key: "원가", label: "원가 영향" }, -]; -const NOTIFY_DEPTS = [ - { key: "생산팀", label: "생산팀" }, - { key: "품질팀", label: "품질팀" }, - { key: "구매팀", label: "구매팀" }, - { key: "영업팀", label: "영업팀" }, - { key: "물류팀", label: "물류팀" }, - { key: "금형팀", label: "금형팀" }, -]; - -// --- API Response Mapping --- -function mapEcrFromApi(raw: any): EcrItem { - const history = (raw.history || []).map((h: any) => ({ - status: h.step || h.status || "", - date: h.history_date || "", - user: h.user_name || "", - desc: h.description || "", - })); - return { - id: raw.request_no || raw.id || "", - _id: raw.id, - date: raw.request_date || "", - changeType: (raw.change_type as ChangeType) || "설계오류", - urgency: (raw.urgency as "보통" | "긴급") || "보통", - status: (raw.status as EcrStatus) || "요청접수", - target: raw.target_name || "", - drawingNo: raw.drawing_no || "", - reqDept: raw.req_dept || "", - requester: raw.requester || "", - reason: raw.reason || "", - content: raw.content || "", - impact: Array.isArray(raw.impact) ? raw.impact : [], - applyTiming: raw.apply_timing || "", - ecnNo: raw.ecn_no || "", - history, - }; -} - -function mapEcnFromApi(raw: any, ecrData: EcrItem[]): EcnItem { - const history = (raw.history || []).map((h: any) => ({ - status: h.status || "", - date: h.history_date || "", - user: h.user_name || "", - desc: h.description || "", - })); - const ecrNo = raw.ecr_id - ? ecrData.find((e) => e._id === raw.ecr_id)?.id ?? raw.ecr_id - : ""; - return { - id: raw.ecn_no || raw.id || "", - _id: raw.id, - ecrNo, - ecrId: raw.ecr_id, - date: raw.ecn_date || "", - applyDate: raw.apply_date || "", - status: (raw.status as EcnStatus) || "ECN발행", - target: raw.target || "", - drawingBefore: raw.drawing_before || "", - drawingAfter: raw.drawing_after || "", - designer: raw.designer || "", - before: raw.before_content || "", - after: raw.after_content || "", - reason: raw.reason || "", - notifyDepts: Array.isArray(raw.notify_depts) ? raw.notify_depts : [], - remark: raw.remark || "", - history, - }; -} - -// --- Timeline Component --- -function Timeline({ history }: { history: EcrHistory[] }) { - return ( -
- {history.map((h, idx) => { - const isLast = idx === history.length - 1; - const isRejected = h.status === "기각"; - const isCompleted = h.status === "적용완료"; - return ( -
-
-
- {!isLast && ( -
- )} -
-
-
- - {h.status} - -
-

{h.desc}

-

- {h.date} · {h.user} -

-
-
- ); - })} -
- ); -} - -// --- Grid Columns --- -const ECR_GRID_COLUMNS = [ - { key: "request_no", label: "ECR번호" }, - { key: "change_type", label: "변경유형" }, - { key: "status", label: "상태" }, - { key: "urgency", label: "긴급" }, - { key: "target_name", label: "대상 품목/설비" }, - { key: "drawing_no", label: "도면번호" }, - { key: "req_dept", label: "요청부서" }, - { key: "requester", label: "요청자" }, - { key: "request_date", label: "요청일자" }, - { key: "ecn_no", label: "관련 ECN" }, -]; - -const ECN_GRID_COLUMNS = [ - { key: "ecn_no", label: "ECN번호" }, - { key: "status", label: "상태" }, - { key: "target", label: "대상 품목/설비" }, - { key: "drawing_after", label: "도면 (변경 후)" }, - { key: "designer", label: "설계담당" }, - { key: "ecn_date", label: "발행일자" }, - { key: "apply_date", label: "적용일자" }, - { key: "notify_depts", label: "통보 부서" }, - { key: "ecr_id", label: "관련 ECR" }, -]; - -// --- Main Component --- -export default function DesignChangeManagementPage() { - const tsEcr = useTableSettings("c16-change-management-ecr", "dsn_design_request", ECR_GRID_COLUMNS); - const tsEcn = useTableSettings("c16-change-management-ecn", "dsn_ecn", ECN_GRID_COLUMNS); - const [currentTab, setCurrentTab] = useState("ecr"); - const [ecrData, setEcrData] = useState([]); - const [ecnData, setEcnData] = useState([]); - const [loading, setLoading] = useState(true); - const [selectedId, setSelectedId] = useState(null); - const [detailOpen, setDetailOpen] = useState(false); - - // 검색 필터 (DynamicSearchFilter) - const [searchFilters, setSearchFilters] = useState([]); - - // ECR 모달 - const [isEcrModalOpen, setIsEcrModalOpen] = useState(false); - const [isEcrEditMode, setIsEcrEditMode] = useState(false); - const [ecrForm, setEcrForm] = useState>({}); - const [ecrImpactChecks, setEcrImpactChecks] = useState>({}); - - // ECN 모달 - const [isEcnModalOpen, setIsEcnModalOpen] = useState(false); - const [ecnForm, setEcnForm] = useState>({}); - const [ecnNotifyChecks, setEcnNotifyChecks] = useState>({}); - - // 기각 모달 - const [isRejectModalOpen, setIsRejectModalOpen] = useState(false); - const [rejectReason, setRejectReason] = useState(""); - const [rejectTargetId, setRejectTargetId] = useState(""); - - - const fetchData = useCallback(async () => { - setLoading(true); - try { - const [ecrRes, ecnRes] = await Promise.all([ - getDesignRequestList({ source_type: "ecr" }), - getEcnList(), - ]); - if (ecrRes.success && ecrRes.data) { - setEcrData((ecrRes.data as any[]).map(mapEcrFromApi)); - } - if (ecnRes.success && ecnRes.data) { - const ecrList = ecrRes.success && ecrRes.data ? (ecrRes.data as any[]).map(mapEcrFromApi) : []; - setEcnData((ecnRes.data as any[]).map((r) => mapEcnFromApi(r, ecrList))); - } - } catch { - toast.error("데이터를 불러오는데 실패했어요."); - } finally { - setLoading(false); - } - }, []); - - useEffect(() => { - fetchData(); - }, [fetchData]); - - // snake_case → camelCase 매핑 (ECR) - const ecrFieldMap: Record = { - request_no: "id", - request_date: "date", - change_type: "changeType", - target_name: "target", - drawing_no: "drawingNo", - req_dept: "reqDept", - ecn_no: "ecnNo", - apply_timing: "applyTiming", - }; - // snake_case → camelCase 매핑 (ECN) - const ecnFieldMap: Record = { - ecn_no: "id", - ecn_date: "date", - apply_date: "applyDate", - drawing_before: "drawingBefore", - drawing_after: "drawingAfter", - ecr_id: "ecrNo", - notify_depts: "notifyDepts", - }; - const getFieldValue = (obj: any, colName: string, map: Record): string => { - const key = map[colName] || colName; - const val = obj[key]; - if (Array.isArray(val)) return val.join(","); - return val !== undefined && val !== null ? String(val) : ""; - }; - - const applyFilters = (items: any[], map: Record) => { - if (searchFilters.length === 0) return items; - return items.filter((item) => { - for (const f of searchFilters) { - const val = getFieldValue(item, f.columnName, map); - if (f.operator === "contains") { - if (!val.toLowerCase().includes(f.value.toLowerCase())) return false; - } else if (f.operator === "equals") { - if (val.toLowerCase() !== (f.value ?? "").toLowerCase()) return false; - } else if (f.operator === "in") { - const allowed = f.value.split("|").map((a) => a.toLowerCase()); - if (!allowed.includes(val.toLowerCase())) return false; - } else if (f.operator === "between") { - const [from, to] = f.value.split("|"); - if (from && val < from) return false; - if (to && val > to) return false; - } - } - return true; - }); - }; - - // --- Filtered Data --- - const filteredEcr = useMemo(() => { - return applyFilters(ecrData, ecrFieldMap) - .sort((a: EcrItem, b: EcrItem) => b.date.localeCompare(a.date)); - }, [ecrData, searchFilters]); - - const filteredEcn = useMemo(() => { - return applyFilters(ecnData, ecnFieldMap) - .sort((a: EcnItem, b: EcnItem) => b.date.localeCompare(a.date)); - }, [ecnData, searchFilters]); - - // --- Status Counts --- - const ecrStatusCounts = useMemo(() => { - const counts: Record = {}; - ECR_STATUSES.forEach((s) => (counts[s] = ecrData.filter((r) => r.status === s).length)); - return counts; - }, [ecrData]); - - const ecnStatusCounts = useMemo(() => { - const counts: Record = {}; - ECN_STATUSES.forEach((s) => (counts[s] = ecnData.filter((r) => r.status === s).length)); - return counts; - }, [ecnData]); - - // --- Selected Items --- - const selectedEcr = useMemo( - () => (currentTab === "ecr" ? ecrData.find((r) => r.id === selectedId) : null), - [ecrData, selectedId, currentTab] - ); - const selectedEcn = useMemo( - () => (currentTab === "ecn" ? ecnData.find((r) => r.id === selectedId) : null), - [ecnData, selectedId, currentTab] - ); - - // --- Tab Switch --- - const handleTabSwitch = (tab: TabType) => { - setCurrentTab(tab); - setSelectedId(null); - }; - - const handleFilterByStatus = (_status: string) => { - // Status filter now handled by DynamicSearchFilter - }; - - // --- ECR/ECN Navigation --- - const navigateToLink = (targetId: string) => { - setDetailOpen(false); - if (targetId.startsWith("ECN")) { - setCurrentTab("ecn"); - setSelectedId(targetId); - } else if (targetId.startsWith("ECR")) { - setCurrentTab("ecr"); - setSelectedId(targetId); - } - }; - - // --- ECR Number Generator --- - const generateEcrNo = useCallback(() => { - const year = new Date().getFullYear(); - const prefix = `ECR-${year}-`; - const existing = ecrData.filter((r) => r.id.startsWith(prefix)); - const maxNum = existing.reduce((max, r) => { - const num = parseInt(r.id.split("-")[2]); - return num > max ? num : max; - }, 0); - return `${prefix}${String(maxNum + 1).padStart(4, "0")}`; - }, [ecrData]); - - const generateEcnNo = useCallback(() => { - const year = new Date().getFullYear(); - const prefix = `ECN-${year}-`; - const existing = ecnData.filter((r) => r.id.startsWith(prefix)); - const maxNum = existing.reduce((max, r) => { - const num = parseInt(r.id.split("-")[2]); - return num > max ? num : max; - }, 0); - return `${prefix}${String(maxNum + 1).padStart(4, "0")}`; - }, [ecnData]); - - // --- ECR Modal --- - const openEcrRegisterModal = () => { - setIsEcrEditMode(false); - setEcrForm({ - id: generateEcrNo(), - date: new Date().toISOString().split("T")[0], - changeType: undefined, - urgency: "보통", - target: "", - drawingNo: "", - reqDept: "", - requester: "", - reason: "", - content: "", - applyTiming: "즉시", - }); - setEcrImpactChecks({}); - setIsEcrModalOpen(true); - }; - - const openEcrEditModal = (id: string) => { - const item = ecrData.find((r) => r.id === id); - if (!item) return; - setIsEcrEditMode(true); - setEcrForm({ ...item }); - const checks: Record = {}; - IMPACT_OPTIONS.forEach((opt) => { - checks[opt.key] = item.impact.includes(opt.key); - }); - setEcrImpactChecks(checks); - setIsEcrModalOpen(true); - }; - - const handleSaveEcr = async () => { - if (!ecrForm.changeType) { - toast.error("변경 유형을 선택해 주세요."); - return; - } - if (!ecrForm.target?.trim()) { - toast.error("대상 품목/설비를 입력해 주세요."); - return; - } - if (!ecrForm.reason?.trim()) { - toast.error("변경 사유를 입력해 주세요."); - return; - } - if (!ecrForm.content?.trim()) { - toast.error("변경 요구 내용을 입력해 주세요."); - return; - } - - const impact = IMPACT_OPTIONS.filter((opt) => ecrImpactChecks[opt.key]).map((opt) => opt.key); - const reqDate = ecrForm.date || new Date().toISOString().split("T")[0]; - const historyEntry = { - step: "요청접수", - history_date: reqDate, - user_name: ecrForm.requester || "시스템", - description: `${ecrForm.reqDept || ""}에서 ECR 등록`, - }; - - if (isEcrEditMode && ecrForm._id) { - const res = await updateDesignRequest(ecrForm._id, { - request_no: ecrForm.id, - request_date: reqDate, - change_type: ecrForm.changeType, - urgency: ecrForm.urgency || "보통", - target_name: ecrForm.target, - drawing_no: ecrForm.drawingNo || "", - req_dept: ecrForm.reqDept || "", - requester: ecrForm.requester || "", - reason: ecrForm.reason, - content: ecrForm.content, - impact, - apply_timing: ecrForm.applyTiming || "즉시", - }); - if (res.success) { - toast.success("ECR이 수정되었어요."); - setIsEcrModalOpen(false); - fetchData(); - } else { - toast.error(res.message || "ECR 수정에 실패했어요."); - } - } else { - const res = await createDesignRequest({ - request_no: ecrForm.id || generateEcrNo(), - source_type: "ecr", - request_date: reqDate, - change_type: ecrForm.changeType, - urgency: ecrForm.urgency || "보통", - status: "요청접수", - target_name: ecrForm.target, - drawing_no: ecrForm.drawingNo || "", - req_dept: ecrForm.reqDept || "", - requester: ecrForm.requester || "", - reason: ecrForm.reason, - content: ecrForm.content, - impact, - apply_timing: ecrForm.applyTiming || "즉시", - history: [historyEntry], - }); - if (res.success) { - toast.success("ECR이 등록되었어요."); - setIsEcrModalOpen(false); - fetchData(); - } else { - toast.error(res.message || "ECR 등록에 실패했어요."); - } - } - }; - - // --- ECN Modal --- - const openEcnIssueModal = (ecrId: string) => { - const ecr = ecrData.find((r) => r.id === ecrId); - if (!ecr) return; - - setEcnForm({ - id: generateEcnNo(), - ecrNo: ecrId, - ecrId: ecr._id, - date: new Date().toISOString().split("T")[0], - target: ecr.target, - reason: ecr.reason, - drawingBefore: ecr.drawingNo, - drawingAfter: "", - designer: "", - before: "", - after: "", - applyDate: "", - remark: "", - }); - setEcnNotifyChecks({}); - setIsEcnModalOpen(true); - }; - - const handleSaveEcn = async () => { - if (!ecnForm.after?.trim()) { - toast.error("변경 후(TO-BE) 내용을 입력해 주세요."); - return; - } - if (!ecnForm.applyDate) { - toast.error("적용일자를 입력해 주세요."); - return; - } - if (!ecnForm.ecrId) { - toast.error("관련 ECR 정보가 없어요."); - return; - } - - const notifyDepts = NOTIFY_DEPTS.filter((d) => ecnNotifyChecks[d.key]).map((d) => d.key); - const ecnDate = ecnForm.date || new Date().toISOString().split("T")[0]; - const historyEntry = { - status: "ECN발행", - history_date: ecnDate, - user_name: ecnForm.designer || "시스템", - description: "ECN 발행", - }; - - const ecnNo = ecnForm.id || generateEcnNo(); - const res = await createEcn({ - ecn_no: ecnNo, - ecr_id: ecnForm.ecrId, - ecn_date: ecnDate, - apply_date: ecnForm.applyDate, - status: "ECN발행", - target: ecnForm.target || "", - drawing_before: ecnForm.drawingBefore || "", - drawing_after: ecnForm.drawingAfter || "(미정)", - designer: ecnForm.designer || "", - before_content: ecnForm.before || "", - after_content: ecnForm.after || "", - reason: ecnForm.reason || "", - remark: ecnForm.remark || "", - notify_depts: notifyDepts, - history: [historyEntry], - }); - - if (res.success) { - await updateDesignRequest(ecnForm.ecrId!, { - status: "ECN발행", - ecn_no: ecnNo, - }); - await addRequestHistory(ecnForm.ecrId!, { - step: "ECN발행", - history_date: ecnDate, - user_name: ecnForm.designer || "시스템", - description: `${ecnNo} 발행`, - }); - toast.success("ECN이 발행되었어요."); - setIsEcnModalOpen(false); - fetchData(); - } else { - toast.error(res.message || "ECN 발행에 실패했어요."); - } - }; - - // --- ECR Reject --- - const openRejectModal = (id: string) => { - setRejectTargetId(id); - setRejectReason(""); - setIsRejectModalOpen(true); - }; - - const handleRejectSubmit = async () => { - if (!rejectReason.trim()) { - toast.error("기각 사유를 입력해 주세요."); - return; - } - - const ecr = ecrData.find((r) => r.id === rejectTargetId); - if (!ecr?._id) { - toast.error("ECR 정보를 찾을 수 없어요."); - return; - } - - const updateRes = await updateDesignRequest(ecr._id, { status: "기각", review_memo: rejectReason }); - if (!updateRes.success) { - toast.error(updateRes.message || "ECR 기각에 실패했어요."); - return; - } - await addRequestHistory(ecr._id, { - step: "기각", - history_date: new Date().toISOString().split("T")[0], - user_name: "설계팀", - description: rejectReason, - }); - toast.success("ECR이 기각되었어요."); - setIsRejectModalOpen(false); - fetchData(); - }; - - // --- Stat Cards --- - const ecrStatCards = [ - { label: "요청접수", value: ecrStatusCounts["요청접수"] || 0, color: "text-info" }, - { label: "영향도분석", value: ecrStatusCounts["영향도분석"] || 0, color: "text-warning" }, - { label: "ECN발행", value: ecrStatusCounts["ECN발행"] || 0, color: "text-success" }, - ]; - - const ecnStatCards = [ - { label: "도면변경", value: ecnStatusCounts["도면변경"] || 0, color: "text-primary" }, - { label: "통보완료", value: ecnStatusCounts["통보완료"] || 0, color: "text-info" }, - { label: "적용완료", value: ecnStatusCounts["적용완료"] || 0, color: "text-success" }, - ]; - - const currentStatCards = currentTab === "ecr" ? ecrStatCards : ecnStatCards; - const currentList = currentTab === "ecr" ? filteredEcr : filteredEcn; - - const handleRowClick = (id: string) => { - setSelectedId(id); - setDetailOpen(true); - }; - - return ( -
- {loading && ( -
- -
- )} - - {/* 탭 선택 + 검색 필터 */} -
-
- -
- {currentTab === "ecr" ? ( - - ) : ( - - )} -
- - {/* 현황 카드 */} -
- {currentStatCards.map((card) => ( - - ))} -
- - {/* 액션 바 */} -
-
-

- {currentTab === "ecr" ? "설계변경요청(ECR) 목록" : "설계변경통지(ECN) 목록"} -

- {currentList.length}건 -
-
- {currentTab === "ecr" && ( - - )} - -
-
- - {/* 테이블 영역 */} -
-
- {currentTab === "ecr" ? ( - {val} }, - { key: "changeType", label: "변경유형", width: "w-[90px]", align: "center" as const, render: (val: any) => {val} }, - { key: "status", label: "상태", width: "w-[90px]", align: "center" as const, render: (val: any) => {val} }, - { key: "urgency", label: "긴급", width: "w-[60px]", align: "center" as const, render: (val: any) => val === "긴급" ? 긴급 : - }, - { key: "target", label: "대상 품목/설비", width: "w-[200px]" }, - { key: "drawingNo", label: "도면번호", width: "w-[150px]" }, - { key: "reqDept", label: "요청부서", width: "w-[80px]" }, - { key: "requester", label: "요청자", width: "w-[70px]" }, - { key: "date", label: "요청일자", width: "w-[100px]" }, - { key: "ecnNo", label: "관련 ECN", width: "w-[130px]", render: (val: any) => val ? : - }, - ] as EDataTableColumn[]} - data={tsEcr.groupData(filteredEcr)} - rowKey={(row) => row.id} - selectedId={selectedId} - onSelect={(id) => { if (id) handleRowClick(id); }} - onRowClick={(row) => handleRowClick(row.id)} - emptyMessage="조건에 맞는 ECR이 없어요" - showRowNumber - showPagination={false} - draggableColumns={false} - /> - ) : ( - {val} }, - { key: "status", label: "상태", width: "w-[90px]", align: "center" as const, render: (val: any) => {val} }, - { key: "target", label: "대상 품목/설비", width: "w-[200px]" }, - { key: "drawingAfter", label: "도면 (변경 후)", width: "w-[160px]", render: (val: any) => {val} }, - { key: "designer", label: "설계담당", width: "w-[80px]" }, - { key: "date", label: "발행일자", width: "w-[100px]" }, - { key: "applyDate", label: "적용일자", width: "w-[100px]" }, - { key: "notifyDepts", label: "통보 부서", width: "w-[140px]", render: (val: any) => {Array.isArray(val) ? val.join(", ") : val} }, - { key: "ecrNo", label: "관련 ECR", width: "w-[130px]", render: (val: any) => }, - ] as EDataTableColumn[]} - data={tsEcn.groupData(filteredEcn)} - rowKey={(row) => row.id} - selectedId={selectedId} - onSelect={(id) => { if (id) handleRowClick(id); }} - onRowClick={(row) => handleRowClick(row.id)} - emptyMessage="조건에 맞는 ECN이 없어요" - showRowNumber - showPagination={false} - draggableColumns={false} - /> - )} -
-
- - {/* 상세 정보 다이얼로그 */} - - - - {currentTab === "ecr" ? `ECR 상세 — ${selectedEcr?.id || ""}` : `ECN 상세 — ${selectedEcn?.id || ""}`} - {currentTab === "ecr" ? "설계변경요청의 상세 정보를 확인해요." : "설계변경통지의 상세 정보를 확인해요."} - -
-
- {/* ECR 상세 */} - {selectedEcr ? ( - <> -
-

- 기본 정보 -

-
-
- ECR번호 - {selectedEcr.id} -
-
- 상태 - - {selectedEcr.status} - -
-
- 변경 유형 - - {selectedEcr.changeType} - -
-
- 긴급도 - - {selectedEcr.urgency === "긴급" ? ( - 긴급 - ) : ( - "보통" - )} - -
-
- 대상 품목/설비 - {selectedEcr.target} -
-
- 도면번호 - {selectedEcr.drawingNo} -
-
- 요청부서 / 요청자 - {selectedEcr.reqDept} / {selectedEcr.requester} -
-
- 요청일자 - {selectedEcr.date} -
-
- 희망 적용시점 - {selectedEcr.applyTiming} -
-
- 관련 ECN - {selectedEcr.ecnNo ? ( - - ) : ( - 미발행 - )} -
-
-
- -
-

변경 사유

-
- {selectedEcr.reason} -
-
- -
-

변경 요구 내용

-
- {selectedEcr.content} -
-
- -
-

영향 범위

-
- {selectedEcr.impact.map((imp) => ( - - {imp} - - ))} -
-
- -
-

처리 이력

- -
- - ) : selectedEcn ? ( - <> -
-

- ECN 기본 정보 -

-
-
- ECN번호 - {selectedEcn.id} -
-
- 상태 - - {selectedEcn.status} - -
-
- 대상 품목/설비 - {selectedEcn.target} -
-
- 설계담당 - {selectedEcn.designer} -
-
- 발행일자 - {selectedEcn.date} -
-
- 적용일자 - {selectedEcn.applyDate} -
-
- 관련 ECR - -
-
- 통보 부서 - {selectedEcn.notifyDepts.join(", ")} -
-
-
- -
-

변경 전/후 비교

-
-
-
- 변경 전 ({selectedEcn.drawingBefore}) -
-
{selectedEcn.before}
-
-
-
- 변경 후 ({selectedEcn.drawingAfter}) -
-
{selectedEcn.after}
-
-
-
- -
-

변경 사유

-
- {selectedEcn.reason} -
- {selectedEcn.remark && ( -

비고: {selectedEcn.remark}

- )} -
- -
-

처리 이력

- -
- - ) : null} -
-
- - {selectedEcr && ( - <> - - {selectedEcr.status === "영향도분석" && ( - <> - - - - )} - - )} - -
-
- - {/* ECR 등록/수정 모달 */} - - - - {isEcrEditMode ? "설계변경요청(ECR) 수정" : "설계변경요청(ECR) 등록"} - {isEcrEditMode ? "ECR 정보를 수정해요." : "새로운 설계변경요청을 등록해요."} - -
-
- {/* 좌측: 요청 정보 */} -
-

변경 요청 정보

- -
- - -
- -
-
- - setEcrForm((p) => ({ ...p, date: e.target.value }))} - className="h-8 text-xs sm:h-10 sm:text-sm" - /> -
-
- - -
-
- -
-
- - -
-
- - -
-
- -
- - setEcrForm((p) => ({ ...p, target: e.target.value }))} - placeholder="품목코드 / 설비명" - className="h-8 text-xs sm:h-10 sm:text-sm" - /> -
- -
- - setEcrForm((p) => ({ ...p, drawingNo: e.target.value }))} - placeholder="DWG-XXX-XXX" - className="h-8 text-xs sm:h-10 sm:text-sm" - /> -
- -
-
- - -
-
- - setEcrForm((p) => ({ ...p, requester: e.target.value }))} - placeholder="요청자명" - className="h-8 text-xs sm:h-10 sm:text-sm" - /> -
-
-
- - {/* 우측: 변경 내용 */} -
-
-

변경 내용

- -
- -