# task-721.1 완료 보고서: 텍스트 포스트 줄바꿈 강제 후처리 + 프롬프트 강화

**S**: ThreadAuto 5단계 파이프라인에서 text_* 콘텐츠를 생성할 때, 프롬프트에 줄바꿈 규칙이 명시되어 있음에도 Claude가 `\n` 없이 연속 텍스트를 생성하는 경우가 발생하고 있다.

**C**: 줄바꿈 없는 한 덩어리 텍스트가 스레드 피드에 올라가면 가독성이 크게 저하되어 사용자 이탈을 유발한다. 프롬프트만으로는 100% 방지가 불가능하므로 후처리 보정이 필요하다.

**Q**: 프롬프트 강화 + 코드 후처리로 줄바꿈 누락 문제를 안정적으로 해소할 수 있는가?

**A**: `_ensure_line_breaks()` 후처리 메서드를 추가하여 평균 줄 길이 25자 초과 시 한국어 문장 경계에서 자동 줄바꿈을 삽입하도록 구현. 프롬프트에도 줄바꿈 미포함 시 감점 규칙을 추가하여 이중 방어. pytest 107건 전체 통과, pyright 에러 0건.

## 수정 파일 목록

- `/home/jay/projects/ThreadAuto/content/five_stage_pipeline.py`
  - `_ensure_line_breaks()` 메서드 추가 (line 176~207)
  - `_build_result()` 내 text 추출 후 호출 삽입 (line 339~340)
- `/home/jay/projects/ThreadAuto/prompts/pipeline/03_writing.md`
  - `text_* 줄바꿈 스타일` 섹션에 자동 감점 경고 추가 (line 295~298)
- `/home/jay/projects/ThreadAuto/tests/test_five_stage_pipeline.py`
  - `TestEnsureLineBreaks` 클래스 추가 (8개 테스트케이스)

## 구현 상세

### _ensure_line_breaks() 동작
1. 빈 문자열 → 그대로 반환
2. 평균 줄 길이 25자 이하 → 이미 줄바꿈 충분, 그대로 반환
3. 마침부호(`.!?`) 뒤 공백 → `\n\n` 삽입
4. 한국어 종결어미(습니다/거든요/세요 등) 뒤 공백 → `\n` 삽입
5. 연속 줄바꿈 3개 이상 → 2개로 정리

### 호출 위치
`_build_result()` > `content_type.startswith("text_")` 블록 내에서, text 추출 직후 & 자수 트리밍 전에 호출. 카드뉴스에는 영향 없음.

## 테스트 결과

- pytest tests/test_five_stage_pipeline.py: **107 passed** (0.17s)
- 신규 TestEnsureLineBreaks: **8 passed**
  - 빈 문자열, 이미 줄바꿈 충분한 텍스트, 줄바꿈 없는 긴 텍스트, 마침부호 경계, 한국어 종결어미 경계, 연속 줄바꿈 정리, 짧은 텍스트 불변
- pyright: 0 errors, 0 warnings, 0 informations
- black/isort: 포매팅 적용 완료

## 발견 이슈 및 해결

### 자체 해결 (3건)
1. **import re 중복 방지** — 태스크 명세에 메서드 내 `import re`가 포함되었으나, 파일 상단(line 12)에 이미 존재하므로 제거
2. **메서드 위치 선정** — `_extract_text_content` 뒤, `_validate_cardnews_slides` 전에 배치하여 논리적 순서 유지
3. **테스트 기존 107건과 충돌 방지** — 신규 테스트 클래스를 파일 끝에 독립적으로 추가하여 기존 테스트 미영향 확인

## QC 자동 검증 결과

```
overall: WARN (Gate PASS)
- file_check: PASS
- data_integrity: PASS
- test_runner: PASS (107 passed in 0.17s)
- tdd_check: PASS
- pyright_check: WARN (8건 — 전부 기존 reportMissingImports, 본 작업 무관)
- style_check: PASS (black + isort 적용 완료)
- critical_gap: PASS
```
