<aside>
✅ 검증 단계 — news/community 분기, 통과 시 validated 발행 / 실패 시 DLQ + contents 삭제. · 원본: docs/architecture/internal/processor/validate.md
</aside>
✔ validate Worker
원본: docs/architecture/internal/processor/validate.md
책임 — normalized 토픽 consume → Content 검증 → 통과(validated) / 실패(DLQ + 삭제) 분기.
알고리즘 / 동작 —
- per message: GetByID → ProcessingLock("validator") → NewValidator(SourceType) 분기 (news / community)
- Pass: UpdateValidationStatus(passed) + Publish(validated)
- Fail: Delete(contents) + Publish(DLQ + error info)
- drainTimeout(5s) 안에 Kafka.CommitMessages — at-least-once 보장
적용된 패턴 —
- Domain-typed validator — SourceType 으로 sub-validator 분기 (news / community)
- leaf types sub-package — sub→parent→sub cycle 회피 (validate/types/)
- At-Least-Once — 처리 후 명시 commit
구현 디테일 —
- ValidationResult { IsValid · QualityScore(0.0~1.0) · Errors }
- ValidateConfig 환경변수: 본문 길이 · 신뢰도 임계값
관련 이슈 — #135/#161 validation_status 영속화 · #178 lock prefix · #72 graceful shutdown