# InsuRo 소식지 검토 UI — 플래그-본문 연결 + 숫자·의미 부각/노이즈 정리 (#188, task-2909, 260806) — 머지·배포 완료

- 작업: task-2909 | 팀: dev2-team(오딘·bot-c), 프론트 프레이야(sonnet) | Lv.2 | InsuRo webapp src/ only
- 브랜치 `task/task-2909-dev2` | base `origin/main`=8c26989 | head e383da1 → squash **880ca86 (#188)**
- 회장 지시 흐름(memory_store 260806): task-2908(백엔드 PDF 내용기반 감지)+task-2909(UI) → ANU 독립검증 → 머지 → 재배포 → 회장이 그 PDF 재업로드 확인

## 문제
소식지 검토 상세뷰의 제시 증거(validation_flags)가 추상적이라 리뷰어가 각 플래그가 본문 어디를 가리키는지 알 수 없었고, 회장이 신뢰 대상으로 두는 보험사명·날짜 플래그가 노이즈로 섞여 핵심(숫자·의미)이 묻힘.

## 변경 (src/components/newsletter/ 4파일, UI-only additive)
- `ValidationFlags.tsx`: 3버킷 분류(priority=number_misread·meaning_drift·number_manual_verify_required / noise=insurer*·month_key_absent·(ai_suspect|ai_no_grounding)+insurer/date field / rest). priority 상단 red 강조, noise 하단 접이식 '참고(보험사명·날짜)' 기본접힘. `cross_model_unavailable`은 noise 제외+amber "교차검증 미수행" 항상 노출. LocateButton "본문에서 찾기".
- `ReviewDetailPanel.tsx`: onLocate 연동 → 본문 textarea indexOf 검색, 찾으면 앞뒤 24자+`<mark>` 하이라이트+setSelectionRange(best-effort try-catch), 못 찾으면 발췌 fallback. 전부 graceful.
- +테스트 6개. onLocate optional prop이라 하위호환.

## ANU 독립검증 (전부 GREEN)
- vitest: 76 files / **1151 tests 전부 pass** (신규6·회귀0)
- vite build: PASS (built 17.49s, dist 175 entries)
- 반증 코드리뷰: Critical/HIGH 0 (minor: 편집 중 stale found edge case=크래시 없는 non-blocking)
- diff: src/ 4파일만, server/.github/extension 무접촉
- remote head==local HEAD 일치

## 머지·배포
- PR #188 생성(원격 이전됨: Jeon-Jonghyuk/InsuRo). ruleset로 초기 BLOCKED(required ci/e2e/diagnostic IN_PROGRESS) → `gh pr merge 188 --squash --auto` → CI 통과 즉시 auto-merge → 880ca86.
- CF Pages 배포: worktree dist(main과 트리 동일) → `wrangler pages deploy dist --project-name insuro --branch main` → 57e051a6.insuro.pages.dev. **insuro.biz HTTP 200 확인**.
- 백엔드/마이그레이션 무관 = 서버 재배포 불필요, 웹앱만.

## 후속
- 회장 육안 확인: 그 PDF 재업로드 → 숫자·의미 플래그가 본문 하이라이트로 짚어지는지 (task-2908 백엔드와 함께 동작).
- 앱 통합 실렌더 스크린샷(CSS 포함)은 미수행 — 인증+데이터 필요. vitest DOM 검증+build로 판정, 시각은 회장 육안 위임.
- scope-guard 중간 `**` glob 오탐 재발(테스트 파일 오차단) — 팀장 정당 override(EVIDENCE_BASED_FALSE_POSITIVE). root fix는 [[bug_scope_guard_middle_doublestar_glob_260726]] 별도 태스크(dev6 제외) 미해결.

관련: [[feedback_finish_task_verify_remote_head_push_260805]] · [[reference_insuro_webapp_cf_pages_deploy_260803]] · [[project_insuro_newsletter_review_detail_crash_fix_task2907_merged_deployed_260806]]
