Skip to content

플랫폼 인수인계 — 2026-09-13 작업 ​

범위: 노드 게시 거버넌스 · 공통 알림 · AI 게시본 분석 · 서비스 경계 확정 · 검색/모델 게이트웨이 저장소: portal-foundation(PF) · ProcessCenter(PC) · UiCenter(UI) · FileStore(AS) · ModelGateway(MG, 신규)

1. 요약 ​

  1. 노드 게시 거버넌스 도입 — 검토 요청(IN_REVIEW)·승인·반려·폐기와 불변 게시본(process_node_versions) 스냅샷·이력·승인자(RACI) 사용자 참조 저장.
  2. 공통 알림 — PF @hohyun94/portal-operations 0.2.0 알림 계약 + PortalNotificationCenter UI, PC는 파생 결재함 + 저장형 인앱 알림(portal_notifications).
  3. AI 게시본 분석 — PF @hohyun94/portal-ai 0.1.0(provider·구조화 응답·캐시·요약 유틸)과 PortalAiSummaryCard, PC는 버전 차이 자동 분석·기록.
  4. DB 전략 — 트랜잭션은 MySQL/PostgreSQL 이중 지원 유지, 벡터는 PostgreSQL+pgvector 또는 외부 벡터 DB(VectorStore 계약), AI 완성은 DB 중립(docs/DB_STRATEGY.md).
  5. 서비스 경계 확정 — UI플랫폼은 표현 규칙 전용, 메뉴는 포털 소유, RAG는 ExploreGateway, 모델 접근은 ModelGateway(신규 저장소 생성·dev 스택 등록 완료).

2. 확정된 서비스 경계 ​

계층소유자근거 문서
공통 UI 패키지·테마·릴리스·배포·런타임 설정UI플랫폼(UiCenter)UI_PLATFORM_SCOPE.md §5, DECISION_LOG.md(2026-09-13)
포털 메뉴 구조(트리·퀵링크·그룹 접근)각 포털SERVICE_BOUNDARIES.md, ARCHITECTURE.md
사용자·조직·인증·포털 접근권한·capabilityPortal Control Center(DirectoryService)DirectoryService/docs/SERVICE_BOUNDARIES.md
파일 원본 보관·감사·색인 발행(ragPublishAllowed)FileStoreFileStore/docs/ARCHITECTURE.md
다중 포털 탐색 실행 조합(포털 어댑터 오케스트레이션)ExploreGatewayExploreGateway/docs/SERVICE_BOUNDARIES.md · ProcessCenter/docs/EXPLORE_ADAPTER_CONTRACT.md
문서 인덱스·RAG·citationRAGCenterUiCenter/docs/DECISION_LOG.md(2026-09-13 정정) · FileStore/docs/ARCHITECTURE.md
모델 접근·키·쿼터·비용·감사ModelGatewayMODEL_GATEWAY_SCOPE.md, DECISION_LOG.md
AI 계약·유틸 라이브러리portal-foundation @hohyun94/portal-aiPF/docs/PORTAL_FOUNDATION_HANDOVER.md
AI 적용 결정·프롬프트 내용각 포털MODEL_GATEWAY_SCOPE.md §8-1

실사 정정(2026-09-13): GitHub 계정 실사에서 ExploreGateway(Portal Control Center control plane catalog + 사용자 Scope로 포털 어댑터를 선택·실행하는 오케스트레이터)와 RAGCenter(Python 문서 파이프라인·청킹·인덱싱·pgvector RLS 검색·스트리밍 답변·감사·PII·평가)가 이미 존재함을 확인했습니다. 이에 따라 경계를 위 표대로 정정하고(같은 날 앞선 "RAGCenter 없음" 결정은 DECISION_LOG.md 정정 항목으로 대체), 반대 방향으로 작성했던 위임 클라이언트·계약 문서를 폐기하고 어댑터 계약(ProcessCenter/docs/EXPLORE_ADAPTER_CONTRACT.md · explore-adapter.openapi.json)으로 대체했습니다. ProcessCenter의 어댑터는 server/remoteExplore.ts에 이미 구현되어 있습니다.

3. 계약·문서 위치 ​

문서위치내용
탐색 어댑터 계약(PC가 제공)ProcessCenter/docs/EXPLORE_ADAPTER_CONTRACT.md엔드포인트·서비스 토큰·x-explore-subject-id·응답 형태·방향 정정 이력
탐색 어댑터 OpenAPI 3.1ProcessCenter/docs/explore-adapter.openapi.jsonPOST /api/explore/v1/search + 요청·응답·오류 스키마
ExploreGateway 경계·계약(상대 서비스)ExploreGateway/docs/SERVICE_BOUNDARIES.md · docs/control-plane-contract.mdadapter 선택 규칙·catalog·부분 실패·RAG는 RAGCenter 소유
ModelGateway 범위·정책UiCenter/docs/MODEL_GATEWAY_SCOPE.md이름·범위·인터페이스·운영 정책 8항목 결정
ModelGateway OpenAPI 3.1ModelGateway/docs/openapi.json5개 경로·귀속 헤더·오류 스키마
DB 전략(AI·벡터 포함)ProcessCenter/docs/DB_STRATEGY.md트랜잭션 이중 지원·벡터 분리·서비스 경계 §8
플랫폼 경계·결정 이력UiCenter/docs/SERVICE_BOUNDARIES.md · DECISION_LOG.md · ARCHITECTURE.md소유자 표·2026-09-13 결정 4건
거버넌스 계획·검증ProcessCenter/docs/PROCESS_NODE_GOVERNANCE_PLAN.md · scripts/verify-postgres-governance.ts단계·후속 항목
RAGCenter 연동 계획ProcessCenter/docs/RAGCENTER_INTEGRATION_PLAN.md실사(API 표면·JWT 인증·RLS·수집 계약) + P0~P3 + 미해결

4. 구현 산출물 ​

portal-foundation (PF 0.6.154)

  • @hohyun94/portal-operations 0.2.0 — 알림 계약(PortalNotification·readAt·targetType/targetId·PortalNotificationInboxStore·dispatchNotificationTo·사용자 신원 헬퍼·인메모리 스토어)
  • @hohyun94/portal-ai 0.1.0 — PortalAiProvider·createOpenAiCompatibleProvider·createDisabledAiProvider·completeWithRetry·completeStructured·extractJsonPayload·createAiResponseCache·summarizeContentChange·PortalAiError
  • UI — PortalNotificationCenter, PortalAiSummaryCard, PortalShell.notificationCenter 슬롯

ProcessCenter (PC)

  • 스키마: process_nodes(게시 상태·게시본), process_node_versions(불변 스냅샷 + AI 요약 컬럼), process_node_raci_users, portal_notifications, process_histories.action 확장 (PG·MySQL 동시)
  • 서버: 거버넌스 서비스(submit/approve/reject/retire/versions/RACI), 알림 서비스·라우터, 버전 AI 분석 서비스(process.version-summary), server/ai/aiClient.ts(capability 분리·ModelGateway 우선), server/rag/vectorStore.ts(pgvector/외부/비활성), server/remoteExplore.ts(탐색 어댑터, 세션 이전 구현)
  • 클라이언트: ProcessGovernanceBar, ProcessVersionHistory(AI 카드 포함), ProcessNotificationCenter, RACI 참조 저장(raciReferences.ts)
  • 마이그레이션: PG 0014~0016(idempotent), MySQL 0027·0028(파일만)
  • 개발 스택: docker-compose.dev.yml에 model-gateway 서비스 + 전용 DB 연결

ModelGateway (신규 서비스)

  • OpenAI 호환 프록시(/v1/chat/completions·/v1/embeddings) · 모델 카탈로그(/v1/models) · 상태(/v1/health) · 사용량(/v1/usage)
  • 서비스 토큰 인증(다중 토큰 = 무중단 회전) · 업스트림 키 격리 · 요청 스키마 검증 · 허용 모델 제한
  • 감사·비용·쿼터 영속화(PostgreSQL, model_gateway_audit·model_gateway_quota_policies, 부팅 시 idempotent DDL) · 쿼터 초과 시 429 + Retry-After · DB 장애 시 메모리 폴백
  • 귀속 헤더(x-portal-id·x-purpose·x-actor·tenant/org) · 모델 폴백(CLOUD 한정) · 메타데이터만 감사(본문 미저장)

5. 검증 상태 ​

항목결과
PF 테스트38개 파일 통과(기존 실패 10건은 @testing-library/jest-dom 누락 — 이번 변경과 무관)
PF pnpm check0 errors
PC pnpm check / 서버 테스트0 errors / 34개 파일 전부 통과
MG pnpm check / 테스트0 errors / 4개 파일 통과(gateway 9 · contract 5 · usage 4 · resilience 4)
PG 거버넌스 검증pnpm db:postgres:verify-governance 통과(마이그레이션 0014~0016)
개발 스택 실기동PC http://localhost:3000/ 200 · MG http://localhost:3400/v1/health 200(업스트림 주소·키 비노출) · 무토큰 401 · /v1/models 정상
쿼터 E2E정책(한도 10)+사용량 10 → 요청 시 429 + Retry-After 60, 감사 status=429 기록, 집계 tokens=10 확인 후 테스트 데이터 정리
계약 일치MG 계약 테스트(문서↔서버 경로·401 본문·$ref) · PC 계약 테스트(클라이언트 페이로드↔OpenAPI 스키마)

6. 커밋 목록 (오늘 세션, 모두 미푸시) ​

portal-foundation

커밋내용
de2ecf1feat(ai): @hohyun94/portal-ai 신설 + PortalAiSummaryCard (release 0.6.154)
27f7cf5feat(notifications): 공통 알림 계약·알림함 컴포넌트 (release 0.6.153, operations 0.2.0)

ProcessCenter

커밋내용
d4f29c3 · 10447f3관리자 콘솔 버튼 아이콘 전용 전환·일괄 등록 정리
ce26a72노드 게시 거버넌스(검토·승인·반려·폐기) + 불변 게시본
d4b110c게시본 이력 UI · 승인자 사용자 참조 저장 · 플랜 문서
3ade3d4PostgreSQL 거버넌스 검증 스크립트
d429f0a포털 공통 알림함(파생 결재함 + 저장형 인앱 알림)
7305a14게시본 버전 차이 AI 자동 분석·기록
1ab2c5eAI 완성/벡터 검색 capability 분리 + VectorStore 계약 + DB 전략
fed14d7 · 60fea48 · e83bd5cAI·벡터 서비스 경계 명시 → ExploreGateway·ModelGateway 소유자 확정 반영
f4494da · e9886bd · 0bc300f · 1b5ef68ExploreGateway 위임 계획 → 클라이언트·라우터 이중화 → 계약서 → OpenAPI + 계약 테스트
a1a7757 · da1f924ModelGateway 우선 사용(귀속 헤더) + 임베딩 게이트웨이 경유
4ebfcfa · a19dbfe개발 스택 model-gateway 등록 + 전용 dev DB 연결

UiCenter

커밋내용
43c74a2 · 061a5edUI플랫폼 재편 범위 문서 → 범위 확정 + RAG 소유자를 ExploreGateway로 결정
e805e6f · c6e6a4c · fc5f4df위임 계획 체크 · themePolicy/runtimeSettings 실측 검증 · 메뉴 소유자를 각 포털로 확정
99f38b8FileStore 문서 표기 갱신 완료 반영
89cdf20 · 66942ba모델 게이트웨이 범위·이름 제안 → ModelGateway 확정 반영
ef99fa5 · 1ea5582 · 50008c3 · fe5e30a저장소 생성·소비자 P1·P2 완료·개발 스택 등록·OpenAPI 링크
ea02f55 · dbc7af2비용·쿼터·조회 결정 → 운영 정책 4항목 결정(프롬프트·폴백·임베딩·토큰)

FileStore

커밋내용
379ebb3RAGCenter 표기를 ExploreGateway로 통일(문서·코드 주석, API 필드명 유지)

ModelGateway (신규 저장소, 로컬 git init만 완료)

커밋내용
21767c3서비스 골격(OpenAI 호환 프록시·서비스 토큰·메타데이터 감사)
9af8132개발 스택 기동 지원(진입점 listen·업스트림 미설정 허용·Dockerfile)
7705f6bOpenAPI 3.1 계약 + 문서·서버 일치 테스트
3ea15cb비용·쿼터·감사 영속화(PostgreSQL) + /v1/usage + 쿼터 429
05c0795토큰 회전(다중 토큰)·모델 폴백(CLOUD 한정)·프롬프트 소유 경계

정합화(2026-09-13, 실사 정정) — FileStore 표기 원복(RAGCenter) · UiCenter 경계·결정 이력 정정 · ProcessCenter 어댑터 계약 정리(EXPLORE_ADAPTER_CONTRACT.md·explore-adapter.openapi.json·remoteExplore.test.ts) · 반대 방향 위임 클라이언트·문서 폐기

7. 미해결 · 후속 (우선순위) ​

#항목내용위치
1푸시5개 저장소 모두 완료(2026-09-13) — PF(main + 태그 v0.6.153·v0.6.154)·ProcessCenter·UiCenter·FileStore·ModelGateway(원격 생성 후 최초 push)5개 저장소

푸시 준비 점검(2026-09-13) — 상세는 아래 절차 참고.

저장소원격미푸시태그비고
portal-foundationorigin ✔2 커밋v0.6.153·v0.6.154 미푸시--follow-tags 필요
ProcessCenterorigin ✔19 커밋신규 없음vendor tarball 추적 ✔(107건, 0.6.154·ai 0.1.0 포함)
UiCenterorigin ✔15 커밋신규 없음vendor 추적 ✔(44건)
FileStoreorigin ✔1 커밋신규 없음—
ModelGatewayorigin ✔ (2026-09-13 생성, 비공개)0없음최초 push 완료
  • 추적 중인 .env*는 모두 .example(값 비어 있음) 이고 실제 .env는 무시 상태다 — 비밀정보 유출 위험 없음.
  • 전 저장소 dirty=0(작업 트리 clean), lockfile 추적 ✔.
  • PF의 artifacts/는 의도적으로 gitignore 상태다(빌드 산출물). 배포 tarball의 보관 책임은 소비 저장소의 vendor/가 진다 — 새 클론에서는 pnpm pack으로 재생성한다.
  • 알려진 격차: ProcessCenter가 @hohyun94/portal-operations 0.1.0을 참조하는데 PF 산출물에는 0.2.0이 있다(알림 계약 최신화). 푸시 후 0.2.0으로 올리는 것을 권장(복사 → 의존성 갱신 → 설치 → 컨테이너 재시작).

푸시 절차(순서)

  1. portal-foundation: git push origin main --follow-tags (main + v0.6.153·v0.6.154 태그 동시)
  2. ProcessCenter: git push origin main
  3. UiCenter: git push origin main
  4. FileStore: git push origin main
  5. ModelGateway: 원격 저장소 생성 후 git remote add origin https://github.com/hohyun94/ModelGateway.git → git push -u origin main

푸시 실행 결과(2026-09-13)

저장소결과
portal-foundationbbe7a0d..de2ecf1 · 태그 v0.6.153·v0.6.154 신규 등록 ✔
ProcessCenter24afd09..da1f924 (19 커밋) ✔
UiCenterf7d4d8d..1ed0c46 (16 커밋) ✔
FileStore24e2bd4..379ebb3 (1 커밋) ✔
ModelGatewayorigin(hohyun94/ModelGateway, 비공개) 생성 후 최초 push 완료 — main = 05c0795
2ExploreGateway 연동
3RAGCenter 연동
4결재선 사용자 매핑
5알림 확장
6MySQL 이관
7외부 벡터 저장소
8RAG 비활성 사유 노출
9배포 토큰 절차
10PF 기존 실패 테스트

8. 개발 환경 주의사항 ​

  • 컨테이너 소스/볼륨: 각 서비스는 소스를 bind mount하지만 node_modules는 익명 볼륨이다. 새 패키지·vendor tarball을 추가하면 docker restart <컨테이너>(또는 up -d --build)가 필요하다.
  • ModelGateway 기동: docker compose -f docker-compose.dev.yml up -d --build model-gateway (호스트 3400). 로그에 usage=postgres가 뜨면 영속 저장소 정상.
  • DB: 전용 model_gateway DB 사용(생성 완료). 부팅 시 model_gateway_* DDL을 재실행하며 모두 idempotent하다. DB가 없거나 장애면 메모리 저장소로 폴백하고 기동한다.
  • 쿼터: model_gateway_quota_policies에 정책이 없으면 무제한이다. 정책을 넣으면 해당 (portal, purpose)의 일별 토큰 한도를 넘는 요청은 429로 차단된다.
  • PC ↔ 게이트웨이: MODEL_GATEWAY_URL·MODEL_GATEWAY_SERVICE_TOKEN이 있으면 LLM 완성과 임베딩 모두 게이트웨이를 우선 사용하고, 실패 시 PRIVATE_LLM_URL/PRIVATE_EMBEDDING_URL로 폴백한다. 둘 다 없으면 AI 기능은 SKIPPED.
  • dev 업스트림: MG의 업스트림은 http://host.docker.internal:11434(호스트의 Ollama 등)이다. 모델 서버가 없으면 호출은 502/요약은 FAILED로 남지만 게시·분석 흐름은 차단되지 않는다.
  • AI 활성 조건: AI 완성은 MODEL_GATEWAY_URL 또는 PRIVATE_LLM_URL만으로 켜진다(DB 종류·RAG_ENABLED와 무관). 벡터 검색만 RAG_ENABLED + PostgreSQL + 임베딩 URL을 요구한다.

9. 다음 세션 시작점 ​

  1. RAGCenter 연동 — API 계약(문서 인덱싱·검색·근거 답변) 확인 후 PC rag 경로 연결, 로컬 구현 축소.
  2. ExploreGateway 연동 — 어댑터 계약·catalog 등록 확인, EXPLORE_GATEWAY_API_KEY 운영 주입(어댑터는 server/remoteExplore.ts에 구현됨).
  3. ModelGateway 운영 — 배포 토큰 2개 주입·회전 절차 문서화, 필요 시 사용량 대시보드 소유자 결정.
  4. 정합성 보완 — ProcessCenter의 @hohyun94/portal-operations를 0.2.0으로 갱신(알림 계약 최신화).
  5. ExploreGateway·RAGCenter 저장소 상태 — 클론된 두 저장소의 미푸시·미커밋 여부 확인 및 최신화.

10. 세션 최종 상태 (2026-09-13 마감 · 이 절이 최신 기준) ​

§4~§9는 세션 진행 중 기록이고, 아래 §10이 마감 시점의 확정 상태다(커밋·검증·남은 작업).

10.1 최종 서비스 지도 ​

서비스저장소이번 세션에서 추가된 것상태
portal-foundation 0.6.155portal-foundation알림(operations 0.2.0)·AI(ai-core 0.1.0)·통합 탐색(operations 0.3.0 + PortalExploreSearch)✅ 푸시 완료
ProcessCenterProcessCenter노드 게시 거버넌스·불변 게시본·알림·AI 게시본 분석·DB 전략·탐색 어댑터·통합 탐색 프록시/화면·RAGCenter P1·P2✅ 푸시 완료
ExploreGatewayExploreGatewayHTTP 런타임(탐색 API·DS 토큰 인증·catalog 기반 어댑터 자동 구성)·온보딩 문서✅ 푸시 완료 · e2e 검증
ModelGateway (신규)ModelGateway서비스 골격·OpenAPI 계약·비용/쿼터 영속화·토큰 회전·모델 폴백✅ 푸시 완료(비공개 저장소 생성)
DirectoryServiceDirectoryService서비스 토큰 소비자별 등록(D1) · 위임 토큰 발급(D3) · 계약 문서✅ 푸시 완료 · e2e 검증
FileStoreFileStoreRAGCenter 표기 정정(원복)✅ 푸시 완료
RAGCenterRAGCenter(변경 없음 — 계약만 실사)클론만 · 관찰 대상
UiCenterUiCenter경계·결정 이력·인수인계 문서✅ 푸시 완료

10.2 계약·문서 위치 (최종) ​

문서위치내용
플랫폼 서비스 경계UiCenter/docs/{SERVICE_BOUNDARIES,ARCHITECTURE,DECISION_LOG,UI_PLATFORM_SCOPE,MODEL_GATEWAY_SCOPE}.md소유자 표·결정 이력(2026-09-13 4건)
위임 토큰 계약DirectoryService/docs/delegation-token-contract.md경로 A/B·클레임·검증 6단계·D1~D4 진행
중앙 인증 계약DirectoryService/docs/portal-central-auth-contract.mdPKCE 로그인 + 위임 링크
탐색 어댑터 계약(PC 제공)ProcessCenter/docs/EXPLORE_ADAPTER_CONTRACT.md + explore-adapter.openapi.jsonPOST /api/explore/v1/search·서비스 토큰·x-explore-subject-id
ExploreGateway 온보딩ExploreGateway/docs/adapter-onboarding.md카탈로그 등록·키 주입·런타임·검증 체크리스트(7/7)
RAGCenter 연동 계획ProcessCenter/docs/RAGCENTER_INTEGRATION_PLAN.md실사(API·JWT·RLS·수집 계약)·P1·P2 구현·미해결
ModelGateway 계약ModelGateway/docs/{openapi.json,ARCHITECTURE.md}5경로·귀속 헤더·영속화·회전·폴백
DB 전략ProcessCenter/docs/DB_STRATEGY.md트랜잭션 이중 지원·벡터 분리·서비스 경계 §8

10.3 검증 상태 (최종) ​

대상결과
portal-foundationpnpm check 0 · 신규 테스트 operations-core/explore.test.ts(6) · ui-react/exploreSearch.contract.test.tsx(6) 통과 · 릴리스 0.6.155·artifacts 생성
ProcessCenterpnpm check 0 errors · 서버 테스트 35개 파일 전부 통과 · 실기동 200
ExploreGatewaypnpm check 0 · 5개 파일 통과 · 실기동 헬스/탐색/401 확인
ModelGatewaypnpm check 0 · 4개 파일 통과(gateway·contract·usage·resilience) · 실기동 usage=postgres
DirectoryServicepnpm check 0 · 2개 파일(10건) 통과 · 레거시 테마 서비스 토큰 200(회귀 없음)

개발 스택 e2e

시나리오결과
① 통합 탐색사용자 토큰 → 게이트웨이(3500) → DS 카탈로그 → PC 어댑터(loopback) → 업무 데이터 반환(partial=false)
② 위임 토큰DS POST /api/internal/delegation-token → 게이트웨이 탐색 성공(aud=explore-gateway) · 잘못된 시크릿 401
③ RAG 수집 엔드포인트PC GET /api/rag/v1/documents/:id — 무토큰 401 · 미게시 404(게시본 존재 시 200)
④ ModelGateway 쿼터한도 초과 시 429 + Retry-After 60 · 감사 status=429 기록 · /v1/usage 집계 일치

10.4 커밋 목록 (이번 세션 · 전부 푸시 완료) ​

저장소커밋
portal-foundation (3)27f7cf5(알림) · de2ecf1(portal-ai) · 3841981(통합 탐색 클라이언트·컴포넌트)
ProcessCenter (30)거버넌스·알림·AI 분석·DB 전략(d4f29c3~1ab2c5e 7+1) → 서비스 경계·정합화(fed14d7, 60fea48, e83bd5c, f4494da, e9886bd, 0bc300f, 1b5ef68, 9281512, 90b7246, f25aa4a, a4ee0c7, f765e78) → 게이트웨이·PF 반영(4ebfcfa, a1a7757, a19dbfe, da1f924, ae7f711, 5dd938a) → 프록시·RAG(be00c06, ba1e4af, e5542cd, aa48abf)
UiCenter (20)경계·결정 문서(43c74a2~dbc7af2) · 인수인계(4efb5de, 1ed0c46, 50008c3) · 이후 갱신(320e390, bbe6e2a, d15c641, 3cdeb87, aeda820)
DirectoryService (2)3aaa5a0(위임 토큰 계약) · 0792464(D1 소비자 등록 + D3 위임 발급)
ModelGateway (5)21767c3(골격) · 9af8132(기동) · 7705f6b(OpenAPI) · 3ea15cb(영속화·쿼터) · 05c0795(토큰 회전·폴백)
ExploreGateway (4)7283036(온보딩 문서) · e304bed(HTTP 런타임) · 75bd5fa(검증 기록) · 0a73713(스테이징 파일 정리)
FileStore (2)379ebb3(표기 변경) · 6fb0b8c(표기 원복)

10.5 남은 작업 (우선순위) ​

#항목내용
1RAGCenter 수집 API 협의HTTP 수집 엔드포인트 확정 시 PC contentLocator로 POST 추가 → RAG_SERVICE_ENABLED=true 전환. DS에 rag-center 포털 principal 등록(rag:read/rag:sync/rag:admin)
2RAGCenter P3RAGCenter 가동 후 로컬 폴백 미사용 확인 → server/rag/**(청킹·임베딩·pgvector) 축소
3DS D2 완성directory_users.clearance_level 속성·관리 화면(현재 INTERNAL 기본값) → 사용자별 RAG 열람 등급
4탐색/RAG 화면 노출✅ 기본 메뉴 시드에 추가 완료(/explore 통합 탐색 · /rag 프라이빗 RAG, AUTHENTICATED·sortOrder 30/40). 관리자 메뉴 관리 화면에서 순서·노출 조정 가능
5운영 설정ExploreGateway 카탈로그 정책·포털 토큰 교체(다중 토큰 회전), 게이트웨이 PORTAL_CONSOLE_JWT_AUDIENCE 운영 값
6ModelGateway 운영배포 토큰 2개 주입·회전 절차 문서화, /v1/usage 대시보드 소유자, 프롬프트 표준화(§8-1)
7PF 기존 실패 10건@testing-library/jest-dom devDependency 추가로 해소
8DS 위임 경로 A사용자 토큰 교환(경로 A)이 필요해지면 추가(현재는 경로 B만 구현)
9저장소 상태ExploreGateway·RAGCenter 저장소의 미커밋/미푸시 상태 확인(이번 세션에서 변경 없음)

10.6 개발 환경 변수 요약 (dev compose) ​

서비스주요 변수
ProcessCenterMODEL_GATEWAY_URL·MODEL_GATEWAY_SERVICE_TOKEN·MODEL_GATEWAY_MODEL · EXPLORE_GATEWAY_URL·EXPLORE_GATEWAY_AUDIENCE=explore-gateway·EXPLORE_GATEWAY_API_KEY · RAG_SERVICE_ENABLED=false·RAG_SERVICE_URL·RAG_SERVICE_TOKEN · PORTAL_JWT_SECRET(위임 발급 검증) · PROCESS_CENTER_SERVICE_CLIENT_SECRET
ExploreGatewayPORTAL_CONSOLE_JWT_SECRET(= DS PORTAL_JWT_SECRET)·PORTAL_CONSOLE_JWT_AUDIENCE=explore-gateway · CONTROL_PLANE_ORIGIN·CONTROL_PLANE_API_KEY(directory:read 포털 키) · PORTAL_SERVICE_TOKENS_JSON
DirectoryServicePORTAL_CONSOLE_TOKEN_CONSUMERS_JSON(소비자·delegationAudiences·delegationScopes) · PORTAL_CONSOLE_TENANT_ID · PORTAL_CONSOLE_DEFAULT_CLEARANCE_LEVEL
ModelGatewayMODEL_GATEWAY_SERVICE_TOKEN(S)·MODEL_GATEWAY_UPSTREAM_URL·MODEL_GATEWAY_FALLBACK_URL · DATABASE_URL(전용 model_gateway DB)

10.7 다음 세션 시작점 ​

  1. RAGCenter 수집 API 협의 — HTTP 수집이 확정되면 PC POST 연결 + RAG_SERVICE_ENABLED=true 전환, 이어서 P3(로컬 축소)
  2. DS D2 — 사용자 등급 속성으로 RAG 열람 범위를 사용자별로 세분화
  3. 노출·운영 — /explore·/rag 메뉴 연결(포털 결정) · 카탈로그 정책·토큰 회전 · ModelGateway 대시보드
  4. 잔여 정리 — PF jest-dom 테스트 해소, DS 위임 경로 A 필요 여부 판단

11. 명칭 정비 (2026-09-13 후속) ​

소비 포털은 …Center, 플랫폼 서비스는 기능 접미사로 이름을 통일했다. 기준 문서는 UiPlatform/docs/PLATFORM_NAMING.md다.

이전새 이름저장소·로컬 폴더패키지명dev compose 서비스 / 컨테이너포트
Portal Control Center (DirectoryService)PortalConsolePortalConsoleportal-consoleportal-console / portal-console-dev3100
UI플랫폼 (UiCenter)UiPlatformUiPlatformui-platformui-platform / ui-platform-dev3200
FileStoreFileStoreFileStore@hohyun94/file-storefile-store / file-store-dev3300
RAGCenterRagServiceRagService(Python — npm 없음)dev 스택 미포함—

적용 범위: GitHub 저장소명 · 로컬 폴더명 · git remote URL · 패키지명 · docker-compose.dev.yml(서비스 키·컨테이너명·빌드 컨텍스트·서비스 간 호스트명) · README/서비스 경계 문서 헤더.

유지(호환) 식별자: DB 이름과 file_store_* 테이블, API 경로, 토큰 audience·포털 ID(ui-center·ui-center-theme·file-store·rag-center), 환경변수 접두(DIRECTORY_*·UI_CENTER_*·FILE_STORE_*·RAG_CENTER_* — 값/호스트명만 새 이름), 배포 서비스명, 코드 심볼(getUiCenterUrl·uiCenterReadRoute·.ui-center-login), RagService Python 패키지(ragcenter), PF 어댑터 패키지명. 근거·개편 계획은 명칭 문서 §3·§5.

검증: dev 스택 재기동 후 ProcessCenter :3000 200 · PortalConsole :3100/api/health 200(마이그레이션 자동 적용) · UiPlatform :3200 200(제어평면 등록 동기화 성공) · FileStore :3300/healthz 200 · ExploreGateway :3500/healthz 200(control-plane=http://portal-console:3000) · ModelGateway :3400 401(서비스 토큰 필요 — 기존과 동일).