crowny-enterprise P0-3 데이터 테넌트 격리 (2026-06-15)
개요
멀티테넌시 데이터계층 격리 구현 (P0-3). 인가계층(X-Company-Code 403)은 기존 서버.한선 로직이 유지하고,
데이터계층(DB 행 단위 격리)을
격리강화.한선 + 3모듈 스키마 변경으로 구현.
한 것
1. 격리강화.한선 완성 (/Users/ef/crowny-enterprise/격리강화.한선)
회사격리조회(DB, 회사코드, 컬럼, 연산, 값) — 조회() 결과를 회사코드로 필터
회사격리전체(DB, 회사코드) — 전체조회() 결과를 회사코드로 필터
격리행수(결과배열) — 격리된 배열의 행 수
격리집계합(결과배열, 컬럼명) — 격리 결과 합계
2. 핵심 3모듈 스키마 + 삽입 함수 변경
| 모듈 | DB | 추가된 컬럼 | 변경된 함수 |
|---|
| 재무.한선 | _분개DB | 회사코드 | 분개입력(7인자) |
| 인사.한선 | _직원DB | 회사코드 | 직원등록(7인자) |
| 영업.한선 | _고객DB | 회사코드 | 고객등록(8인자) |
3. 서버.한선 핸들러 수정
- 요청처리() 진입부:
현재회사 = 토큰회사(토큰v) 단일 추출
- POST처리(5인자):
현재회사 추가 전달
- /api/hrm/employee, /api/crm/customer, /api/finance/journal 핸들러에서 현재회사 주입
4. 각 모듈에 테넌트 격리 조회 함수 추가
- 재무:
재무_회사분개목록, 재무_회사예산조회, 재무_회사분개수
- 인사:
인사_회사직원목록, 인사_회사직원수, 인사_회사부서원, 인사_회사재직자수
- 영업:
영업_회사고객목록, 영업_회사고객수, 영업_회사VIP고객, 영업_회사파이프라인
관련 파일
/Users/ef/crowny-enterprise/격리강화.한선 — 격리 래퍼 (완성)
/Users/ef/crowny-enterprise/modules/재무.한선 — _분개DB 9컬럼, 분개입력 7인자
/Users/ef/crowny-enterprise/modules/인사.한선 — _직원DB 12컬럼, 직원등록 7인자
/Users/ef/crowny-enterprise/modules/영업.한선 — _고객DB 12컬럼, 고객등록 8인자
/tmp/enterprise.new.toau — 배포용 TOAU (서버.한선 포트 9701)
/tmp/enterprise.test19701.toau — 테스트용 TOAU (포트 19701)
검증 결과
- 컴파일: OK
- 테스트 서버 (19701): 정상 기동
- 크로스 컴퍼니 403: COMPANY_A 토큰 + COMPANY_B 헤더 →
회사코드 불일치 403 ✓
- DB 스키마 확인: 분개장 9개, 직원 12개, 고객 12개 컬럼 ✓
- 격리강화 로드 확인:
[격리강화] P0-3 데이터격리래퍼 로드 출력 ✓
미적용 모듈 (다음 스텝)
공급망(_상품DB/_재고DB), 보안, 대시보드, 워크플로우, 프로젝트, 자산, 생산, 문서, 조직
주의
- 회사코드 729초과(3^6) 시 맵 샤딩 필요 (현재 10개 안전)
- 배포: 메인 세션이 서버.한선 재컴파일 후 9701 재기동