# 개발 진행 로그 ## 📅 Recent Updates (2025-12-19) ### WorkAnalysis 리팩토링 완료 **내용**: 복잡한 통계 로직을 포함하던 `workAnalysisController.js`를 리팩토링함. - **[NEW] Service Layer**: `services/workAnalysisService.js` 생성. 비즈니스 로직 이관. - **[UPDATE] Model Layer**: Raw SQL 쿼리를 Controller에서 Model(`models/WorkAnalysis.js`)로 이동. `getProjectWorkTypeRawData` 메서드 추가. - **[CLEANUP] Controller**: `getProjectWorkTypeAnalysis` 메서드가 Service를 호출하도록 단순화. ### 🐛 심각한 버그 수정 및 시스템 정상화 (2025-12-19) **개요**: 로그인 500 에러 및 대시보드 데이터 미표시 문제 해결. 1. **DB 정상화 (Login 500 Fix)** - **원인**: 초기화된 DB(Empty) 및 테이블명 대소문자 불일치(`Users` vs `users`). - **조치**: `hyungi.sql` 복원 후, 컨벤션에 맞춰 테이블명 일괄 변경(`Users`→`users`, `Projects`→`projects`, `Workers`→`workers`, `Tasks`→`tasks`). - **코드 수정**: `userModel.js`, `authController.js` 등 관련 코드의 테이블 참조 수정. 2. **프로젝트 조회 오류 수정 (Project API 500 Fix)** - **원인**: 구버전 스키마 복원으로 인한 `projects` 테이블 컬럼 부족(`is_active`, `project_status`, `completed_date`). - **조치**: 마이그레이션 실행하여 누락된 컬럼 추가. 3. **대시보드 작업자 미표시 수정** - **원인 1 (Data)**: `workers` 테이블 내 `status` 값이 유효하지 않음(`..`). → `active`로 일괄 수정. - **원인 2 (Logic)**: `INNER JOIN` 사용으로 통계가 없는 작업자 누락. → `LEFT JOIN`으로 쿼리 개선(`MonthlyStatusModel.js`). 4. **테스트 계정 생성** - `tester` / `000000` 관리자(Leader) 계정 생성. ### 🛠️ 작업자 및 프로젝트 관리 기능 개선 (2026-01-06) **개요**: 작업자/프로젝트의 비활성화(퇴사/종료) 처리가 즉시 반영되지 않는 문제 및 로직 오류 수정. 1. **캐시 무효화 및 필터링 적용 (Cache & Filtering)** - **문제**: 작업자/프로젝트 상태 변경 후에도 캐시가 남아있어 드롭다운 목록에서 사라지지 않음. - **해결**: - `WorkerController`, `ProjectController`: 생성/수정/삭제 시 `request` 단위의 캐시 즉시 무효화 로직 추가. - `WorkerController`: 목록 조회 시 `status` 파라미터 지원 추가. - `daily-work-report.js`: 작업보고서 작성 시 `active` 상태인 작업자만 필터링하여 조회하도록 수정. 2. **작업자 비활성화 오류 수정 (Bug Fix)** - **원인**: `workerModel.update` 쿼리에 DB에 존재하지 않는 `join_date` 컬럼을 업데이트하려는 시도가 있어 SQL 에러 발생. - **해결**: `workerModel.js`에서 잘못된 컬럼(`join_date`) 참조 제거. (올바른 컬럼 `hire_date`는 유지) --- ## 🛡보안 및 검토 리포트 (History) ### 2025-07-29 보안 취약점 분석 `api.hyungi.net` 백엔드 서버 취약점 점검 결과. | 라이브러리 | 심각도 | 상태 | 조치사항 | |---|---|---|---| | `tar-fs` | **High** | 해결가능 | `npm audit fix` 권장 (완료됨) | | `brace-expansion` | Low | 해결가능 | `npm audit fix` 권장 (완료됨) | | `pm2` | Low | 미해결 | 업데이트 대기 필요 | --- ## 📋 향후 계획 1. **테스트 커버리지 확보**: 리팩토링된 Service Layer에 대한 Unit Test 보강. 2. **Knex 마이그레이션**: 남은 Raw SQL(Model Layer)을 Knex 쿼리빌더로 점진적 전환. 3. **API 문서화**: Swagger/OpenAPI 도입 검토.