Skip to content

계약 문서 신뢰 체인 프론트엔드 핸드오프

위치와 컴포넌트

계약 상세 3xl sheet의 READ 모드 연결 컬렉션으로 표시한다.

text
ContractManagementMainOrg
└─ 계약 문서·증명 disclosure
   └─ ContractDocumentTrustMol
      ├─ 4단계 evidence card grid
      ├─ SHA-256·증명 시각 table
      ├─ preview 3xl sheet
      └─ 생성·재시도·다운로드 actions

연결 컬렉션이므로 계약 속성 전체 편집 중에는 표시하지 않는다. 계약 저장과 문서 요청은 한 transaction이나 한 버튼으로 묶지 않는다. 계약관리는 문서 처리 실패와 무관하게 동작해야 한다.

데이터 흐름

  • contractDocument.js: 현재 계약 aggregate를 contract-document.v1 snapshot으로 projection하고 안전하게 escape한 EDS print HTML을 만든다.
  • documentTrustRepo.js: generic source RPC·normalization·private Storage signed URL을 소유한다.
  • useDocumentTrust.js: source별 list, create/retry upsert와 loading/error를 관리한다.
  • ContractDocumentTrustMol.vue: source를 contract-management / contract / contract.id / currentVersion으로 전달한다.

한 계약이 새 버전으로 수정되면 sourceRevision이 바뀌므로 이전 request를 덮어쓰지 않는다. 현재 버전 문서가 없을 때만 PDF·증명 생성을 노출한다.

상태 표현

4개 단계는 계약 버전 → PDF·해시 → 타임스탬프 → 전자문서 보관 순서다.

  • 완료: badge-success-moderate
  • 처리 중: badge-info-moderate
  • 대기: badge-neutral-subtle
  • 미요청: badge-neutral-minimal
  • 오류: badge-destructive-subtle

색만으로 상태를 전달하지 않고 항상 상태 텍스트를 함께 표시한다. 외부 사업자명은 상태·도움말·오류에 노출하지 않는다.

미리보기와 다운로드

미리보기는 3xl 오른쪽 sheet이며 SSOT의 .print, .print-document, .print-a4-content를 그대로 소비한다. 로컬 scoped CSS나 page override는 없다.

  • 원본 PDF·타임스탬프 증명: Supabase backend이고 storage key가 있을 때만 표시한다.
  • signed URL 유효시간: 60초, download filename 지정.
  • 검증정보: backend 종류와 무관하게 브라우저에서 JSON Blob으로 생성한다.
  • local mock은 완결 상태를 보여주지만 저장된 원본 파일 다운로드는 제공하지 않는다.

보안과 확장

v-html에는 contractDocumentBodyHtml()이 모든 source text를 escape한 결과만 전달한다. 임의 HTML이나 server HTML을 직접 넣지 않는다.

다른 상품이 연결할 때 이 컴포넌트를 복사하지 않고 원본 상품 전용 snapshot builder, 공용 repo/composable, 도메인 용어에 맞는 thin UI adapter로 분리한다.

전자서명은 현재 체인에 포함하지 않는다. 이후 서명자 본인확인·의사표시·서명 완료본을 별도 aggregate로 설계한 뒤, 완료본 PDF를 새 trust request로 보관한다.

테스트

  • ContractDocumentTrustUi.spec.js: 단계명, EDS 어휘, preview/retry/download, 공급사명 비노출
  • contractDocument.spec.js: snapshot과 HTML escaping
  • documentTrustRepo.spec.js: RPC mapping, mock evidence chain, 오류 문구