juniorguru / junior.guru

The junior.guru website, Discord bot, and synchronization scripts
https://junior.guru
Other
42 stars 22 forks source link

Přesunout bota na ML (2021) #737

Closed honzajavorek closed 2 years ago

honzajavorek commented 2 years ago

Toto je veřejný plán přesunu bota na ML, který slouží mě a @miiila k organizaci práce.

📖 Situace

Scrapery vytváří tabulku employments, která kumuluje stará data ze záloh a měla by být ústředním centrálním mozkem pracovních nabídek. ML (čtení a zapisování) nebo API pro Czechitas (jen čtení) by mělo používat tuto tabulku, scrapery by měly ukládat do této tabulky, apod. V tabulce jsou kanonická historická i současná data, bez ohled na jejich následnou „užitečnost“. Zapisuje se tam, zda byla nabídka vybrána nebo vyhozena. Pokud v tabulce dochází ke změnám, do scraperu backups je potřeba dopsat adaptér, který „migruje“ staré tabulky, tedy vypořádá se se změnami a překlápí stará data do nových struktur.

To, které inzeráty se v daném buildu dostanou na webovky nebo do klubu, by měly řešit jiné tabulky, 1:1 navázané na tuto a vytvořené v každém buildu nově, ad hoc, podle aktuálních podmínek. Robot se podívá do mých Google Sheets, spojí si data s employments tabulkou a vytvoří do jiné splachovací tabulky 1:1 záznamy k inzerátům, které mají být zrovna vyvěšeny.

Ze záloh se do employments načítají data jak z minulých tabulek employments, tak jobs a jobs dropped. Nenačítá se do ní ale nic z aktuálního buildu, je to vždy jen z minulých buildů, z těch záloh. Zároveň jsem vytvořil zvlášť tyhle employments, aby mi dál fungovaly jobs postaru a nemusel jsem měnit vše najednou. Takže je v tom trochu binec. K tomu všemu ten backups scraper jede strašně dlouho a nesmírně to prodlužuje build. Bere teď všechny zálohy, které najde, snad všechny za poslední měsíc.

Prvním naším cílem tedy bude konsolidace, aby se vlastně dalo něco přidat a my se z toho úplně nezbláznili. Už teď je to tak komplikované, že je problém to udržet v hlavě. Až se to vyčistí, můžeme přidat ML, což pak už bude vlastně poměrně snadný úkol.

Jednak bude potřeba nějak sloučit employments a jobs a vyřešit, aby se employments nestahovaly věčnost. Potom máme 🌈 a můžeme přidat učení ML, apod. Pak můžeme ladit, tedy vyhodnocovat palečky z Discordu, nebo do Discordu házet i potenciálně juniorní nabídky (jednoduše, v titulku slovo junior), které ML vyhodnotilo jako že ne a vybraní lidé na nich budou hlasovat a tím hlídat i zahazování správných nabídek.

🚜 Nejkratší cesta k výsledku

🚫 Koš s body, které jsme objevili, ale teď je dělat nebudeme

honzajavorek commented 2 years ago

Jen tak pro info, teď ty employments zaberou 27.3min. Stahování inzerátů v jobs je 23.7min, ale to je řekněme adekvátní. Takže loadování tabulky ze záloh je pomalejší než všechny scrapery na pracovní nabídky :D

honzajavorek commented 2 years ago

Tak teď to (s keší teda, což není úplně fér srovnání), zabralo 0.9 minut místo 27.3 minut. Odškrtávám si první bot.

honzajavorek commented 2 years ago

Zavírám, máme teď https://github.com/honzajavorek/junior.guru/issues/862