perf(frontend): 프로젝트 분석 페이지 성능 최적화

- 백엔드 집계 API(/api/analysis)를 연동하여 프론트엔드 데이터 처리 로직 제거
- 불필요해진 project-analysis-data.js 파일 삭제
- 페이지 로딩 및 데이터 분석 속도를 획기적으로 개선
This commit is contained in:
2025-07-28 15:21:19 +09:00
parent 7c6940307e
commit a1b7d3c5df
4 changed files with 49 additions and 194 deletions

View File

@@ -3,6 +3,7 @@ import { apiGet } from './api-helper.js';
/**
* 분석 페이지에 필요한 모든 초기 데이터(마스터 데이터)를 병렬로 가져옵니다.
* 이 데이터는 필터 옵션을 채우는 데 사용됩니다.
* @returns {Promise<{workers: Array, projects: Array, tasks: Array}>}
*/
export async function getMasterData() {
@@ -15,30 +16,22 @@ export async function getMasterData() {
return { workers, projects, tasks };
} catch (error) {
console.error('마스터 데이터 로딩 실패:', error);
// 하나라도 실패하면 페이지 기능에 문제가 생길 수 있으므로 에러를 던집니다.
throw new Error('페이지 초기화에 필요한 데이터를 불러오는 데 실패했습니다.');
throw new Error('필터링에 필요한 데이터를 불러오는 데 실패했습니다.');
}
}
/**
* 지정된 기간의 작업 보고서 데이터를 가져옵니다.
* 백엔드에 집계 API가 있다면 그쪽을 사용하는 것이 더 효율적입니다.
* (예: /api/analysis/reports?startDate=...&endDate=...)
* 현재는 기존 방식을 유지합니다.
* 지정된 기간의 모든 분석 데이터를 백엔드에서 직접 가져옵니다.
* @param {string} startDate - 시작일 (YYYY-MM-DD)
* @param {string} endDate - 종료일 (YYYY-MM-DD)
* @returns {Promise<Array>}
* @returns {Promise<object>} - 요약, 집계, 상세 데이터가 모두 포함된 분석 결과 객체
*/
export async function getWorkReports(startDate, endDate) {
export async function getAnalysisReport(startDate, endDate) {
try {
// API 엔드포인트를 명확하게 수정합니다.
// 기존: /workreports?start=...
// 변경: /daily-work-reports/search?startDate=...&endDate=... (가정)
// 우선 기존 URL 구조를 최대한 따르되, 좀 더 명시적인 경로로 변경 제안
const reports = await apiGet(`/workreports/search?startDate=${startDate}&endDate=${endDate}`);
return reports;
const analysisData = await apiGet(`/analysis?startDate=${startDate}&endDate=${endDate}`);
return analysisData;
} catch (error) {
console.error('작업 보고서 데이터 로딩 실패:', error);
throw new Error(`작업 보고서 데이터를 불러오는 데 실패했습니다: ${error.message}`);
console.error('분석 보고서 데이터 로딩 실패:', error);
throw new Error(`분석 데이터를 불러오는 데 실패했습니다: ${error.message}`);
}
}