세션 진입 문서가 없어 41.6k 라인 · 70모듈 구조를 매번 재발견하고 있었다. - CLAUDE.md: 진입점 + 이 프로젝트에만 해당하는 규칙(폐쇄망 의존성 금지, app-*.js 로드 순서 계약, SCORER_VERSION 갱신 의무, 직렬화 라운드트립 불변식, LLM 은 실모델로 프로브, cp949 비ASCII 출력 주의) - docs/PROJECT_MAP.md: 파일·라우트·스키마 위치, app-*.js 로드 순서, 알려진 부채 - README: verify 명령, app-*.js 구조, 인증 스로틀 동작 설명 7/11 리메디에이션 체크리스트를 코드와 대조해 갱신했다. 미체크 항목 중 6건은 이미 수정돼 있었고(naver 멀티페이지 쿼터, #10 Origin/Referer CSRF, env_file BOM, daily-limit fail-open, __main__ 경로 앵커링, 그리고 Batch 8 전체가 Batch 6 과 중복) 각 줄에 확인 근거를 남겼다. 남은 미체크는 전부 근거가 기재된 명시적 연기다.
36 lines
1.9 KiB
Markdown
36 lines
1.9 KiB
Markdown
# POSA Copyrighter
|
|
|
|
이미지 저작권 위험 자동 분석 + 운영자 판정 콘솔. **폐쇄망(air-gapped) 납품 대상.**
|
|
|
|
## 먼저 읽기
|
|
|
|
`docs/PROJECT_MAP.md` (구조·라우트·스키마 위치) → `docs/INDEX.md` (작업 이력).
|
|
전체 소스 재스캔 금지 — MAP 에서 위치를 찾고 필요한 부분만 연다.
|
|
|
|
## 검증
|
|
|
|
```powershell
|
|
.\verify.ps1 # ruff + pytest. 커밋 전 게이트, CI 도 이 명령 하나
|
|
```
|
|
|
|
모든 패치를 적용한 뒤 **마지막에 1회**만 실행한다.
|
|
|
|
## 이 프로젝트의 규칙
|
|
|
|
- **폐쇄망 우선**: 새 런타임 의존성 추가는 기본적으로 금지. 필요하면 오프라인 휠 반입 절차
|
|
(`docs/operations/offline-install.md`)까지 함께 처리한다. CDN·원격 fetch·자동업데이트 금지.
|
|
- **`app-*.js` 로드 순서는 계약**: 클래식 스크립트 15개가 전역 스코프를 공유한다. 추가·제거·
|
|
재배치 시 `index.html` 과 `test_static_workbench.py` 의 `APP_SCRIPT_NAMES` 를 함께 고친다.
|
|
- **점수를 바꾸면 `SCORER_VERSION` 을 올린다** (`analysis/risk_scoring.py`). 이 스탬프가
|
|
가중치 변경과 스코어링 버그를 사후 구분하는 유일한 근거다.
|
|
- **직렬화 라운드트립은 원 점수를 재현해야 한다** (`store_serialization.py`). 과거에
|
|
`result_url` → `url` 별칭이 리스코어 시 0점을 45점으로 바꾼 사고가 있었다.
|
|
- **LLM 은 요약기가 아니라 증거 판독기**다. 인용 없는 claim 은 폐기한다. 프롬프트나 모델을
|
|
바꾸면 가짜 transport 가 아니라 **실모델로 프로브**한다 — 형식 예시 반향 결함은 실모델에서만
|
|
드러났다.
|
|
- **비ASCII 출력 주의**: 콘솔이 cp949 라 em-dash 등이 `UnicodeEncodeError` 로 프로세스를
|
|
죽인 이력이 있다. 스크립트 stdout 에 넣지 말 것.
|
|
|
|
## 커밋
|
|
|
|
의미 있는 묶음으로 1커밋 → `docs/INDEX.md` 에 결과 기록. 원격은 Forgejo(`tea` CLI, `gh` 아님).
|