Commit Graph

32 Commits

Author SHA1 Message Date
Hyungi Ahn
9206672b63 feat: Phase 3.8 - 복잡한 분석 컨트롤러 개선
두 개의 복잡한 분석 컨트롤러를 현대적인 패턴으로 전면 개선:

## workReportAnalysisController.js (381 → 430 lines)
- 7개 SQL 쿼리 기반 복합 분석 엔드포인트 개선
- console.error → logger.info/error/warn 전환
- try-catch → asyncHandler 미들웨어 적용
- Error → ValidationError, DatabaseError 전환
- JSDoc 문서화 및 구조화된 로깅 추가
- 4개 함수: getAnalysisFilters, getAnalyticsByPeriod, getProjectAnalysis, getWorkerAnalysis

## workAnalysisController.js (523 → 622 lines)
- 클래스 기반 → 함수 기반 컨트롤러 전환
- console.error → logger.info/error/debug 전환
- try-catch → asyncHandler 미들웨어 적용
- Error → ValidationError, DatabaseError 전환
- validateDateRange 헬퍼 함수 개선 (상세한 에러 컨텍스트)
- JSDoc 문서화 및 구조화된 로깅 추가
- 12개 함수: getStats, getDailyTrend, getWorkerStats, getProjectStats,
  getWorkTypeStats, getRecentWork, getWeekdayPattern, getErrorAnalysis,
  getMonthlyComparison, getWorkerSpecialization, getDashboardData,
  getProjectWorkTypeAnalysis

## 기술적 개선사항
- 통합 에러 처리: 커스텀 에러 클래스로 일관된 에러 핸들링
- 구조화된 로깅: 모든 API 호출에 컨텍스트 정보 포함
- 자동 에러 전파: asyncHandler로 보일러플레이트 코드 제거
- 향상된 유효성 검사: 상세한 에러 메시지와 컨텍스트
- 프로덕션 준비: 표준화된 응답 형식 및 에러 처리

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-11 13:30:42 +09:00
Hyungi Ahn
146854e8fe refactor: Phase 3.7 - MonthlyStatus 컨트롤러 개선
주요 변경사항:

1. controllers/monthlyStatusController.js 완전 재작성 (202 → 232 lines)
   * 클래스 기반 → 함수 기반으로 변경:
     - static 메서드 → 독립 함수
     - 모듈 export 방식 변경

   * console.log/error → logger 교체:
     - logger.info: 요청/성공 로깅
     - logger.warn: 경고 로깅
     - logger.error: 실패 로깅

   * try-catch → asyncHandler 사용:
     - 에러 처리 자동화
     - 일관된 에러 응답

   * 커스텀 에러 클래스 적용:
     - ValidationError: 필수 필드/범위 검증
     - ForbiddenError: 관리자 권한 체크
     - DatabaseError: DB 오류

   * 4개 함수 개선:
     - getMonthlyCalendarData: 월별 캘린더 데이터
     - getDailyWorkerDetails: 일별 작업자 상세
     - recalculateMonth: 월별 집계 재계산
     - getStatusInfo: 집계 테이블 상태

   * 상세한 로깅 추가:
     - 요청 파라미터 추적
     - 조회 결과 통계 (일수, 작업자 수, 총 근무시간)
     - 관리자 작업 추적 (요청자 username)

기술적 개선사항:
- 클래스 → 함수: 테스트 및 재사용 용이
- 일관된 에러 처리: ValidationError, ForbiddenError, DatabaseError
- 구조화된 로깅: 모든 작업 추적 가능
- 권한 체크 개선: ForbiddenError 사용
- 코드 가독성 향상: JSDoc 문서화

컨트롤러 개선 최종 현황:
-  15/16 개 컨트롤러 개선 완료 (93.75%)

서비스 레이어 최종 현황:
- 9개 서비스 레이어 구축 완료

Phase 3 리팩토링 완료율: ~95%

남은 작업 (복잡도 매우 높음):
- workReportAnalysisController (복잡한 SQL 분석)
- workAnalysisController (복잡한 SQL 분석)
- systemController (시스템 관리 - 부분 개선 필요)
- authController (인증 - 부분 개선됨)
- userController (사용자 관리 - 부분 개선됨)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-11 13:16:21 +09:00
Hyungi Ahn
b6f79d7ca7 refactor: Phase 3.6 - Analysis, WorkReport 서비스 레이어 구축 및 개선
주요 변경사항:

1. services/analysisService.js 개선 (48 → 82 lines, 71% 증가)
   * console.error → logger 교체:
     - logger.info: 요청/성공 로깅
     - logger.error: 실패 로깅

   * Error → 커스텀 에러 클래스 적용:
     - ValidationError: 필수 필드 검증
     - DatabaseError: DB 오류

   * 상세한 로깅 추가:
     - 총 근무시간, 프로젝트 수, 작업자 수, 상세 건수 추적

   * JSDoc 문서화 개선

2. controllers/analysisController.js 개선 (22 → 30 lines)
   * try-catch 제거 → asyncHandler 사용
   * console.error 제거
   * 표준화된 JSON 응답 형식

3. services/workReportService.js 신규 생성 (308 lines)
   * 7개 서비스 함수 구현:
     - createWorkReportService: 단일/다중 보고서 생성
     - getWorkReportsByDateService: 날짜별 조회
     - getWorkReportsInRangeService: 기간별 조회
     - getWorkReportByIdService: 단일 조회
     - updateWorkReportService: 수정
     - removeWorkReportService: 삭제
     - getSummaryService: 월간 요약

   * 커스텀 에러 클래스 적용
   * 구조화된 로깅 통합
   * 필수 필드 검증
   * 배열/단일 데이터 모두 지원

4. controllers/workReportController.js 완전 재작성 (134 → 109 lines, 19% 감소)
   * try-catch 제거 → asyncHandler 사용
   * 모든 비즈니스 로직 서비스 레이어로 이동
   * 표준화된 JSON 응답 형식
   * 에러 처리 자동화
   * 7개 엔드포인트 모두 개선

기술적 개선사항:
- 일관된 에러 처리: ValidationError, NotFoundError, DatabaseError
- 구조화된 로깅: 모든 작업 추적 가능
- 코드 중복 제거: try-catch 패턴 완전 제거
- 테스트 용이성: 서비스 함수 독립적 테스트 가능
- 유지보수성: 비즈니스 로직과 HTTP 레이어 완전 분리

서비스 레이어 진행 상황:
-  dailyWorkReportService.js (Phase 3.1)
-  attendanceService.js (Phase 3.2)
-  issueTypeService.js (Phase 3.4)
-  toolsService.js (Phase 3.4)
-  dailyIssueReportService.js (Phase 3.5 - 개선)
-  uploadService.js (Phase 3.5)
-  analysisService.js (Phase 3.6 - 개선)
-  workReportService.js (Phase 3.6)
-  auth.service.js (기존)

총 9개 서비스 레이어 구축 완료

컨트롤러 개선 현황:
-  14/16 개 컨트롤러 개선 완료 (87.5%)

남은 컨트롤러:
- workReportAnalysisController
- workAnalysisController
- monthlyStatusController
- systemController
- authController
- userController (일부)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-11 12:53:53 +09:00
Hyungi Ahn
ffe9619abd refactor: Phase 3.5 - DailyIssueReport, Upload 서비스 레이어 개선
주요 변경사항:

1. services/dailyIssueReportService.js 개선 (93 → 170 lines, 83% 증가)
   * console.error → logger 교체:
     - logger.info: 작업 시작/성공 로깅
     - logger.error: 실패 로깅
     - logger.warn: 경고 로깅

   * Error → 커스텀 에러 클래스 적용:
     - ValidationError: 필수 필드 검증 실패
     - NotFoundError: 리소스 없음
     - DatabaseError: DB 오류

   * 상세한 JSDoc 문서화:
     - 모든 파라미터 타입 및 설명 추가
     - 함수 목적 및 동작 명시

   * 구조화된 로깅:
     - 모든 요청에 컨텍스트 정보 포함
     - 성공/실패 추적 가능

2. controllers/dailyIssueReportController.js 개선 (58 → 65 lines)
   * try-catch 제거 → asyncHandler 사용
   * console.error 제거
   * 에러 처리 자동화
   * 표준화된 JSON 응답 형식

3. services/uploadService.js 신규 생성 (96 lines)
   * 2개 서비스 함수 구현:
     - createUploadService: 문서 업로드 생성
     - getAllUploadsService: 전체 문서 조회

   * 커스텀 에러 클래스 적용
   * 구조화된 로깅 통합
   * 필수 필드 검증 (original_name, stored_name, file_path)
   * 파일 메타데이터 로깅

4. controllers/uploadController.js 완전 재작성 (26 → 39 lines)
   * try-catch 제거 → asyncHandler 사용
   * 모든 비즈니스 로직 서비스 레이어로 이동
   * 표준화된 JSON 응답 형식
   * 에러 처리 자동화

기술적 개선사항:
- 일관된 에러 처리: ValidationError, NotFoundError, DatabaseError
- 구조화된 로깅: 모든 작업 추적 및 디버깅 용이
- 코드 중복 제거: try-catch 패턴 제거
- 테스트 용이성: 서비스 함수 독립적 테스트 가능
- 유지보수성: 비즈니스 로직과 HTTP 레이어 분리

서비스 레이어 진행 상황:
-  dailyWorkReportService.js (Phase 3.1)
-  attendanceService.js (Phase 3.2)
-  issueTypeService.js (Phase 3.4)
-  toolsService.js (Phase 3.4)
-  dailyIssueReportService.js (Phase 3.5 - 개선)
-  uploadService.js (Phase 3.5 - 신규)

전체 진행률:
- 컨트롤러: 16개 중 12개 개선 완료 (75%)
- 서비스 레이어: 6개 생성/개선 완료

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-11 12:47:19 +09:00
Hyungi Ahn
19e8fd9a35 refactor: Phase 3.4 - IssueType, Tools 서비스 레이어 구축
주요 변경사항:

1. services/issueTypeService.js 신규 생성 (182 lines)
   * 4개 서비스 함수 구현:
     - createIssueTypeService: 이슈 유형 생성
     - getAllIssueTypesService: 전체 이슈 유형 조회
     - updateIssueTypeService: 이슈 유형 수정
     - removeIssueTypeService: 이슈 유형 삭제

   * 커스텀 에러 클래스 적용:
     - ValidationError: 필수 필드 검증
     - NotFoundError: 리소스 없음
     - DatabaseError: DB 오류

   * 구조화된 로깅 통합
   * 필수 필드 검증 (category, subcategory)

2. controllers/issueTypeController.js 완전 재작성 (55 → 66 lines)
   * try-catch 제거 → asyncHandler 사용
   * 모든 비즈니스 로직 서비스 레이어로 이동
   * 표준화된 JSON 응답 형식
   * 에러 처리 자동화

3. services/toolsService.js 신규 생성 (208 lines)
   * 5개 서비스 함수 구현:
     - getAllToolsService: 전체 도구 조회
     - getToolByIdService: 단일 도구 조회
     - createToolService: 도구 생성
     - updateToolService: 도구 수정
     - deleteToolService: 도구 삭제

   * 커스텀 에러 클래스 적용
   * 구조화된 로깅 통합
   * 필수 필드 검증 (name)
   * ID 유효성 검증

4. controllers/toolsController.js 완전 재작성 (76 → 76 lines)
   * try-catch 제거 → asyncHandler 사용
   * 모든 비즈니스 로직 서비스 레이어로 이동
   * 표준화된 JSON 응답 형식
   * 에러 처리 자동화

기술적 개선사항:
- 서비스 레이어 패턴 적용: 비즈니스 로직 분리
- 일관된 에러 처리: ValidationError, NotFoundError, DatabaseError
- 구조화된 로깅: 모든 작업 추적 가능
- 코드 중복 제거: try-catch 패턴 제거
- 테스트 용이성: 서비스 함수 독립적 테스트 가능
- JSDoc 문서화: 모든 함수에 상세 설명 추가

컨트롤러 코드 감소:
- issueTypeController: 55 → 66 lines (문서화 포함, 로직은 단순화)
- toolsController: 76 → 76 lines (코드 품질 향상)

서비스 레이어 진행 상황:
-  dailyWorkReportService.js (Phase 3.1)
-  attendanceService.js (Phase 3.2)
-  issueTypeService.js (Phase 3.4)
-  toolsService.js (Phase 3.4)

남은 작업:
- workReportAnalysis, workAnalysis, monthlyStatus 등
- 복잡한 분석 컨트롤러들

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-11 12:23:59 +09:00
Hyungi Ahn
405bf0dc65 refactor: Phase 3.2 - Attendance, Worker, Project 컨트롤러 개선
주요 변경사항:
- services/attendanceService.js 신규 생성 (269 lines)
  * 9개 서비스 함수로 비즈니스 로직 분리
  * 커스텀 에러 클래스 적용 (ValidationError, DatabaseError)
  * 구조화된 로깅 시스템 통합

- controllers/attendanceController.js 완전 재작성 (306 → 168 lines, 45% 감소)
  * 클래스 기반에서 함수 기반 export로 변경
  * 모든 비즈니스 로직을 서비스 레이어로 이동
  * asyncHandler 미들웨어로 에러 처리 자동화

- controllers/workerController.js 개선
  * 커스텀 에러 클래스 적용
  * console.log → logger 교체
  * 캐시 무효화 로직 유지

- controllers/projectController.js 완전 재작성 (117 → 163 lines)
  * 모든 함수에 새로운 에러 클래스 적용
  * 구조화된 로깅 추가
  * 표준화된 JSON 응답 형식

기술 스택:
- Custom Error Classes: ValidationError, NotFoundError, DatabaseError
- Structured Logging: logger.info/error/warn/debug with context
- asyncHandler: Automatic async error handling
- Service Layer Pattern: Business logic separation

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-11 12:06:35 +09:00
Hyungi Ahn
09f6756da7 refactor: Phase 3.1 - DailyWorkReport 서비스 레이어 개선
작업 보고서 서비스와 컨트롤러를 새로운 에러 핸들링 및
로깅 시스템으로 업그레이드하여 코드 품질 및 유지보수성 향상

주요 변경사항:

services/dailyWorkReportService.js:
- 새로운 커스텀 에러 클래스 적용
  * ValidationError: 유효성 검증 실패
  * NotFoundError: 리소스를 찾을 수 없음
  * DatabaseError: 데이터베이스 오류
- console.log → logger 유틸리티로 전환
  * 구조화된 로깅 (context 포함)
  * 로그 레벨 분리 (info, warn, error)
  * 파일 로깅 지원
- 상세한 에러 컨텍스트 제공
  * 필수 필드, 받은 값, 유효 범위 등
  * 디버깅 및 문제 해결 용이성 향상

controllers/dailyWorkReportController.js:
- 새로운 에러 클래스 import
- asyncHandler 미들웨어 통일
- createDailyWorkReport 함수 간소화
  * try-catch 제거 (asyncHandler가 처리)
  * 표준 JSON 응답 포맷 사용

개선 효과:
- 에러 메시지 명확성 향상
- 로그 분석 및 모니터링 용이
- 일관된 에러 처리 패턴
- 테스트 가능성 향상
- 프로덕션 환경 파일 로깅 지원

파일 통계:
- 2개 파일 수정
- +115 -65 (net +50 lines)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-11 12:00:16 +09:00
Hyungi Ahn
16f1d7fae5 refactor: Phase 2-2 - 사용자 관리 모듈화 및 설정 파일 분리
사용자 관리 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>
2025-12-11 11:01:06 +09:00
Hyungi Ahn
1e7155b864 refactor: Phase 1 - 긴급 보안 및 중복 제거
## 🚨 보안 강화
- 하드코딩된 비밀번호를 환경변수로 전환
- .env.example 생성 및 보안 가이드 추가
- docker-compose.yml 환경변수 적용
- README.md에서 실제 비밀번호 제거

## 🗑️ 중복 제거
- synology_deployment/ 디렉토리 제거 (268MB)
- synology_deployment*.tar.gz 아카이브 제거 (234MB)
- 총 502MB의 중복 파일 삭제

## 🧹 백업 파일 정리
- *.backup 파일 제거 (10개)
- *복사본* 파일 제거
- *이전* 파일 제거
- json(백업)/ 디렉토리 제거

## 📋 .gitignore 업데이트
- 백업 파일 패턴 추가
- 보안 파일 제외 (.env, *.pem, *.key)
- 임시 파일 제외 (*.tmp, *.new)
- 빌드 아티팩트 제외 (*.tar.gz)

## 📚 문서화
- docs/ 디렉토리 구조 생성
- 리팩토링 분석 및 계획 문서 작성
- 코딩 스타일 가이드 작성
- 개발 환경 설정 가이드 작성
- 시스템 아키텍처 문서 작성

## 변경된 파일
- .env.example (신규)
- .gitignore (업데이트)
- docker-compose.yml (환경변수 적용)
- README.md (보안 정보 제거)
- docs/* (신규 문서 7개)

## 보안 개선 효과
 비밀번호 노출 위험 제거
 Git 히스토리에서 민감 정보 분리
 환경별 설정 분리 가능
 배포 보안 강화

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-11 10:16:57 +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
26f9a4dea2 feat: 프로젝트별 작업 분포 Production Report 스타일 완성
 주요 기능
- 프로젝트별 → 작업유형별 데이터 취합 및 표시
- Production Report 스타일 테이블 구현
- 연차/휴무 별도 처리 (주말 제외, 녹색 테마)
- Job No. 정확한 표시 (중복 제거)

🔧 API 개선
- recent-work API에 job_no 필드 추가
- MySQL 쿼리 결과 처리 수정 (results[0] 사용)
- Projects 테이블 대소문자 조인 문제 해결

🎨 UI/UX 개선
- 탭 기반 분석 인터페이스
- 색상 팔레트 개선 (파란색/녹색/노란색 계열)
- 텍스트 방향 수정 (가로 표시)
- 프로젝트별 합계 행 추가

📊 계산 로직
- 공수: 시간 ÷ 8
- 부하율: (개별 시간 ÷ 전체 시간) × 100%
- 인건비: 공수 × 350,000원
- 주말 연차 자동 제외
2025-11-04 17:52:24 +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
746e09420b feat: 캘린더 기반 작업 현황 확인 시스템 구현
- 월별 캘린더 UI로 작업 현황을 한눈에 확인 가능
- 미입력(빨강), 부분입력(주황), 확인필요(보라), 이상없음(초록) 상태 표시
- 범례 아이콘(●)을 사용한 직관적인 상태 표시
- 날짜 클릭 시 해당일 작업자별 상세 현황 모달
- 작업자 클릭 시 개별 작업 입력/수정 모달
- 휴가 처리 기능 (연차, 반차, 반반차, 조퇴)
- 월별 집계 데이터 최적화로 API 호출 최소화

백엔드:
- monthly_worker_status, monthly_summary 테이블 추가
- 자동 집계 stored procedure 및 trigger 구현
- 확인필요(12시간 초과) 상태 감지 로직
- 출석 관리 시스템 확장

프론트엔드:
- 캘린더 그리드 UI 구현
- 상태별 색상 및 아이콘 표시
- 모달 기반 상세 정보 표시
- 반응형 디자인 적용
2025-11-04 10:12:07 +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
775cd12a25 refactor: taskController.js 새로운 유틸리티 적용
- 새로운 에러 처리 시스템 적용:
  * asyncHandler로 비동기 함수 래핑
  * ApiError 클래스로 유효성 검사 에러 처리
  * handleDatabaseError로 DB 에러 표준화
  * handleNotFoundError로 404 에러 표준화

- 새로운 응답 포맷터 적용:
  * res.created() - 작업 생성 성공 응답
  * res.list() - 작업 목록 조회 응답
  * res.success() - 단일 작업 조회 응답
  * res.updated() - 작업 수정 성공 응답
  * res.deleted() - 작업 삭제 성공 응답

- 유효성 검사 개선:
  * ID 파라미터 유효성 검사 추가
  * NaN 체크로 잘못된 ID 요청 차단

- 함수별 개선사항:
  * createTask: 생성 응답 포맷터 적용
  * getAllTasks: 목록 응답 포맷터 적용
  * getTaskById: ID 검증 및 404 처리 개선
  * updateTask: ID 검증 및 수정 응답 포맷터
  * removeTask: ID 검증 및 삭제 응답 포맷터
2025-11-03 10:55:44 +09:00
Hyungi Ahn
34d38b2938 refactor: dailyWorkReportController.js 부분 리팩토링 적용
- 새로운 에러 처리 시스템 적용:
  * asyncHandler로 비동기 함수 래핑
  * ApiError 클래스로 유효성 검사 에러 처리
  * handleDatabaseError로 DB 에러 표준화

- 새로운 응답 포맷터 적용:
  * res.created() - 작업보고서 생성 성공 응답
  * res.success() - 기여자별 요약 조회 응답

- 유효성 검사 시스템 적용:
  * validateSchema로 스키마 기반 검증
  * schemas.createDailyWorkReport 스키마 사용

- 함수별 개선사항:
  * createDailyWorkReport: 스키마 검증 및 생성 응답 포맷터
  * getContributorsSummary: Promise 래핑 및 성공 응답 포맷터

- 참고: 파일이 크므로 핵심 함수들만 우선 적용
  추후 나머지 함수들도 점진적으로 리팩토링 예정
2025-11-03 10:54:51 +09:00
Hyungi Ahn
99210fec1b refactor: projectController.js 새로운 유틸리티 적용
- 새로운 에러 처리 시스템 적용:
  * asyncHandler로 비동기 함수 래핑
  * ApiError 클래스로 유효성 검사 에러 처리
  * handleDatabaseError로 DB 에러 표준화
  * handleNotFoundError로 404 에러 표준화

- 새로운 응답 포맷터 적용:
  * res.created() - 프로젝트 생성 성공 응답
  * res.list() - 프로젝트 목록 조회 응답
  * res.success() - 단일 프로젝트 조회 응답
  * res.updated() - 프로젝트 수정 성공 응답
  * res.deleted() - 프로젝트 삭제 성공 응답

- 유효성 검사 시스템 적용:
  * validateSchema로 스키마 기반 검증
  * schemas.createProject 스키마 사용
  * ID 파라미터 유효성 검사 추가

- 함수별 개선사항:
  * createProject: 스키마 검증 및 생성 응답 포맷터
  * getAllProjects: 목록 응답 포맷터 적용
  * getProjectById: ID 검증 및 404 처리 개선
  * updateProject: ID 검증 및 수정 응답 포맷터
  * removeProject: ID 검증 및 삭제 응답 포맷터
2025-11-03 10:52:39 +09:00
Hyungi Ahn
25e862694e refactor: workerController.js 새로운 유틸리티 적용
- 새로운 에러 처리 시스템 적용:
  * asyncHandler로 비동기 함수 래핑
  * ApiError 클래스로 유효성 검사 에러 처리
  * handleDatabaseError로 DB 에러 표준화
  * handleNotFoundError로 404 에러 표준화

- 새로운 응답 포맷터 적용:
  * res.created() - 작업자 생성 성공 응답
  * res.list() - 작업자 목록 조회 응답
  * res.success() - 단일 작업자 조회 응답
  * res.updated() - 작업자 수정 성공 응답
  * res.deleted() - 작업자 삭제 성공 응답

- 유효성 검사 시스템 적용:
  * validateSchema로 스키마 기반 검증
  * schemas.createWorker 스키마 사용
  * ID 파라미터 유효성 검사 추가

- 함수별 개선사항:
  * createWorker: 스키마 검증 및 생성 응답 포맷터
  * getAllWorkers: 목록 응답 포맷터 적용
  * getWorkerById: ID 검증 및 404 처리 개선
  * updateWorker: ID 검증 및 수정 응답 포맷터
  * removeWorker: ID 검증 및 삭제 응답 포맷터
2025-11-03 10:50:54 +09:00
Hyungi Ahn
d23ecef077 refactor: systemController.js 새로운 유틸리티 적용
- 새로운 에러 처리 시스템 적용:
  * asyncHandler로 비동기 함수 래핑
  * ApiError 클래스 사용으로 일관된 에러 처리
  * handleDatabaseError로 DB 에러 표준화

- 새로운 응답 포맷터 적용:
  * res.health() - 시스템 상태 응답
  * res.success() - 일반 성공 응답
  * res.list() - 목록 조회 응답
  * res.created() - 생성 성공 응답

- 유효성 검사 시스템 적용:
  * validateSchema로 스키마 기반 검증
  * schemas.createUser 스키마 사용

- 함수별 개선사항:
  * getSystemStatus: 헬스체크 포맷터 적용
  * getDatabaseStatus: 성공 응답 포맷터 적용
  * getAllUsers: 목록 응답 포맷터 적용
  * createUser: 스키마 검증 및 생성 응답 포맷터 적용
2025-11-03 10:49:36 +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
Hyungi Ahn
94ecc7333d feat: 데이터베이스 및 웹 UI 대규모 리팩토링
- 삭제된 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: 삭제된 페이지 목록
2025-11-03 09:26:50 +09:00
Hyungi Ahn
2a3feca45b feat: 시스템 관리자 대시보드 개선
- 시스템 관리자 전용 웹페이지 구현 (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 필드 추가
2025-08-18 11:16:18 +09:00
Hyungi Ahn
809b2af53e 해당 서비스 도커화 성공, 룰 추가, 로그인 오류 수정, 소문자 룰 어느정도 해결 2025-08-01 15:55:27 +09:00
Hyungi Ahn
ef06cec8d6 fix: 보안 취약점 해결 및 인증 시스템 오류 수정
- npm audit fix로 tar-fs, brace-expansion 취약점 해결
- analysisRoutes.js에서 authMiddleware import 오류 수정
- dailyWorkReportController.js에 누락된 getAccumulatedReports 함수 추가
- JWT 인증 시스템 정상 작동 확인 완료
2025-07-31 10:42:53 +09:00
7c6940307e feat(backend): 프로젝트 분석 API 구현
- 프론트엔드의 데이터 가공 로직을 백엔드로 이전하여 성능 개선
- 단일 API 호출로 모든 집계 데이터를 반환하도록 C-S-M 아키텍처 구현
2025-07-28 15:13:43 +09:00
e3b2718767 refactor(backend): 일일 이슈 보고 API 전체 리팩토링
- dailyIssueReport 기능을 Controller-Service-Model 아키텍처로 재구성
- Model 계층을 Promise 기반으로 전환하고 트랜잭션을 적용하여 안정성 확보
- API 전반의 코드 품질 및 유지보수성 향상
2025-07-28 12:41:41 +09:00
71c06f38b1 refactor(backend): 작업 보고서 통계/요약 API 구조 개선
- dailyWorkReportController의 통계/요약 함수를 C-S-M 아키텍처에 맞게 리팩토링
- Model 계층의 콜백 기반 함수를 Promise 기반으로 전환
- API의 일관성 및 유지보수성 향상
2025-07-28 12:35:50 +09:00
e0e0b1ad99 refactor(auth): 프론트엔드/백엔드 로그인 로직 개선
- 프론트엔드: login.js, api-helper.js, auth.js 모듈화 및 책임 분리
- 백엔드: authController가 역할 기반 redirectUrl을 제공하도록 수정
- 로그인 프로세스의 안정성 및 유지보수성 향상
2025-07-28 12:00:30 +09:00
d154514fa0 refactor: 일일 작업 보고서 CRUD API 구조 개선
- dailyWorkReportController의 조회, 수정, 삭제(CRUD) 로직을 Service와 Model로 분리
 - Promise 기반의 async/await 구조로 비동기 코드 개선
 - 새로운 DB 스키마 v2의 명명 규칙 적용
2025-07-28 11:19:28 +09:00
97e32a7057 feat: 일일 작업 보고서 생성 API 구조 개선 (C-S-M 패턴 적용)
- dailyWorkReportController의 생성 로직을 Service와 Model로 분리
 - Service: 데이터 유효성 검사 등 비즈니스 로직 담당
 - Model: 트랜잭션을 사용한 DB 쿼리 담당
 - Controller: HTTP 요청/응답 처리만 담당하도록 단순화
2025-07-28 11:14:48 +09:00
5539b09fd8 refactor: 로그인 API의 DB 스키마 및 구조 개선
- 새로운 DB 스키마(v2) 추가 (테이블명 snake_case, FK 적용)
 - 룰.md에 API 성능 관리 규칙 추가
 - 로그인 관련 로직을 새로운 스키마에 맞게 수정
 - Service와 Model의 역할 분리를 명확하게 리팩토링
2025-07-28 11:11:25 +09:00
09a4d38512 feat: 초기 프로젝트 설정 및 룰.md 파일 추가 2025-07-28 09:53:31 +09:00