- fix: 로그인 API에서 user.role_name 필드 올바르게 사용 (auth.service.js)
- refactor: navbar 컴포넌트를 최신 dashboard-header 스타일로 전환
- refactor: 구버전 work-report-header 제거 (6개 페이지)
- refactor: load-navbar.js를 최신 헤더 구조에 맞게 업데이트
- style: 파란색 그라데이션 헤더, 실시간 시계, 향상된 프로필 메뉴
- docs: 2026-01-20 개발 로그 추가
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
주요 변경사항:
1. middlewares/auth.js 신규 생성 (355 lines)
* 4개 핵심 미들웨어 통합:
- requireAuth: JWT 토큰 검증
- requireRole(...roles): 특정 역할 체크
- requireMinLevel(level): 계층적 권한 레벨 체크
- requireOwnerOrAdmin(options): 소유자/관리자 체크
* 커스텀 에러 클래스 적용:
- AuthenticationError (401)
- ForbiddenError (403)
* 구조화된 로깅 시스템 통합
* 레거시 호환성 별칭 제공:
- verifyToken = requireAuth
- requireAdmin = requireRole('admin', 'system')
- requireSystem = requireRole('system')
* ACCESS_LEVELS 상수 정의 및 export
2. 라우터 업데이트 (새로운 미들웨어 적용)
* routes/workReportAnalysisRoutes.js
- authMiddleware → auth로 변경
- requireAdmin → requireRole('admin', 'system')
* routes/systemRoutes.js
- 커스텀 requireSystemAccess 제거
- requireRole('system') 사용
- 14줄 코드 감소 (298 → 284 lines)
* routes/auth.js
- utils/access의 requireAccess 제거
- requireAuth + requireRole 조합 사용
3. 레거시 호환성 래퍼 (하위 호환성 유지)
* middlewares/authMiddleware.js (89 → 37 lines, 58% 감소)
- auth.js의 래퍼로 변경
- @deprecated 태그 추가
- 기존 22개 파일 호환성 유지
* middlewares/accessMiddleware.js (33 → 30 lines)
- requireMinLevel 래퍼로 변경
- @deprecated 태그 및 마이그레이션 가이드 추가
* utils/access.js
- requireAccess 레거시 함수 추가 (하위 호환성)
- 유틸리티 함수들은 그대로 유지
기술적 개선사항:
- 중복 코드 제거: 4개 파일에 분산된 인증 로직 통합
- 일관된 에러 처리: 커스텀 에러 클래스 사용
- 상세한 로깅: 인증/인가 실패 원인 추적 가능
- 보안 강화: TokenExpiredError, JsonWebTokenError 세분화 처리
- 확장성: 새로운 권한 체크 패턴 쉽게 추가 가능
- JSDoc 문서화: 모든 함수에 상세한 사용 예제 포함
통합 전후 비교:
- 미들웨어 파일: 4개 → 1개 (통합) + 3개 (래퍼)
- 중복 코드: ~150 lines → 0 lines
- 일관성: 4가지 다른 패턴 → 1가지 통합 패턴
레거시 호환성:
- 기존 22개 라우터 파일 중 19개는 수정 없이 동작
- 3개 라우터만 새로운 패턴으로 업데이트 (예시용)
- verifyToken, requireAdmin, requireSystem 별칭 제공
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
사용자 관리 API를 컨트롤러/라우터 패턴으로 리팩토링하고,
CORS 및 보안 설정을 별도 파일로 분리하여 코드 구조 개선
주요 변경사항:
- userController.js: 새로운 에러 핸들링 및 로깅 시스템 적용
* ValidationError, NotFoundError, ConflictError 등 커스텀 에러 사용
* logger 유틸리티로 구조화된 로깅
* 관리자 권한 검증 헬퍼 함수 추가
- index.js: 인라인 사용자 관리 라우트 제거 (888 → 605 lines)
* 283줄 감소로 코드 가독성 대폭 향상
* userRoutes 모듈 import 및 사용
- userRoutes.js: 문서화 및 로깅 개선
* JSDoc 헤더 추가
* adminOnly 미들웨어에 로깅 추가
신규 파일:
- config/cors.js: CORS 정책 설정 (허용 origin, 메소드, 헤더)
- config/security.js: Helmet 보안 헤더 설정 (CSP, HSTS, XSS 방지)
- middlewares/activityLogger.js: HTTP 요청/응답 활동 로깅
파일 통계:
- 3개 파일 수정, 3개 파일 추가
- +437 -480 (net -43 lines)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
## 추가된 파일
- utils/errors.js: 표준화된 커스텀 에러 클래스
- AppError, ValidationError, AuthenticationError
- ForbiddenError, NotFoundError, ConflictError
- DatabaseError, ExternalApiError, TimeoutError
- utils/logger.js: 통합 로깅 유틸리티
- 로그 레벨별 관리 (ERROR, WARN, INFO, DEBUG)
- 콘솔 및 파일 로깅 지원
- HTTP 요청/DB 쿼리 전용 로거
## 개선된 파일
- middlewares/errorHandler.js: 에러 핸들러 개선
- 새로운 AppError 클래스 사용
- logger 통합
- asyncHandler 및 notFoundHandler 추가
## 다음 단계
- config 파일들 생성 (cors, security)
- activityLogger 미들웨어 생성
- userController 인라인 코드 분리
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- 삭제된 DB 테이블들과 관련 코드 정리:
* 12개 사용하지 않는 테이블 삭제 (activity_logs, CuttingPlan, DailyIssueReports 등)
* 관련 모델, 컨트롤러, 라우트 파일들 삭제
* index.js에서 삭제된 라우트들 제거
- 웹 UI 페이지 정리:
* 21개 사용하지 않는 페이지 삭제
* issue-reports 폴더 전체 삭제
* 모든 사용자 권한을 그룹장 대시보드로 통일
- 데이터베이스 스키마 정리:
* v1 스키마로 통일 (daily_work_reports 테이블)
* JSON 데이터 임포트 스크립트 구현
* 외래키 관계 정리 및 데이터 일관성 확보
- 통합 Docker Compose 설정:
* 모든 서비스를 단일 docker-compose.yml로 통합
* 20000번대 포트 유지
* JWT 시크릿 및 환경변수 설정
- 문서화:
* DATABASE_SCHEMA.md: 현재 DB 스키마 문서화
* DELETED_TABLES.md: 삭제된 테이블 목록
* DELETED_PAGES.md: 삭제된 페이지 목록