# task-695.1 완료 보고서: prompts_v2.py 카드뉴스 텍스트 규칙 보강

**S**: `prompts_v2.py`의 `_OUTPUT_FORMAT_BLOCK`이 카드뉴스 슬라이드의 제목 길이, 설명 길이, 어조(존대/반말)에 대한 명시적 규칙 없이 운영되고 있다.

**C**: 생성된 카드뉴스에서 제목이 4~5줄로 텍스트박스를 넘치고(25자+), 설명이 90자 이상으로 잘리며, 반말("~이다", "~했다") 사용이 빈번하여 브랜드 톤 불일치 문제가 발생했다.

**Q**: 프롬프트에 제목 15자 이내, 설명 40~80자, 존대 필수 규칙을 추가하여 텍스트 오버플로우와 어조 불일치를 방지할 수 있는가?

**A**: `_OUTPUT_FORMAT_BLOCK`에 "텍스트 길이·어조 규칙 (필수)" 섹션을 신설하고, 기존 "텍스트 최소 글자 수 규칙"의 상한을 80자로 제한했다. pyright 0 errors, pytest 64건 전체 통과, 5개 카테고리 전수 검증 완료.

## 변경 파일
- `/home/jay/projects/ThreadAuto/content/prompts_v2.py` (수정)

## 변경 내역

### 1. 신규 섹션 추가 (line 134~146)
`## 슬라이드 구성 규칙` 뒤에 `## 텍스트 길이·어조 규칙 (필수)` 섹션 신설:
- 슬라이드 제목(title): 15자 이내, 키워드형
- 카드 항목 제목(items의 title): 15자 이내
- 카드 항목 설명(description/value): 40~80자, 3줄 이내
- 존대 필수 (입니다/습니다), 반말 금지 (cover hook 예외)
- 각 규칙에 나쁜 예/좋은 예 포함

### 2. 기존 규칙 수정 (line 149)
- 변경 전: "각 항목의 설명(description/value)은 반드시 40자 이상으로 작성하세요."
- 변경 후: "각 항목의 설명(description/value)은 40자 이상 80자 이하로 작성하세요. 3줄을 넘기지 마세요."

## 검증 결과

### pyright 타입 체크
- 결과: 0 errors, 0 warnings, 0 informations

### pytest (test_content_generator_v2.py)
- 결과: 64 passed in 0.11s

### 프롬프트 규칙 포함 검증 (전 카테고리)
- 고민공감: PASS (9/9 checks)
- 정보제공: PASS (9/9 checks)
- 사회적증거: PASS (9/9 checks)
- 업계동향: PASS (9/9 checks)
- CTA: PASS (9/9 checks)

검증 항목: 텍스트 길이·어조 규칙 포함, 슬라이드 제목 15자 규칙, 카드 항목 제목 15자 규칙, 설명 40~80자 규칙, 존대 필수, 반말 금지, cover hook 예외, 기존 규칙 수정 반영, 이전 규칙 제거 확인

### 콘텐츠 재생성 검증
- ContentGeneratorV2는 `claude --print` CLI subprocess 호출 방식으로, 실행 환경(nested Claude session)에서 실제 생성 테스트는 별도 실행 필요
- 프롬프트 규칙이 get_system_prompt()를 통해 모든 카테고리에 정확히 주입됨은 검증 완료

## 발견 이슈 및 해결

### 자체 해결 (3건)
1. **새 규칙과 기존 규칙 간 description 길이 정의 중복** — 새 "텍스트 길이·어조 규칙"에서 40~80자 명시 + 기존 "텍스트 최소 글자 수 규칙"도 동일하게 40~80자로 수정하여 일관성 확보
2. **기존 "반드시 40자 이상" 표현이 상한 없음을 암시** — "40자 이상 80자 이하" + "3줄을 넘기지 마세요"로 상한 명시하여 오버플로우 방지
3. **존대 규칙에서 cover hook 예외 누락 가능성** — 태스크 지시에 따라 "cover의 hook은 예외적으로 반말 가능 (훅킹용)" 명시 추가

### 범위 외 미해결 (1건)
1. **실제 카드뉴스 재생성 + 렌더링 시각 검증** — ContentGeneratorV2가 Claude CLI subprocess 호출 방식이라 현 실행 환경에서 실제 생성 불가. 별도 환경에서 수동 검증 필요. 범위 외 사유: 외부 API(Claude CLI) 의존성

## QC 자동 검증 결과
- **overall**: PASS (5 PASS, 5 SKIP)
- file_check: PASS (18371 bytes)
- data_integrity: PASS
- test_runner: SKIP (관련 테스트 파일 0개, 정당한 SKIP)
- tdd_check: SKIP (Lv.1 프롬프트 텍스트 수정, TDD 대상 아님)
- pyright_check: PASS (0 errors, 0 warnings)
- style_check: PASS (black OK, isort OK)
- .done 생성: /home/jay/workspace/memory/events/task-695.1.done

## 미수정 파일 (의도적)
- `_TONE_GUIDES`: 변경 불요 (태스크 제약)
- `_SLIDE_GUIDES`: 변경 불요 (태스크 제약)
- caption 규칙: 변경 불요 (태스크 제약)
- `renderer/cardnews.py`: 변경 불요 (태스크 제약)
