title: content-orchestration Phase 2 백로그 date: 2026-02-25T21:30:00+09:00 type: backlog status: draft author: self-healing-impl-pl reviewed_by: "" reviewed_at: "" approved_by: "" approved_at: ""
content-orchestration Phase 2 백로그
Phase 1 구현 완료 후, 각 L2 구현 플랜과 L1 설계서에서 Phase 2로 명시된 항목들을 통합 정리한다.
근거 문서 (Phase 1 구현 플랜 4건):
content-orchestration-impl-phase1.md— 파이프라인 백엔드 Phase 1content-orchestration-impl-uiux.md— UI/UX Phase 1content-orchestration-impl-self-healing.md— 자체교정 Phase 1content-orchestration-impl-external.md— 외부 연동 Phase 1
근거 문서 (L1 설계서 4건):
content-orchestration-design-pipeline.mdcontent-orchestration-design-uiux.mdcontent-orchestration-design-self-healing.mdcontent-orchestration-design-external.md
1. 자체교정 (Self-Healing) Phase 2
출처: impl-self-healing.md + design-self-healing.md Phase 2 섹션
| # | 항목 | 설명 | 난이도 | 우선순위 |
|---|---|---|---|---|
| SH-1 | L3 대체 전략: RSS 소스 자동 교체 | 특정 RSS 소스 3회 연속 실패 시 동일 카테고리 대체 소스로 자동 전환. channels config에 대체 URL 저장 | 중 | 높음 |
| SH-2 | L3 대체 전략: AI 모델 fallback | Gemini API 연속 3회 실패 시 Claude API로 자동 전환. content_generation_config에서 model 변경 | 중 | 중간 |
| SH-3 | L3 대체 전략: SNS 플랫폼별 skip | getlate 특정 플랫폼 실패 시 해당 플랫폼만 skip, 나머지 정상 진행 | 낮 | 중간 |
| SH-4 | L4 품질 강등: 프롬프트 파라미터 동적 조정 | QA 실패 시 온도 0.7→0.5, max_tokens +500 등 단계적 조정 후 재생성. 3회 실패 시 holding 전환 | 중 | 높음 |
| SH-5 | L4 optimization_history 연계 | L4 파라미터 변경 시 optimization_history 테이블에 기록 (어떤 조정이 효과적인지 추적) | 낮 | 낮음 |
| SH-6 | Telegram 에스컬레이션 알림 | escalated=1 시 vice-reply.sh/ceo-reply.sh 자동 호출. Phase 1에서는 DB 기록만 | 중 | 높음 |
| SH-7 | 에러 패턴 분석 | 동일 component/error_type 반복 횟수 추적, 패턴 기반 사전 교정 | 중 | 낮음 |
| SH-8 | 대체 소스 매핑 DB화 | RSS 소스별 대체 URL을 channels config JSONB에 저장. 카테고리별 우선순위 리스트 | 낮 | 중간 |
| SH-9 | Brevo rate_limit 60초 대기 | Cron 환경에서 60초 대기 후 재시도. Phase 1에서는 Vercel 타임아웃(60s) 때문에 제외 | 낮 | 낮음 |
2. UI/UX Phase 2
출처: impl-uiux.md + design-uiux.md Phase 2 섹션
| # | 항목 | 설명 | 난이도 | 우선순위 |
|---|---|---|---|---|
| UI-1 | 배포 현황 화면 (/pipeline/distributions) | content_distributions 테이블 기반, 채널별 배포 상태 (published/failed/pending) 조회 | 중 | 높음 |
| UI-2 | Optimistic Update | 승인/거부 시 즉시 UI 반영 (SWR mutation). Phase 1은 서버 재조회 방식 | 낮 | 중간 |
| UI-3 | 자동 새로고침 | 30초 간격 polling으로 대시보드 최신 데이터 자동 반영 | 낮 | 중간 |
| UI-4 | 파이프라인 수동 트리거 UI | "수집 실행" / "생성 실행" 버튼 (대시보드에서 직접 API 호출) | 중 | 높음 |
| UI-5 | 채널 관리 화면 (/pipeline/channels) | channels 테이블 CRUD (활성/비활성 전환, config 편집) | 중 | 중간 |
| UI-6 | 자체교정 대시보드 | 최근 7일 교정 성공률, 등급별 분포, error_logs 기반 시각화 | 중 | 중간 |
| UI-7 | 모바일 반응형 | 사이드바 → 하단 탭바, 승인 화면 1컬럼 레이아웃 | 중 | 낮음 |
| UI-8 | Telegram 알림 연동 UI | 검수 요청 시 CEO 텔레그램 알림 상태 표시 (review 화면) | 낮 | 낮음 |
3. 외부 연동 Phase 2
출처: impl-external.md + design-external.md Phase 2 섹션
| # | 항목 | 설명 | 난이도 | 우선순위 |
|---|---|---|---|---|
| EXT-1 | Telegram 알림 통합 | 검수 요청, 에러 에스컬레이션, 발행 완료 시 vice-reply.sh/ceo-reply.sh 스크립트 자동 호출 | 중 | 높음 |
| EXT-2 | Brevo 상태 폴링 | getCampaign API로 발송 상태/오픈율/클릭률 자동 추적. content_distributions.metrics 업데이트 | 중 | 중간 |
| EXT-3 | getlate 상태 폴링 | GET /posts/{id}로 발행 결과/URL 자동 추적. registered → published 상태 전환 | 중 | 중간 |
| EXT-4 | 블로그 발행 확인 폴링 | apppro-kr DB 폴링으로 published=1 자동 확인 (별도 /api/cron/check-publish 엔드포인트) | 낮 | 중간 |
| EXT-5 | SNS mock → getlate 실연동 교체 | sns-mock.ts를 실제 getlate.ts 연동으로 교체. Phase 1에서 인터페이스 확보 완료 | 중 | 높음 |
| EXT-6 | getlate.ts 확장 | 기존 CLI용 getlate.ts를 파이프라인 래퍼용으로 확장 (Phase 1에서는 변경 없음) | 중 | 중간 |
4. 파이프라인 백엔드 Phase 2
출처: impl-phase1.md Phase 1에서 명시적으로 제외한 항목
| # | 항목 | 설명 | 난이도 | 우선순위 |
|---|---|---|---|---|
| BE-1 | content-orchestration 대시보드 UI 변경 | content-orchestration(별도 레포) 대시보드를 content-pipeline과 통합 연계 | 중 | 낮음 |
| BE-2 | Brevo 자동 뉴스레터 발송 | 승인된 콘텐츠 자동 뉴스레터 캠페인 생성 + 예약 발송 | 중 | 높음 |
| BE-3 | SNS 자동 배포 | getlate.dev 실제 연동으로 멀티플랫폼 자동 배포 | 중 | 높음 |
| BE-4 | 텔레그램 검수 알림 | draft 생성 시 CEO에게 검수 요청 알림 | 중 | 높음 |
| BE-5 | 멀티 프로젝트 지원 | content_queue.project 기반 다중 프로젝트 콘텐츠 관리 | 높 | 낮음 |
| BE-6 | collectNews 통계 반환 개선 | feedsOk/feedsFail 정확한 값 반환 (Phase 1은 0으로 대체) | 낮 | 낮음 |
5. 우선순위 요약 (권장 실행 순서)
Tier 1 — 즉시 임팩트 (1주)
| ID | 항목 | 이유 |
|---|---|---|
| SH-6 + EXT-1 | Telegram 에스컬레이션/알림 통합 | CEO/VP가 에러를 즉시 인지. 수동 대시보드 확인 불필요 |
| BE-2 + BE-3 | Brevo + SNS 자동 배포 | 콘텐츠 배포 자동화 완성. Phase 1은 블로그만 |
| UI-1 | 배포 현황 화면 | 다채널 배포 결과를 CEO가 한눈에 확인 |
| SH-1 | RSS 소스 자동 교체 | 수집 안정성 향상. 피드 장애 시 자동 대체 |
Tier 2 — 품질 개선 (2주)
| ID | 항목 | 이유 |
|---|---|---|
| SH-4 | L4 품질 강등 | AI 생성 품질 반복 미달 시 자동 파라미터 조정 |
| SH-2 | AI 모델 fallback | Gemini 장애 시 Claude 자동 전환 |
| UI-4 | 파이프라인 수동 트리거 | CEO가 대시보드에서 직접 파이프라인 실행 가능 |
| EXT-2 + EXT-3 | Brevo/getlate 상태 폴링 | 발송 결과 자동 추적 |
| EXT-5 | SNS mock → 실연동 | getlate 실제 연동 교체 |
Tier 3 — 편의 기능 (3주+)
| ID | 항목 | 이유 |
|---|---|---|
| UI-2 + UI-3 | Optimistic Update + 자동 새로고침 | UX 개선 |
| UI-5 | 채널 관리 화면 | DB 직접 수정 없이 UI에서 채널 관리 |
| UI-6 | 자체교정 대시보드 | 교정 성공률 시각화 |
| SH-7 + SH-8 | 에러 패턴 분석 + 대체 소스 DB화 | 고도화 |
| UI-7 | 모바일 반응형 | 모바일에서 관리 |
| BE-5 | 멀티 프로젝트 | koreaaihub 등 추가 프로젝트 지원 시 |
6. Phase 3 참고 (향후 로드맵)
Phase 2 완료 후 검토할 고급 기능:
| 영역 | 항목 |
|---|---|
| UI/UX | DAG 시각화, 성과 대시보드(조회수/오픈율), AI 파라미터 관리 UI, 자동 승인 타이머, 인증/권한, 다크 모드 |
| 자체교정 | 자체교정 성공률 대시보드, 전용 Cron(/api/cron/self-healing), 예측적 교정, 교정 히스토리 분석, 자동 채널 비활성화 |
| 외부 연동 | 티스토리(Open API), 미디엄(Integration Token), LinkedIn 아티클(Marketing API), 네이버(Playwright, 최후순위) |
리뷰 로그
[self-healing-impl-pl 초안 작성] 2026-02-25 21:30
- 4건의 L2 구현 플랜 + 4건의 L1 설계서에서 Phase 2 항목 추출
- 총 29개 백로그 아이템: 자체교정 9건, UI/UX 8건, 외부 연동 6건, 백엔드 6건
- 3-Tier 우선순위 분류: Tier 1(즉시 임팩트, 1주) / Tier 2(품질 개선, 2주) / Tier 3(편의 기능, 3주+)
- Phase 3 참고 항목 별도 정리 (UI/UX 7건, 자체교정 5건, 외부 연동 4건)
- 자비스 검수 요청