Files
tk-factory-services/ARCHITECTURE.md
Hyungi Ahn 733bb0cb35 feat: tkuser 통합 관리 서비스 + 전체 시스템 SSO 쿠키 인증 통합
- tkuser 서비스 신규 추가 (API + Web)
  - 사용자/권한/프로젝트/부서/작업자/작업장/설비/작업/휴가 통합 관리
  - 작업장 탭: 공장→작업장 드릴다운 네비게이션 + 구역지도 클릭 연동
  - 작업 탭: 공정(work_types)→작업(tasks) 계층 관리
  - 휴가 탭: 유형 관리 + 연차 배정(근로기준법 자동계산)
- 전 시스템 SSO 쿠키 인증으로 통합 (.technicalkorea.net 공유)
- System 2: 작업 이슈 리포트 기능 강화
- System 3: tkuser API 연동, 페이지 권한 체계 적용
- docker-compose에 tkuser-api, tkuser-web 서비스 추가
- ARCHITECTURE.md, DEPLOYMENT.md 문서 작성

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 13:45:52 +09:00

5.9 KiB

TK Factory Services - 데이터 아키텍처 가이드

서비스 구조

서비스 서브도메인 역할 포트
tkuser tkuser.technicalkorea.net 통합 관리 (기본 데이터) API 30300, Web 30380
tkfactory (System 1) tkfactory.technicalkorea.net 공장 관리 API 30005, Web 30080
tkreport (System 2) tkreport.technicalkorea.net 안전 신고 API 30105, Web 30180
tkqc (System 3) tkqc.technicalkorea.net 부적합 관리 API 30200, Web 30280
SSO Auth - 인증 (로그인/토큰) 30050
Gateway technicalkorea.net SSO 라우팅 30000

데이터 소유권 (Data Ownership)

1. 기본 데이터 → tkuser API

모든 시스템에서 공통으로 사용하는 마스터 데이터는 tkuser에서 관리합니다.

데이터 설명 DB 테이블
사용자 계정, 역할, 비밀번호 sso_users
페이지 권한 사용자별 페이지 접근 권한 user_page_permissions
프로젝트 프로젝트 목록 및 설정 projects
작업장 공장(카테고리) → 작업장 계층, 구역지도 workplace_categories, workplaces, workplace_map_regions
설비 설비 마스터, 사진, 배치도 위치 equipments, equipment_photos
부서 부서/조직 구조 departments
작업자 작업자 인력 관리 workers
작업/공정 공정(work_types) → 작업(tasks) 계층 work_types, tasks
휴가 유형 연차/반차/특별휴가 유형 정의 vacation_types
연차 배정 작업자별 연간 연차 일수 배정/사용 추적 vacation_balance_details

다른 시스템은 tkuser API를 호출하여 기본 데이터를 조회합니다.

2. 신고 데이터 → tkreport (System 2) API

안전 신고와 관련된 트랜잭션 데이터는 System 2에서 관리합니다.

데이터 설명
안전 신고 신고 접수, 처리 현황
작업 이슈 작업 관련 이슈 리포트
신고 첨부파일 사진, 문서 등

3. 관리 현황 데이터 → 해당 시스템 API

각 시스템 고유의 운영 데이터는 해당 시스템에서 관리합니다.

System 1 (tkfactory)

데이터 설명
TBM 기록 일일 TBM 체크리스트
작업 보고서 일일/주간 작업 보고
출퇴근 기록 체크인/체크아웃
근태/휴가 휴가 신청 및 관리
순회 점검 일일 순회점검 결과

System 3 (tkqc)

데이터 설명
부적합 이슈 NCR 접수, 처리, 폐기
일일 공수 작업자별 일일 공수 입력
보고서 일일/주간/월간 보고서

tkuser API 엔드포인트

경로 설명
GET/POST /api/users 사용자 CRUD
GET/POST /api/permissions 페이지 권한 관리
GET/POST /api/projects 프로젝트 관리
GET/POST /api/workers 작업자 관리
GET/POST /api/departments 부서 관리
GET/POST /api/workplaces 작업장·카테고리·구역지도 관리
GET/POST /api/equipments 설비·사진 관리
GET/POST /api/tasks 공정(work_types)·작업(tasks) 관리
GET/POST /api/vacations 휴가 유형·연차 배정 관리

데이터 흐름

┌───────────────────────────────────────────────────────────┐
│                     tkuser (통합 관리)                       │
│  사용자 / 프로젝트 / 작업장·설비 / 부서 / 작업·공정 / 휴가   │
│                      [MariaDB]                            │
└──────────┬──────────────┬──────────────┬──────────────────┘
           │              │              │
     API 조회         API 조회       API 조회
           │              │              │
    ┌──────▼──────┐ ┌─────▼──────┐ ┌────▼───────────┐
    │  tkfactory  │ │  tkreport  │ │     tkqc       │
    │  공장 관리   │ │  안전 신고  │ │  부적합 관리    │
    │  [MariaDB]  │ │  [MariaDB] │ │  [PostgreSQL]  │
    └─────────────┘ └────────────┘ └────────────────┘

인증 구조

사용자 로그인 → SSO Auth → JWT 토큰 (sso_token 쿠키)
                           ↓
              .technicalkorea.net 전체 공유
                           ↓
         각 시스템에서 쿠키로 인증 확인
  • JWT 토큰은 .technicalkorea.net 도메인 쿠키로 설정
  • 모든 서브도메인에서 자동으로 인증 공유
  • 각 시스템 API는 동일한 SSO_JWT_SECRET으로 토큰 검증

페이지 권한 체계

권한은 tkuser에서 중앙 관리하며, 각 시스템은 API를 호출하여 권한을 확인합니다.

시스템 권한 키 접두사 예시
System 1 s1.* s1.work.tbm, s1.admin.projects
System 2 - 전체 허용 (권한 관리 불필요)
System 3 (접두사 없음) issues_dashboard, daily_work

권한 우선순위:

  1. user_page_permissions 테이블에 명시적 설정이 있으면 해당 값 사용
  2. 없으면 DEFAULT_PAGESdefault_access 값 사용

배포

# 전체 서비스
docker compose up -d --build

# 개별 서비스
docker compose up -d --build tkuser-api tkuser-web
docker compose up -d --build system1-api system1-web
docker compose up -d --build system2-api system2-web
docker compose up -d --build system3-api system3-web