# task-714.1: 텍스트 포스트 트리밍 로직 개선 + 글자수 제한 상향

## 배경
텍스트 전용 포스트(카드뉴스 없이 글만 올리는 버전)가 의미 불완전한 상태로 게시되고 있음.
- 예시: "하루에 전화로" 같은 문장 조각이 마지막에 남아 글이 이상해짐
- 원인: `five_stage_pipeline.py`의 줄 단위 트리밍이 문장 완결성을 고려하지 않음
- 원인2: TEXT_CHAR_LIMITS가 너무 빡빡해서 의미 있는 한국어 텍스트가 잘림

## 수정 대상 파일
1. `/home/jay/projects/ThreadAuto/content/five_stage_pipeline.py`

## 수정 사항

### 1. TEXT_CHAR_LIMITS 상향 (lines 32~39 부근)
현재:
```python
TEXT_CHAR_LIMITS: dict[str, tuple[int, int]] = {
    "text_empathy": (50, 80),
    "text_data": (80, 120),
    "text_story": (120, 200),
    "text_insight": (90, 140),
    "text_cta_soft": (70, 100),
    "text_cta_hard": (80, 120),
}
```

변경:
```python
TEXT_CHAR_LIMITS: dict[str, tuple[int, int]] = {
    "text_empathy": (80, 200),
    "text_data": (100, 250),
    "text_story": (150, 350),
    "text_insight": (100, 300),
    "text_cta_soft": (80, 200),
    "text_cta_hard": (100, 250),
}
```
- Threads API 자체는 500자까지 허용. 현재 제한은 한국어 콘텐츠에 비해 너무 작음.

### 2. 트리밍 로직 개선 (lines 305~332 부근)
현재 줄 단위 트리밍 → **문장 단위 트리밍**으로 변경.

변경 로직:
```python
if pure_len > max_chars:
    # 문장 단위 트리밍: 마침표/물음표/느낌표 기준
    import re
    # 문장 종결 패턴: 한국어 종결어미 + 마침부호
    sentences = re.split(r'(?<=[.!?다요죠음임])\s*\n', text)
    trimmed_parts: list[str] = []
    current_len = 0
    for sent in sentences:
        sent_pure = len(sent.replace("\n", ""))
        if current_len + sent_pure > max_chars:
            break
        trimmed_parts.append(sent)
        current_len += sent_pure
    trimmed = "\n".join(trimmed_parts).rstrip("\n")

    # fallback: 문장 단위로 비면 줄 단위 시도
    if not trimmed:
        lines = text.split("\n")
        trimmed_lines: list[str] = []
        current_len = 0
        for line in lines:
            line_len = len(line)
            if current_len + line_len > max_chars:
                break
            trimmed_lines.append(line)
            current_len += line_len
        trimmed = "\n".join(trimmed_lines).rstrip("\n")

    # 최종 fallback: 문자 단위
    if not trimmed:
        flat = text.replace("\n", "")
        trimmed = flat[:max_chars]

    text = trimmed
```

핵심: 텍스트를 자를 때 **한국어 문장 종결 부호** (다, 요, 죠, 음, 임 + ., !, ?) 뒤에서 자르기. 이러면 "하루에 전화로" 같은 미완성 문장 조각이 남지 않음.

### 3. 프롬프트 글자수도 동기화
`/home/jay/projects/ThreadAuto/prompts/pipeline/03_writing.md` 파일에 텍스트 타입별 글자수 가이드가 있다면 동일하게 상향 수정.

## 검증 방법
- 기존 테스트 통과 확인: `cd /home/jay/projects/ThreadAuto && python3 -m pytest tests/ -x -q`
- 트리밍 동작 확인: TEXT_CHAR_LIMITS 초과하는 텍스트를 넣었을 때 문장 단위로 잘리는지 수동 검증

## 주의사항
- `import re`는 파일 상단에 이미 있는지 확인 후 추가
- 기존 로깅(`logger.warning`) 유지
- 다른 함수/로직 건드리지 말 것