# task-726.1: 텍스트 포스트 줄바꿈 통일 — _ensure_line_breaks 공유화

## 배경
카드뉴스 캡션은 줄바꿈이 완벽한데 텍스트 포스트는 한 덩어리로 올라가는 문제.

**근본 원인**: `run_text_post.py`가 `TextContentGenerator`를 직접 호출하여 `FiveStagePipeline`을 우회.
`_ensure_line_breaks()` 후처리가 `FiveStagePipeline._build_result()`에만 있어서 텍스트 포스트에 적용 안 됨.

## 목표
카드뉴스 캡션과 텍스트 포스트가 **동일한 줄바꿈 함수**를 사용하도록 통일.

## 수정 사항

### 수정 1: _ensure_line_breaks를 공유 유틸로 추출
- `FiveStagePipeline._ensure_line_breaks()` 메서드를 **독립 함수**로 추출
- 위치: `/home/jay/projects/ThreadAuto/content/text_utils.py` (신규 파일)
- 함수 시그니처: `def ensure_line_breaks(text: str) -> str`
- 로직은 현재 `five_stage_pipeline.py`의 `_ensure_line_breaks`와 동일

```python
# content/text_utils.py
"""텍스트 포스트 공통 유틸리티."""
import re

def ensure_line_breaks(text: str) -> str:
    """텍스트에 줄바꿈이 부족하면 한국어 문장 경계에서 자동 삽입.
    카드뉴스 캡션과 텍스트 포스트 모두 이 함수를 사용한다.
    """
    # 현재 five_stage_pipeline.py의 _ensure_line_breaks 로직을 그대로 가져옴
    ...
```

### 수정 2: FiveStagePipeline에서 공유 함수 호출로 변경
**파일**: `/home/jay/projects/ThreadAuto/content/five_stage_pipeline.py`
- `_ensure_line_breaks` 메서드 삭제
- `from content.text_utils import ensure_line_breaks` 추가
- `_build_result()`에서 `self._ensure_line_breaks(text)` → `ensure_line_breaks(text)` 로 변경

### 수정 3: TextContentGenerator에서도 줄바꿈 후처리 적용
**파일**: `/home/jay/projects/ThreadAuto/content/text_generator.py`
- `from content.text_utils import ensure_line_breaks` 추가
- `generate()` 메서드에서 `_parse_output()` 호출 직후, `_validate()` 전에 적용:

```python
def generate(self, topic: dict, text_type: str) -> dict:
    ...
    for attempt in range(self.MAX_RETRIES):
        try:
            raw_text = self._call_claude(prompt)
            text, hashtags = self._parse_output(raw_text)
            text = ensure_line_breaks(text)  # ★ 줄바꿈 후처리 추가
            if self._validate(text, text_type):
                return {"text": text, ...}
```

### 수정 4: run_text_post.py에서도 안전장치 추가 (이중 보정)
**파일**: `/home/jay/projects/ThreadAuto/run_text_post.py`
- `from content.text_utils import ensure_line_breaks` 추가
- 생성 직후 한 번 더 적용:

```python
result = generator.generate(topic=topic, text_type=text_type)
text = ensure_line_breaks(result["text"])  # ★ 이중 보정
```

### 수정 5: text_prompts.py에 줄바꿈 프롬프트 강화
**파일**: `/home/jay/projects/ThreadAuto/content/text_prompts.py`
- 각 TEXT_SYSTEM_PROMPTS에 줄바꿈 규칙 추가:
```
★ 줄바꿈 필수 규칙:
- 2~3문장마다 반드시 줄바꿈(\n) 삽입
- 문단 전환 시 빈 줄(\n\n) 삽입
- 한 줄은 10~15자 이내
- 50자 이상 줄바꿈 없이 연속 금지
```

## 검증 방법
1. 기존 테스트 통과: `cd /home/jay/projects/ThreadAuto && python3 -m pytest tests/ -x -q`
2. 유닛테스트 추가: `ensure_line_breaks()` 함수에 대한 테스트
   - 줄바꿈 없는 한국어 텍스트 → 자동 줄바꿈 삽입 확인
   - 이미 줄바꿈 있는 텍스트 → 변형 없이 통과 확인
   - 빈 문자열 → 빈 문자열 반환 확인
3. 통합 확인: `TextContentGenerator.generate()`와 `FiveStagePipeline._build_result()` 모두 같은 함수 호출

## 주의사항
- `text_utils.py`는 신규 파일이므로 `content/__init__.py`에 import 불필요 (직접 import)
- five_stage_pipeline.py에서 기존 `_ensure_line_breaks` 메서드는 완전히 제거 (중복 방지)
- 기존 테스트가 `_ensure_line_breaks`를 직접 테스트하고 있다면 import 경로 수정
