fix: 작업 분석에서 공정(대분류)으로 올바르게 분류
문제: work_type_id에 task_id가 저장된 경우 공정 분류가 안됨 - work_type_id=10 → 실제로는 task "노즐 용접" (공정: Vessel) 해결: - API에서 task_id인 경우 해당 task의 work_type_id로 공정 조회 - getRecentWork, getProjectWorkTypeRawData 쿼리 수정 - 프론트엔드는 API 결과의 work_type_name 직접 사용 공정(대분류): Base(구조물), Vessel(용기), Piping Assembly(배관), 작업대기, 휴무, 시설설비 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -983,22 +983,6 @@
|
||||
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();
|
||||
}
|
||||
@@ -1519,20 +1503,20 @@
|
||||
vacationData.regularHours += hours;
|
||||
}
|
||||
} else {
|
||||
// 일반 프로젝트 처리 - 대분류로 그룹화
|
||||
const majorCategory = getMajorCategory(work.work_type_id);
|
||||
// 일반 프로젝트 처리 - API에서 반환된 공정(대분류) 사용
|
||||
const projectName = work.project_name || `프로젝트 ${work.project_id}`;
|
||||
const workTypeName = work.work_type_name || '기타';
|
||||
|
||||
// 대분류 기준으로 집계 (프로젝트별로 구분)
|
||||
const combinedKey = `${work.project_id || 'unknown'}_${majorCategory.id}`;
|
||||
// 공정(대분류) 기준으로 집계 (프로젝트별로 구분)
|
||||
const combinedKey = `${work.project_id || 'unknown'}_${work.work_type_id || 0}`;
|
||||
|
||||
if (!workTypeMap.has(combinedKey)) {
|
||||
workTypeMap.set(combinedKey, {
|
||||
project_id: work.project_id,
|
||||
project_name: projectName,
|
||||
job_no: work.job_no,
|
||||
work_type_id: majorCategory.id,
|
||||
work_type_name: majorCategory.name,
|
||||
work_type_id: work.work_type_id,
|
||||
work_type_name: workTypeName,
|
||||
regularHours: 0,
|
||||
errorHours: 0,
|
||||
errorDetails: new Map(), // 오류 유형별 세분화
|
||||
@@ -1838,14 +1822,14 @@
|
||||
|
||||
const project = projectMap.get(projectKey);
|
||||
|
||||
// 대분류로 그룹화
|
||||
const majorCategory = getMajorCategory(work.work_type_id);
|
||||
const workTypeKey = `${majorCategory.id}_${majorCategory.name}`;
|
||||
// API에서 반환된 공정(대분류) 사용
|
||||
const workTypeName = work.work_type_name || '기타';
|
||||
const workTypeKey = `${work.work_type_id || 0}_${workTypeName}`;
|
||||
|
||||
if (!project.work_types.has(workTypeKey)) {
|
||||
project.work_types.set(workTypeKey, {
|
||||
work_type_id: majorCategory.id,
|
||||
work_type_name: majorCategory.name,
|
||||
work_type_id: work.work_type_id,
|
||||
work_type_name: workTypeName,
|
||||
total_hours: 0,
|
||||
regular_hours: 0,
|
||||
error_hours: 0,
|
||||
@@ -2505,14 +2489,13 @@
|
||||
workerGroupedData[workerName][projectName] = {};
|
||||
}
|
||||
|
||||
// 대분류로 작업내용 그룹화
|
||||
// 작업내용 - API에서 공정(대분류) 이름을 직접 반환
|
||||
let finalWorkTypeName;
|
||||
if (isVacationProject(projectName)) {
|
||||
finalWorkTypeName = '-'; // 연차/휴무는 작업내용을 '-'로 통합
|
||||
} else {
|
||||
// 대분류 매핑 사용
|
||||
const majorCategory = getMajorCategory(work.work_type_id);
|
||||
finalWorkTypeName = majorCategory.name;
|
||||
// API에서 반환된 work_type_name 사용 (공정/대분류)
|
||||
finalWorkTypeName = work.work_type_name || '기타';
|
||||
}
|
||||
|
||||
if (!workerGroupedData[workerName][projectName][finalWorkTypeName]) {
|
||||
|
||||
Reference in New Issue
Block a user