Commit Graph

124 Commits

Author SHA1 Message Date
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
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
397485e150 feat: 작업보고서 시간 입력 UX 개선 - 터치 최적화
작업보고서 작성 페이지의 시간 입력을 모바일/터치 환경에 최적화

주요 변경사항:
- 기존 number input → 큰 버튼 기반 팝오버 방식으로 전환
- 퀵 선택 버튼 5개 (30분, 1시간, 2시간, 4시간, 8시간)
- ±30분 미세 조정 버튼 추가
- 터치 타겟 최소 48-64px로 확대
- "8시간 30분" 형식으로 직관적 표시
- TBM 작업보고 및 수동 입력 모두 적용

기술 구현:
- Hidden input + display div 패턴으로 폼 호환성 유지
- 팝오버 오버레이 with ESC/클릭 외부 닫기
- CSS 애니메이션 추가
- 캐시 버스팅 (CSS v9, JS v24)

문서:
- 개발 로그: 개발 log/2026-01-27-time-input-ux-improvement.md
- 사용자 가이드: docs/guides/work-report-time-input-guide.md

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-27 13:29:38 +09:00
Hyungi Ahn
ad7088d840 refactor: 작업자 관리 페이지를 카드에서 테이블 형식으로 변경
## 변경 사항
- UI 형식: 카드 그리드 → 엑셀 스타일 테이블
- 더 많은 정보를 한눈에 볼 수 있음
- 공간 활용 효율성 향상

## HTML 변경 (workers.html)
- 테이블 구조 추가
  - 컬럼: 상태, 이름, 직책, 전화번호, 이메일, 입사일, 부서, 계정, 현장직, 등록일, 관리
  - tbody id="workersGrid" 유지 (기존 코드 호환성)

## JavaScript 변경 (worker-management.js)
- renderWorkers() 함수 리팩토링
  - 카드 HTML 생성 → 테이블 행 생성
  - 상태 배지: 현장직(초록), 사무직(노랑), 퇴사(빨강)
  - 아바타 아이콘 유지 (이름 첫 글자)
  - 아이콘 버튼으로 편집/상태변경/삭제 기능

## CSS 변경 (admin-pages.css)
- 테이블 내 버튼 스타일 추가
  - .data-table .btn-icon
  - hover 효과 및 transform

## 유지된 기능
- 검색 및 필터링
- 정렬
- 통계 표시
- 편집/삭제/상태 변경
- Empty state

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-26 15:24:33 +09:00
Hyungi Ahn
45f80e206b fix: 관리 페이지 탭 active 스타일 개선
## 문제
- 선택된 탭이 파란색 배경으로 가득 채워져 보기 안 좋음
- 모든 관리 페이지(프로젝트, 작업자, 작업장, 작업 등)에서 동일한 문제

## 해결
- .tab-btn.active 스타일 변경
  - Before: 전체 배경 파란색 (background: var(--color-primary))
  - After: 연한 배경 + 하단 border 강조
    - color: var(--color-primary) (텍스트 파란색)
    - background: var(--color-primary-light) (연한 배경)
    - border-bottom: 3px solid var(--color-primary) (하단 강조)
    - font-weight: 600 (글자 굵게)

## 영향
- 모든 관리 페이지의 탭 UI 개선
- 가독성 향상

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-26 15:20:20 +09:00
Hyungi Ahn
1fc9dff69f feat: 작업 관리 페이지에 공정 관리 기능 추가
## 추가 기능
- 공정 추가/수정/삭제 기능 구현
- 공정 관리 모달 UI 추가
- 공정 탭에 편집 버튼 추가 (✏️)

## UI 변경
- 상단에 "공정 추가" 버튼 추가
- 공정 모달: 공정명, 카테고리, 설명 입력 필드
- 각 공정 탭에 편집 아이콘 표시

## JavaScript 함수
- openWorkTypeModal(): 공정 추가 모달 열기
- editWorkType(workTypeId): 공정 수정 모달 열기
- saveWorkType(): 공정 저장 (POST/PUT)
- deleteWorkType(): 공정 삭제 (연결된 작업 확인)
- closeWorkTypeModal(): 모달 닫기

## 검증 로직
- 연결된 작업이 있는 공정은 삭제 불가
- 필수 필드(공정명) 검증

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-26 15:18:14 +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
566a38562c fix: work-types API 경로 수정
- /api/tools/work-types → /api/daily-work-reports/work-types
- task-management.js와 tbm.js에서 올바른 엔드포인트 사용
- API 서버 재시작으로 /api/tasks 라우트 활성화

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-26 15:09:16 +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
9c636bf6ad refactor: TBM 페이지를 탭 기반 UI로 개선
- TBM 입력 탭: 오늘의 TBM 목록 + 새 TBM 시작 버튼
- TBM 관리 탭: 전체 TBM 기록 + 날짜 필터링
- 탭 전환 로직 추가
- 각 탭별 통계 표시

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-26 14:35:52 +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
ffabcaf579 fix: 대시보드 카드 명칭 변경 (프로젝트 관리 → 기본 정보 관리)
관리 페이지 진입점의 명칭을 더 포괄적으로 변경:
- "프로젝트 관리" → "기본 정보 관리"
- 프로젝트, 작업자, 코드 관리를 포함하는 의미

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-26 14:10:38 +09:00
Hyungi Ahn
485ce7d276 docs: 2026-01-26 개발 로그 업데이트
관리 페이지 UI/UX 개선 및 네비게이션 단순화 작업 내용 기록:
- 2단 레이아웃 구현 (사이드바 + 메인)
- 코드 관리 페이지 탭 디자인 개선
- admin/index.html 제거 및 네비게이션 단순화
- 관리 페이지 표준화 문서 작성

커밋 해시: ca33736, cbf1ad9, f3386a5

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-26 14:08:50 +09:00
Hyungi Ahn
f3386a54c7 refactor: admin/index.html 제거 및 네비게이션 단순화
## 변경사항
- 중간 허브 페이지(admin/index.html) 제거
- 대시보드에서 프로젝트 관리로 직접 연결
- 관리 페이지 사이드바 백링크를 대시보드로 변경

## 상세 내용
### 제거된 파일
- web-ui/pages/admin/index.html (작업 관리 허브 페이지)

### 네비게이션 변경
- dashboard.html: "작업 관리" → "프로젝트 관리" 링크 변경
  * /pages/admin/index.html → /pages/admin/projects.html
- 관리 페이지 사이드바 백링크 수정:
  * projects.html: "작업관리로 ◀" → "대시보드로 🏠"
  * workers.html: "작업관리로 ◀" → "대시보드로 🏠"
  * codes.html: "작업관리로 ◀" → "대시보드로 🏠"

### 개선 효과
- 네비게이션 단계 축소 (2단계 → 1단계)
- 사용자 경험 개선 (불필요한 중간 페이지 제거)
- 관리 페이지 간 이동은 사이드바로 유지

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-26 14:07:34 +09:00
Hyungi Ahn
cbf1ad9dad refactor: 프로젝트 카드 레이아웃 및 메타 정보 표시 개선
## 변경사항
- 프로젝트 카드 메타 정보를 key-value 형식으로 재구성
- 빈 값은 '-'로 표시하여 일관성 향상
- 버튼 텍스트 추가 (✏️ 수정, 🗑️ 삭제)
- 메인 콘텐츠 영역 최대폭 1600px 제한 및 중앙 정렬
- 그리드 정렬 개선

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-26 13:59:42 +09:00
Hyungi Ahn
ca33736ed4 feat: 관리 페이지(Admin Pages) UI 개선 및 표준화
## 주요 변경사항
- 프로젝트/작업자/코드 관리 페이지 2단 레이아웃(사이드바+메인) 적용
- 통일된 3열 카드 그리드 레이아웃 구현
- 코드 관리 페이지 탭 및 카드 디자인 개선
- 관리 페이지 표준 가이드 문서 작성

## 세부 내용
### HTML 구조 개선
- `.page-container` flexbox 레이아웃으로 변경
- 240px 고정폭 사이드바 네비게이션 추가
- 페이지 헤더를 카드 형태로 분리

### CSS 개선
- admin-pages.css 신규 생성 (v7)
- 3열 그리드 레이아웃 (repeat(3, 1fr))
- 카드 높이 통일 (프로젝트/작업자: 420px, 코드: 최소 200px)
- 반응형 디자인 (1200px: 2열, 768px: 1열)

### 코드 관리 페이지 특화
- 탭 네비게이션 스타일 개선
- 상태별/심각도별 컬러 보더 적용
- 해결 가이드 섹션 스타일링
- 아이콘 48x48 둥근 박스 디자인

### 문서화
- ADMIN_PAGE_STANDARD.md 생성
- HTML 템플릿, CSS 클래스, 파일 명명 규칙 정의
- 3가지 페이지 타입(카드 그리드/테이블/탭) 표준화

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-26 13:57:43 +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
4ee07bc95c docs: 문서 작성 표준 가이드 추가
프로젝트 전체 문서 작성 규칙 및 템플릿 정의

## 주요 내용
- 문서 작성 5대 원칙 (명확성, 일관성, 완전성, 접근성, 유지보수성)
- 문서 구조 표준 (필수 섹션, 섹션 순서)
- 문서 유형별 가이드 (배포, 기능 명세, API, 트러블슈팅)
- 작성 규칙 (마크다운 스타일, 명명 규칙, 코드 예시, 표, 다이어그램)
- 예시 템플릿 (배포 가이드, API 문서)
- 문서 검토 체크리스트

## 문서 유형별 표준 구조

### 배포/설치 가이드:
1. 문서 개요 → 2. 목차 → 3. 시스템 개요 → 4. 배포 전 확인사항
→ 5. 배포 절차 → 6. 기능 명세 → 7. API 명세 → 8. 프론트엔드 구현
→ 9. 테스트 가이드 → 10. 문제 해결 → 11. 변경 이력

### API 문서:
1. 문서 개요 → 2. 목차 → 3. API 개요 → 4. 인증 방식
→ 5. 엔드포인트 목록 → 6. 엔드포인트 상세 → 7. 에러 코드
→ 8. 예시 코드 → 9. 변경 이력

## 적용 대상
- 모든 신규 문서는 이 가이드를 따름
- 기존 문서는 점진적으로 표준화

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-26 10:16:47 +09:00
Hyungi Ahn
94bccf3b67 docs: TBM 배포 가이드 전면 개편 (v2.0)
기존 중구난방이던 문서를 체계적으로 재구성

## 주요 변경사항
- 목차 추가 (9개 섹션)
- 시스템 아키텍처 다이어그램 추가
- 배포 전 확인사항 섹션 신설
- 단계별 배포 절차 상세화
- 기능 명세 및 사용자 시나리오 추가
- API 명세 예시 코드 포함
- 프론트엔드 구현 세부 함수 코드 추가
- 테스트 가이드 확대 (API, 웹, 성능)
- 문제 해결 섹션 강화 (5개 카테고리)
- 데이터베이스 스키마 명시

## 문서 구조
1. 시스템 개요
2. 배포 전 확인사항
3. 배포 절차
4. 기능 명세
5. API 명세
6. 프론트엔드 구현
7. 테스트 가이드
8. 문제 해결
9. 변경 이력

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-26 10:14:17 +09:00
Hyungi Ahn
67e9c0886d feat: TBM 빠른 작업 배너 추가 (페이지 권한 기반)
- 대시보드에 TBM 관리 빠른 작업 카드 추가
- 페이지 접근 권한 기반으로 표시/숨김 처리
- 오렌지 그라데이션 배경으로 시각적 구분
- checkTbmPageAccess() 함수로 사용자 권한 확인

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-20 15:52:00 +09:00
Hyungi Ahn
480206912b feat: TBM 시스템 완성 - 작업 인계, 상세보기, 작업보고서 연동
## 주요 기능 추가

### 1. 작업 인계 시스템 (반차/조퇴 시)
- **인계 모달** (`handoverModal`)
  - 인계 사유 선택 (반차/조퇴/긴급/기타)
  - 인수자 (다른 팀장) 선택
  - 인계 날짜/시간 입력
  - 인계할 팀원 선택 (체크박스)
  - 인계 내용 메모

- **API 연동**
  - POST /api/tbm/handovers (인계 요청 생성)
  - 세션 정보와 팀 구성 자동 조회
  - from_leader_id 자동 설정

- **UI 개선**
  - TBM 카드에 "📤 인계" 버튼 추가
  - 인계할 팀원 목록 자동 로드
  - 현재 팀장 제외한 리더만 표시

### 2. TBM 상세보기 모달
- **상세 정보 표시** (`detailModal`)
  - 기본 정보 (팀장, 날짜, 프로젝트, 작업 장소, 작업 내용)
  - 안전 특이사항 (노란색 강조)
  - 팀 구성 (그리드 레이아웃)
  - 안전 체크리스트 (카테고리별 그룹화)

- **안전 체크 시각화**
  - / 아이콘으로 체크 상태 표시
  - 체크됨: 초록색 배경
  - 미체크: 빨간색 배경
  - 카테고리별 구분 (PPE/EQUIPMENT/ENVIRONMENT/EMERGENCY)

- **병렬 API 호출**
  - Promise.all로 세션/팀/안전체크 동시 조회
  - 로딩 성능 최적화

### 3. 작업 보고서와 TBM 연동
- **TBM 팀 구성 자동 불러오기**
  - `loadTbmTeamForDate()` 함수 추가
  - 선택한 날짜의 TBM 세션 자동 조회
  - 진행중(draft) 세션 우선 선택
  - 팀 구성 정보 자동 로드

- **작업자 자동 선택**
  - TBM에서 구성한 팀원 자동 선택
  - 선택된 작업자 시각적 표시 (.selected 클래스)
  - 다음 단계 버튼 자동 활성화

- **안내 메시지**
  - "🛠️ TBM 팀 구성 자동 적용" 알림
  - 자동 선택된 팀원 수 표시
  - 파란색 강조 스타일

### 4. UI/UX 개선
- TBM 카드 버튼 레이아웃 개선 (flex-wrap)
- 인계 버튼 오렌지색 (#f59e0b)
- 모달 스크롤 가능 (max-height: 70vh)
- 반응형 그리드 (auto-fill, minmax)

## 기술 구현

### 함수 추가
- `viewTbmSession()`: 상세보기 (병렬 API 호출)
- `openHandoverModal()`: 인계 모달 (팀 구성 자동 로드)
- `saveHandover()`: 인계 저장 (worker_ids JSON array)
- `loadTbmTeamForDate()`: TBM 팀 구성 조회
- `closeDetailModal()`, `closeHandoverModal()`: 모달 닫기

### 수정 함수
- `populateWorkerGrid()`: TBM 연동 추가 (async/await)
- `displayTbmSessions()`: 인계 버튼 추가

## 파일 변경사항
- web-ui/pages/work/tbm.html (모달 2개 추가, 약 110줄)
- web-ui/js/tbm.js (함수 추가, 약 250줄 증가)
- web-ui/js/daily-work-report.js (TBM 연동, 약 60줄 추가)

## 사용 시나리오

### 시나리오 1: TBM → 작업보고서
1. 아침 TBM에서 팀 구성 (예: 5명 선택)
2. 작업 보고서 작성 시 날짜 선택
3. **자동으로 5명 선택됨** 
4. 바로 작업 내역 입력 가능

### 시나리오 2: 조퇴 시 인계
1. TBM 카드에서 "📤 인계" 클릭
2. 사유 선택 (조퇴), 인수자 선택
3. 인계할 팀원 선택 (기본 전체 선택)
4. 인계 요청 → DB 저장

### 시나리오 3: TBM 상세 확인
1. TBM 카드 클릭
2. 기본 정보, 팀 구성, 안전 체크 한눈에 확인
3. 안전 체크 완료 여부 시각적 확인

## 데이터 흐름

```
TBM 시작
  ↓
팀 구성 저장 (tbm_team_assignments)
  ↓
작업 보고서 작성 시
  ↓
GET /api/tbm/sessions/date/:date
  ↓
GET /api/tbm/sessions/:id/team
  ↓
팀원 자동 선택
```

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-20 15:46:02 +09:00
Hyungi Ahn
f8138685a1 feat: TBM JavaScript 로직 구현 완료
## 주요 기능

### 1. TBM 세션 관리
- 날짜별 TBM 세션 목록 조회
- 새 TBM 세션 생성
- TBM 세션 완료 처리
- 세션 상태별 표시 (진행중/완료/취소)

### 2. 팀 구성 관리
- 작업자 선택 그리드 UI
- 전체 선택/해제 기능
- 선택된 작업자 실시간 표시
- 팀원 일괄 추가

### 3. 안전 체크리스트
- 카테고리별 체크리스트 표시
  - PPE (개인 보호 장비)
  - EQUIPMENT (장비 점검)
  - ENVIRONMENT (작업 환경)
  - EMERGENCY (비상 대응)
- 필수/선택 항목 구분
- 체크 상태 저장

### 4. UI/UX
- 모달 기반 인터페이스
- 토스트 알림
- 실시간 통계 표시 (총 세션, 완료 세션)
- 반응형 그리드 레이아웃

## 구현 상세

### 전역 상태 관리
- allSessions: TBM 세션 목록
- allWorkers: 작업자 목록
- allProjects: 프로젝트 목록
- allSafetyChecks: 안전 체크리스트
- selectedWorkers: 선택된 작업자 (Set)

### API 연동
- GET /api/tbm/sessions/date/:date
- POST /api/tbm/sessions
- POST /api/tbm/sessions/:id/team/batch
- GET /api/tbm/sessions/:id/safety
- POST /api/tbm/sessions/:id/safety
- POST /api/tbm/sessions/:id/complete

### 주요 함수
- loadTbmSessionsByDate(): 날짜별 세션 조회
- saveTbmSession(): TBM 세션 생성
- saveTeamComposition(): 팀 구성 저장
- saveSafetyChecklist(): 안전 체크 저장
- completeTbmSession(): TBM 완료 처리

## 파일
- web-ui/js/tbm.js (신규, 약 600줄)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-20 15:41:23 +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
0ec099b493 feat: UI 표준화 Phase 1 - 네비게이션/헤더 통일
## 주요 변경사항

### 1. Design System 색상 업데이트
- 하늘색 계열 primary 색상으로 변경 (#0ea5e9, #38bdf8, #7dd3fc)
- CSS 변수 추가: --header-gradient

### 2. Navbar 컴포넌트 표준화
- 50개 이상의 하드코딩 값을 CSS 변수로 변경
- 모든 페이지에서 동일한 헤더 스타일 적용

### 3. 중복 코드 제거 (102줄)
- dashboard.html: 50줄 → 2줄 (navbar 컴포넌트로 교체)
- work/report-view.html: 54줄 → 2줄 (navbar 컴포넌트로 교체)
- modern-dashboard.css: 중복 헤더 스타일 제거
- project-management.css: 중복 헤더 스타일 제거

### 4. 표준 레이아웃 템플릿 생성
- dashboard-layout.html (대시보드용)
- work-layout.html (작업 페이지용)
- admin-layout.html (관리자 페이지용)
- simple-layout.html (프로필/설정용)
- templates/README.md (사용 가이드)

### 5. 누락된 design-system.css 추가
- work/report-view.html
- work/analysis.html
- admin/accounts.html

### 6. ES6 Module 문법 수정
- load-navbar.js: type="module" 추가
- modern-dashboard.js: navbar 엘리먼트 안전 처리

## 문서 업데이트
- CODING_GUIDE.md: 표준 컴포넌트 사용법 추가
- 개발 log/2026-01-20-ui-standardization-phase1.md: 상세 작업 로그

## 영향
- 수정: 10개 파일
- 신규: 6개 파일 (템플릿 5개 + 로그 1개)
- 코드 감소: -102줄

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-20 14:08:54 +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
73e5eff7bd docs: 페이지 구조 개편 문서화
- CODING_GUIDE에 새 페이지 구조 및 네이밍 규칙 추가
- 상세한 개편 과정 문서 작성 (2026-01-20-page-restructure.md)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-20 10:46:10 +09:00
Hyungi Ahn
a6ab9e395d refactor: 페이지 구조 대대적 개편 - 명확한 폴더 구조 및 파일명 개선
## 주요 변경사항

### 1. 미사용 페이지 아카이브 (24개)
- admin 폴더 전체 (8개) → .archived-admin/
- 분석 페이지 (5개) → .archived-*
- 공통 페이지 (5개) → .archived-*
- 대시보드 페이지 (2개) → .archived-*
- 기타 (4개) → .archived-*

### 2. 새로운 폴더 구조
```
pages/
├── dashboard.html          (메인 대시보드)
├── work/                   (작업 관련)
│   ├── report-create.html  (작업보고서 작성)
│   ├── report-view.html    (작업보고서 조회)
│   └── analysis.html       (작업 분석)
├── admin/                  (관리 기능)
│   ├── index.html          (관리 메뉴 허브)
│   ├── projects.html       (프로젝트 관리)
│   ├── workers.html        (작업자 관리)
│   ├── codes.html          (코드 관리)
│   └── accounts.html       (계정 관리)
└── profile/                (프로필)
    ├── info.html           (내 정보)
    └── password.html       (비밀번호 변경)
```

### 3. 파일명 개선
- group-leader.html → dashboard.html
- daily-work-report.html → work/report-create.html
- daily-work-report-viewer.html → work/report-view.html
- work-analysis.html → work/analysis.html
- work-management.html → admin/index.html
- project-management.html → admin/projects.html
- worker-management.html → admin/workers.html
- code-management.html → admin/codes.html
- my-profile.html → profile/info.html
- change-password.html → profile/password.html
- admin-settings.html → admin/accounts.html

### 4. 내부 링크 전면 수정
- navbar.html 프로필 메뉴 링크 업데이트
- dashboard.html 빠른 작업 링크 업데이트
- admin/* 페이지 간 링크 업데이트
- load-navbar.js 대시보드 경로 수정

영향받는 파일: 39개

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-20 10:44:34 +09:00
Hyungi Ahn
33e9e2afec fix: 대시보드 버튼을 메인 대시보드(그룹장 대시보드)로 통일
모든 역할의 사용자가 group-leader.html로 이동하도록 수정

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-20 08:54:47 +09:00
Hyungi Ahn
05a9de8d2f fix: 대시보드 버튼을 역할별 공통 대시보드로 연결
변경사항:
- navbar의 대시보드 버튼이 개인 대시보드가 아닌 역할별 공통 대시보드로 이동하도록 수정
- Admin/System → /pages/dashboard/system.html
- 그룹장 → /pages/dashboard/group-leader.html
- 일반 사용자 → /pages/dashboard/user.html

수정된 파일:
- web-ui/components/navbar.html
- web-ui/js/load-navbar.js

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-20 08:53:29 +09:00
Hyungi Ahn
e8829a0bc7 docs: UI/UX 디자인 가이드 추가
- 이모지 사용 금지 정책 추가
- 모던하고 깔끔한 디자인 원칙 명시
- 색상 가이드 및 컴포넌트 구조 설명

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-20 08:52:40 +09:00
Hyungi Ahn
4f0af62d8c style: 네비게이션 색상 및 레이아웃 개선
변경사항:
1. navbar 배경색을 하늘색 계열로 변경 (#0ea5e9, #38bdf8, #7dd3fc)
2. 대시보드 버튼을 header에 눈에 띄게 추가
3. work-management.css의 navbar 관련 중복 스타일 제거하여 레이아웃 충돌 해결

수정된 파일:
- web-ui/components/navbar.html
- web-ui/css/work-management.css

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-20 08:51:49 +09:00
Hyungi Ahn
8a5480177b fix: 관리 페이지 네비게이션 구조 표준화
- 모든 관리 페이지에서 navbar-container를 work-report-container 내부로 이동
- design-system.css 임포트 추가하여 일관된 navbar 스타일 적용
- daily-work-report.html의 원래 구조를 표준으로 채택

변경된 파일:
- web-ui/pages/management/code-management.html
- web-ui/pages/management/project-management.html
- web-ui/pages/management/work-management.html
- web-ui/pages/management/worker-management.html

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-20 08:48:35 +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
6933f67a2e docs: 작업자-계정 연동 기능 가이드 추가
작업자 계정 연동 기능에 대한 상세 가이드 문서를 작성했습니다.

## 문서 내용

### 1. 기능 개요
- 개념 변경 (작업 보고서 표시 → 계정 연동)
- 주요 변경사항 설명

### 2. 기술 상세
- 데이터베이스 스키마
- 백엔드 API 구현
- 프론트엔드 구현
- 한글→영문 변환 로직

### 3. 사용 가이드
- 신규 작업자 등록 + 계정 생성
- 기존 작업자에 계정 추가
- 계정 연동 해제
- 퇴사 처리

### 4. 배포 및 운영
- 배포 절차
- 테스트 시나리오
- 문제 해결 가이드
- 보안 고려사항

### 5. 향후 개선 계획
- 비밀번호 정책
- 계정 관리 UI
- 대량 작업 기능
- 알림 기능

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-19 10:29:18 +09:00
Hyungi Ahn
1e4dbf10db feat: 배포 자동화 스크립트 추가
배포 과정을 자동화하는 스크립트와 가이드 문서를 추가했습니다.

## 추가된 파일

### deploy.sh
자동 배포 스크립트:
1. Git Pull
2. NPM Install (package.json 변경 시)
3. 데이터베이스 마이그레이션 (확인 후 실행)
4. PM2 서버 재시작
5. 상태 확인

### DEPLOY.md
배포 가이드 문서:
- 자동 배포 방법
- 수동 배포 단계
- 배포 후 확인사항
- 문제 해결 가이드
- 데이터베이스 백업/복구 방법

## 사용 방법

서버에서 다음 명령어로 배포:
\`\`\`bash
cd api.hyungi.net
chmod +x deploy.sh  # 처음 한 번만
./deploy.sh
\`\`\`

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-19 10:24:45 +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
25cca1482e feat: 작업자 관리 개선 - 작업보고서 표시/현장직 구분/퇴사 처리
작업자 관리 페이지에 3가지 상태 관리 기능을 추가했습니다:
1. 작업 보고서 표시 여부 (관리자 등은 작업보고서에 표시 안함)
2. 현장직/사무직 구분 (사무직은 출퇴근 관리 불필요)
3. 퇴사 처리 (퇴사자 별도 표시)

## 주요 변경사항

### 데이터베이스
- **마이그레이션**: 20260119095549_add_worker_display_fields.js
  - workers 테이블에 show_in_work_reports (BOOLEAN) 추가
  - workers 테이블에 employment_status (ENUM: employed, resigned) 추가

### 백엔드
- **workerModel.js**: create, update 함수에 새로운 필드 처리 로직 추가

### 프론트엔드
- **worker-management.html**: 작업자 모달에 3가지 체크박스 추가
  - 작업 보고서에 표시
  - 현장직 (활성화) - 사무직과 구분
  - 퇴사 처리
- **worker-management.js**:
  - 퇴사자 카드 렌더링 시 별도 스타일 적용
  - 새 필드 값 로드 및 저장 처리
- **daily-work-report.js**:
  - 작업 보고서 작성 시 show_in_work_reports=true이고 퇴사하지 않은 작업자만 표시

## 배포 절차
```bash
cd api.hyungi.net
npm run db:migrate
```

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-19 10:02:32 +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
337cd14a15 docs: 작업 분석 페이지 수정 개발로그 추가
작업 분석 페이지 모듈 로딩 오류 수정 작업에 대한 상세 개발로그를 추가했습니다.

포함 내용:
- 발견된 문제점 및 원인 분석
- 해결 방안 및 코드 변경 사항
- 전체 페이지 점검 결과
- Before/After 테스트 결과
- 기술적 배경 (ES6 모듈 시스템)
- 향후 개선 계획

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-19 09:29:01 +09:00
Hyungi Ahn
b0d17cd53b fix(web-ui): 작업 분석 페이지 모듈 로딩 오류 수정
작업 분석 페이지에서 발생하던 JavaScript 모듈 로딩 오류를 해결했습니다.

문제점:
- SyntaxError: import call expects one or two arguments
- ReferenceError: Can't find variable: apiCall
- 네비게이션 바 미표시

해결 방법:
- api-config.js, load-navbar.js, work-analysis.js에 type="module" 추가
- work-analysis.js에서 api-config.js import하여 로딩 순서 보장
- 스크립트 버전 업데이트 (캐시 클리어)

수정된 파일:
- web-ui/pages/analysis/work-analysis.html: 스크립트 태그에 type="module" 추가
- web-ui/js/work-analysis.js: api-config.js import 추가

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-19 08:57:57 +09:00
Hyungi Ahn
d810a8b339 refactor(web-ui): 전체 UI 반응형 디자인 개선
모든 화면 크기에서 일관되고 안정적인 사용자 경험을 제공하도록
UI 컴포넌트를 전면 개선했습니다.

주요 변경사항:
- 네비게이션 바: flex-wrap, rem 단위, sticky positioning 적용
- 사용자 정보 영역: max-width로 크기 제한, 텍스트 overflow 처리
- 공통 헤더: clamp()로 반응형 폰트, 반응형 패딩 적용
- 모든 관리 페이지: ES6 모듈 로딩 통일 (type="module")
- 반응형 breakpoint: 1200px, 768px, 640px, 480px

개선 효과:
 모든 페이지에서 일관된 헤더 표시
 사용자 정보 영역 늘어나는 문제 해결
 모든 화면 크기에서 최적화된 레이아웃
 rem 단위 사용으로 접근성 개선

수정된 파일:
- web-ui/components/navbar.html: 전면 리팩토링
- web-ui/css/common.css: 반응형 스타일 추가
- web-ui/pages/**/*.html: 모듈 로딩 및 버전 업데이트 (13개 파일)
- web-ui/js/*.js: 모듈 시스템 개선

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-19 08:54:44 +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
79bd9324ca refactor(web-ui): Apply modular structure and refactor dashboard
This commit applies the modular refactoring to the web-ui,
including the new daily attendance tracking feature.

- **Modular Structure:** Re-introduced the modular files 'config.js',
  'component-loader.js', and 'navigation.js' to centralize configuration,
  component loading, and navigation logic.
- **Refactored Dashboard:** Refactored 'group-leader-dashboard.js' to use
  the new 'apiCall' function from 'api-config.js' for API requests,
  removing duplicated code and improving error handling.
- **ES6 Modules:** Updated 'group-leader.html' to load scripts as
  ES6 modules ('type="module"'), ensuring compatibility with the
  modular JavaScript files.
- **Clean-up:** Removed unnecessary global variables and duplicated
  functions, improving code quality and maintainability.
2026-01-06 17:29:39 +09:00
Hyungi Ahn
7d89ec448c feat: Implement daily attendance tracking system
- Backend: Auto-sync work reports with attendance records
- Backend: Lazy initialization of daily active worker records
- Frontend: Real-time attendance status on Group Leader Dashboard
2026-01-06 17:15:56 +09:00
Hyungi Ahn
b4037c9395 feat(web-ui): Refactor web-ui for improved maintainability and modularity
This commit introduces a series of refactoring changes to the web-ui
to remove hardcoded values and improve page integration.

- **Centralized Configuration:** Created  to
  centralize API ports, paths, and navigation URLs, replacing
  hardcoded values across multiple files.
- **Modular Component Loading:** Introduced
  to handle dynamic loading of common HTML components (e.g., sidebar, navbar),
  using paths from .
- **Modular Navigation:** Created  to centralize
  page redirection logic, improving maintainability and reducing direct
   manipulations.
- **Refactored Existing Modules:** Updated ,
  , , and
   to utilize the new , ,
  and  modules.
- **ES6 Module Compatibility:** Ensured  loads scripts
  as ES6 modules () to support  statements.
2026-01-06 15:54:49 +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
770fa91366 feat: Add interactive setup script
Added an interactive Node.js script (setup.js) to guide users through the initial environment setup. This script prompts for necessary database credentials and generates JWT secrets, then creates/updates the .env file.

A 'setup' script has been added to api.hyungi.net/package.json for easy execution.
This improves the first-time setup experience by streamlining the .env file creation process.
2025-12-19 13:06:26 +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