Jak to funguje

Web pravidelně prochází kalendář výsledků Českého atletického svazu, stahuje výsledkové listiny jednotlivých závodů a ukládá je do databáze PostgreSQL. Nad ní pak můžeš procházet závody, atlety, oddíly a tabulky.

1Kalendář

Úloha scan načte kalendář výsledků za aktuální a minulý měsíc (venkovní HL i halová HA sezóna). Každý závod s odkazem na výsledky zařadí do fronty.

2Fronta

Závody čekají ve frontě. Novější a čerstvé mají přednost, historie se dotahuje s nižší prioritou. Závody z posledních 10 dní se stahují znovu, protože pořadatelé výsledky ještě opravují.

3Výsledky

Úloha process stáhne hlavičku závodu a celou výsledkovou listinu, rozebere disciplíny, kategorie, rozběhy, finále, víceboje i štafety a výsledky závodu v jedné transakci nahradí.

4Atleti a oddíly

Atlet se páruje podle ČAS ID (EAN). Bez něj podle jména, ročníku a oddílu. Když atlet ID později dostane, záznamy se spojí. Úloha members načte registr členů oddílu Moravská Slavia.

Plán úloh (cron)
KdyPříkazNaposledy
7,37 * * * *python -m atletika scan
Kalendář výsledků – aktuální a minulý měsíc, venku (HL) i hala (HA)
28. 10. 2026 22:37
*/10 * * * *python -m atletika process --limit 40
Fronta závodů – stáhne a uloží výsledky dalších závodů
28. 10. 2026 22:50
20 */2 * * *python -m atletika backfill --months 2
Historie – projde další starší měsíce kalendáře (zpětné dotažení)
28. 10. 2026 22:20
15 4 * * *python -m atletika members
Registr členů oddílu (Moravská Slavia) + doplnění pohlaví
28. 10. 2026 21:12
45 3 * * *python -m atletika backup
Záloha databáze (pg_dump do /backups, drží 14 dní)
28. 10. 2026 21:13
Čas je pražský. Ručně: docker exec atletika-cron python -m atletika <příkaz>, např. event 88254 stáhne jeden konkrétní závod.
Co se odkud stahuje
POST /kalendar/vysledky/0seznam závodů za měsíc a typ sezóny (HL/HA), odkazy na výsledky
GET /vysledky/{id}/0/6hlavička závodu: název, datum, místo, pořadatel
GET /vysledky/{id}celá výsledková listina (všechny disciplíny, běhy, souhrnné výsledky)
POST /clenska-sekce/atleti/AthleteData/registr atletů (členové MOSBR, TeamID 1106)
GET /vysledky-atleta/{rok}/{EAN}karta atleta, odtud kategorie (pohlaví), když ho neznáme z výsledků
Mezi požadavky je pauza 1.5 s, aby se server ČAS nezatěžoval. Každý požadavek se zapisuje do logu ve frontě.
Pokrytí historie
Úloha backfill postupně prochází starší měsíce kalendáře až do 2015-01.
RokMěsíců HL / HAZávodůStaženoVýsledků
20264 / 4933 52 % 68 211