fi-ksi / web-backend

Backend for KSI web written in Python.
MIT License
8 stars 3 forks source link

Nastavování prerekvizit pomocí jména adresáře #197

Closed esoadamo closed 10 months ago

esoadamo commented 10 months ago

Současný stav

V tuto chvíli vypadá tradiční soubor s metainformacemi o úloze jako:

{
    "author": 21,
    "date_deadline": "2050-01-01",
    "prerequisities": "10 && 15",
    "icon_ref": 10,
    "version": "1.0"
}

Kdy backend při deployi nastaví úlohy s ID 10 a 15 jakožto prerekvizity.

Proč toto není ideální

U vln, které se často přesouvají do nového ročníku (např. 0. vlna) se musí pokaždé měnit manuálně prerekvizity všech úloh. Tato práce je manuální, nudná a náchylná k lidské chybě.

Co navrhuji

Jako doplněk k odkazu pomocí ID bychom mohli do prerekvizit psát i jména adresářů úloh, která bývají v rámci ročníku unikátní:

{
    "author": 21,
    "date_deadline": "2050-01-01",
    "prerequisities": "uloha_16_outdoor_uloha && uloha_17_multiple_texts",
    "icon_ref": 10,
    "version": "1.0"
}

Backend při deployi poté vyhledá úlohy, které mají git path končící daným adresářem a zároveň jsou v současném ročníku. Díky tomu se při přesouvání vlny do nového ročníku nemusí pokaždé manuálně měnit ID prerekvizit, protože jméno adresáře zůstane stejné, což ušetří spoustu mechanické práce a zmenší prostor pro lidské chyby.

Bonus

Poměrně často se stává, že prerequisities má být string a napíšeme jedinou prerekvizitu jako číslo, což při deployi způsobí poměrně kryptickou hlášku. Nově je i zadávání jediné prerekvizity jako čísla s ID validní syntax:

{
    "author": 21,
    "date_deadline": "2050-01-01",
    "prerequisities": 11,
    "icon_ref": 10,
    "version": "1.0"
}
esoadamo commented 10 months ago

Lokálně otestováno jako fuknční, po approve bych nasadil na prod, ideálně ještě pro letošní 0. vlnu.