0단계 검증 기록
설계서 §16.1-11: "수행한 테스트와 남은 제한을 문서화하고 검증하지 않은 항목을 완료했다고 보고하지 않는다." 이 문서는 0단계(저장소 신설·계약·합성 fixture) 시점에 실제로 실행한 검증과 미검증 항목을 구분해 기록한다.
- 기준일: 2026-09-19
- 환경: Windows, Node v24.19.0, pnpm 10.4.1
- 벤더 패키지:
vendor/hohyun94-portal-foundation-0.6.156.tgz·hohyun94-portal-ai-0.1.0.tgz·hohyun94-portal-operations-0.3.0.tgz
1. 실행한 명령과 결과
| 명령 | 결과 |
|---|---|
pnpm install | 성공 (508 패키지 해석, 벤더 tarball 포함) |
pnpm check (tsc --noEmit) | 통과 |
pnpm test (vitest run) | 통과 — 4 파일 / 34 테스트 |
pnpm build (vite + esbuild) | 성공 — dist/public(SPA) · dist/index.js 33.7kb |
pnpm verify:full (test + check + build) | 통과 (VERIFY_OK) |
서버 스모크 테스트 (수동, 2026-09-19)
| 확인 | 결과 |
|---|---|
GET /api/health | {"ok":true,"authMode":"mock","processAdapterKind":"mock","demoData":true,"aiEnabled":false} |
| 미지정 경로 404 | 404 + §10.5 오류 봉투({error:{code,...}}) |
NODE_ENV=production + AUTH_MODE=mock | 시작 실패 — 운영 환경에서 AUTH_MODE=mock 은 허용되지 않습니다(설계서 §13.4 / AT-32). |
포트 3000은 이 환경에서 다른 포털(ProcessCenter) 개발 서버가 사용 중이어서 스모크 테스트는
PORT=3105로 수행했다.
2. 자동 테스트 목록
| 파일 | 건수 | 검증 내용 |
|---|---|---|
tests/unit/processPortal.test.ts | 9 | 커서 기반 listNodes·complete, 알 수 없는 분류체계 오류, 복합키 판정, 권한 캐시 TTL(≤5분), 폐기 노드 차단, 노드 검색, materialFingerprint(명칭 변경 무시/레벨 변경 감지), 복합키 직렬화 |
tests/unit/domain.test.ts | 9 | 가시성 4종(PRIVATE/ORG/ENTERPRISE/ALLOWLIST), 목록 필터 일관성, 유형별 상호 배타 집계, 재검토 필요(승인 매핑 한정), 직접 적용에서 CONTEXT 제외, Agent 수 중복 제거 |
tests/unit/env.test.ts | 6 | 개발 기본값, 운영 Mock 인증 차단(AT-32), 운영 Mock 어댑터 차단, 잘못된 열거값 오류, 어댑터 팩토리 가드 2종 |
tests/integration/router.test.ts | 10 | 공개 헬스, 미인증 거부, 조직 간 비공개 Agent 비노출(AT-21), 숨겨진 객체 404, 노드 목록 권한 필터, 권한 밖 노드 조회 시 노드 정보·연결 Agent 미반환, 접근 가능 노드의 매핑 한정 반환, 접근 제한 매핑의 노드 ID 비노출, 권한 범위 집계, 없는 노드 404 |
3. 인수 시나리오(§15) 대응 현황
| 상태 | 시나리오 |
|---|---|
| ✅ 검증됨 (테스트 존재) | AT-21(비공개 객체 비노출), AT-32(운영 Mock 시작 실패), §12.1 집계 규칙, §4.2 노드 접근 제한, §9.1 어댑터 계약, §9.3 materialFingerprint |
| ⏳ 코드 경로만 존재 · 운영 연계 후 재검증 필요 | AT-19·AT-20·AT-31(원본·권한 어댑터 관련) — 설계서도 MVP에서는 Mock 계약으로, 실제 연계 전 운영 계약으로 재검증하도록 요구 |
| ❌ 미구현 (다음 단계) | AT-01~AT-18(등록·편집·검토·게시·동시성·동기화), AT-22~AT-30, AT-33~AT-36 |
이 저장소가 0단계에서 하지 않은 것: 등록·검토·승인·게시 상태 전이, 동기화 Worker, 알림·감사 영속화, 실제 SSO·프로세스 포탈 연계, E2E(Playwright).
4. 알려진 제한
- 클라이언트 번들이 1.1MB(단일 청크)로, Vite가 500kB 초과 경고를 낸다. 코드 분할은 후속 작업이다.
vendor/에portal-security·portal-runtime·directory-synctarball 이 없다(감사·검색·조직 동기화 단계에서 추가).- 부분 고유 인덱스(Agent당 PUBLISHED 1개·작업 버전 1개, §7.8)는 마이그레이션 SQL 보완이 필요하다.
- 개발 인증은
x-demo-subject-id헤더 기반 Mock 이며, 실제 세션 claim 검증은 구현되지 않았다.