<aside>
📦 도메인 비종속 utilities — queue (Kafka 상수 + BacklogChecker), llm (Provider + chain + policy), links/urlguard, redis, config, logger, metrics. · 원본: docs/architecture/pkg/README.md
</aside>
📨 pkg/queue — Kafka 추상
원본: docs/architecture/pkg/queue.md
책임 — Kafka producer/consumer + 모든 토픽/그룹 상수 + BacklogChecker.
알고리즘 / 동작 —
- Producer: Publish / PublishBatch / Close
- Consumer: FetchMessage (auto-commit X) → CommitMessages (명시 commit) — at-least-once
- BacklogChecker: 토픽 partition latest offset vs consumer-group committed offset 차이 합산
적용된 패턴 —
- Single source of truth — TopicCrawl* / TopicFetched / GroupParsers 등 모든 상수 단일 파일
- Manual commit — at-least-once 보장
구현 디테일 —
- 구현: github.com/segmentio/kafka-go
- 토픽 추가 시 config.go 외 다른 곳에서 문자열 리터럴 직접 사용 금지
관련 이슈 — #124 BacklogChecker · #134 TopicFetched + GroupParsers
🧪 pkg/llm — Unified Provider Abstraction
원본: docs/architecture/pkg/llm.md
책임 — 다중 LLM provider (Gemini / OpenAI / Claude) 를 단일 Provider 인터페이스로 추상.
알고리즘 / 동작 —
- Factory: llm.New(Config{Provider, APIKey, Model, Timeout}) → Provider