diff --git a/web-ui/pages/work/analysis.html b/web-ui/pages/work/analysis.html index b1cb577..0a2fcfe 100644 --- a/web-ui/pages/work/analysis.html +++ b/web-ui/pages/work/analysis.html @@ -982,7 +982,23 @@ function isVacationProject(projectName) { return WorkAnalysis.utils.isVacationProject(projectName); } - + + // 대분류 매핑 함수 (work_type_id → 대분류) + function getMajorCategory(workTypeId) { + // 대분류 매핑: 1=Base제작, 2=용기제작, 3=파이핑 + const majorCategories = { + 1: { id: 1, name: 'Base제작' }, + 2: { id: 2, name: '용기제작' }, + 3: { id: 3, name: '파이핑' }, + 4: { id: 4, name: '작업대기' }, + 11: { id: 11, name: '휴무' }, + 12: { id: 12, name: '시설설비' } + }; + + // 매핑된 대분류가 있으면 반환, 없으면 기타 + return majorCategories[workTypeId] || { id: 0, name: '기타' }; + } + function getKSTDate() { return WorkAnalysis.utils.getKSTDate(); } @@ -1503,21 +1519,20 @@ vacationData.regularHours += hours; } } else { - // 일반 프로젝트 처리 - const workTypeKey = work.work_type_id || 'unknown'; + // 일반 프로젝트 처리 - 대분류로 그룹화 + const majorCategory = getMajorCategory(work.work_type_id); const projectName = work.project_name || `프로젝트 ${work.project_id}`; - const workTypeName = work.work_type_name || `작업유형 ${workTypeKey}`; - - // 작업 형태별로 집계 (프로젝트별로 구분) - const combinedKey = `${work.project_id || 'unknown'}_${workTypeKey}`; - + + // 대분류 기준으로 집계 (프로젝트별로 구분) + const combinedKey = `${work.project_id || 'unknown'}_${majorCategory.id}`; + if (!workTypeMap.has(combinedKey)) { workTypeMap.set(combinedKey, { project_id: work.project_id, project_name: projectName, job_no: work.job_no, - work_type_id: workTypeKey, - work_type_name: workTypeName, + work_type_id: majorCategory.id, + work_type_name: majorCategory.name, regularHours: 0, errorHours: 0, errorDetails: new Map(), // 오류 유형별 세분화 @@ -1780,9 +1795,9 @@ } } - // 주말 체크 함수 및 연차/휴무 프로젝트 체크 함수는 상단에 통합 정의됨 - - // recent-work 데이터로 프로젝트별 취합 + // 주말 체크 함수, 연차/휴무 프로젝트 체크 함수, 대분류 매핑 함수는 상단에 정의됨 + + // recent-work 데이터로 프로젝트별 취합 (대분류 기준) function aggregateProjectData(recentWorkData) { const projectMap = new Map(); let vacationData = { @@ -1822,12 +1837,15 @@ } const project = projectMap.get(projectKey); - const workTypeKey = `${work.work_type_id}_${work.work_type_name}`; - + + // 대분류로 그룹화 + const majorCategory = getMajorCategory(work.work_type_id); + const workTypeKey = `${majorCategory.id}_${majorCategory.name}`; + if (!project.work_types.has(workTypeKey)) { project.work_types.set(workTypeKey, { - work_type_id: work.work_type_id, - work_type_name: work.work_type_name, + work_type_id: majorCategory.id, + work_type_name: majorCategory.name, total_hours: 0, regular_hours: 0, error_hours: 0,