Commit Graph

46 Commits

Author SHA1 Message Date
Hyungi Ahn
e1227a69fe feat: 설비 관리 시스템 구축
## 주요 기능
- 설비 등록/수정/삭제 기능
- 작업장별 설비 연결
- 작업장 지도에서 설비 위치 정의
- 필터링 및 검색 기능

## 백엔드
- equipments 테이블 생성 (마이그레이션)
- 설비 API (모델, 컨트롤러, 라우트) 구현
- workplaces 테이블에 layout_image 컬럼 추가

## 프론트엔드
- 설비 관리 페이지 (equipments.html)
- 설비 관리 JavaScript (equipment-management.js)
- 작업장 지도 모달 개선

## 버그 수정
- 카테고리/작업장 이미지 보존 로직 개선 (null 처리)
- 작업장 레이아웃 이미지 업로드 경로 수정 (public/uploads → uploads)

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-28 09:22:57 +09:00
Hyungi Ahn
9c98c44d8a fix: TBM 작업보고서 저장 버그 수정
문제:
1. dailyWorkReportController에서 DailyWorkReportModel(대문자) 사용 → dailyWorkReportModel(소문자)로 수정
2. daily_work_reports INSERT 쿼리에 work_hours 필드 누락
3. 에러 로그에 스택 트레이스 추가

해결:
- 변수명 통일 (dailyWorkReportModel 사용)
- INSERT 쿼리에 work_hours 필드 추가 (TBM에서는 total_hours와 동일)
- 에러 핸들링 개선 (스택 트레이스 로깅 추가)

영향받는 파일:
- api.hyungi.net/controllers/dailyWorkReportController.js (line 878, 887-894)
- api.hyungi.net/models/dailyWorkReportModel.js (line 1242-1266)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-27 13:56:12 +09:00
Hyungi Ahn
6ff5c443be fix: taskModel DB 연결 및 API 응답 형식 수정
- taskModel.js: ../db/connection → ../dbPool로 수정
- dailyWorkReportController.js: getWorkTypes 응답 형식 표준화
  - res.json(data) → res.json({ success: true, data, message })

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-26 15:15:19 +09:00
Hyungi Ahn
7acb835c39 feat: 작업 관리 시스템 및 TBM 공정/작업 통합
## Backend Changes
- Create tasks table with work_type_id FK to work_types
- Add taskModel, taskController, taskRoutes for task CRUD
- Update tbmModel to support work_type_id and task_id
- Add migrations for tasks table and TBM integration

## Frontend Changes
- Create task management admin page (tasks.html, task-management.js)
- Update TBM modal to include work type (공정) and task (작업) selection
- Add cascading dropdown: work type → task selection
- Display work type and task info in TBM session cards
- Update sidebar navigation in all admin pages

## Database Schema
- tasks: task_id, work_type_id, task_name, description, is_active
- tbm_sessions: add work_type_id, task_id columns with FKs
- Foreign keys maintain referential integrity with work_types and tasks

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-26 15:06:43 +09:00
Hyungi Ahn
f27728b168 feat: 작업장 관리 기능 추가 (공장-작업장 계층 구조)
- 공장(카테고리) 및 작업장 CRUD API 구현
- 탭 기반 UI로 공장별 작업장 필터링
- 터치 최적화된 관리자 페이지
- DB 테이블: workplace_categories, workplaces
- 관리자 메뉴에 작업장 관리 추가

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-26 14:31:58 +09:00
Hyungi Ahn
35aa4a840e fix: 로그인 실패 시 500 에러 → 401 에러로 수정
## 문제
- 로그인 실패 시 401 에러를 반환해야 하는데 500 에러 반환
- 원인: ApiError(utils/errorHandler.js)와 AppError(utils/errors.js) 클래스 불일치
- errorHandler 미들웨어가 ApiError를 인식하지 못해 500으로 변환

## 수정사항
1. authController.js:
   - ApiError 대신 AuthenticationError, ValidationError 사용
   - 로그인 실패 → AuthenticationError 던짐 (401)
   - 유효성 검증 실패 → ValidationError 던짐 (400)

2. db/connection.js 추가:
   - TBM 모델의 콜백 방식 DB 쿼리 지원
   - dbPool을 래핑하여 레거시 코드 호환

3. routes.js:
   - TBM 라우트 임시 비활성화 (db/connection 볼륨 마운트 문제)
   - Docker 볼륨 재설정 후 재활성화 예정

## 테스트 결과
```bash
# Before: 500 Internal Server Error
# After: 401 Unauthorized

curl -X POST http://localhost:20005/api/auth/login \
  -d '{"username":"wrong","password":"wrong"}'

# Response:
{
  "success": false,
  "error": {
    "message": "아이디 또는 비밀번호가 올바르지 않습니다.",
    "code": "AUTHENTICATION_ERROR"  // ← 정상!
  }
}
```

## TODO
- [ ] Docker 볼륨 설정에 db 디렉토리 전체 추가
- [ ] TBM 라우트 재활성화
- [ ] 중복 에러 처리 시스템 통합 (ApiError 제거)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-26 12:42:00 +09:00
Hyungi Ahn
4d0c4c0801 feat: TBM 시스템 구축 및 페이지 권한 관리 기능 추가
## 주요 변경사항

### 1. TBM (Tool Box Meeting) 시스템 구축
- **데이터베이스 스키마** (5개 테이블 생성)
  - tbm_sessions: TBM 세션 관리
  - tbm_team_assignments: 팀 구성 관리
  - tbm_safety_checks: 안전 체크리스트 마스터 (17개 항목)
  - tbm_safety_records: 안전 체크 기록
  - team_handovers: 작업 인계 관리

- **API 엔드포인트** (17개)
  - TBM 세션 CRUD
  - 팀 구성 관리
  - 안전 체크리스트
  - 작업 인계
  - 통계 및 리포트

- **프론트엔드**
  - TBM 관리 페이지 (/pages/work/tbm.html)
  - 모달 기반 UI (세션 생성, 팀 구성, 안전 체크)

### 2. 페이지 권한 관리 시스템
- 페이지별 접근 권한 설정 기능
- 관리자 페이지 (/pages/admin/page-access.html)
- 사용자별 페이지 권한 부여/회수
- TBM 페이지 등록 및 권한 연동

### 3. 네비게이션 role 표시 버그 수정
- load-navbar.js: case-insensitive role 매칭 적용
- JWT의 "Admin" role이 "관리자"로 정상 표시
- admin-only 메뉴 항목 정상 표시

### 4. 대시보드 개선
- 작업 현황 테이블 가독성 향상
- 고대비 색상 및 명확한 구분선 적용
- 이모지 제거 및 SVG 아이콘 적용

### 5. 문서화
- TBM 배포 가이드 작성 (docs/TBM_DEPLOYMENT_GUIDE.md)
- 데이터베이스 스키마 상세 기록
- 배포 절차 및 체크리스트 제공

## 기술 스택
- Backend: Node.js, Express, MySQL
- Frontend: Vanilla JavaScript, HTML5, CSS3
- Database: MySQL (InnoDB)

## 파일 변경사항

### 신규 파일
- api.hyungi.net/db/migrations/20260120000000_create_tbm_system.js
- api.hyungi.net/db/migrations/20260120000001_add_tbm_page.js
- api.hyungi.net/models/tbmModel.js
- api.hyungi.net/models/pageAccessModel.js
- api.hyungi.net/controllers/tbmController.js
- api.hyungi.net/controllers/pageAccessController.js
- api.hyungi.net/routes/tbmRoutes.js
- web-ui/pages/work/tbm.html
- web-ui/pages/admin/page-access.html
- web-ui/js/page-access-management.js
- docs/TBM_DEPLOYMENT_GUIDE.md

### 수정 파일
- api.hyungi.net/config/routes.js (TBM 라우트 추가)
- web-ui/js/load-navbar.js (role 매칭 버그 수정)
- web-ui/pages/admin/workers.html (HTML 구조 수정)
- web-ui/pages/dashboard.html (이모지 제거)
- web-ui/css/design-system.css (색상 팔레트 추가)
- web-ui/css/modern-dashboard.css (가독성 개선)
- web-ui/js/modern-dashboard.js (SVG 아이콘 적용)

## 배포 시 주의사항
⚠️ 본 서버 배포 시 반드시 마이그레이션 실행 필요:
```bash
npm run db:migrate
```

상세한 배포 절차는 docs/TBM_DEPLOYMENT_GUIDE.md 참조

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-20 15:38:17 +09:00
Hyungi Ahn
6b7f9d4627 fix: 로그인 후 리다이렉트 경로를 새 대시보드로 수정
변경사항:
- authController.js: 로그인 후 /pages/dashboard.html로 리다이렉트
- config.js: 모든 대시보드 경로를 /pages/dashboard.html로 통일
- work/report-view.html: 대시보드 버튼 경로 수정

이제 로그인하면 올바른 경로로 이동합니다.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-20 10:50:54 +09:00
Hyungi Ahn
4ac0605887 refactor: 네비게이션 헤더 최신 디자인으로 전면 개편 및 로그인 버그 수정
- fix: 로그인 API에서 user.role_name 필드 올바르게 사용 (auth.service.js)
- refactor: navbar 컴포넌트를 최신 dashboard-header 스타일로 전환
- refactor: 구버전 work-report-header 제거 (6개 페이지)
- refactor: load-navbar.js를 최신 헤더 구조에 맞게 업데이트
- style: 파란색 그라데이션 헤더, 실시간 시계, 향상된 프로필 메뉴
- docs: 2026-01-20 개발 로그 추가

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-20 08:40:19 +09:00
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
3549710325 fix: Login 500, DB schema sync, Dashboard missing data, Major Refactoring 2025-12-19 15:47:15 +09:00
Hyungi Ahn
05843da1c4 refactor(db,frontend): Improve queries and modularize frontend
- Replaced SELECT* queries in 8 models with explicit columns.
- Began modularizing work-report-calendar.js by creating CalendarAPI.js, CalendarState.js, and CalendarView.js.
- Refactored manage-project.js to use global API helpers.
- Fixed API container crash by adding missing volume mounts to docker-compose.yml.
- Added new migration for missing columns in the projects table.
- Documented current DB schema and deployment notes.
2025-12-19 12:42:24 +09:00
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