# [Lv.3] 소식지 검토 UI — 원문↔정리본 대조 + **숫자·의미** 확인 게이트 (v2)

## allowed_resources
```yaml
allowed_resources:
  paths:
    - "src/pages/AdminNewsletters.tsx"
    - "src/components/newsletter/**"
    - "src/**/*.test.tsx"
  forbidden_paths:
    - ".github/**"
    - "extension/**"
    - "server/**"
  commands: ["npm","npx","vite","git"]
  merge_policy: "none"
  ttl_hours: 20
```
> ★ base=현 origin/main(a914594). src/ 만. 백엔드 교차검증은 병렬 별도 태스크(server/). Phase 3a 검토 API(#179 머지됨) 소비. 근거: `memory/plans/newsletter-review-workflow_260805/`.

## ★ 배경·초점 (회장 260805 — 초점 교정)
소식지 AI 정리본을 사람이 발행 전 검토. **보험사명(파일명)·개정일(사용자지정)은 신뢰 → 확인 게이트 대상 아님.** 진짜 확인 대상 = **① 숫자 오인식 ② 본문 의미 왜곡**. 기존 `src/pages/AdminNewsletters.tsx`(596줄, /admin/newsletters, verify_admin) **확장**(신규 페이지 금지).

## 소비할 Phase 3a API (전부 verify_admin, apiFetch)
- `GET /api/insuro/newsletters/review-queue?status=` — 대기목록(id, company_name, title, month_key, review_status, flag_high_count, flag_med_count, created_at)
- `GET /api/insuro/newsletters/{id}/review` — 상세(body 의 _extracted·_edited, validation_flags 전체, source_file_ref, review_status …). field_confidence 는 응답에 없음
- `POST /api/insuro/newsletters/{id}/transition` — {to_status, action, edited?:{body?, ...}, reason?}

## 작업 (UI)
### 1) 검토 대기 목록
- 이상항목 우선정렬: HIGH(❌) → MED(⚠️) → 무플래그(✅). 각 행: 상태뱃지 + HIGH/MED 수 + 회사명/제목/월.
### 2) 2-pane 상세 대조 뷰 (핵심)
- 좌 **원문**(source) · 우 **정리본**(body, _edited 우선·없으면 _extracted). 인라인 교정 → transition edited 로 저장(_extracted 불변, 서버가 _edited 에만 기록).
- **validation_flags 범용 렌더**(level HIGH 빨강/MED 주황/INFO 회색). ★ **아래 2 rule 특수 3열 대조 렌더**(회장 요청 핵심):
  - `number_misread`: detail 의 `summary_value`(정리본 숫자) / `source_quote`(원문) / `issue` → "정리본: X / 원문: Y / 문제: Z" 강조.
  - `meaning_drift`: detail 의 `summary_text` / `source_quote` / `issue` → 같은 3열 대조로 "여기 의미가 달라졌다" 부각.
### 3) ★ 발행 전 확인 게이트 — **숫자·의미만** (보험사명·날짜 게이트 금지)
- 승인(approve) 전 체크박스 2종 필수: **[ ] 숫자 원문 대조 확인** · **[ ] 본문 의미(담보 조건·적용대상) 원문과 일치 확인**. 둘 다 체크해야 approve 가능.
- number_misread/meaning_drift HIGH 플래그가 있으면 그 위치를 게이트에서 강조(사람이 반드시 그 부분을 봤는지).
### 4) 상태 전이 버튼
- editing / approve / reject(사유) / re-extract. transition to_status·action 매핑. publish 는 approved 상태에서만 노출.
- 보험사명(company_name)은 **기존 인라인 편집 유지**(마스터 강제 select·hold 게이트 만들지 말 것 — 회장 지시로 검증 대상 아님).

## 제약
- src/ 만. server·extension·.github 불변. 신규 페이지 대신 AdminNewsletters.tsx 확장. field_confidence 미노출. 로그/문구 과정형("검토 대기") — 결론형("정확확인") 금지. 숫자·의미는 사람이 직접 교정만.

## 검증
- `npm run build` PASS + tsc 0. **실렌더 스크린샷 육안 필수**(vite/harness, 3b-1 플래그 스키마 목업 데이터로): 목록 우선정렬 / 2-pane / number_misread·meaning_drift 3열 대조 렌더 / 숫자·의미 체크 둘 다 안 하면 approve 불가 / (보험사명 마스터 강제 게이트 **없음** 확인).

## 완료 (★ 순서 B)
- src/ 만. **dev6 금지** — dev2(오딘). 커밋 → push → **★ push 확인** → **npm run build PASS 확인** → finish-task foreground 1회 → .done. ANU 독립검증(실렌더)·머지·배포는 ANU.

## goal_assertions (auto-generated)
- `npm run build`
