refactor: Phase 3.1 - DailyWorkReport 서비스 레이어 개선
작업 보고서 서비스와 컨트롤러를 새로운 에러 핸들링 및 로깅 시스템으로 업그레이드하여 코드 품질 및 유지보수성 향상 주요 변경사항: services/dailyWorkReportService.js: - 새로운 커스텀 에러 클래스 적용 * ValidationError: 유효성 검증 실패 * NotFoundError: 리소스를 찾을 수 없음 * DatabaseError: 데이터베이스 오류 - console.log → logger 유틸리티로 전환 * 구조화된 로깅 (context 포함) * 로그 레벨 분리 (info, warn, error) * 파일 로깅 지원 - 상세한 에러 컨텍스트 제공 * 필수 필드, 받은 값, 유효 범위 등 * 디버깅 및 문제 해결 용이성 향상 controllers/dailyWorkReportController.js: - 새로운 에러 클래스 import - asyncHandler 미들웨어 통일 - createDailyWorkReport 함수 간소화 * try-catch 제거 (asyncHandler가 처리) * 표준 JSON 응답 포맷 사용 개선 효과: - 에러 메시지 명확성 향상 - 로그 분석 및 모니터링 용이 - 일관된 에러 처리 패턴 - 테스트 가능성 향상 - 프로덕션 환경 파일 로깅 지원 파일 통계: - 2개 파일 수정 - +115 -65 (net +50 lines) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -1,8 +1,17 @@
|
||||
// controllers/dailyWorkReportController.js - 권한별 전체 조회 지원 버전
|
||||
/**
|
||||
* 일일 작업 보고서 컨트롤러
|
||||
*
|
||||
* 작업 보고서 API 엔드포인트 핸들러
|
||||
*
|
||||
* @author TK-FB-Project
|
||||
* @since 2025-12-11
|
||||
*/
|
||||
|
||||
const dailyWorkReportModel = require('../models/dailyWorkReportModel');
|
||||
const dailyWorkReportService = require('../services/dailyWorkReportService');
|
||||
const { ApiError, asyncHandler, handleDatabaseError, handleNotFoundError } = require('../utils/errorHandler');
|
||||
const { validateSchema, schemas } = require('../utils/validator');
|
||||
const { ValidationError, NotFoundError, DatabaseError } = require('../utils/errors');
|
||||
const { asyncHandler } = require('../middlewares/errorHandler');
|
||||
const logger = require('../utils/logger');
|
||||
|
||||
/**
|
||||
* 📝 작업보고서 생성 (V2 - Service Layer 사용)
|
||||
@@ -14,16 +23,13 @@ const createDailyWorkReport = asyncHandler(async (req, res) => {
|
||||
created_by_name: req.user?.name || req.user?.username || '알 수 없는 사용자'
|
||||
};
|
||||
|
||||
console.log('🔍 Controller에서 받은 데이터:', JSON.stringify(reportData, null, 2));
|
||||
const result = await dailyWorkReportService.createDailyWorkReportService(reportData);
|
||||
|
||||
try {
|
||||
const result = await dailyWorkReportService.createDailyWorkReportService(reportData);
|
||||
|
||||
res.created(result, '작업보고서가 성공적으로 생성되었습니다.');
|
||||
} catch (error) {
|
||||
console.error('💥 작업보고서 생성 컨트롤러 오류:', error.message);
|
||||
throw new ApiError('작업보고서 생성에 실패했습니다.', 400);
|
||||
}
|
||||
res.status(201).json({
|
||||
success: true,
|
||||
data: result,
|
||||
message: '작업보고서가 성공적으로 생성되었습니다'
|
||||
});
|
||||
});
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user