From 0ea253befd8a03902833f109d2edb09e4c170d59 Mon Sep 17 00:00:00 2001 From: Hyungi Ahn Date: Thu, 5 Feb 2026 10:25:26 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EC=9E=91=EC=97=85=EC=9E=90=EB=B3=84=20?= =?UTF-8?q?=ED=98=84=ED=99=A9=20=ED=85=8C=EC=9D=B4=EB=B8=94=EB=8F=84=20?= =?UTF-8?q?=EB=8C=80=EB=B6=84=EB=A5=98=EB=A1=9C=20=EA=B7=B8=EB=A3=B9?= =?UTF-8?q?=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - renderWorkReportTable 함수에서 getMajorCategory() 사용 - 작업내용을 대분류(Base제작, 용기제작, 파이핑 등)로 표시 Co-Authored-By: Claude Opus 4.5 --- web-ui/pages/work/analysis.html | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/web-ui/pages/work/analysis.html b/web-ui/pages/work/analysis.html index 0a2fcfe..fb10bd3 100644 --- a/web-ui/pages/work/analysis.html +++ b/web-ui/pages/work/analysis.html @@ -2483,40 +2483,42 @@ // 작업자별로 데이터 그룹화 (프로젝트별로 먼저 그룹화) const workerGroupedData = {}; - // 상세 데이터에서 작업자별 프로젝트-작업유형 데이터 수집 + // 상세 데이터에서 작업자별 프로젝트-작업유형 데이터 수집 (대분류 기준) if (recentWorkData && Array.isArray(recentWorkData)) { recentWorkData.forEach(work => { const workerName = work.worker_name || '알 수 없음'; const projectName = work.project_name || '알 수 없는 프로젝트'; - const workTypeName = work.work_type_name || `작업유형 ${work.work_type_id}`; const workHours = parseFloat(work.work_hours) || 0; const workDate = work.report_date; - + // 주말 연차/휴무는 집계에서 제외 if (isVacationProject(projectName) && isWeekend(workDate)) { console.log(`🚫 주말 연차/휴무 제외: ${workerName} - ${projectName} (${formatSimpleDate(workDate)})`); return; // 집계하지 않음 } - + if (!workerGroupedData[workerName]) { workerGroupedData[workerName] = {}; } - + if (!workerGroupedData[workerName][projectName]) { workerGroupedData[workerName][projectName] = {}; } - - // 연차/휴무 프로젝트는 작업내용을 통합 - let finalWorkTypeName = workTypeName; + + // 대분류로 작업내용 그룹화 + let finalWorkTypeName; if (isVacationProject(projectName)) { finalWorkTypeName = '-'; // 연차/휴무는 작업내용을 '-'로 통합 - console.log(`🏖️ 연차/휴무 통합: ${workerName} - ${projectName} (${workTypeName} → -)`); + } else { + // 대분류 매핑 사용 + const majorCategory = getMajorCategory(work.work_type_id); + finalWorkTypeName = majorCategory.name; } - + if (!workerGroupedData[workerName][projectName][finalWorkTypeName]) { workerGroupedData[workerName][projectName][finalWorkTypeName] = 0; } - + workerGroupedData[workerName][projectName][finalWorkTypeName] += workHours; totalHours += workHours; });