Files
tk-factory-services/PROGRESS.md
Hyungi Ahn 550633b89d feat: 3-System 분리 프로젝트 초기 코드 작성
TK-FB(공장관리+신고)와 M-Project(부적합관리)를 3개 독립 시스템으로
분리하기 위한 전체 코드 구조 작성.
- SSO 인증 서비스 (bcrypt + pbkdf2 이중 해시 지원)
- System 1: 공장관리 (TK-FB 기반, 신고 코드 제거)
- System 2: 신고 (TK-FB에서 workIssue 코드 추출)
- System 3: 부적합관리 (M-Project 기반)
- Gateway 포털 (path-based 라우팅)
- 통합 docker-compose.yml 및 배포 스크립트

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 14:40:11 +09:00

8.8 KiB

TK 공장관리 3-System 분리 및 통합 - 진행 상황

최종 업데이트: 2026-02-06


전체 목표

TK-FB-Project(공장관리+신고)와 M-Project(부적합관리)를 3개 독립 시스템으로 분리하고 SSO + 데이터 연동으로 통합.

시스템 설명 기반 코드
System 1 - 공장관리 TK-FB에서 신고 기능 제거 TK-FB-Project
System 2 - 신고 TK-FB에서 추출한 독립 서비스 TK-FB-Project (workIssue 코드)
System 3 - 부적합관리 (TKQC) M-Project 기반 M-Project

배포 대상: Synology DS923+ NAS (192.168.0.3)


현재 NAS 운영 상태

TK-FB (공장관리+신고 - 기존 시스템, 운영 중)

컨테이너 상태 포트
tkfb_web Up -
tkfb_api Up (healthy) -
tkfb_fastapi Up -
tkfb_db (MariaDB) Up (healthy) -
tkfb_redis Up -
tkfb_phpmyadmin Up -
tkfb_cloudflared Up -
  • 도메인: tkfb.technicalkorea.net (Cloudflare Tunnel)
  • 위치: /volume1/Technicalkorea Document/tkfb-package/

TKQC (부적합관리 - 신규 배포 완료)

컨테이너 상태 포트
tkqc-db (PostgreSQL 15) Up (healthy) 16432
tkqc-backend (FastAPI) Up 16000
tkqc-nginx Up 16080
  • 도메인: tkqc.technicalkorea.net (Cloudflare Tunnel)
  • 위치: /volume1/docker/tkqc/tkqc-package/
  • cloudflared가 tkfb_network + tkqc-network 양쪽 연결됨

단계별 진행 상황

Phase 0: M-Project(TKQC) NAS 배포 완료

  • M-Project 배포 패키지 생성 (deploy/package.sh)
  • NAS로 패키지 전송 및 설치
  • Docker 컨테이너 빌드 및 실행 (tkqc-db, tkqc-backend, tkqc-nginx)
  • PostgreSQL 마이그레이션 실행 (001~020 SQL)
  • nginx.conf 수정 (Docker 내부 IP 허용, uploads 프록시)
  • Cloudflare Tunnel에 tkqc.technicalkorea.net 추가
  • cloudflared를 tkqc-network에 연결
  • 컨테이너 이름 m-project → tkqc로 리네임
  • 헬스체크 확인 (API: healthy, Web: 200)
  • Cloudflare 대시보드에서 서비스 URL 변경 필요
    • 변경: http://m-project-nginx:80http://tkqc-nginx:80
    • (사용자가 직접 Cloudflare 대시보드에서 수정)

Phase 1: 준비 - 로컬 코드 구조 생성 완료

  • tk-factory-services/ 디렉토리 구조 생성
  • 통합 docker-compose.yml 작성 (13개 서비스, 포트 30000~30880)
  • .env.example 작성

Phase 2: SSO 인증 서비스 - 로컬 코드 작성 완료

  • sso-auth-service/ 코드 작성
    • index.js - Express 서버
    • routes/authRoutes.js - 인증 라우트
    • controllers/authController.js - 로그인/검증/리프레시/유저 CRUD
    • models/userModel.js - MariaDB 유저 모델
    • Dockerfile, package.json
  • bcrypt + pbkdf2_sha256 이중 비밀번호 해시 지원
  • JWT 기반 인증 (SSO_JWT_SECRET 공유)
  • 실제 테스트 미완료 (NAS 배포 전)
  • sso_users 테이블 생성 및 기존 유저 마이그레이션 미완료

Phase 3: 시스템별 코드 분리 - 로컬 코드 작성 완료

System 1 - 공장관리

  • TK-FB-Project에서 복사 (api, web, fastapi-bridge)
  • config/routes.js에서 workIssue 라우트 제거
  • auth 미들웨어 → SSO JWT 시크릿으로 변경 미완료
  • 신고 관련 프론트엔드 페이지 제거 미완료 (System 2로 리다이렉트 추가 필요)
  • 실제 테스트 미완료

System 2 - 신고

  • TK-FB에서 workIssue 관련 코드 추출
    • workIssueModel.js, workIssueController.js, workIssueRoutes.js
    • mProjectService.js (baseUrl → system3-api:8000으로 변경)
    • imageUploadService.js, dateUtils.js, logger.js, errors.js
  • 독립 Express 서버 구성 (index.js, package.json, Dockerfile)
  • 프론트엔드 페이지 복사 (issue-report, issue-detail, report-status)
  • auth 미들웨어 → SSO JWT 시크릿으로 변경 미완료
  • M-Project(TKQC) 연동 실제 테스트 미완료
  • 실제 테스트 미완료

System 3 - 부적합관리 (TKQC)

  • M-Project에서 복사 (api, web)
  • auth_service.py → bcrypt + pbkdf2 이중 지원 코드 추가
  • requirements.txt에 bcrypt 추가
  • SSO JWT 시크릿 연동 실제 테스트 미완료

Phase 4: Gateway 포털 - 로컬 코드 작성 완료

  • gateway/nginx.conf - Path-based 라우팅 설정
    • /factory/ → System 1, /report/ → System 2, /nc/ → System 3
  • gateway/html/portal.html - 통합 포털 메인 페이지
  • gateway/html/login.html - SSO 로그인 페이지
  • gateway/html/shared/nav-header.js - 시스템 간 공유 네비게이션
  • gateway/Dockerfile
  • 실제 배포 및 테스트 미완료

Phase 5: 마이그레이션 스크립트 - 로컬 코드 작성 완료

  • scripts/migrate-users.sql - SSO 통합 유저 테이블 생성 + 데이터 이전
  • scripts/backup.sh - 전체 백업 스크립트
  • scripts/deploy.sh - 배포 스크립트
  • scripts/health-check.sh - 헬스체크 스크립트
  • 실제 실행 미완료

Phase 6: NAS 통합 배포 미착수

  • 전체 백업 (MariaDB, PostgreSQL, uploads, git)
  • tk-factory-services를 NAS로 전송
  • 기존 TK-FB 중지 + TKQC 중지
  • 통합 docker-compose.yml로 전체 서비스 기동
  • SSO 유저 마이그레이션 실행
  • 전체 서비스 헬스체크
  • Cloudflare Tunnel 설정 업데이트 (포트 변경)

Phase 7: 테스트 및 Go-Live 미착수

  • SSO 로그인 → 3개 시스템 간 이동 테스트 (재로그인 없이)
  • 신고 생성 → 부적합 자동 생성 연동 테스트
  • 사진 업로드 테스트
  • 알림 기능 테스트
  • 기존 데이터 정합성 확인
  • 프로덕션 Go-Live

완료율 요약

단계 상태 완료도
Phase 0: TKQC NAS 배포 거의 완료 95% (CF 대시보드 URL 변경만 남음)
Phase 1: 디렉토리 구조 완료 100%
Phase 2: SSO 코드 작성 코드 완료 70% (코드만 완료, 테스트/배포 미완)
Phase 3: 시스템 분리 코드 코드 완료 60% (코드 완료, auth 연동/테스트 미완)
Phase 4: Gateway 코드 코드 완료 70% (코드만 완료, 배포/테스트 미완)
Phase 5: 스크립트 코드 완료 50% (코드만 완료, 실행 미완)
Phase 6: NAS 통합 배포 미착수 0%
Phase 7: 테스트/Go-Live 미착수 0%

전체 진행률: 약 45% (코드 작성 완료, 실제 통합/배포/테스트 남음)


주요 파일 위치

로컬 (Mac)

  • 통합 프로젝트: /Users/hyungiahn/Documents/code/tk-factory-services/
  • TK-FB 원본: /Users/hyungiahn/Documents/code/TK-FB-Project/
  • M-Project 원본: /Users/hyungiahn/Documents/code/M-Project/
  • M-Project 배포 도구: /Users/hyungiahn/Documents/code/M-Project/deploy/

NAS (192.168.0.3)

  • TK-FB 운영: /volume1/Technicalkorea Document/tkfb-package/
  • TKQC 운영: /volume1/docker/tkqc/tkqc-package/
  • SSH: hyungi / fukdon-riwbaq-fiQfy2

포트 계획 (통합 배포 시)

현재 포트 통합 후 포트 서비스
- 30000 Gateway Nginx (통합 포털)
tkfb API 30005 System 1 API
tkfb FastAPI 30008 System 1 FastAPI Bridge
- 30050 SSO Auth
tkfb Web 30080 System 1 Web
- 30105 System 2 API
- 30180 System 2 Web
16000 → 30200 30200 System 3 API
16080 → 30280 30280 System 3 Web
tkfb MariaDB 30306 MariaDB (공유)
16432 → 30432 30432 PostgreSQL
tkfb phpMyAdmin 30880 phpMyAdmin

다음에 할 일 (우선순위)

  1. Cloudflare 대시보드에서 tkqc 서비스 URL 변경 (사용자 작업)
    • http://m-project-nginx:80http://tkqc-nginx:80
  2. tkqc.technicalkorea.net 접속 테스트
  3. Phase 3 마무리: auth 미들웨어 SSO 연동 코드 완성
  4. Phase 6: NAS 통합 배포 시작
  5. Phase 7: 전체 테스트

해결했던 이슈 (참고)

이슈 해결 방법
nginx uploads 볼륨 read-only 에러 nginx에서 uploads 볼륨 제거, backend 프록시로 변경
users.department 컬럼 누락 마이그레이션 수동 실행 (ALTER TABLE)
nginx 403 Forbidden (Docker IP 차단) allow 172.16.0.0/12, allow 10.0.0.0/8 추가
SCP subsystem 실패 scp -O (레거시 프로토콜) 사용
sudo 패스워드 파이프 실패 (for 루프) SQL 파일 합쳐서 한번에 실행
네트워크 충돌 (리네임 시) cloudflared 연결 해제 후 네트워크 삭제
새 볼륨 비어있음 (리네임 후) 마이그레이션 재실행