refactor(backend): 작업 보고서 통계/요약 API 구조 개선
- dailyWorkReportController의 통계/요약 함수를 C-S-M 아키텍처에 맞게 리팩토링 - Model 계층의 콜백 기반 함수를 Promise 기반으로 전환 - API의 일관성 및 유지보수성 향상
This commit is contained in:
@@ -204,10 +204,71 @@ const removeDailyWorkReportService = async (reportId, userInfo) => {
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 기간별 작업 보고서 통계를 조회하는 비즈니스 로직을 처리합니다.
|
||||
* @param {object} queryParams - 컨트롤러에서 전달된 쿼리 파라미터 (start_date, end_date)
|
||||
* @returns {Promise<object>} 통계 데이터
|
||||
*/
|
||||
const getStatisticsService = async (queryParams) => {
|
||||
const { start_date, end_date } = queryParams;
|
||||
|
||||
if (!start_date || !end_date) {
|
||||
throw new Error('통계 조회를 위해 시작일(start_date)과 종료일(end_date)이 모두 필요합니다.');
|
||||
}
|
||||
|
||||
console.log(`📈 [Service] 통계 조회 요청: ${start_date} ~ ${end_date}`);
|
||||
|
||||
try {
|
||||
// 모델의 getStatistics 함수가 Promise를 반환하도록 수정 필요
|
||||
const statsData = await dailyWorkReportModel.getStatistics(start_date, end_date);
|
||||
|
||||
console.log('✅ [Service] 통계 조회 성공');
|
||||
return {
|
||||
...statsData,
|
||||
metadata: {
|
||||
period: `${start_date} ~ ${end_date}`,
|
||||
timestamp: new Date().toISOString()
|
||||
}
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('[Service] 통계 조회 중 오류 발생:', error);
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 일일 또는 작업자별 작업 요약 정보를 조회하는 비즈니스 로직을 처리합니다.
|
||||
* @param {object} queryParams - 컨트롤러에서 전달된 쿼리 파라미터 (date 또는 worker_id)
|
||||
* @returns {Promise<object>} 요약 데이터
|
||||
*/
|
||||
const getSummaryService = async (queryParams) => {
|
||||
const { date, worker_id } = queryParams;
|
||||
|
||||
if (!date && !worker_id) {
|
||||
throw new Error('일일 또는 작업자별 요약 조회를 위해 날짜(date) 또는 작업자 ID(worker_id)가 필요합니다.');
|
||||
}
|
||||
|
||||
try {
|
||||
if (date) {
|
||||
console.log(`📊 [Service] 일일 요약 조회 요청: date=${date}`);
|
||||
// 모델의 getSummaryByDate 함수가 Promise를 반환하도록 수정 필요
|
||||
return await dailyWorkReportModel.getSummaryByDate(date);
|
||||
} else { // worker_id
|
||||
console.log(`📊 [Service] 작업자별 요약 조회 요청: worker_id=${worker_id}`);
|
||||
// 모델의 getSummaryByWorker 함수가 Promise를 반환하도록 수정 필요
|
||||
return await dailyWorkReportModel.getSummaryByWorker(worker_id);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('[Service] 요약 정보 조회 중 오류 발생:', error);
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
createDailyWorkReportService,
|
||||
getDailyWorkReportsService,
|
||||
updateWorkReportService,
|
||||
removeDailyWorkReportService,
|
||||
getStatisticsService,
|
||||
getSummaryService,
|
||||
};
|
||||
Reference in New Issue
Block a user