173 lines
6.8 KiB
Markdown
173 lines
6.8 KiB
Markdown
# TK 공장관리 3-System 분리 및 통합 - 진행 상황
|
|
|
|
> 최종 업데이트: 2026-02-27
|
|
|
|
---
|
|
|
|
## 전체 목표
|
|
|
|
TK-FB-Project(공장관리+신고)와 M-Project(부적합관리)를 **3개 독립 시스템**으로 분리하고 **SSO + 데이터 연동**으로 통합.
|
|
|
|
| 시스템 | 설명 | 서브도메인 |
|
|
|--------|------|-----------|
|
|
| System 1 - 공장관리 | TBM, 출근, 작업보고, 설비, 모바일 대시보드 | `tkfb.technicalkorea.net` |
|
|
| System 2 - 안전신고 | 5단계 신고 위자드, 작업장 연동 | `tkreport.technicalkorea.net` |
|
|
| System 3 - 부적합관리 (TKQC) | NCR, 일일공수, 보고서 | `tkqc.technicalkorea.net` |
|
|
| tkuser - 통합 관리 | 사용자/권한/마스터데이터 관리 | `tkuser.technicalkorea.net` |
|
|
|
|
**배포 환경**: Synology DS923+ NAS (LAN: 192.168.0.3, Tailscale: 100.71.132.52)
|
|
|
|
---
|
|
|
|
## 현재 NAS 운영 상태 (통합 배포 완료)
|
|
|
|
**배포일**: 2026-02-11 | **위치**: `/volume1/docker_1/tk-factory-services`
|
|
|
|
| 컨테이너 | 이미지 | 역할 |
|
|
|-----------|--------|------|
|
|
| tk-gateway | nginx:alpine | 서브도메인 라우팅 + 포털/로그인 |
|
|
| tk-sso-auth | node:18-alpine | SSO 인증 (JWT + 쿠키) |
|
|
| tk-tkuser-api | node:18-alpine | 마스터데이터 API |
|
|
| tk-tkuser-web | nginx:alpine | tkuser 웹 |
|
|
| tk-system1-api | node:18-alpine | 공장관리 API |
|
|
| tk-system1-web | nginx:alpine | 공장관리 웹 |
|
|
| tk-system1-fastapi | python:3.9-slim | FastAPI 캐싱 브릿지 |
|
|
| tk-system2-api | node:18-alpine | 안전신고 API |
|
|
| tk-system2-web | nginx:alpine | 안전신고 웹 |
|
|
| tk-system3-api | python:3.9-slim | 부적합관리 API (FastAPI) |
|
|
| tk-system3-web | nginx:alpine | 부적합관리 웹 |
|
|
| tk-mariadb | mariadb:10.9 | MariaDB (System 1, 2, tkuser 공유) |
|
|
| tk-postgres | postgres:15-alpine | PostgreSQL (System 3 전용) |
|
|
| tk-redis | redis:6-alpine | 캐시 |
|
|
| tk-phpmyadmin | phpmyadmin | DB 관리 (LAN only, 30880) |
|
|
| tk-cloudflared | cloudflare/cloudflared | Cloudflare Tunnel |
|
|
|
|
---
|
|
|
|
## 단계별 진행 상황
|
|
|
|
### Phase 0: TKQC NAS 배포 ✅ 완료
|
|
|
|
- [x] M-Project 배포 패키지 → NAS 설치 → Docker 기동
|
|
- [x] PostgreSQL 마이그레이션 (001~020)
|
|
- [x] Cloudflare Tunnel `tkqc.technicalkorea.net` 설정
|
|
- [x] 컨테이너 리네임 (m-project → tkqc)
|
|
|
|
### Phase 1~4: 코드 분리 + SSO + Gateway ✅ 완료
|
|
|
|
- [x] 3개 시스템 코드 분리 (TK-FB → System 1+2, M-Project → System 3)
|
|
- [x] SSO Auth 서비스 (bcrypt + pbkdf2 이중 해시, JWT 7일/30일)
|
|
- [x] 프론트엔드 SSO 쿠키 통합 (52+ 파일, `domain=.technicalkorea.net`)
|
|
- [x] Gateway 서브도메인 라우팅 (path-based에서 전환)
|
|
- [x] tkuser 통합 관리 서비스 (사용자, 권한, 프로젝트, 작업장, 설비, 부서, 작업자)
|
|
|
|
### Phase 5: 마이그레이션 스크립트 ✅ 완료
|
|
|
|
- [x] `scripts/migrate-users.sql`, `backup.sh`, `deploy.sh`, `health-check.sh`
|
|
|
|
### Phase 6: NAS 통합 배포 ✅ 완료 (2026-02-11)
|
|
|
|
- [x] 전체 백업 (MariaDB, PostgreSQL, uploads)
|
|
- [x] tk-factory-services NAS 전송 + .env 설정
|
|
- [x] 기존 TK-FB/TKQC 중지 → 통합 docker-compose up (16 컨테이너)
|
|
- [x] SSO 유저 마이그레이션
|
|
- [x] Cloudflare Tunnel 서브도메인 4개 설정
|
|
|
|
### Phase 7: 테스트 및 Go-Live ✅ 완료 (2026-02-12)
|
|
|
|
- [x] SSO 로그인 → 3개 시스템 간 이동 (재로그인 없음)
|
|
- [x] 신고 생성 → 부적합 자동 전달 (tkreport → tkqc)
|
|
- [x] 사진 업로드, 알림, 데이터 정합성 확인
|
|
- [x] 프로덕션 Go-Live
|
|
|
|
---
|
|
|
|
## 배포 이후 개발 (Phase 8+)
|
|
|
|
### 2026-02-13: System 2/3 업데이트 + 문서 재구성 ✅
|
|
|
|
- [x] System 2, 3 웹/API 업데이트 및 재빌드
|
|
- [x] 문서 4개 MD → `docs/` 폴더 7개 파일로 재구성
|
|
|
|
### 2026-02-14: 모바일 UX + PWA ✅
|
|
|
|
- [x] 모바일 대시보드 v1 (카테고리 탭 → 작업장 리스트 → 요약 숫자)
|
|
- [x] PWA 구현 (manifest, service worker)
|
|
- [x] 모바일 CSS 전면 최적화 (터치 타겟, 레이아웃)
|
|
|
|
### 2026-02-24~25: TBM 시스템 전면 개편 ✅
|
|
|
|
- [x] 4단계 워크플로우: draft → detail_edit → completed → work_report
|
|
- [x] 모바일 전용 TBM 페이지 (`tbm-mobile.html`) + 3단계 생성 위자드
|
|
- [x] 작업자 작업 분할 (`work_hours` + `split_seq`)
|
|
- [x] 작업자 이동 보내기/빼오기 (`tbm_transfers` 테이블)
|
|
- [x] 중복 배정 방지 (당일 배정 현황 조회)
|
|
- [x] 모바일 작업보고서 페이지 (`report-create-mobile.html`)
|
|
- [x] DB 마이그레이션 4개 (`attendance_type`, `work_hours`, `tbm_transfers`, `split_seq`)
|
|
|
|
### 2026-02-25: 권한 시스템 통합 ✅
|
|
|
|
- [x] tkuser `user_page_permissions` → system1 페이지 접근 연동
|
|
- [x] 라우트 우선순위 수정 (`pageAccessRoutes` > `userRoutes`)
|
|
- [x] 3단계 폴백: 개인 권한 → 부서 기본 → `TKUSER_DEFAULT_ACCESS`
|
|
- [x] 40+ 페이지 키 매핑 (`PAGEKEY_TO_TKUSER`)
|
|
|
|
### 2026-02-25: 모바일 대시보드 v2 — 작업장 카드 확장 뷰 ✅
|
|
|
|
- [x] 카드 탭 → 아코디언 확장 (TBM 작업, 방문, 신고, 이동설비 상세)
|
|
- [x] 캐시 데이터 활용 (추가 API 호출 없음)
|
|
- [x] NAS 배포 완료
|
|
|
|
### 2026-02-25~26: 코드 품질 개선 ✅
|
|
|
|
- [x] System 1 콜백→async/await 리팩토링 (11개 모델+컨트롤러, 22파일, -3,600줄)
|
|
- [x] 보안 수정: SSO 데드쿠키 제거, open redirect 방어
|
|
- [x] 프론트엔드 유틸리티 통합 (`showToast`, `waitForApi`, `generateUUID`)
|
|
- [x] 미사용 의존성 제거 + deprecated API 수정
|
|
|
|
### 2026-02-27: TBM 모바일 UX 개선 ✅
|
|
|
|
- [x] 모바일 버튼 반응성 개선 (`touch-action: manipulation`, 더블탭 줌 방지)
|
|
- [x] 비동기 함수 중복 호출 방지 (busy guard 패턴)
|
|
- [x] API 초기화 대기 개선 (`waitForApi` + 에러 UI)
|
|
- [x] CSS 로딩 오버레이 추가 (세부편집/완료/분할/빼오기 시트 열기, TBM 저장)
|
|
|
|
---
|
|
|
|
## 포트 매핑
|
|
|
|
| 포트 | 서비스 |
|
|
|------|--------|
|
|
| 30000 | Gateway (nginx) |
|
|
| 30005 | System 1 API (Express) |
|
|
| 30008 | System 1 FastAPI Bridge |
|
|
| 30050 | SSO Auth (Express) |
|
|
| 30080 | System 1 Web (nginx) |
|
|
| 30105 | System 2 API (Express) |
|
|
| 30180 | System 2 Web (nginx) |
|
|
| 30200 | System 3 API (FastAPI) |
|
|
| 30280 | System 3 Web (nginx) |
|
|
| 30300 | tkuser API (Express) |
|
|
| 30380 | tkuser Web (nginx) |
|
|
| 30306 | MariaDB |
|
|
| 30432 | PostgreSQL |
|
|
| 30880 | phpMyAdmin |
|
|
|
|
---
|
|
|
|
## 주요 파일 위치
|
|
|
|
### 로컬 (Mac)
|
|
- 통합 프로젝트: `/Users/hyungiahn/Documents/code/tk-factory-services/`
|
|
- 가이드 문서: `~/Library/CloudStorage/SynologyDrive-Technicalkorea/tkfb-package/docs/`
|
|
- Git: `https://git.hyungi.net/hyungi/tk-factory-services.git`
|
|
|
|
### NAS (Synology DS923+)
|
|
- 통합 배포: `/volume1/docker_1/tk-factory-services`
|
|
- SSH: `hyungi@100.71.132.52` (Tailscale)
|
|
- Docker: `echo 'fukdon-riwbaq-fiQfy2' | sudo -S /usr/local/bin/docker`
|
|
|
|
### 레거시 (참고, 중지됨)
|
|
- TK-FB 원본: `/volume1/Technicalkorea Document/tkfb-package/`
|
|
- TKQC 원본: `/volume1/docker/tkqc/tkqc-package/`
|