fix: 작업 분석 페이지 작업내용을 대분류로 그룹화
- getMajorCategory() 함수 추가 - work_type_id를 대분류(Base제작, 용기제작, 파이핑, 작업대기, 휴무, 시설설비, 기타)로 매핑 - 개별 작업유형 대신 대분류 기준으로 집계 - 세부 분류는 다른 분석에서 처리 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -982,7 +982,23 @@
|
|||||||
function isVacationProject(projectName) {
|
function isVacationProject(projectName) {
|
||||||
return WorkAnalysis.utils.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() {
|
function getKSTDate() {
|
||||||
return WorkAnalysis.utils.getKSTDate();
|
return WorkAnalysis.utils.getKSTDate();
|
||||||
}
|
}
|
||||||
@@ -1503,21 +1519,20 @@
|
|||||||
vacationData.regularHours += hours;
|
vacationData.regularHours += hours;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// 일반 프로젝트 처리
|
// 일반 프로젝트 처리 - 대분류로 그룹화
|
||||||
const workTypeKey = work.work_type_id || 'unknown';
|
const majorCategory = getMajorCategory(work.work_type_id);
|
||||||
const projectName = work.project_name || `프로젝트 ${work.project_id}`;
|
const projectName = work.project_name || `프로젝트 ${work.project_id}`;
|
||||||
const workTypeName = work.work_type_name || `작업유형 ${workTypeKey}`;
|
|
||||||
|
// 대분류 기준으로 집계 (프로젝트별로 구분)
|
||||||
// 작업 형태별로 집계 (프로젝트별로 구분)
|
const combinedKey = `${work.project_id || 'unknown'}_${majorCategory.id}`;
|
||||||
const combinedKey = `${work.project_id || 'unknown'}_${workTypeKey}`;
|
|
||||||
|
|
||||||
if (!workTypeMap.has(combinedKey)) {
|
if (!workTypeMap.has(combinedKey)) {
|
||||||
workTypeMap.set(combinedKey, {
|
workTypeMap.set(combinedKey, {
|
||||||
project_id: work.project_id,
|
project_id: work.project_id,
|
||||||
project_name: projectName,
|
project_name: projectName,
|
||||||
job_no: work.job_no,
|
job_no: work.job_no,
|
||||||
work_type_id: workTypeKey,
|
work_type_id: majorCategory.id,
|
||||||
work_type_name: workTypeName,
|
work_type_name: majorCategory.name,
|
||||||
regularHours: 0,
|
regularHours: 0,
|
||||||
errorHours: 0,
|
errorHours: 0,
|
||||||
errorDetails: new Map(), // 오류 유형별 세분화
|
errorDetails: new Map(), // 오류 유형별 세분화
|
||||||
@@ -1780,9 +1795,9 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 주말 체크 함수 및 연차/휴무 프로젝트 체크 함수는 상단에 통합 정의됨
|
// 주말 체크 함수, 연차/휴무 프로젝트 체크 함수, 대분류 매핑 함수는 상단에 정의됨
|
||||||
|
|
||||||
// recent-work 데이터로 프로젝트별 취합
|
// recent-work 데이터로 프로젝트별 취합 (대분류 기준)
|
||||||
function aggregateProjectData(recentWorkData) {
|
function aggregateProjectData(recentWorkData) {
|
||||||
const projectMap = new Map();
|
const projectMap = new Map();
|
||||||
let vacationData = {
|
let vacationData = {
|
||||||
@@ -1822,12 +1837,15 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
const project = projectMap.get(projectKey);
|
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)) {
|
if (!project.work_types.has(workTypeKey)) {
|
||||||
project.work_types.set(workTypeKey, {
|
project.work_types.set(workTypeKey, {
|
||||||
work_type_id: work.work_type_id,
|
work_type_id: majorCategory.id,
|
||||||
work_type_name: work.work_type_name,
|
work_type_name: majorCategory.name,
|
||||||
total_hours: 0,
|
total_hours: 0,
|
||||||
regular_hours: 0,
|
regular_hours: 0,
|
||||||
error_hours: 0,
|
error_hours: 0,
|
||||||
|
|||||||
Reference in New Issue
Block a user