# task-751.1 완료 보고서

**작성자**: 라(Ra), dev3-team 팀장
**작성일**: 2026-03-21
**소요 시간**: 11분 50초

---

## SCQA

**S**: ThreadAuto 프로젝트에서 Threads 텍스트 포스트 1건을 업로드하는 정기 작업이다. `run_text_post.py` 실행 시 `fact_guard.py`가 자동 적용되어 `fact_db.md`에 없는 수치 사용 시 FactGuardError가 발생한다.

**C**: GLM 최초 업로드 시도에서 `FactGuardError` 발생 — CTA 프롬프트에서 "2시간 내 회신"이라는 구체적 시간 수치를 생성했으나, 이 수치가 `fact_db.md`에 등록되지 않아 업로드가 차단되었다.

**Q**: FactGuard 이슈를 해결하고 유효한 텍스트 포스트 1건을 성공적으로 업로드할 수 있는가?

**A**: GLM이 (1) `fact_db.md`에 DM 회신 가이드라인 섹션 추가 (구체적 시간 약속 금지 규칙), (2) `03_writing.md` 절대 금지사항에 시간 약속 금지 추가, (3) 재생성 후 업로드 성공. 게시물 URL: https://www.threads.net/@seouldae_insurance/post/18097749544811481. 신규 테스트 7건 통과, 기존 테스트 1,617건 통과 (회귀 없음).

---

## 결과 요약

- **업로드 결과**: ✅ 성공
- **게시물 URL**: https://www.threads.net/@seouldae_insurance/post/18097749544811481
- **post_id**: 18097749544811481
- **text_type**: text_empathy
- **글자수**: 82자
- **카테고리**: 고민공감
- **토픽**: 혼자 영업하다 보니 지쳐가는 것 같아요

**게시물 내용**:
```
혼자 영업하다 보면
점심도 혼자, 거절도 혼자,
버틸 때도 혼자거든요.

서울대보험쌤도
그 외로움 알고 있습니다.

지금 옆에 동료 있으신가요? 🤔

#보험설계사 #GA이직
```

---

## 체크리스트 결과

- [x] **스펙 전수 체크**: 텍스트 포스트 1건 업로드 완료, URL 확인됨
- [x] **테스트 작성**: `tests/test_task_751_1_fact_guard.py` 7개 테스트 신규 작성, 전체 통과
- [x] **black/isort 포맷**: `cli.py` 포맷 이슈 1건 직접 수정 후 통과 (369 files unchanged)
- [x] **pyright 에러**: 신규 에러 0건 (기존 38건은 pre-existing, 본 작업 범위 외)
- [x] **기존 테스트 회귀 없음**: 1,617건 통과 (회귀 0건)

⚠️ **기존 테스트 실패 15건 (본 작업 범위 외)**:
- `test_cta_linebreak.py::TestFactDbContainsBusinessPage::test_fact_db_contains_business_page` — `fact_db.md`에 '사업단 페이지' 표기 부재 (git HEAD에도 없음, 이번 작업 무관)
- `test_evergreen_topics.py` 4건 — 데이터 파일 상태 불일치 (pre-existing)
- `test_padding_consistency.py` 2건 — 상수 값 불일치 (pre-existing)
- `test_text_posting.py::TestContentValidation::test_valid_content` 1건 — content validation 로직 변경 (pre-existing)
- `test_threads_video_gen.py` 7건 — 비디오 파일 미존재 (pre-existing)

---

## 발견 이슈 및 해결

### 자체 해결 (2건)

1. **FactGuardError: "2시간" 수치 없음** — `fact_db.md` 섹션 11 추가 (DM 회신 가이드, 구체적 시간 약속 금지) + `03_writing.md` 절대 금지사항 추가
   - 상세: GLM이 자체 수정 후 재업로드 성공

2. **`cli.py` black 포맷 미적용** — 라 팀장이 직접 `black cli.py && isort cli.py` 실행
   - 이전: `1 file would be reformatted` → 이후: `369 files would be left unchanged`

---

## 생성/수정 파일 목록

| 파일 | 변경 유형 | 설명 |
|------|----------|------|
| `content/fact_db.md` | 수정 | 섹션 11 추가: DM 상담/회신 가이드 |
| `prompts/pipeline/03_writing.md` | 수정 | 절대 금지사항에 구체적 시간 약속 금지 추가 |
| `tests/test_task_751_1_fact_guard.py` | 신규 | FactGuard 검증 테스트 7건 |
| `cli.py` | 수정 | black 포맷 적용 |

---

## QC 자동 검증 결과

검증 결과 요약 (2026-03-21T10:41:18 기준):

| verifier | 결과 | 비고 |
|----------|------|------|
| api_health | SKIP | --skip flag |
| file_check | FAIL | 보고서/events .done 미생성 — finish-task.sh 실행 전 시점 |
| data_integrity | PASS | running 상태 정합 확인 |
| test_runner | SKIP | 관련 테스트 0개 자동 추론 |
| tdd_check | PASS | 테스트+구현 파일 모두 존재 |
| schema_contract | SKIP | models.py 없음 |
| pyright_check | WARN | qc_verify.py 경로 차이 false positive (프로젝트 내 실행 시 0 errors) |
| style_check | PASS | black+isort 통과 |
| scope_check | SKIP | expected files 미지정 |

**file_check FAIL 사유**: QC 실행 당시 보고서 및 events .done 파일 미생성 (finish-task.sh 실행 전). 이후 finish-task.sh 완료로 `.done` 생성됨.

**pyright_check WARN 사유**: qc_verify.py가 `/home/jay/projects/ThreadAuto` 외부에서 pyright를 실행하여 경로 미인식. 프로젝트 내부 실행(`cd /home/jay/projects/ThreadAuto && pyright tests/test_task_751_1_fact_guard.py`) 시 0 errors, 0 warnings 확인됨.

---

## 테스트 결과

**신규 테스트** (`tests/test_task_751_1_fact_guard.py`): 7/7 통과

| 테스트 | 결과 |
|--------|------|
| `test_dm_section_exists` | PASS |
| `test_concrete_time_prohibited` | PASS |
| `test_abstract_expression_allowed` | PASS |
| `test_time_restriction_in_prohibitions` | PASS |
| `test_abstract_alternative_provided` | PASS |
| `test_concrete_time_hours_detected` | PASS |
| `test_abstract_time_passes` | PASS |

**전체 테스트**: 1,632/1,647 통과 (15건 기존 실패, 본 작업 범위 외)
