Commit Graph

13 Commits

Author SHA1 Message Date
Hyungi Ahn
36f110c90a fix: 보안 취약점 수정 및 XSS 방지 적용
## 백엔드 보안 수정
- 하드코딩된 비밀번호 및 JWT 시크릿 폴백 제거
- SQL Injection 방지를 위한 화이트리스트 검증 추가
- 인증 미적용 API 라우트에 requireAuth 미들웨어 적용
- CSRF 보호 미들웨어 구현 (csrf.js)
- 파일 업로드 보안 유틸리티 추가 (fileUploadSecurity.js)
- 비밀번호 정책 검증 유틸리티 추가 (passwordValidator.js)

## 프론트엔드 XSS 방지
- api-base.js에 전역 escapeHtml() 함수 추가
- 17개 주요 JS 파일에 escapeHtml 적용:
  - tbm.js, daily-patrol.js, daily-work-report.js
  - task-management.js, workplace-status.js
  - equipment-detail.js, equipment-management.js
  - issue-detail.js, issue-report.js
  - vacation-common.js, worker-management.js
  - safety-report-list.js, nonconformity-list.js
  - project-management.js, workplace-management.js

## 정리
- 백업 폴더 및 빈 파일 삭제
- SECURITY_GUIDE.md 문서 추가

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 06:33:10 +09:00
Hyungi Ahn
90d3e32992 feat: 일일순회점검 시스템 구축 및 관리 기능 개선
- 일일순회점검 시스템 신규 구현
  - DB 테이블: patrol_checklist_items, daily_patrol_sessions, patrol_check_records, workplace_items, item_types
  - API: /api/patrol/* 엔드포인트
  - 프론트엔드: 지도 기반 작업장 점검 UI

- 설비 관리 기능 개선
  - 구매 관련 필드 추가 (구매일, 가격, 공급업체 등)
  - 설비 코드 자동 생성 (TKP-XXX 형식)

- 작업장 관리 개선
  - 레이아웃 이미지 업로드 기능
  - 마커 위치 저장 기능

- 부서 관리 기능 추가
- 사이드바 네비게이션 카테고리 재구성
- 이미지 401 오류 수정 (정적 파일 경로 처리)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 11:41:41 +09:00
Hyungi Ahn
c42c9f4fa3 fix: 부적합 제출 버그 수정 및 UI 개선
- 부적합 API 호출 형식 수정 (카테고리/아이템 추가 시)
- 부적합 저장 시 내부 플래그 제거 후 백엔드 전송
- 기본 부적합 객체 구조 수정 (category_id, item_id 추가)
- 날씨 API 시간대 수정 (UTC → KST 변환)
- 신고 카테고리 관리 페이지 추가 (/pages/admin/issue-categories.html)
- 부적합 입력 UI 개선 (대분류→소분류 캐스케이딩 선택)
- 저장된 부적합 분리 표시 및 수정/삭제 기능
- 디버깅 로그 추가

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 09:31:26 +09:00
Hyungi Ahn
b6485e3140 feat: 대시보드 작업장 현황 지도 구현
- 실시간 작업장 현황을 지도로 시각화
- 작업장 관리 페이지에서 정의한 구역 정보 활용
- TBM 작업자 및 방문자 현황 표시

주요 변경사항:
- dashboard.html: 작업장 현황 섹션 추가 (기존 작업 현황 테이블 제거)
- workplace-status.js: 지도 렌더링 및 데이터 통합 로직 구현
- modern-dashboard.js: 삭제된 DOM 요소 조건부 체크 추가

시각화 방식:
- 인원 없음: 회색 테두리 + 작업장 이름
- 내부 작업자: 파란색 영역 + 인원 수
- 외부 방문자: 보라색 영역 + 인원 수
- 둘 다: 초록색 영역 + 총 인원 수

기술 구현:
- Canvas API 기반 사각형 영역 렌더링
- map-regions API를 통한 데이터 일관성 보장
- 클릭 이벤트로 상세 정보 모달 표시

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-29 15:46:47 +09:00
Hyungi Ahn
70630b380a feat: 작업자-계정 통합 및 연차/출근 관리 시스템 구축
모든 작업자가 개인 계정으로 로그인하여 본인의 연차와 출근 기록을 확인할 수 있는 시스템을 구축했습니다.

주요 기능:
- 작업자-계정 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>
2026-01-19 09:49:48 +09:00
Hyungi Ahn
48fff7df64 Fix: Worker/Project status update and filtering issues
- Added cache invalidation for Workers and Projects
- Implemented server-side status filtering for Workers
- Fixed worker update query bug (removed non-existent join_date column)
- Updated daily-work-report UI to fetch only active workers
2026-01-06 15:50:40 +09:00
Hyungi Ahn
349ab60561 refactor: Phase 3.3 - 통합 인증/인가 미들웨어 시스템 구축
주요 변경사항:

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>
2025-12-11 12:12:44 +09:00
Hyungi Ahn
b2461502e7 refactor(phase2-1): 에러 처리 및 로깅 시스템 개선
## 추가된 파일
- 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>
2025-12-11 10:28:51 +09:00
Hyungi Ahn
a9bce9d20b fix: 캘린더 모달 중복 카드 문제 및 삭제 권한 개선
- monthly_worker_status 조회 시 GROUP BY로 중복 데이터 합산
- 작업보고서 삭제 권한을 그룹장 이상으로 제한 (admin, system, group_leader)
- 중복 데이터 정리를 위한 마이그레이션 SQL 추가 (009_fix_duplicate_monthly_status.sql)
- synology_deployment 버전에도 동일 수정 적용
2025-12-02 13:08:44 +09:00
Hyungi Ahn
de427c457b feat: 작업 분석 시스템 및 관리 기능 대폭 개선
 새로운 기능:
- 작업 분석 페이지 구현 (기간별, 프로젝트별, 작업자별, 오류별)
- 개별 분석 실행 버튼으로 API 부하 최적화
- 연차/휴무 집계 방식 개선 (주말 제외, 작업내용 통합)
- 프로젝트 관리 시스템 (활성화/비활성화)
- 작업자 관리 시스템 (CRUD 기능)
- 코드 관리 시스템 (작업유형, 작업상태, 오류유형)

🎨 UI/UX 개선:
- 기간별 작업 현황을 테이블 형태로 변경
- 작업자별 rowspan 그룹화로 가독성 향상
- 연차/휴무 프로젝트 하단 배치 및 시각적 구분
- 기간 확정 시스템으로 사용자 경험 개선
- 반응형 디자인 적용

🔧 기술적 개선:
- Rate Limiting 제거 (내부 시스템 최적화)
- 주말 연차/휴무 자동 제외 로직
- 작업공수 계산 정확도 향상
- 데이터베이스 마이그레이션 추가
- API 엔드포인트 확장 및 최적화

🐛 버그 수정:
- projectSelect 요소 참조 오류 해결
- 차트 높이 무한 증가 문제 해결
- 날짜 표시 형식 단순화
- 작업보고서 저장 validation 오류 수정
2025-11-04 16:56:47 +09:00
Hyungi Ahn
2b97844ed1 feat: 포괄적인 성능 최적화 시스템 구축
- 통합 캐싱 시스템 구축:
  * 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 완전 문서화
  * 요청/응답 스키마 및 예시 포함
2025-11-03 11:05:07 +09:00
Hyungi Ahn
4716434d65 refactor: API 서버 구조 개선 및 표준화
- 통합 에러 처리 시스템 구축:
  * utils/errorHandler.js: ApiError 클래스 및 에러 미들웨어
  * 데이터베이스, 유효성 검사, 권한 에러 표준화
  * 비동기 함수 래퍼 (asyncHandler) 추가

- 응답 포맷터 시스템 구축:
  * utils/responseFormatter.js: 일관된 API 응답 형식
  * 성공, 페이지네이션, 인증, 파일업로드 등 전용 포맷터
  * Express 응답 확장 미들웨어

- 유효성 검사 시스템 구축:
  * utils/validator.js: 스키마 기반 유효성 검사
  * 필수 필드, 타입, 길이, 형식 검사 함수들
  * 일반적인 스키마 정의 (사용자, 프로젝트, 작업보고서 등)

- 코드 정리 및 표준화:
  * 삭제된 테이블 참조 제거 (work_report_audit_log 등)
  * 대문자 테이블명을 소문자로 통일 (Users -> users)
  * authController.js에 새로운 유틸리티 적용 예시

- 미들웨어 통합:
  * index.js에 에러 핸들러 및 응답 포맷터 적용
  * 헬스체크 엔드포인트 개선
2025-11-03 10:42:29 +09:00
09a4d38512 feat: 초기 프로젝트 설정 및 룰.md 파일 추가 2025-07-28 09:53:31 +09:00