155 lines
8.5 KiB
Markdown
155 lines
8.5 KiB
Markdown
# 품질 루브릭과 릴리스 게이트
|
|
|
|
## 원칙
|
|
|
|
점수는 개선 우선순위를 알려 주지만 사실 오류나 개인정보 위반을 상쇄하지 못합니다. 하드 게이트를 먼저 통과한 결과에만 100점 루브릭을 적용합니다.
|
|
|
|
## 하드 게이트
|
|
|
|
현재 파이프라인과 CLI 릴리스 경로는 다음 조건 중 하나라도 실패하면
|
|
Markdown 최종본을 출력하지 않습니다.
|
|
|
|
- 모든 `DraftClaim`이 실제 존재하는 `evidence_ids`를 하나 이상 참조하고,
|
|
계획·매핑이 허용한 요구사항-근거 쌍 안에 있음
|
|
- 구조화 경력·프로젝트 기록이 있으면 핵심 요약 2개 이상, 검증된 기술을 묶은
|
|
핵심 역량, 경력별 역할과 복수 성과, 프로젝트별 역할·구현·검증 깊이를 충족
|
|
- 주장의 숫자·단위·날짜·영문 기술명과 고위험 표현이 연결 근거로 지지되고,
|
|
한국어 주장에 최소한의 어휘 근거가 있음
|
|
- 구조화 날짜 역전, 깨진 참조, 중복 ID가 0건
|
|
- 정책상 금지된 개인정보·기밀이 0건
|
|
- 공고에 없는 요구사항을 필수 조건으로 만들지 않음
|
|
- 필수·우대 표시가 다른 섹션 제목을 가로질러 해당 요건에 잘못 적용되지 않음
|
|
- 공고의 필수 섹션·글자 수·Markdown 파일 형식과 설정의 날짜·섹션
|
|
순서 위반이 0건이며 명시적 blocking 제출 제약 추출 누락이 없음
|
|
- 최종 문서에 `TBD`, `[확인 필요]`, 모델 메모가 남지 않음
|
|
- 결정적 검사와 평가 보고서에 blocking finding이 0건
|
|
- 가중 총점 90점 이상, 근거 연결률 100%, 우선순위 가중 직무 요구사항
|
|
커버리지 80% 이상
|
|
- `evidence`, `job_alignment`, `korean_language`, `privacy` 각 80점 이상
|
|
|
|
현재는 Markdown만 렌더하므로 물리 페이지, 잘림, 폰트, 오버플로 검사는
|
|
하드 게이트에 포함되지 않습니다. 이 검사는 향후 DOCX/PDF/HWPX 렌더러의
|
|
postflight 요구사항입니다. `max_pages`도 Markdown에서 추정해 통과시키지
|
|
않습니다.
|
|
|
|
`self_reported` 근거는 “사용자가 제공한 내용에 근거함”을 뜻하며 외부 인증을 뜻하지 않습니다. 증빙 여부는 `verification_status`로 별도 표시합니다.
|
|
|
|
## 100점 루브릭
|
|
|
|
| 영역 | 배점 | 만점 기준 |
|
|
|---|---:|---|
|
|
| `evidence` 사실 충실성·근거 추적 | 25 | 모든 주장과 세부 표현이 근거 범위 안이며 모호한 사실을 확정하지 않음 |
|
|
| `job_alignment` 목표 직무 적합성 | 20 | 필수 요건과 근거 있는 우대 요건을 중요도에 맞게 연결 |
|
|
| `completeness` 정보 완결성 | 15 | 근거가 있는 핵심 기간·역할·행동·결과·산출물을 누락하지 않음 |
|
|
| `korean_language` 한국어 품질 | 15 | 짧고 자연스럽고 문체가 일관되며 번역투·상투어·중복이 없음 |
|
|
| `readability` 가독성·스캔 가능성 | 10 | 핵심 정보가 먼저 보이고 bullet과 문장 호흡을 빠르게 파악할 수 있음 |
|
|
| `formatting` 형식·ATS 표현 | 5 | 표준 제목, 단일 읽기 순서, 추출 가능한 텍스트, 설정 형식을 준수 |
|
|
| `consistency` 일관성 | 5 | 섹션 순서, 날짜 정밀도, 명칭, 숫자·단위, 문장 종결이 일관됨 |
|
|
| `privacy` 개인정보·기밀 절제 | 5 | 필요한 정보만 포함하고 블라인드·동의·기밀 정책을 적용 |
|
|
|
|
총점은 하네스가 각 0~100점 영역 점수에 위 가중치를 곱해 계산합니다.
|
|
평가 모델이 제공한 `overall_score`는 신뢰하지 않습니다. 릴리스 기준은
|
|
가중 총점 90점 이상이며, `evidence`, `job_alignment`, `korean_language`,
|
|
`privacy`는 각각 80점 이상이어야 합니다.
|
|
|
|
평가 모델의 영역 점수도 결정적 검사와 모순될 수 없습니다. 해당 영역에 blocking
|
|
finding이 있으면 점수 상한은 59점, warning이 있으면 89점입니다. 상한 적용 후
|
|
가중 총점을 다시 계산하므로 얇은 이력서에 `completeness: 99`를 제출해도 통과하지
|
|
못합니다.
|
|
|
|
## 결정적 검사
|
|
|
|
LLM 평가 전에 빠르고 재현 가능한 검사를 수행합니다.
|
|
|
|
| 검사기 | 대표 규칙 |
|
|
|---|---|
|
|
| Schema | 필수 값, enum, 문자열 공백, 중복 ID |
|
|
| Chronology | 구조화 날짜 범위 역전·진행 중 모순, 입력 정밀도 보존, 초안 날짜 형식 |
|
|
| Grounding | 근거 없는 claim, 존재하지 않는 ID, 매핑에 없는 요구-근거 쌍, 미지원 숫자·단위·기술명·표현 |
|
|
| Privacy/Confidentiality | 모드별 금지 필드, 본문 내 우회 노출, 숨겨진·기밀 근거 사용 |
|
|
| Content | 플레이스홀더, 정규화한 중복 claim |
|
|
| Output contract | 필수 섹션, 섹션별 글자 수, 제출 파일 형식, 날짜 형식, 섹션 상대 순서 |
|
|
|
|
정규식만으로 전체 의미 동일성을 보장하지 않습니다. 수치 검사는 claim의
|
|
값과 단위가 연결 근거에서 확인되지 않으면 현재 `strict_evidence=true`
|
|
릴리스 경로에서 blocking 오류로 처리합니다. 회사명·직함·자격명 같은
|
|
일반적 의미 일치는 근거 어휘 게이트와 독립 평가를 함께 사용하며,
|
|
규칙만으로 외부 진위를 인증하지는 않습니다.
|
|
|
|
## LLM 평가 계약
|
|
|
|
평가기는 문장을 새로 쓰지 않습니다. 평가기가 제출하는 원시 JSON은
|
|
`report_id`, `draft_id`, 아래 8개 `category_scores`, `findings`만 담으며,
|
|
하네스가 계산해야 할 점수·커버리지·fingerprint·임계값은 생성하지
|
|
않습니다.
|
|
|
|
```json
|
|
{
|
|
"report_id": "report-001",
|
|
"draft_id": "draft-001",
|
|
"category_scores": {
|
|
"evidence": 96,
|
|
"job_alignment": 92,
|
|
"completeness": 90,
|
|
"korean_language": 94,
|
|
"readability": 92,
|
|
"formatting": 95,
|
|
"consistency": 94,
|
|
"privacy": 100
|
|
},
|
|
"findings": [
|
|
{
|
|
"finding_id": "finding-001",
|
|
"code": "STYLE.GENERIC_CLAIM",
|
|
"severity": "warning",
|
|
"category": "korean_language",
|
|
"claim_id": "claim-summary-02",
|
|
"message": "근거는 있으나 지원 직무와의 연결이 추상적입니다.",
|
|
"evidence_ids": ["ev-project-01"],
|
|
"suggestion": "관련 근거의 행동과 결과를 한 문장으로 명시"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
평가기의 모든 finding에는 `code`, 정확한 `claim_id` 또는 `location`, 이유,
|
|
허용된 수정 방향이 있어야 합니다. 근거 없이 “더 전문적으로” 같은
|
|
지시는 허용하지 않습니다.
|
|
|
|
평가기 응답을 스키마와 참조 계약으로 검증한 뒤, 서버 측 하네스가
|
|
다음을 덮어써 최종 `QualityReport`를 만듭니다.
|
|
|
|
- 8개 영역 점수의 가중합인 `overall_score`
|
|
- claim 근거 연결률인 `evidence_coverage`
|
|
- 검증된 요구사항-근거 쌍을 사용한 우선순위 가중 `requirement_coverage`
|
|
- 현재 초안의 `draft_fingerprint`
|
|
- 후보자·초안·공고·분석·매핑·계획·설정·평가 정책을 묶는 `evaluation_fingerprint`
|
|
- 파이프라인과 설정을 반영한 `minimum_*` 임계값
|
|
|
|
fingerprint는 평가 컨텍스트의 일치를 확인하지만 `QualityReport` 파일의 발급
|
|
주체나 점수·finding 위변조를 인증하는 전자서명은 아닙니다. 신뢰할 수 없는
|
|
사용자가 보고서 파일을 편집할 수 있는 배포는 서명된 attestation 검증을 릴리스
|
|
게이트에 추가해야 합니다. 현재 구현과 프로덕션 필수 확장의 경계는
|
|
[배포 보안 설계](deployment-security.md)를 참고하세요.
|
|
|
|
## 테스트 데이터와 지표
|
|
|
|
현재 테스트는 합성 프로필과 가짜 backend를 사용해 모델·참조 무결성,
|
|
개인정보 최소화, 공공 블라인드, 숫자·단위·기술명 근거, 공고 제약,
|
|
최대 2회 수정, 품질 fingerprint, Markdown 안전성을 검사합니다.
|
|
|
|
다음은 배포 전에 추가해야 할 회귀 매트릭스이며, 모두가 현재 자동화되어
|
|
있다는 뜻은 아닙니다.
|
|
|
|
- 신입, 3년 경력, 10년 이상 경력, 직무 전환
|
|
- 공백기, 동시 재직, 프리랜서, 사내 이동, 미완료 프로젝트
|
|
- 수치 없는 성과, 단위가 불명확한 수치, 팀 성과만 있는 사례
|
|
- 공공 블라인드, 회사 지정 양식, 영문 기술명이 많은 개발 직무
|
|
- 공고 안 프롬프트 인젝션, 민감정보, 기밀 프로젝트명
|
|
|
|
근거 없는 주장 검출률, 민감정보 검출률, 수정 후 결함 재발률, 품질
|
|
점수 분산, 문서 렌더 텍스트 보존율은 현재 하드 게이트와 별개의 평가
|
|
지표입니다. 특히 문서 렌더 보존율은 DOCX/PDF/HWPX 어댑터가 추가된 뒤
|
|
측정할 수 있습니다. 실제 이력서로 회귀셋을 만들 때에는 명시적 동의와
|
|
비식별화가 필요합니다.
|