- 설비 마커 클릭 시 슬라이드 패널로 상세 정보 표시
- 설비 사진 업로드/삭제 기능
- 설비 임시 이동 기능 (3단계 지도 기반 선택)
- Step 1: 공장 선택
- Step 2: 레이아웃 지도에서 작업장 선택
- Step 3: 상세 지도에서 위치 선택
- 설비 외부 반출/반입 기능
- 설비 수리 신청 기능 (기존 신고 시스템 연동)
- DB 마이그레이션 추가 (사진, 임시이동, 외부반출 테이블)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 일일순회점검 시스템 신규 구현
- DB 테이블: patrol_checklist_items, daily_patrol_sessions, patrol_check_records, workplace_items, item_types
- API: /api/patrol/* 엔드포인트
- 프론트엔드: 지도 기반 작업장 점검 UI
- 설비 관리 기능 개선
- 구매 관련 필드 추가 (구매일, 가격, 공급업체 등)
- 설비 코드 자동 생성 (TKP-XXX 형식)
- 작업장 관리 개선
- 레이아웃 이미지 업로드 기능
- 마커 위치 저장 기능
- 부서 관리 기능 추가
- 사이드바 네비게이션 카테고리 재구성
- 이미지 401 오류 수정 (정적 파일 경로 처리)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 부적합 API 호출 형식 수정 (카테고리/아이템 추가 시)
- 부적합 저장 시 내부 플래그 제거 후 백엔드 전송
- 기본 부적합 객체 구조 수정 (category_id, item_id 추가)
- 날씨 API 시간대 수정 (UTC → KST 변환)
- 신고 카테고리 관리 페이지 추가 (/pages/admin/issue-categories.html)
- 부적합 입력 UI 개선 (대분류→소분류 캐스케이딩 선택)
- 저장된 부적합 분리 표시 및 수정/삭제 기능
- 디버깅 로그 추가
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 모든 페이지에서 이모지 제거 (CODING_GUIDE 준수)
- admin/ (9개), safety/ (7개), work/ (4개)
- attendance/ (8개), profile/ (2개)
- 사이드바 CSS에 누락된 컨테이너 클래스 추가
- work-report-container, analysis-container, dashboard-main
- 사이드바 토글 시 메인 콘텐츠 정상 반응하도록 수정
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 페이지 폴더 재구성: safety/, attendance/ 폴더 신규 생성
- work/ → safety/: 이슈 신고, 출입 신청 관련 페이지 이동
- common/ → attendance/: 근태/휴가 관련 페이지 이동
- admin/ 정리: safety-* 파일들을 safety/로 이동
- 사이드바 네비게이션 메뉴 구현
- 카테고리별 메뉴: 작업관리, 안전관리, 근태관리, 시스템관리
- 접기/펼치기 기능 및 상태 저장
- 관리자 전용 메뉴 자동 표시/숨김
- 날씨 API 연동 (기상청 단기예보)
- TBM 및 navbar에 현재 날씨 표시
- weatherService.js 추가
- 안전 체크리스트 확장
- 기본/날씨별/작업별 체크 유형 추가
- checklist-manage.html 페이지 추가
- 이슈 신고 시스템 구현
- workIssueController, workIssueModel, workIssueRoutes 추가
- DB 마이그레이션 파일 추가 (실행 대기)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 실시간 작업장 현황을 지도로 시각화
- 작업장 관리 페이지에서 정의한 구역 정보 활용
- 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>
## 주요 기능
- 설비 등록/수정/삭제 기능
- 작업장별 설비 연결
- 작업장 지도에서 설비 위치 정의
- 필터링 및 검색 기능
## 백엔드
- 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>
## 변경 사항
- 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>
## 추가 기능
- 공정 추가/수정/삭제 기능 구현
- 공정 관리 모달 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>
## 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>
- 공장(카테고리) 및 작업장 CRUD API 구현
- 탭 기반 UI로 공장별 작업장 필터링
- 터치 최적화된 관리자 페이지
- DB 테이블: workplace_categories, workplaces
- 관리자 메뉴에 작업장 관리 추가
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
## 변경사항
- 중간 허브 페이지(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>
## 주요 변경사항
- 프로젝트/작업자/코드 관리 페이지 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>
## 주요 변경사항
### 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>
## 주요 변경사항
### 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>
모든 작업자가 개인 계정으로 로그인하여 본인의 연차와 출근 기록을 확인할 수 있는 시스템을 구축했습니다.
주요 기능:
- 작업자-계정 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>
- 삭제된 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: 삭제된 페이지 목록