- Backend: Auto-sync work reports with attendance records - Backend: Lazy initialization of daily active worker records - Frontend: Real-time attendance status on Group Leader Dashboard
4.5 KiB
4.5 KiB
개발 진행 로그
📅 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 에러 및 대시보드 데이터 미표시 문제 해결.
-
DB 정상화 (Login 500 Fix)
- 원인: 초기화된 DB(Empty) 및 테이블명 대소문자 불일치(
Usersvsusers). - 조치:
hyungi.sql복원 후, 컨벤션에 맞춰 테이블명 일괄 변경(Users→users,Projects→projects,Workers→workers,Tasks→tasks). - 코드 수정:
userModel.js,authController.js등 관련 코드의 테이블 참조 수정.
- 원인: 초기화된 DB(Empty) 및 테이블명 대소문자 불일치(
-
프로젝트 조회 오류 수정 (Project API 500 Fix)
- 원인: 구버전 스키마 복원으로 인한
projects테이블 컬럼 부족(is_active,project_status,completed_date). - 조치: 마이그레이션 실행하여 누락된 컬럼 추가.
- 원인: 구버전 스키마 복원으로 인한
-
대시보드 작업자 미표시 수정
- 원인 1 (Data):
workers테이블 내status값이 유효하지 않음(..). →active로 일괄 수정. - 원인 2 (Logic):
INNER JOIN사용으로 통계가 없는 작업자 누락. →LEFT JOIN으로 쿼리 개선(MonthlyStatusModel.js).
- 원인 1 (Data):
-
테스트 계정 생성
tester/000000관리자(Leader) 계정 생성.
🛠️ 작업자 및 프로젝트 관리 기능 개선 (2026-01-06)
개요: 작업자/프로젝트의 비활성화(퇴사/종료) 처리가 즉시 반영되지 않는 문제 및 로직 오류 수정.
-
캐시 무효화 및 필터링 적용 (Cache & Filtering)
- 문제: 작업자/프로젝트 상태 변경 후에도 캐시가 남아있어 드롭다운 목록에서 사라지지 않음.
- 해결:
WorkerController,ProjectController: 생성/수정/삭제 시request단위의 캐시 즉시 무효화 로직 추가.WorkerController: 목록 조회 시status파라미터 지원 추가.daily-work-report.js: 작업보고서 작성 시active상태인 작업자만 필터링하여 조회하도록 수정.
-
작업자 비활성화 오류 수정 (Bug Fix)
- 원인:
workerModel.update쿼리에 DB에 존재하지 않는join_date컬럼을 업데이트하려는 시도가 있어 SQL 에러 발생. - 해결:
workerModel.js에서 잘못된 컬럼(join_date) 참조 제거. (올바른 컬럼hire_date는 유지)
- 원인:
-
일일 근태 추적 시스템 구현 (Daily Attendance Tracking)
- Backend:
AttendanceModel.initializeDailyRecords추가: 모든 활성 작업자에 대해 'incomplete' 상태의 근태 기록 자동 생성 (Lazy Initialization).AttendanceModel.syncWithWorkReports추가: 작업 보고서 작성/수정/삭제 시 근태 상태(미제출/부분/완료/초과) 자동 동기화.dailyWorkReportModel.js에 동기화 로직 통합 (트랜잭션 후 처리).attendanceService에서 상태 조회 시 초기화 로직 수행.
- Frontend:
group-leader-dashboard.js리팩토링: 모의 데이터 대신 실제 API(/attendance/daily-status) 연동.modern-dashboard.css: 근태 현황 카드(worker-card) 및 그리드 스타일 추가.group-leader.html: 스크립트 로드 추가 및 DOM 구조 확인.
- Backend:
🛡보안 및 검토 리포트 (History)
2025-07-29 보안 취약점 분석
api.hyungi.net 백엔드 서버 취약점 점검 결과.
| 라이브러리 | 심각도 | 상태 | 조치사항 |
|---|---|---|---|
tar-fs |
High | 해결가능 | npm audit fix 권장 (완료됨) |
brace-expansion |
Low | 해결가능 | npm audit fix 권장 (완료됨) |
pm2 |
Low | 미해결 | 업데이트 대기 필요 |
📋 향후 계획
- 테스트 커버리지 확보: 리팩토링된 Service Layer에 대한 Unit Test 보강.
- Knex 마이그레이션: 남은 Raw SQL(Model Layer)을 Knex 쿼리빌더로 점진적 전환.
- API 문서화: Swagger/OpenAPI 도입 검토.