[BE-36] 사람인·원티드 재개 가능한 slice 페이지네이션
작업 내용 (설계 의도)
변경 사항
사람인과 원티드 adapter를 collectSlice 계약으로 전환한다. 사람인은 page 번호, 원티드는 서버가 준 next URL/cursor를 opaque continuation으로 보존한다. slice가 목록 페이지·공고 예산에 도달하면 다음 cursor를 반환하며, daily budget 도달은 dispatcher/domain이 BUDGET_EXHAUSTED로 처리한다. 총 결과 불일치는 complete 선언 전이면 실패로 기록한다. application.yml 공통 wire-up은 마지막 통합 티켓에서 한다.
의존
- BE-33
다이어그램
처리 흐름
sequenceDiagram participant W as Worker participant A as Adapter participant P as Platform W->>A: collectSlice(cursor, budget) A->>P: bounded page requests P-->>A: items + next A-->>W: postings + continuation
클래스 의존
flowchart LR SaraminAdapter --> CollectionSliceDescriptor WantedAdapter --> CollectionSliceDescriptor SaraminAdapter --> SourceRequestExecutor WantedAdapter --> WantedJobClient
테스트 케이스
- 사람인은 slice page cap에서 다음 page cursor를 반환하고 total-complete를 주장하지 않는다.
- 원티드는 next link가 있어도 slice budget을 넘는 요청을 하지 않는다.
- next link가 null이면 두 adapter 모두 complete slice를 반환한다.
- malformed/허용 외 next URL과 총 건수 불일치는 FAILED outcome이다.