모든 작업자가 개인 계정으로 로그인하여 본인의 연차와 출근 기록을 확인할 수 있는 시스템을 구축했습니다.
주요 기능:
- 작업자-계정 1:1 통합 (기존 작업자 자동 계정 생성)
- 연차 관리 시스템 (연도별 잔액 관리)
- 출근 기록 시스템 (일일 근태 기록)
- 나의 대시보드 페이지 (개인 정보 조회)
데이터베이스:
- workers 테이블에 salary, base_annual_leave 컬럼 추가
- work_attendance_types, vacation_types 테이블 생성
- daily_attendance_records 테이블 생성
- worker_vacation_balance 테이블 생성
- 기존 작업자 자동 계정 생성 (username: 이름 기반)
- Guest 역할 추가
백엔드 API:
- 한글→영문 변환 유틸리티 (hangulToRoman.js)
- UserRoutes에 개인 정보 조회 API 추가
- GET /api/users/me (내 정보)
- GET /api/users/me/attendance-records (출근 기록)
- GET /api/users/me/vacation-balance (연차 잔액)
- GET /api/users/me/work-reports (작업 보고서)
- GET /api/users/me/monthly-stats (월별 통계)
프론트엔드:
- 나의 대시보드 페이지 (my-dashboard.html)
- 연차 정보 위젯 (총/사용/잔여)
- 월별 출근 캘린더
- 근무 시간 통계
- 최근 작업 보고서 목록
- 네비게이션 바에 "나의 대시보드" 메뉴 추가
배포 시 주의사항:
- 마이그레이션 실행 필요
- 자동 생성된 계정 초기 비밀번호: 1234
- 작업자들에게 첫 로그인 후 비밀번호 변경 안내 필요
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <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>