Closed celuchmarek closed 2 years ago
@jsuchal , tuto je draft. Treba ešte minimálne doparsovať aj dokumenty a isvs (ak je to v projektoch ok), dotiahnuť čísleníky a doplniť tú tabuľku s RF údajmi k projektu.
@celuchmarek až to bude tak to prehodnotiť z draft na ozajstny pr
@jsuchal pridal som tie ciselniky. Ten program
ale neni moc číselník, je to program, ktorý vie mať viac rôznych atribútov niekedy. A teoreticky sa tam vedia meniť veci. Ale myslím si, že to nie je niečo tak, k čomu by sme chceli mať staršie verzie.
A ešte budem dorábať testy.
Dorobil som testy
@jsuchal ping
Máme 3 modely:
Project
,Isvs
,Document
. Projekt má niekoľko Isvs a oboje majú svoje dokumenty.V docu sa spomínali aj ďalšie atribúty, ktoré by sa pridávali už potom manuálne v procese RF. To by som vytvoril osobitný model s referenciou na Project.
raw_data
Bavili sme sa, že v prvom rade chceme uložiť do DB surové dáta, aby sa nám aspoň nejaké info uložili, ak by to pri parsovaní nejako spadlo. Tak som to spravil tak, že v prvom rade sa uloží celý JSON objektu do
raw_data
a až potom sa ide parsovať. (Toto je možno zbytočné, keďže pri parsovaní nevadí, keď nejaké atribúty chýbajú a iný dôvod na spadnutie mi momentálne nenapadá.)Názvy atribútov
Čo som pozeral, tak veľká časť datahub databázy má atribúty v slovenčine. Preto aj v tejto MetaIS schéme som vyrobil slovenské atribúty. Ale dá sa to v pohode zmeniť, ak to chceme v EN.
Čo a odkiaľ zbierame
Okometricky odhadujem, že na pozadí MetaIS je nejaká grafová databáza. Všetky objekty totiž majú svoje
uuid
a v API responsoch vidno popis okolitých orientovaných hrán. Podľa tohtouuid
sa dajú získavať info o objektoch, takže si ho tiež ukladáme popri našom PKid
.V
sync_all_projects_job.rb
dostávame všetky projekty v MetaIS. Z tohto response sa ťahajú všetky atribúty samotného projektu. Ďalej sa podľa jehouuid
získa zoznam súvisiacich Isvs a Dokumentov. Ku každému Isvs sa potom tiež získava zoznam Dokumentov. Dokumenty majú niektoré info už v zozname dokumentov, ale ku každému dokumentu sa ešte ťahá taký jeho detail (tam sú ďalšie metadáta ako filename alebo contentlength).Atribúty o projektoch, ktoré parsujeme, sú vybrané podľa obidvoch dokumentov ohľadom tohto MetaIS konektora.
Paper_trail - versioning
Link na github
Vybral som to na základe tejto stránky.
Tento gem by som chcel použiť na sledovanie/ukladanie zmien. By default to na vybraných modeloch ukladá info o zmene vždy, keď ruby niečo do tohto modelu zapíše (bavíme sa o konkrétnej inštancii, napr. jeden update na konkrétny projekt).
V sledovaných modeloch (Project, Document, Isvs) to v databáza v tabuľke nič nespraví. Pridá sa do databázy v public nová tabuľka
versions
, kde jeden záznam je jedna zmena jedného objektu. Ukladá sa vždy celý objekt v moment pred zmenou (čo môže byť nevýhoda, že zaberie zbytočné miesto) a tiež zmeny - zoznam atribútov s hodnotami pred a po.V ruby sa potom cez
objekt.versions
alebo podobne dá pristupovať k starším verziám, zmenám, atď.Z tabuľky versions potom vieme aj ľahko zistiť, čo sa zmenilo za posledný čas.
Ako updatovať
Ja si predstavujem, že budeme zakaždým (raz denne) spúšťať zber všetkých projektov z MetaIS (asi 800 ich je teraz) a vždy sa to rovnakým spôsobom sparsuje. Ak sa nič nezmenilo, nič sa nezmení ani v databáze. Akurát takto by sme nezistili, ak by nejaký projekt z MetaIS zmizol, ale nemyslím si, že toto je reálna možnosť.
Tiež by sme týmto spôsobom nezistili, ak by nejakému objektu zmizli súvisiace objekty - zisťovali by sa zmeny iba u tých, ktoré na MetaIS existujú. Toto by sa ale dalo ošetriť tak, že ku každému projektu si uložíme aj raw celý zoznam dokumentov a isvs.
Číselníky
Tie bude treba tiež dotiahnuť. Pozeral som na číselníky v Itms, ale moc som tomu ešte nerozumel, čo sa tam čarovalo.
structure.sql
V tomto súbore mi pribudlo strašne veľa riadkov. Možno to bude tým, že som tú DB pôvodne vytvoril samotným datahubom a že v harvesteri nebola celá štruktúra. Zrejme sme tu schválne mali iba štruktúru použitých modelov v harveteri. Hm.
Testy
Zdanlivo nesúvisiace 3 testy z Itms failujú. To sa ešte vyrieši aj s nejakými testami tohto MetaIS zberača.