diff --git a/docs/INDEX.md b/docs/INDEX.md index 640cfe5..cd12960 100644 --- a/docs/INDEX.md +++ b/docs/INDEX.md @@ -1,5 +1,7 @@ # Project INDEX +- 2026-09-23 · **심사 가이드 v2** — `docs/operations/review-guide.md`. 기존 `operator-review-workflow` 다이어그램은 시스템 흐름(폴더→분석→채점)이라 "어떻게 심사하고 무엇을 보는가"에 답하지 못했다. 운영자 관점으로 다시 썼다: 한 건 심사 6단계(한 줄 읽기 → 점수 구성 → 동일→부분→페이지 순 증거 → 사용/무관/오탐 표시 → A/H/R → N), 한 줄 요약의 신호 9종과 판정 무게(라벨은 권리와 무관, 미수행은 안전 아님), 승인/보류/반려 기준과 **뒤에 일어나는 일**(보류·반려 → 주의 후보, 승인은 DB 에 안 남으니 `클리어 기준 등록` 별도), 반려 사유 프리셋, 키보드, 일괄 처리, 헷갈리는 것 5개, 종료 루틴(내보내기·통계·임계 재검토). 콘솔 라벨은 실제 index.html 문자열로 대조. + - 2026-09-22 · **한 줄 요약(headline) — 운영자의 첫 1초를 사유 원문 덤프에서 사실·규모로.** 코퍼스 DB 로 실 콘솔을 띄워 보니 큐의 '상위 근거' 칸이 `구글 visually s... 구글 페이지 with ...`(사유 원문 둘을 잘라 붙인 것)이었고 증거 제목도 `구글 full image match found` 로 절반 영어였다. 스코어러가 점수 계산과 별개로 집계(`_Tally`)해 `riskBreakdown.headline` 에 `웹 완전일치 사본 4곳 · 식별 가능 인물 · 이름 있는 검색 승격 2건 · 라벨 9개` 를 싣는다 — 순서는 예산표, 웹은 가장 강한 뷰만 **호스트 수(곳)** 로, 등록 일치·클리어 이력·미수행·실패·신뢰 출처 제외까지 한 줄. 큐 행과 케이스 요약 보드의 첫 줄이 이것으로 바뀌고 옛 케이스(headline 없음)만 예전 배치. `formatReason` 에 Vision 매치 4종·검색결과 사본·기준 DB 유사도 한국어 매핑 추가. 실렌더(claude-in-chrome, 코퍼스 20장)로 큐·케이스 확인 — 점수·밴드 변화 없음(SCORER_VERSION 유지). - 2026-09-22 · **스코어러 v6 — 외부 검색 미수행의 조용한 통과를 막는다.** 배포 판단에서 파일럿 전 유일한 차단으로 꼽은 구멍: 네이버 일일 한도 100 = 20장이라 21장째부터 검색이 `SEARCH_SKIPPED` 0점·무사유로 빠져 점수가 **낮게** 나왔다(키 만료·비상 차단도 같은 경로). 정책 거절 사유 5종 중 하루 안에서 케이스마다 달라지고 어디에도 안 보이는 하나(`usage limit reached`)만 v5 의 실패 하한 30 에 합류시키고 사유에 ` 미수행 — <사유>` 를 남긴다. `disabled` 는 키 미설정 배포와 비상 차단이 같은 사유를 쓰고 둘 다 콘솔 providerState 에 보이므로 그대로 0점·무사유(하한을 걸면 키 없는 배포의 큐 전체가 medium 이 된다 — 기본 스토어 테스트가 잡아냈다); 거버넌스 스위치 셋(compliance · metadata logging · online mode)도 배포 전체에 균일해 0점·무사유. 라운드트립은 신선 점수를 재현(테스트). 다이어그램 태그 v6 재생성. diff --git a/docs/operations/review-guide.md b/docs/operations/review-guide.md new file mode 100644 index 0000000..2c2efb3 --- /dev/null +++ b/docs/operations/review-guide.md @@ -0,0 +1,102 @@ +# 심사 가이드 — 무엇을 보고, 어떻게 판정하는가 + +운영자용. 이 도구는 **판정하지 않는다.** 이미지가 어디에 있고 무엇이 찍혔는지 모아서 +큐를 위험한 순서로 세워 줄 뿐이고, 승인·보류·반려는 사람이 한다. 이 문서는 그 판정을 +빠르고 일관되게 하는 순서다. + +## 1. 한 건 심사의 순서 (보통 1~2분) + +| 단계 | 어디서 | 무엇을 | +|---|---|---| +| ① 한 줄 읽기 | 큐 '상위 근거' 칸 / 케이스 요약 첫 줄 | `웹 완전일치 사본 4곳 · 식별 가능 인물 · …` — 무엇이 얼마나 나왔는지. 여기서 대부분 방향이 정해진다 | +| ② 점수 구성 확인 | 케이스 화면 '점수 구성' | 몇 점이 어디서 왔는지. "증거 77개인데 왜 95점"의 답. 상한에 걸린 항목은 `원래 230 · 상한 40` 으로 표시 | +| ③ 증거 열기 | '동일 이미지' 그룹부터 | **동일 → 부분 → 페이지** 순. 유사·라벨·네이버는 앞이 비었을 때만 | +| ④ 근거 표시 | 각 증거의 `사용` / `미사용` | 판정 근거로 삼은 행은 반드시 `사용`. 관계없는 행은 `무관`, 잘못 잡힌 행은 `오탐` — 오탐·무관은 점수에서 빠지고 리스코어된다 | +| ⑤ 판정 | `A` 승인 · `H` 보류 · `R` 반려 | 반려는 사유 필수(아래 4절) | +| ⑥ 다음 | `N` | 다음 미심사 건으로. 승인·보류 후에는 자동으로 넘어간다 | + +**증거를 다 읽을 필요는 없다.** 동일 이미지 그룹에 한 건이라도 있으면 그 출처 하나를 열어 +보는 것이 나머지 70행보다 중요하다. 라벨("K-pop", "Photograph")은 무엇이 찍혔는지를 말할 뿐 +권리와 무관하다 — 라벨만으로 반려하지 않는다. + +## 2. 무엇을 보는가 — 한 줄 요약의 신호와 그 뜻 + +| 한 줄 요약에 나오는 말 | 뜻 | 판정에서의 무게 | +|---|---|---| +| **등록 권리 대상 일치 0.95** | 기준 DB 에 등록된 이미지(반려·보류 이력, 수동 등록)와 같은 이미지 | 단독으로 높음. 이전 판정과 같은 결론이 원칙 — 다르면 이유를 메모 | +| **웹 완전일치 사본 N곳** | 검색 결과·구글 이미지 감지에서 **같은 이미지**가 N개 호스트에서 발견 | 가장 중요한 사실. 출처가 언론사·공식 계정이면 그쪽이 원저작자일 가능성이 높다 | +| 웹 부분·페이지 일치 / 웹 유사 이미지 | 잘렸거나 편집된 사본 / 비슷한 구도 | 참고. 부분 일치는 열어 보고, 유사는 앞의 둘이 없을 때만 | +| **식별 가능 인물** / 배경 인물 | 얼굴이 알아볼 수 있게 찍힘 / 군중 속 인물 | 초상권 축. 유명인·특정 개인이면 사본이 없어도 보류 검토 | +| 이름 있는 검색 승격 N건 | 이름(인물·작품)으로 검색해 결과가 나옴 | 약한 참고. 단독으로는 밴드를 만들지 못한다 | +| 라벨 N개 | 구글이 붙인 설명 라벨 | 무엇이 찍혔는지만. 권리 판단에 쓰지 않는다 | +| 클리어 이력 일치 | 이전에 운영자가 **클리어 기준으로 등록**한 승인 이미지와 같다 | 재심사 없이 승인 쪽. 등록은 승인만으로 되지 않고 `클리어 기준 등록` 을 눌러야 한다 | +| 외부 검색 실패 / 일일 한도로 일부 미수행 | 그 검색이 **안 돌았다** | 증거가 적은 게 안전하다는 뜻이 아니다. 점수는 중간 하한(30)까지만 오른다 — 보류 후 다음 날 `선택 재분석` | +| 신뢰 출처 제외 N행 | 자사·계약처 도메인에서 발견된 행 | 점수에서 빠진다. 스크래퍼 게시가 같이 있으면 그것만 센다 | + +점수 밴드: **높음 70+ · 중간 30+ · 낮음.** 웹에 있다는 것만으로는 최대 65 라 높음이 되지 +않는다 — 높음은 "웹 사본 + 인물" 또는 "등록 일치"다. 밴드는 우선순위이지 결론이 아니다. + +## 3. 판정 기준 + +| 판정 | 언제 | 뒤에 일어나는 일 | +|---|---|---| +| **승인** `A` | 자사 제작·라이선스 확인·자유 이용 확인. 웹 사본이 있어도 출처가 우리이거나 계약처면 승인 | 지원자 상태 '승인 대기'. 기준 DB 에는 **아무것도 안 들어간다** — 재사용될 이미지면 `클리어 기준 등록` 을 따로 누른다 | +| **보류** `H` | 출처 불명·권리자 확인 필요·검색이 안 돈 경우 | 기준 DB 에 **주의 후보(watchlist)** 로 들어간다. 같은 이미지가 다시 오면 `주의 후보 이미지 유사도` 로 잡힌다 | +| **반려** `R` | 타인 저작물 사본·초상권 침해·이전 반려와 동일 | 사유 필수. 기준 DB 주의 후보 갱신. 지원자 상태 '반려 예정' | + +**보류를 아끼지 말 것.** 판정을 미루는 것이 아니라 "다음에 같은 이미지가 오면 잡아라"를 +DB 에 남기는 행위다. 반대로 승인은 DB 에 남지 않으므로, 반복 제출되는 정상 이미지는 승인 후 +`클리어 기준 등록` 까지 해야 다음에 자동으로 클리어 이력이 붙는다. + +## 4. 반려 사유 + +`R` 을 누르면 사유 목록이 뜬다. 숫자 하나로 고르면 두 키로 끝난다. +자유 서술이 필요하면 `M` 으로 메모 칸에 가서 쓰고 `Ctrl+Enter`. + +사유 프리셋은 판정 창에서 저장·수정할 수 있다(라벨 40자, 본문 500자). 팀이 쓰는 사유를 +프리셋으로 고정해 두면 반려 메모의 문장이 통일되고 나중에 통계로 집계된다. + +메모에는 **무엇을 보고 판단했는지**를 쓴다: `kenh14cdn 완전일치, 언론 사진` 처럼 출처 하나면 +충분하다. 근거 행을 `사용` 으로 표시해 두면 내보내기에 그 행이 함께 실린다. + +## 5. 키보드 + +| 키 | 동작 | +|---|---| +| `J` / `K` (↓ / ↑) | 큐에서 다음 / 이전 건 | +| `N` | 다음 **미심사** 건 | +| `A` / `H` | 승인 / 보류 → 자동으로 다음 미심사로 | +| `R` → `1`~`9` | 반려 사유 선택 | +| `R` → `M` | 반려 메모 직접 쓰기 → `Ctrl+Enter` 제출 | +| `?` | 단축키 도움말 / `Esc` 닫기 | + +입력칸에 커서가 있으면 단축키는 먹지 않는다 — `Esc` 로 빠져나온 뒤 누른다. + +## 6. 여러 건 한꺼번에 + +- 큐에서 체크 → `선택 승인 / 선택 보류 / 선택 반려`. 반려는 여기서도 사유 필수. +- 증거 그룹 머리의 `전부 무관` — 한 그룹(예: 유사 이미지 20행)을 한 번에 점수에서 뺀다. +- **판정 중에 새 이미지를 넣지 않는다.** 폴더 리로드마다 전체 리스코어가 돌아 이미 판정한 + 케이스의 밴드가 움직일 수 있다(판정 시점 점수는 스냅샷으로 보존되지만 화면 밴드는 바뀐다). + +## 7. 자주 헷갈리는 것 + +- **점수가 낮은데 증거가 많다** → 점수 구성을 본다. 상한에 걸린 것(라벨 59 → 10)이거나 + 신뢰 출처로 빠진 것이다. 둘 다 정상. +- **어제 높음이었는데 오늘 중간** → 리스코어. 감사 로그에 `Risk rescored` 가 남는다. + 판정 시점 점수는 판정 기록에 그대로 있다. +- **모든 케이스가 중간 30 에 깔려 있다** → 외부 검색이 안 돌고 있다(한도·장애). + '외부 검색 tool 활용' 화면에서 상태를 보고, 돌아온 뒤 `선택 재분석`. +- **같은 사진을 잘라서 다시 냈다** → 기준 DB 주의 후보에 있으면 `주의 후보 이미지 유사도` + 로 잡힌다. 지문이 리사이즈·재저장에는 버티지만 큰 크롭·워터마크에는 약하다 — 눈으로 본다. +- **자사 도메인 사본이 자꾸 점수를 올린다** → 기준 DB 에 `신뢰 출처` 로 도메인을 등록한다. + 하위 도메인(cdn.…)은 자동으로 같은 편이다. + +## 8. 심사가 끝나면 + +- `판정 내보내기` — 판정·메모·`사용` 표시한 근거가 함께 나간다. 근거 표시를 안 했으면 + "무엇을 보고 판정했나"가 빈칸이다. +- `S` 통계 — 밴드별 판정 교차표. 높음인데 승인이 많으면 임계가 낮은 것, 낮음인데 반려가 + 있으면 미탐. 분모 5건 미만이면 읽지 않는다. +- 판정이 30~50건 쌓이면 `scripts/sweep_thresholds.py` 로 임계를 재검토한다 + (`docs/operations/calibration-corpus.md`).