- 순찰/점검 기능 개선 (zone-detail 페이지 추가)
- 출근/근태 시스템 개선 (연차 조회, 근무현황)
- 작업분석 대분류 그룹화 및 마이그레이션 스크립트
- 모바일 네비게이션 UI 추가
- NAS 배포 도구 및 문서 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
index.js를 605줄에서 128줄로 축소 (79% 감소)
미들웨어, 라우트, 데이터베이스 설정을 별도 파일로 분리하여
코드 가독성 및 유지보수성 대폭 향상
주요 변경사항:
신규 파일 (3개):
- config/database.js: DB 연결 풀 관리 (dbPool.js에서 이동)
* 환경 변수 기반 설정
* 자동 재연결 로직 (최대 5회 재시도)
* UTF-8MB4 문자셋 지원
* logger 통합
- config/middleware.js: 미들웨어 중앙 관리
* Helmet 보안 헤더 (security.js 사용)
* CORS 설정 (cors.js 사용)
* Compression (성능 최적화)
* Body parser (50MB 제한)
* 정적 파일 서빙 (public, uploads)
* Response formatter
- config/routes.js: 라우트 중앙 관리
* 모든 라우터 import 및 등록
* Rate limiting 설정 (login, API)
* 인증 미들웨어 적용
* 공개 경로 관리
* Swagger 문서 설정
수정 파일 (2개):
- index.js: 605줄 → 128줄 (79% 감소)
* 간결한 서버 초기화 로직
* setupMiddlewares/setupRoutes 함수 사용
* Graceful shutdown 유지
* 에러 핸들러 유지
* 캐시 초기화 로직 유지
- dbPool.js: 호환성 레거시 파일로 전환
* config/database.js로 위임
* @deprecated 주석 추가
* 기존 코드 하위 호환성 유지 (22개 파일에서 사용 중)
파일 통계:
- 3개 파일 추가, 2개 파일 수정
- +92 -621 (net -529 lines)
- index.js: 605 → 128 lines (-477 lines, -79%)
검증 필요 사항:
- [ ] 서버 정상 시작 확인
- [ ] 모든 API 엔드포인트 동작 확인
- [ ] CORS 설정 동작 확인
- [ ] 인증 미들웨어 동작 확인
- [ ] Rate limiting 동작 확인
🤖 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>
- monthly_worker_status 조회 시 GROUP BY로 중복 데이터 합산
- 작업보고서 삭제 권한을 그룹장 이상으로 제한 (admin, system, group_leader)
- 중복 데이터 정리를 위한 마이그레이션 SQL 추가 (009_fix_duplicate_monthly_status.sql)
- synology_deployment 버전에도 동일 수정 적용
✨ 새로운 기능:
- 작업 분석 페이지 구현 (기간별, 프로젝트별, 작업자별, 오류별)
- 개별 분석 실행 버튼으로 API 부하 최적화
- 연차/휴무 집계 방식 개선 (주말 제외, 작업내용 통합)
- 프로젝트 관리 시스템 (활성화/비활성화)
- 작업자 관리 시스템 (CRUD 기능)
- 코드 관리 시스템 (작업유형, 작업상태, 오류유형)
🎨 UI/UX 개선:
- 기간별 작업 현황을 테이블 형태로 변경
- 작업자별 rowspan 그룹화로 가독성 향상
- 연차/휴무 프로젝트 하단 배치 및 시각적 구분
- 기간 확정 시스템으로 사용자 경험 개선
- 반응형 디자인 적용
🔧 기술적 개선:
- Rate Limiting 제거 (내부 시스템 최적화)
- 주말 연차/휴무 자동 제외 로직
- 작업공수 계산 정확도 향상
- 데이터베이스 마이그레이션 추가
- API 엔드포인트 확장 및 최적화
🐛 버그 수정:
- projectSelect 요소 참조 오류 해결
- 차트 높이 무한 증가 문제 해결
- 날짜 표시 형식 단순화
- 작업보고서 저장 validation 오류 수정
- 월별 캘린더 UI로 작업 현황을 한눈에 확인 가능
- 미입력(빨강), 부분입력(주황), 확인필요(보라), 이상없음(초록) 상태 표시
- 범례 아이콘(●)을 사용한 직관적인 상태 표시
- 날짜 클릭 시 해당일 작업자별 상세 현황 모달
- 작업자 클릭 시 개별 작업 입력/수정 모달
- 휴가 처리 기능 (연차, 반차, 반반차, 조퇴)
- 월별 집계 데이터 최적화로 API 호출 최소화
백엔드:
- monthly_worker_status, monthly_summary 테이블 추가
- 자동 집계 stored procedure 및 trigger 구현
- 확인필요(12시간 초과) 상태 감지 로직
- 출석 관리 시스템 확장
프론트엔드:
- 캘린더 그리드 UI 구현
- 상태별 색상 및 아이콘 표시
- 모달 기반 상세 정보 표시
- 반응형 디자인 적용
- 통합 캐싱 시스템 구축:
* utils/cache.js: Redis + 메모리 캐시 하이브리드 시스템
* Redis 연결 실패 시 자동 메모리 캐시 fallback
* 캐시 키 생성, TTL 관리, 패턴 기반 무효화
* 캐시 미들웨어 및 무효화 헬퍼 함수
- 데이터베이스 쿼리 최적화:
* utils/queryOptimizer.js: 쿼리 성능 분석 및 최적화
* 페이지네이션 헬퍼 (최대 100개 제한)
* 인덱스 최적화 제안 시스템
* 배치 삽입 최적화 (100개 단위)
* 최적화된 쿼리 템플릿 (작업자, 프로젝트, 작업보고서)
- 응답 압축 및 최적화:
* gzip 압축 미들웨어 (1KB 이상, 레벨 6)
* 압축 제외 헤더 지원 (x-no-compression)
* 성능 모니터링 시스템
- 성능 모니터링 API:
* /api/performance/* 엔드포인트 추가
* 캐시 통계 및 관리 (조회, 초기화)
* DB 성능 통계 (연결 수, 슬로우 쿼리)
* 인덱스 분석 및 최적화 제안
* 쿼리 실행 계획 분석 (EXPLAIN)
* 시스템 리소스 모니터링
- 실제 적용 사례:
* workerController.js에 캐싱 및 페이지네이션 적용
* 캐시 히트/미스 로깅
* 캐시 무효화 자동 처리
- 보안 및 권한:
* 성능 관련 API는 관리자 권한 필요
* 쿼리 분석은 시스템/관리자만 접근 가능
* 캐시 초기화는 관리자 전용
- Swagger 문서화:
* 모든 성능 API 완전 문서화
* 요청/응답 스키마 및 예시 포함
- Swagger 패키지 설치 및 설정:
* swagger-jsdoc, swagger-ui-express 패키지 추가
* /api-docs 엔드포인트에서 Swagger UI 제공
* /api-docs.json 엔드포인트에서 JSON 스펙 제공
- 포괄적인 Swagger 설정 파일 생성:
* config/swagger.js: OpenAPI 3.0 스펙 정의
* 공통 스키마 정의 (User, Worker, Project, Task, DailyWorkReport)
* 표준 응답 스키마 (SuccessResponse, ErrorResponse, PaginatedResponse)
* JWT Bearer 인증 스키마 설정
- API 문서화 적용:
* Authentication API: 로그인 엔드포인트 문서화
* Workers API: 전체 CRUD 작업 문서화
* 상세한 요청/응답 스키마 및 예시 포함
* 에러 코드별 응답 정의
- Swagger UI 커스터마이징:
* 브랜딩 및 UI 개선
* 인증 토큰 지속성 설정
* 필터링 및 탐색 기능 활성화
- 접근 방법:
* http://localhost:20005/api-docs - Swagger UI
* http://localhost:20005/api-docs.json - JSON 스펙
- 통합 에러 처리 시스템 구축:
* utils/errorHandler.js: ApiError 클래스 및 에러 미들웨어
* 데이터베이스, 유효성 검사, 권한 에러 표준화
* 비동기 함수 래퍼 (asyncHandler) 추가
- 응답 포맷터 시스템 구축:
* utils/responseFormatter.js: 일관된 API 응답 형식
* 성공, 페이지네이션, 인증, 파일업로드 등 전용 포맷터
* Express 응답 확장 미들웨어
- 유효성 검사 시스템 구축:
* utils/validator.js: 스키마 기반 유효성 검사
* 필수 필드, 타입, 길이, 형식 검사 함수들
* 일반적인 스키마 정의 (사용자, 프로젝트, 작업보고서 등)
- 코드 정리 및 표준화:
* 삭제된 테이블 참조 제거 (work_report_audit_log 등)
* 대문자 테이블명을 소문자로 통일 (Users -> users)
* authController.js에 새로운 유틸리티 적용 예시
- 미들웨어 통합:
* index.js에 에러 핸들러 및 응답 포맷터 적용
* 헬스체크 엔드포인트 개선
- 삭제된 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: 삭제된 페이지 목록
- 시스템 관리자 전용 웹페이지 구현 (system.html)
- 깔끔한 흰색 배경의 올드스쿨 스타일 적용
- 반응형 그리드 레이아웃으로 카드 배치 개선
- ES6 모듈 방식으로 JavaScript 구조 개선
- 이벤트 리스너 방식으로 버튼 클릭 처리 변경
- 시스템 상태, 사용자 통계, 계정 관리 기능 구현
- 시스템 로그 조회 기능 추가
- 나머지 관리 기능들 스켈레톤 구현 (개발 중 상태)
- 인코딩 문제 해결을 위한 영어 로그 메시지 적용
- hyungi 계정을 system 권한으로 설정
- JWT 토큰에 role 필드 추가
- 시스템 전용 API 엔드포인트 구현
주요 변경사항:
- web-ui/pages/dashboard/system.html: 시스템 관리자 전용 페이지
- web-ui/css/system-dashboard.css: 시스템 대시보드 전용 스타일
- web-ui/js/system-dashboard.js: 시스템 대시보드 로직
- api.hyungi.net/controllers/systemController.js: 시스템 API 컨트롤러
- api.hyungi.net/routes/systemRoutes.js: 시스템 API 라우트
- api.hyungi.net/controllers/authController.js: 시스템 권한 로그인 처리
- api.hyungi.net/services/auth.service.js: JWT 토큰에 role 필드 추가