[BE-39] 회사 종속형 수집의 slice 전환 · 완전 수집 마감 보호
작업 내용 (설계 의도)
변경 사항
Greenhouse·Woowahan·Incruit 및 JOBKOREA 회사 종속형 경로를 공통 slice contract로 전환한다. 한 페이지/상세 집합의 저장은 slice별로 가능하지만 applyMissedPostings는 named safe-close predicate(SUCCESS && isComplete && fetchedCount>0)에서만 수행한다. complete-zero SUCCESS는 source health abnormal·closeGuarded이며 마감 델타를 실행하지 않는다. 최초 시딩은 complete SUCCESS 이후에만 markSeeded한다. Incruit detail 요청은 새 slice/daily budget에 맞춘다.
의존
- BE-33
다이어그램
처리 흐름
sequenceDiagram participant D as Dispatcher participant A as Company Adapter participant C as CycleService D->>A: collectSlice() A-->>D: postings + complete D->>C: persist page alt SUCCESS + complete + fetched > 0 C->>C: apply missed + mark seed end
클래스 의존
flowchart LR CompanyAdapter --> CollectionSliceDescriptor Dispatcher --> JobPostingCollectionDomainService CycleService --> JobSourceSeedingDomainService
테스트 케이스
- incomplete company-bound slice는 신규/변경을 저장해도 missed/closed count를 변경하지 않는다.
- complete-zero slice는 기존 2회 미발견 마감 규칙을 적용하지 않고 source guard를 남긴다.
- SUCCESS·complete·fetchedCount>0 slice만 기존 2회 미발견 마감 규칙을 적용한다.
- 시딩 source는 complete SUCCESS 전에는 seeded_at을 기록하지 않는다.
- Incruit 상세 요청은 slice와 일일 상세 상한을 넘지 않는다.