# 컴플라이언스

이 문서는 HACS FI API에 **구현되어 있는 기술적 통제(controls)를 사실 그대로** 기술합니다.
각 항목이 특정 법령·규정의 요건을 충족하는지에 대한 판단은 각 기관의 검토 사항입니다.

## 1. 동의 통제

- 기본 차단(deny-by-default): 활성 동의가 검증된 요청에만 데이터 반환, 매 조회마다 검사
- 동의는 기관 × 목적 단위, 공유 범위는 데이터 카테고리(CSV)로 제한 — 기본 `score,tier,reason-codes`, 선택 `contributions`/`history`/`monitoring`
- 철회는 즉시 효력, 이후 `consent.revoked` 웹훅 외 어떤 데이터·이벤트도 미제공
- 동의마다 영수증 식별자 발급, 부여·철회 시각과 함께 조회·내보내기 가능

## 2. 접근로그와 해시체인

- 모든 FI 조회(성공·거부)가 기록: 시각, 클라이언트, pairwise 주체, 목적, 결과, 반환 등급, 모델 버전, 환경, 배치 ID
- 각 항목은 해시체인(`entryHash`)으로 연결 — 사후 삭제·수정 시 체인 불일치로 탐지
- 사용자는 앱에서 자신에 대한 조회 내역 열람 가능
- 관리자는 접근로그·동의 내역 CSV 내보내기 가능(`entryHash` 열 포함)
- 배치는 건별 로그 + 공통 `batchId`, 샌드박스는 `environment='SANDBOX'`로 분리 기록

## 3. 사유코드 (설명가능성)

- 표준 카탈로그 31종에서 최대 4건, 영향 순으로 응답에 포함
- 영어/현지어 라벨, 카테고리, (프로비넌스 존재 시) 감점 폭 제공
- 결정 시점 기록값을 그대로 반환하며 재계산하지 않음

## 4. 모델 거버넌스

- 모든 점수에 `modelVersion` 명시
- 모델은 버전 관리되며 검증(OOT 지표)·승격 절차를 거쳐 반영, 승격 이력은 감사 가능
- 운영 중 모델은 분포 변화(PSI) 등 모니터링 지표로 추적

## 5. 결정 프로비넌스

- 결정은 canonical JSON(`HACS_DECISION_V1`)으로 직렬화되어 해시(`decisionHash`) 보존 — canonical 형식은 불변, 이후 추가 메타데이터는 해시 대상 밖
- 결정 시점의 피처 기여·사유코드가 프로비넌스로 기록되어 재현(replay) 검증 가능
- 신용등급 증명서(어테스테이션)는 블록체인 앵커링 가능(앵커 트랜잭션 해시 제공), 유효기간 발급 후 90일, 폐기 상태도 발급기관 기록으로 검증

## 6. 식별자 최소화

- FI 표면의 유일한 주체 식별자는 파트너별 pairwise 식별자 — 내부 식별자·실명·연락처 비노출
- 기관마다 다른 식별자로 기관 간 결합 차단
- 거부 응답은 사유 무구분 동일 라벨 — 가입 여부 추론 불가

## 7. 전송·키 보안

- API 키는 BCrypt 해시로만 저장, 발급 시 1회 평문 표시
- 웹훅은 https 전용 + HMAC-SHA256 서명, 페이로드에 점수 원값 미포함
- 속도 제한(60 req/min)이 인증 이전 단계에서 적용

> 본 문서는 구현된 통제의 기술적 기술(description)입니다. 규제 적합성 판단, 법률 자문,
> 감독기관 대응은 각 기관의 책임 하에 수행하시기 바랍니다.
