# task-1380.1 완료 보고서

## SCQA

**S**: 5사이클 에이전트 미팅(task-1377.1)에서 스레드/인스타 콘텐츠 전담팀(`team_content`) 신설이 전원 합의되었으며, 팀 구성·워크플로우·자동승인 조건·KPI 등이 확정되었다.

**C**: 합의 내용이 아직 코드/시스템에 반영되지 않아 team_content가 콘텐츠 생산을 시작할 수 없는 상태다. dispatch.py 위임 불가, 파이프라인 디렉토리 미존재, 자동 승인/스코어링 로직 미구현.

**Q**: 합의 내용을 코드/인프라에 반영하여 team_content가 즉시 운영 가능하도록 할 수 있는가?

**A**: 7개 산출물(조직구조 업데이트, team_prompts.py, dispatch.py, 팀 카드, content-pipeline 코드, 20종 템플릿, 단위 테스트)을 모두 구현 완료. dispatch.py --team content 위임 가능 확인, pytest 300건 전체 통과(0 실패), 기존 테스트 회귀 없음.

---

## 작업 내용

### 1. 조직 구조 반영
- `organization-structure.json`에 `content-team` 추가 (consulting-team 다음 위치)
- `memory/org-details/content-team.json` 신규 생성 (팀 리드 아폴론, 팀원 5명 상세)

### 2. dispatch.py 등록
- `TEAM_INFO`에 `"content"` 키 추가 (type: "content")
- `_build_content_prompt()` 함수 추가 (경량화 파일 참조 패턴, 기존 marketing 등과 동일 구조)
- `build_prompt()` 라우팅에 `content` 분기 추가
- `DYNAMIC_BOT_TEAMS`에 `"content"` 추가 (가용 봇 자동 선택 대상)

### 3. 팀 카드
- `/home/jay/workspace/prompts/teams/content.md` 생성 (6명 구성, 6단계 워크플로우, 자동 승인 5조건, 브랜드 정보)

### 4. content-pipeline 디렉토리 및 코드
- 디렉토리 구조: drafts/, scoring/, approved/, published/, templates/
- `hook_scorer.py`: 5감정 감지(분노/놀라움/공감/두려움/호기심), 비라운드 숫자 체크, 회사 언급 체크, 500자 제한
- `auto_approve.py`: 5조건 검증 (템플릿 매칭, 저작권 안전, 훅 공식 통과, 블랙리스트 미저촉, 72시간 중복 없음)
- `config.json`: 게시 빈도 설정 (W3부터 일 2건), KPI (저장수 50건+, 도달수 500건+), 킬스위치
- `blacklist.json`: 20개 회사명, 17개 키워드, 3개 정규식 패턴

### 5. 사전 승인 템플릿 20종
- 3x3 매트릭스 기반: 업계 뉴스(6종) + 설계사 일상(9종) + 보험 지식(5종)
- 감정 조합 전체 커버: anger+curiosity, fear+surprise, empathy+anger 등

### 6. 기존 테스트 수정
- `tests/test_dispatch.py`: `_count_all_team_info_from_org()` 함수에 `content-team` 추가 (인터페이스 변경 동시 수정)

---

## 발견 이슈 및 해결

### 자체 해결 (3건)
1. **기존 테스트 회귀** — `test_team_info_has_all_teams` 실패 (13 != 12). `_count_all_team_info_from_org()`의 논리적 팀 목록에 `content-team` 누락. → `tests/test_dispatch.py:65` 수정
2. **pyright 타입 경고** — 테스트 파일에서 `importlib.util.spec_from_file_location` 반환값 None 가능성 경고 → assert 가드 추가
3. **auto_approve.py 상대 임포트 테스트 어려움** — `from .hook_scorer import ...` 패턴으로 인한 테스트 임포트 문제 → importlib + MagicMock 패키지 우회 방식으로 해결

---

## 테스트 결과

- content-pipeline 신규 테스트: **26 passed** (hook_scorer 16건, auto_approve 10건)
- team_prompts 기존 테스트: **125 passed**
- dispatch 기존 테스트: **149 passed** (수정 후)
- **총 300 passed, 0 failed**, 1 warning (DeprecationWarning - Python 3.12 __package__ 관련, 동작 무관)
- ⚠️ 기존 테스트 실패 1건 (본 작업 범위 외): `tests/test_dispatch.py::TestDispatchFunction::test_dispatch_success` — `COKACDIR_KEY_ANU` 환경변수 미설정으로 인한 실패. 본 작업의 변경과 무관한 인프라 의존성 이슈.

---

## 셀프 QC 체크리스트

- [x] 1. 영향 파일: dispatch.py, team_prompts.py, organization-structure.json, tests/test_dispatch.py (명시 완료)
- [x] 2. 엣지 케이스: 빈 텍스트 입력, 감정 0개, 500자 초과, 블랙리스트 패턴 매칭 — 모두 테스트에서 커버
- [x] 3. 작업 지시와 정확히 일치: 7개 산출물(조직구조/team_prompts/dispatch/팀카드/pipeline 코드/20종 템플릿/테스트) 모두 구현
- [x] 4. 에러 처리/보안: 블랙리스트 키워드 체크, 회사명 필터링, 저작권 안전 목록 확인
- [x] 5. 테스트 커버리지: 26건 신규 테스트가 hook_scorer 5감정 감지/스코어링/auto_approve 5조건 각각 커버
- [x] 6. 발견 이슈 해결: 3건 모두 자체 해결
- [x] 7. 코드 아키텍처: 기존 논리적 팀(marketing/design/publishing) 패턴과 동일 구조 적용
- [x] 8. 인터페이스 변경: TEAM_INFO 추가 → test_dispatch.py 동시 갱신, organization-structure.json → content-team 추가

---

## 산출물 파일 목록

- `/home/jay/workspace/memory/organization-structure.json` (수정)
- `/home/jay/workspace/memory/org-details/content-team.json` (신규)
- `/home/jay/workspace/prompts/team_prompts.py` (수정)
- `/home/jay/workspace/dispatch.py` (수정)
- `/home/jay/workspace/prompts/teams/content.md` (신규)
- `/home/jay/workspace/content-pipeline/__init__.py` (신규)
- `/home/jay/workspace/content-pipeline/config.json` (신규)
- `/home/jay/workspace/content-pipeline/blacklist.json` (신규)
- `/home/jay/workspace/content-pipeline/hook_scorer.py` (신규)
- `/home/jay/workspace/content-pipeline/auto_approve.py` (신규)
- `/home/jay/workspace/content-pipeline/templates/tpl-01.json` (신규)
- `/home/jay/workspace/content-pipeline/templates/tpl-02.json` (신규)
- `/home/jay/workspace/content-pipeline/templates/tpl-03.json` (신규)
- `/home/jay/workspace/content-pipeline/templates/tpl-04.json` (신규)
- `/home/jay/workspace/content-pipeline/templates/tpl-05.json` (신규)
- `/home/jay/workspace/content-pipeline/templates/tpl-06.json` (신규)
- `/home/jay/workspace/content-pipeline/templates/tpl-07.json` (신규)
- `/home/jay/workspace/content-pipeline/templates/tpl-08.json` (신규)
- `/home/jay/workspace/content-pipeline/templates/tpl-09.json` (신규)
- `/home/jay/workspace/content-pipeline/templates/tpl-10.json` (신규)
- `/home/jay/workspace/content-pipeline/templates/tpl-11.json` (신규)
- `/home/jay/workspace/content-pipeline/templates/tpl-12.json` (신규)
- `/home/jay/workspace/content-pipeline/templates/tpl-13.json` (신규)
- `/home/jay/workspace/content-pipeline/templates/tpl-14.json` (신규)
- `/home/jay/workspace/content-pipeline/templates/tpl-15.json` (신규)
- `/home/jay/workspace/content-pipeline/templates/tpl-16.json` (신규)
- `/home/jay/workspace/content-pipeline/templates/tpl-17.json` (신규)
- `/home/jay/workspace/content-pipeline/templates/tpl-18.json` (신규)
- `/home/jay/workspace/content-pipeline/templates/tpl-19.json` (신규)
- `/home/jay/workspace/content-pipeline/templates/tpl-20.json` (신규)
- `/home/jay/workspace/content-pipeline/tests/__init__.py` (신규)
- `/home/jay/workspace/content-pipeline/tests/test_hook_scorer.py` (신규)
- `/home/jay/workspace/content-pipeline/tests/test_auto_approve.py` (신규)
- `/home/jay/workspace/tests/test_dispatch.py` (수정)

---

## 모델 사용 기록

- 팀원: 토르(백엔드) / 작업 내용: content-pipeline 핵심 코드 5파일 생성 / 사용 모델: sonnet / 정당성: -
- 팀원: 토르(백엔드) / 작업 내용: team_prompts.py + dispatch.py 수정 / 사용 모델: sonnet / 정당성: -
- 팀원: 프레이야(프론트엔드) / 작업 내용: 20종 템플릿 + content.md 팀 카드 생성 / 사용 모델: sonnet / 정당성: -
- 팀원: 미미르(UX/UI) / 작업 내용: organization-structure.json + org-details 업데이트 / 사용 모델: sonnet / 정당성: -
- 팀원: 헤임달(테스터) / 작업 내용: 26건 단위 테스트 작성 + 실행 / 사용 모델: sonnet / 정당성: -
