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>
This commit is contained in:
136
ARCHITECTURE.md
Normal file
136
ARCHITECTURE.md
Normal file
@@ -0,0 +1,136 @@
|
||||
# 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_PAGES`의 `default_access` 값 사용
|
||||
|
||||
## 배포
|
||||
|
||||
```bash
|
||||
# 전체 서비스
|
||||
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
|
||||
```
|
||||
Reference in New Issue
Block a user