Skip to content

Core Concepts

League activation and measured coverage

Distinguish registered integrations, administrator activation and observed data coverage.

A registered competition is not evidence of collected data. The expansion registers 61 additional soccer competitions and WKBL, including its regular season and playoffs, behind disabled ingestion controls. Existing competitions keep their existing defaults. Production deployment and website publication must be verified independently of source changes.

Status Meaning
Supported but disabled The integration is registered; no targeted retrieval is allowed until an administrator enables it. Unverified source capabilities remain blocked.
Enabled and retrieving A worker has acknowledged the configuration and is performing eligible work. This does not guarantee a complete schedule, history or statistics.
Measured coverage Observations for a specific source, season or edition, phase and data category have been counted after retrieval. Missing data remains missing.

Administrators use Operations → Leagues to filter leagues, inspect worker acknowledgement, last successful retrieval, errors and historical checkpoints. Enabling requires a league master switch, an allowed source route, approved bookmaker eligibility and available worker configuration. Source exclusions survive disable and re-enable. Under healthy conditions workers acknowledge activation within 30 seconds; source response time and rate limits determine when records become available.

Current fixtures and identities precede detailed/live records, approved matched odds and lower-priority historical work. Re-enabling resumes saved historical checkpoints. Disabling pauses retrieval while collected records remain readable under the existing API behavior. A stale or missing worker acknowledgement is shown as blocked instead of claiming successful retrieval.

Soccer scope includes explicitly listed women’s competitions, senior men’s national-team friendlies and the men’s age-restricted Asian Games tournament. Team categories stay separate. History targets calendar seasons 2025/2026, split seasons 2025–26/2026–27 and the two latest played intermittent editions, subject to verified source availability. Public-source gaps and authentic historical odds availability require explicit blockers.

WKBL uses its own public DataLab source mapping and shared basketball read models. Its /games/{id}/play-by-play, /games/{id}/extended, player/team/standings /extended, /games/{id}/team-stats, /players/{id}/season-stats and /season-leaders/extended routes read only collected observations. Shot coordinates are withheld until units are established; reconstructed rotation completeness is disclosed. A registered endpoint does not guarantee populated data.

Deploy the worker, admin API/UI, public API and documentation together. The existing worker daemon runs the activation controller even when every new league is disabled. Keep the live publisher and existing consumer workers available for streamed observations. Deployment and seed reruns preserve administrator choices; adding a registered league does not activate it.

  1. Open Operations → Leagues and inspect the competition’s coverage and source-route controls.
  2. Enable the master switch. The admin sends PATCH /v1/admin/league-ingestion/{leagueId} with is_enabled and expected_revision from the preceding list response. A conflicting edit returns HTTP 409; refresh before retrying.
  3. Check the acknowledged revision and last successful retrieval. starting acknowledges desired configuration only; running/idle and a success timestamp provide retrieval evidence.
  4. Historical retrieval starts automatically after the required current-data sweep succeeds. No separate backfill command is needed for newly managed leagues. Current work has a separate concurrency lane; historical work uses one bounded lane and saved per-season/per-phase checkpoints.
  5. Disable to pause. Re-enable to catch up current data and resume unfinished history. Completed historical stages are retained. Do not delete checkpoints to retry a source outage.

The ingestion database stores desired state in leagueControls and atomically fenced worker status/checkpoints in leagueIngestionLeases. Per-match progress tracks successful and failed detail attempts separately. A failed match does not erase existing data or prevent other matches and seasons from being attempted. Source outages remain visible until the affected task succeeds.

Symptom Action
Enabled, but no fresh acknowledgement Check that the daemon for this league is deployed, running and connected to the ingestion database. A registration alone is insufficient.
Source blocked Inspect the named source-route exclusion, required credentials and recorded coverage blocker. Enabling the master switch does not override source exclusions.
Asset mirroring blocked Check blob-store configuration. Reference asset failures do not prevent independent fixture/detail history. External asset URLs are not substituted.
Stopping persists Inspect unfinished ingest runs and worker health. An already-started atomic write may finish; new targeted requests are blocked.
Backfill failed or incomplete Inspect the phase error and per-match retry state. Fix source availability or identity mapping; the controller resumes without replaying completed stages.
No bookmaker observations Confirm an approved, verified competition mapping and configured worker. New league registration does not establish bookmaker support; historical odds require authentic archives.

Control snapshots refresh every 15 seconds and expire after 60 seconds for controlled leagues. Configuration outages therefore stop new retrieval once the last verified snapshot expires. Previously collected public data stays readable. Rollback stops the new workers/capability and retains stored data and checkpoints.

Source verification records are maintained in docs/soccer-expansion-manifest.v1.json: all 90 spreadsheet rows have independent dispositions. Recorded source pagination is evidence of accessible fixtures, not a production coverage measurement. Game, event, field and season coverage must be measured after administrator activation; publication and production deployment are separate release checks.

The verified expansion currently has executable fixture sources for 53 of the 61 new soccer competitions and 101 historical fixture jobs. Eight registrations remain source-blocked: European Championship qualifiers, AFC women’s Olympic qualifiers, UEFA/CONCACAF/CONMEBOL/AFC World Cup qualifiers, women’s World Cup intercontinental playoffs and senior men’s international friendlies. Their source identifiers or competition/category boundaries need further verification. Enabling a blocked registration displays its blocker; it does not start a guessed source. New competition bookmaker mappings and authentic historical odds archives also remain unverified.

Unfinished soccer seasons and WKBL weekly windows keep their historical checkpoints open. Re-enabling refreshes their fixtures before recovering missed details, including games played while retrieval was disabled. A completed fixture-list fetch alone is not evidence that a season’s results are complete.

등록된 대회와 실제 수집된 데이터는 구분됩니다. 추가 축구 61개 대회와 WKBL 정규리그·플레이오프는 수집 비활성 상태로 등록됩니다. 관리자가 활성화하기 전에는 해당 리그를 대상으로 수집하지 않습니다. 소스에서 확인하지 못한 항목은 차단 사유를 표시합니다.

관리자 Operations → Leagues에서 활성화 여부, 작업자 승인 상태, 마지막 수집 성공, 오류와 과거 데이터 진행 상황을 확인합니다. 정상 상태에서는 30초 이내에 활성화를 승인하며, 실제 데이터 제공 시점은 소스 응답과 호출 제한에 따라 달라집니다. 리그 활성화는 개별 소스나 북메이커 제외 설정을 변경하지 않습니다.

현재 경기와 식별 정보를 먼저 수집하고 과거 데이터는 저장된 진행 지점에서 이어갑니다. 비활성화 후에도 이미 수집된 데이터는 기존 API 동작에 따라 조회할 수 있습니다. 활성화 여부, 수집 중 상태와 시즌·단계·항목별 실제 측정 커버리지를 각각 확인하세요. WKBL 슛 좌표는 단위 확인 전까지 제공하지 않으며 교체 기록으로 복원한 로테이션의 완전성을 별도로 표시합니다. 운영 배포와 웹사이트 게시는 소스 변경과 별도로 검증해야 합니다.