// /services/analysisService.js const analysisModel = require('../models/analysisModel'); /** * 기간별 프로젝트 분석 데이터를 조회하는 비즈니스 로직을 처리합니다. * @param {string} startDate - 시작일 (YYYY-MM-DD) * @param {string} endDate - 종료일 (YYYY-MM-DD) * @returns {Promise} - 가공된 분석 데이터 */ const getAnalysisService = async (startDate, endDate) => { if (!startDate || !endDate) { throw new Error('분석을 위해 시작일과 종료일이 모두 필요합니다.'); } try { const analysisData = await analysisModel.getAnalysis(startDate, endDate); // 모델에서 받은 데이터를 그대로 반환하거나, 필요 시 추가 가공을 할 수 있습니다. // 예를 들어, 비율(percentage) 계산을 여기서 수행할 수 있습니다. const { summary, byProject, byWorker, byTask, details } = analysisData; const totalHours = summary.totalHours || 0; const addPercentage = (item) => ({ ...item, hours: parseFloat(item.hours.toFixed(1)), percentage: totalHours > 0 ? parseFloat((item.hours / totalHours * 100).toFixed(1)) : 0 }); return { summary: { ...summary, totalHours: parseFloat(totalHours.toFixed(1)) }, byProject: byProject.map(addPercentage), byWorker: byWorker.map(addPercentage), byTask: byTask.map(addPercentage), details: details.map(d => ({...d, work_hours: parseFloat(d.work_hours.toFixed(1))})), }; } catch (error) { console.error('[Service] 분석 데이터 조회 중 오류 발생:', error); throw error; } }; module.exports = { getAnalysisService };