Commit Graph

8 Commits

Author SHA1 Message Date
Hyungi Ahn
bea62dfdee refactor: 작업자 관리 개선 - 계정 연동 기능으로 변경
작업 보고서 표시 여부 대신 계정 연동 기능으로 개선했습니다.

## 주요 변경사항

### 개념 변경
- **이전**: 작업 보고서 표시 여부 (show_in_work_reports)
- **이후**: 계정 생성/연동 기능

### 데이터베이스
- **마이그레이션**: 20260119095549_add_worker_display_fields.js
  - show_in_work_reports 컬럼 제거
  - employment_status만 유지 (employed/resigned)

- **workerModel**:
  - getAll, getById에서 users 테이블 JOIN하여 user_id 조회
  - create, update에서 show_in_work_reports 필드 제거

### 백엔드 API
- **workerController.js**:
  - createWorker: create_account 체크 시 자동으로 users 테이블에 계정 생성
    - username: hangulToRoman으로 한글 이름 변환
    - password: 초기 비밀번호 '1234' (bcrypt 해시)
    - role: User 역할 자동 할당
  - updateWorker:
    - create_account=true & 계정 없음 → 계정 생성
    - create_account=false & 계정 있음 → 계정 연동 해제 (users.worker_id=NULL)

### 프론트엔드
- **worker-management.html**:
  - "작업 보고서 표시" → "🔐 계정 생성/연동"으로 변경
  - 체크 시 로그인 계정 자동 생성 안내

- **worker-management.js**:
  - 카드 렌더링: user_id 존재 여부로 계정 연동 상태 표시 (🔐 아이콘)
  - saveWorker: create_account 필드 전송
  - show_in_work_reports 관련 로직 모두 제거

- **daily-work-report.js**:
  - 필터링 조건 단순화: 퇴사자만 제외 (employment_status≠resigned)
  - 계정 여부와 무관하게 모든 재직자 표시

## 사용 방법
1. 작업자 등록/수정 시 "계정 생성/연동" 체크
2. 자동으로 로그인 계정 생성 (초기 비밀번호: 1234)
3. 계정이 있는 작업자는 나의 대시보드, 연차/출퇴근 관리 가능

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-19 10:17:31 +09:00
Hyungi Ahn
344ad35651 fix: 작업자/프로젝트 관리 페이지 모듈 로딩 및 DB 스키마 동기화 수정
## 수정 내용

### 1. JavaScript 모듈 로딩 문제 수정
- ES6 import 사용 파일에 type="module" 속성 추가
- api-config.js, load-navbar.js, worker-management.js, project-management.js

### 2. DB 스키마 불일치 해결
- workers 테이블 실제 구조에 맞게 코드 수정
- 존재하지 않는 컬럼 제거: phone_number, email, hire_date, department, notes
- 실제 컬럼 사용: join_date, salary, annual_leave

### 3. 백엔드 수정
- workerModel.js: create, update 함수를 실제 테이블 구조에 맞게 수정
- workerController.js: 상세 로깅 추가

### 4. 프론트엔드 수정
- worker-management.js: 데이터 전송 구조 수정
- api-config.js: 에러 로깅 개선
- HTML 파일: 스크립트 type="module" 추가 및 버전 업데이트

### 5. 개발 문서
- 개발로그 추가: 2026-01-19_작업자관리_스키마_동기화.md

## 영향 범위
- 작업자 관리 페이지: 상태 변경 기능 정상화
- 프로젝트 관리 페이지: 모듈 로딩 오류 수정

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-19 08:35:36 +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
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
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
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
09a4d38512 feat: 초기 프로젝트 설정 및 룰.md 파일 추가 2025-07-28 09:53:31 +09:00