<aside>
🚀 전체 파이프라인 wiring 진입점. main() 은 wiring 다이어그램이며 비즈니스 로직을 갖지 않습니다. · 원본: docs/architecture/cmd/issuetracker.md
</aside>
🧷 cmd/issuetracker — Integrated Entry Point
원본: docs/architecture/cmd/issuetracker.md
책임 — 모든 stage 를 단일 프로세스에서 wire — main() 은 wiring 다이어그램, 비즈니스 로직 0.
알고리즘 / 동작 —
- 15단계 코드 순서: logger/metrics → Kafka(3-tier consumer) → PG pool → rule.Parser+Resolver → Claim Check 서비스 → Source 등록 → Redis 락/지연 재시도 → PoolManager → LLM provider → ParserWorker → Refiner → Cleanup cron → Scheduler+Throttler → Validator → SIGTERM 대기
- Graceful shutdown 역순 (30s timeout): sched → manager.Stop → parser → llmGen → refiner → cleaner → validator
적용된 패턴 —
- Stage interface (Name/Start/Stop) — 모든 단계가 균일 lifecycle 로 wire (이슈 #206)
- Fail-soft optionals — Redis/LLM 부재 시 Noop fallback, fail-fast 는 DB · Scheduler · Validate 만
구현 디테일 —
- 공통 context 1개 — SIGTERM 시 일괄 cancel
- buildLLMProvider · buildLLMGenerator · buildRefiner 가 환경변수 기반 옵션 결합
- validateWorkerCount=8, parserWorkerCount=6 (normalized 파티션 32 미만)
관련 이슈 — #206 Stage 인터페이스 · #72 shutting_down 필드
🪜 internal/processor — Stage 추상화
원본: docs/architecture/internal/processor/README.md
책임 — Pipeline 단계의 공통 lifecycle 인터페이스 + types sub-package (cycle 회피).
적용된 패턴 —
- Stage interface — fetcher/parser/validate 가 모두 구현, main 이 []Stage 로 균일 처리