Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

sémakisimítás #174

Open
connorhu opened this issue Jan 5, 2024 · 30 comments
Open

sémakisimítás #174

connorhu opened this issue Jan 5, 2024 · 30 comments

Comments

@connorhu
Copy link
Contributor

connorhu commented Jan 5, 2024

A repoban található dump pár helyen hibás.

  • Date és datetime default értéke nem lehet 0000-00-00... mert ez nem érvényes dátum/időpont. Helyesen, üresen kell hagyni a default értéket a sémában.
  • megye nem tartalmaz PRIMARY_KEY-t
  • oldalkeret nem tartalmaz PRIMARY_KEY-t (fooldal_id és modul_id mezők lehetnének, de a 10-29 páros duplikált. ahhoz, hogy tovább tudjak haladni töröltem az egyik feltöltést, de itt jó volna tudni, hogy mi a szándék, kell-e még egy mező a PK-ba)
  • osm_tags nem tartalmaz PRIMARY_KEY-t

egyébként a sémát lehetne tömöríteni is és akkor nem lenne ilyen nagy.

@borazslo
Copy link
Owner

borazslo commented Jan 5, 2024

Hát van rendrakni való. Sok mindent nem töröltem, mert nem mertem. (Ezért növeli a biztonságomat majd az unitest)

  • osm_tags - elvileg nincs szükség a táblára (osmtags megy helyette)

  • a Date és datetime javítandó igen

  • megye szintén

  • events, igenaptar, lnaptar, nevnaptar, szentek, unnepnaptar: valószínűleg használaton kívül. Ezek arra voltak főként, hogy ha speciális nap van akkor legyen arról infó. De ezt most a digitáils zsolozsmából nyerjük ki. És ha kéne igenaptar pontosabb részt, akkor azt majd a igenaptar küldő api-ján keresztül, nem magunktól

  • modulok, oldalkeret: még minden előtti időkből, halál rá

@connorhu
Copy link
Contributor Author

connorhu commented Jan 5, 2024

Ezt jó tudni, akkor itt csinálunk majd egy takarítást.

connorhu added a commit to connorhu/miserend.hu that referenced this issue Jan 7, 2024
connorhu added a commit to connorhu/miserend.hu that referenced this issue Jan 7, 2024
connorhu added a commit to connorhu/miserend.hu that referenced this issue Jan 10, 2024
@connorhu
Copy link
Contributor Author

Nem nyitok a kérdésnek új issue-t. A gondnokság tábla (Holder) tartalmaz historikus adatot vagy a templom és a gondnok között mindig 1:1 kapcsolat van?

@borazslo
Copy link
Owner

Egy templomnak akárhány gondnoka lehet. Minden gondnokságnak van egy állapota. De egy templomhoz tartozó egy személynek egyszerre csak egy állapota lehet. Jelenleg igazából ezeket nem jól használjuk: az allowed és az asked az jó és fontos. A többi között nincs jó különbségtétel. Met pl. azt hiszem saját maga nem is tud még lemondani. Mindegy, majd egyszer:

allowed': 'Enegedélyezett felelős',
'denied': 'Elutasított kérés',
'asked': 'Engedélyezési kérés',
'revoked': 'Visszavont engedély', -
'left': 'Visszalépett felelősök'

@connorhu
Copy link
Contributor Author

Mondd hogy mik a gondolataid ezzel kapcsolatban. Megcsinálom úgy.

@borazslo
Copy link
Owner

Állapotok:

  • "asked" : Kérte, hogy gondnok lehessen. Írta is, hogy miért. (Regisztrált felhasználó kérheti.)
  • "allowed" (vagy hasonlo): Ő a gondnoka a templomnak. Ott a szöveg, hogy miért. (Miserend admin és egyházmegye felelős állíthatja be. Akár úgy, hogy ez az illetékes jóváhagyta az "asked" állapotot. Akár úgy, hogy egyszerűen beállította, hogy ő legyen és kész.)
  • "revoked" (vagy hasonló): Nem gondnoka a templomnak. Ott a szöveg hogy miért. Az illető volt valamikor gondnok, vagy kérte a gondnokságot, de most nem gondnok. Lehet hogy nem hagyta jóvá egy illetékes (miserend admin vagy egyházemgye felelős), lehet hogy a személy maga mondta le "már nem én vagyok a plébános", lehet hogy admin/egyházmegye felelős vonta meg a jogkört, mert "maga kérte, mármáshol van" vagy "gazember, csak árt az ügynek"

Nem kezelt probléma, ami nem jelentős: ha a "hogy miért" mező mindegyiknél azonos, akkor ha valaki "revoked" kategóriába került mondjuk három éve, és aztán újra kéri és "asked" lesz, akkor a kérésénél beírt "hogy miért" mező felüliírja a régi "revoked" miértjét, és az "ez egy gazember enyje" estén probléma. De ilyen nagyon nagyon nagyon ritka lesz, és akkor úgyis letiltjuk a felhasználót a csudába.

(Lehetne annyira egyszerűsíteni, hogy csak "asked" és "allowed" van, de jól jön, ha tudjuk, hogy miért lett eltávolítva vlaki. Ha pl. a egy templomnak több gondnoka volt és egyik rákérdez, hogy a másik miért... Info: a gondnokoknak nincs joguk más gondnokságát változtatni.)

Hosszú távon: nem csak egy-egy templomnak lehet gondnoka, hanem egyházmegyéknek is (most a régi rendszerben egyházmegyei felelős még csak egy-egy személy, és később amikor a templom.plebania nem szöveges mező lesz, hanem klön adattábla belső relációkkal, akkor a plébániáknak is lehet egy vagy több gondnoka. De ezzel most ne törődjünk, működjön ami jelenleg van és akkor haladhatunk előre.

Köszi a csodát

@connorhu
Copy link
Contributor Author

connorhu commented Feb 1, 2024

osm táblának nem látom értelmét a templom mellett. a koordinátákat a templom is tárolja, más információ meg nincs benne. jól látom-e?

@borazslo
Copy link
Owner

borazslo commented Feb 1, 2024

Nem látod jól. Az osm tábla tökre fontos.

A koordinátákon kívül egyes templomok akadálymentességére vonatkozó adatait és az OSM-ből szerezzük be (és oda küldjük vissza). A későbbiek során pedig az alapítás évét, a pontos címet, és akár még a nevét is az OSM-ből ill. azt szikronizálva.

Az OSM adatstruktúránk olyan, hogy

  • osm.id = ahogy mi azonosítjuk az adott OSM izét (way/relation/node)
  • osm.type és osm.osm_id = ez közösen határozza meg hogy OSM oldalról ki is ő: https://www.openstreetmap.org/{type}/{osm_id}
  • és ott van még a koordináta adata (amit lehetne már koordinátaként tárolni mert oylat is tud a mysql)

Ezek az alapok, de aztán sok-sok tulajdonsága van minden egyes OSM izének. Ezek name: value formában vannak. Ilyen az OSM izé neve, wheelchair információk, és sok egyéb. Ezekez az osmtags táblában tároljuk. Itt a foreign_key az osm_type és az osm_id közösen.

A harmadik összetevő pedig a lookup_church_osm tábla. Ami összeköti, hogy melyik templom melyik osm izével egyezik meg.

Mi a templom koordinátája?

Hát ha van olyan OSM izé aminek van olyan osmtags-ja hogy "url:miserend" aminek az értéke, hogy "miserend.hu/templom/{saját_id}" akkor az OSM izének a lat.lng koordinátája. (Van még pár templom aminek nincs OSM izéje, de azok ötvenen vannak és halál rájuk, nem érdekel többé.)
Dehát ez tök sok JOIN mire meglesz!

Az mondjuk helyes lenne, ha minden alkalommal amikor OSM lehúzzuk az adatokat (általános cron osm frissítés vagy a konkrét templom editre betöltése) akkor ezt a megszerzett koordinátát átvinné a templomok tábla koordináta pozíciójába. De szerintem ezt nem teszi meg.

Most valami rettenet van, hogy amikor az eloquent betölti a church-öt akkor megpróbál létrejönni a church.location amiben van lat, lng, varos, orszag, egyebek. Ha van osm, akkor onnan veszi, ha nincs akkor templomok belső adatból. De közben létrejön a church.osm.tags is és benne a lat, lng, meg mindenféle. És aztán hol ezt hasnzálom, hol azt. Talán a legtöbb helyen a church.location-t már.

A helyes megoldás az lenne, ha meglenne, hogy a templomokhoz tartozik jó sok oszlop benne egy egyszerű adat amit az OSM adatokból generálunk és így naaaagyon gyorsan elérhetőek. Effelé hajlik a keyword_shortcuts állandóan generálódó tábla ami lerövidíti az utat a templom és az osm izé valamelyik name:value párosa között.

boundary

Az hogy egy templom melyik egyházmegye területén van (és később az is, hogy melyik ország és város területén) az szintén OSM adatból is jöhet (ha meg nem akkor fallback-el templomok.egyhazmegye -re).

Ezt úgy csináljuk, hogy az OSM adatbázisra küldünk egy API kérést az overpass api-val, hogy légyszi mond meg, hogy adot osm izé milyen területi osm izékbe tartozik vallási alapon. Pl. egyházmegye, meg espereskerület. És az overpass visszaad egy csomó OSM izét a hozzájuk tartozó osmtags-el (amiben ott a neve, meg a rangja meg ilyenek). Ezeket jól elmentjük az osms táblába és az osmtags táblába, hogy legyen meg. (Hmm, talán nem is lenne erre szükség?)

Az boundaries táblába is elmentjük ezek közül a legfontosabb name:value párosokat szépen legyártva jó sok fontos oszlopot. A lookup_boundary_church táblával meg összekötjük hogy akkor adott templomot mégis milyen dolgok vesznek körbe / hova tartozik. Azt hiszem, de itt bekavar a lookup_osm_enclosed és már nem tudom melyik melyik. :(

Ó, igazából itt is él az előző fejezet végi gondolat, hogy lehetne egy ilyen generálódó táblázat amiben egyszerűen ott van a lerövidítve a templom.egyhazmegye neve. (Ami lehetőleg osm-ből kiolvasva, de a "name" nevű kulcs nem biztos, hogy jó mert külföldon "name:hu" -kell, ha éppen van olyan...

És ez még mindig nem minden :D

miserend.hu/collection/{osm_type}:{osm_id}

Publicba még nem ment ki, csak adminoknak azt hiszem. De kísérleteztem azzal, hogy legyen egy olyan egyszerű nézet, hogy mondjuk Szeged összes templom, vagy a második kerületé, vagy a Bakonyé.

Erre azt találtam ki hogy adjunk meg az URL-be egy OSM izét (type:id párost). Akkor letöltjük annak a saját adatait (bele az osms táblába és az osmtags táblába) hogy pl, mi a neve meg ilyenek. ÉS letöltjük az overpass API-val hogy ennek az OSm izének a területén mely templomok vannak. Mehet bele a boundary-sba vagy az enclosed-ba. És akkor már csak egy szép felületre kell rakni és ripsz-ropsz készen vannak városi összefoglalók, amik nagyszerűek. És nem csak városokra, hanem bármilyen területi egységre amit ismer az OSM. És ez nagyon menő.

Ennyi

Szóval jól össze vannak itt a dolgok... És persze lehetne, hogy csak a "gyorsító" összekötő táblákat tartjuk meg és mindig frissen töltjük le az OSM adatokat és a válasz JSOn-ból csak a sázmunkra érdekeseket mentjük el. De valamiért így logikusabbnak és szebbnek hatott. Meg hát az biztos, hogy nem szabad minden alkalommal amikor egy felhasnzáló lekéri Szeged templomait, akkor nyolc opverpass API menetet nyomni. Legyen meg cache-ban. Vag y inkább akkor adattáblákban már. VAgyis...

Szóval ilyesmi.

@connorhu
Copy link
Contributor Author

connorhu commented Feb 1, 2024

Akkor viszont a templom szemszögéből nézve fölösleges valaki valahol, mert azok az adatok amik a templomban megvannak megvannak az osmben is (lat, lon, osmId, osmType). Vagy az egyik vagy a másik helyen fölöslegesen tárolódnak és létrejön egy fölösleges lekérdezés is (templom adatlap megjelenítéskor leszedi az osm-ből is az adatot és az osmtagból is, pedig a templom-ból már megvan neki a lat lon). Először arra gondoltam, hogy a templomban azért van a 4 mező, hogy legyen egy fix koordináta a templomhoz, legyen mi alapján letenni a pint. A waypointoknál a templom alaprajz kirajzolásához kellenek a koordináták és így a templom <=> osm o2m kapcsolatban van, de grouppolva az jött ki, hogy az osmid-osmtype vonatkozásában egyedi minden adat.

Értem én, hogy fontos adatot tárol, de tök fölöslegesen teszi két helyen.
Illetve az osm táblát is lehetne o2o módon id-val is kapcsolni a templomhoz.
Lekérdeztem a lookup_church_osm ami elvben arra szolgálna, hogy o2m kapcsolótábla legyen a két tábla között, 56 sort talált ahol duplikáció van:

SELECT * FROM lookup_church_osm
WHERE church_id IN (SELECT church_id FROM lookup_church_osm GROUP BY church_id HAVING count(*) > 1) 
ORDER BY church_id;

Az 56 sor nekem inkább tűnik hibának mint by design helyes működésnek:

SELECT church_id, CONCAT('https://www.openstreetmap.org/', osm.osmtype, '/', osm.osmid)
FROM lookup_church_osm
LEFT JOIN osm ON lookup_church_osm.osm_id = osm.id
WHERE church_id IN (SELECT church_id FROM lookup_church_osm GROUP BY church_id having count(*) > 1)

116 https://www.openstreetmap.org/node/3741752826
116 https://www.openstreetmap.org/way/508606619
163 https://www.openstreetmap.org/way/370495462
163 https://www.openstreetmap.org/relation/6775978
332 https://www.openstreetmap.org/way/371360583
332 https://www.openstreetmap.org/way/404085264
427 https://www.openstreetmap.org/node/3769875312
427 https://www.openstreetmap.org/way/524934152
431 https://www.openstreetmap.org/way/371483545
431 https://www.openstreetmap.org/way/393581332
649 https://www.openstreetmap.org/node/2777217311
649 https://www.openstreetmap.org/way/427808696
963 https://www.openstreetmap.org/way/371901574
963 https://www.openstreetmap.org/way/547265063
1202 https://www.openstreetmap.org/node/2302381305
1202 https://www.openstreetmap.org/way/464314964
1236 https://www.openstreetmap.org/way/263889935
1236 https://www.openstreetmap.org/way/521544450
1450 https://www.openstreetmap.org/way/243689215
1450 https://www.openstreetmap.org/way/549685951
2297 https://www.openstreetmap.org/way/164953845
2297 https://www.openstreetmap.org/relation/7177760
2618 https://www.openstreetmap.org/way/331489691
2618 https://www.openstreetmap.org/way/513344110
2999 https://www.openstreetmap.org/node/1372557409
2999 https://www.openstreetmap.org/way/408875941
3229 https://www.openstreetmap.org/node/3446587527
3229 https://www.openstreetmap.org/way/495666482
3719 https://www.openstreetmap.org/node/2293400553
3719 https://www.openstreetmap.org/way/450752561
3742 https://www.openstreetmap.org/node/3437148765
3742 https://www.openstreetmap.org/relation/7544492
3755 https://www.openstreetmap.org/node/3473677595
3755 https://www.openstreetmap.org/way/508963009
3773 https://www.openstreetmap.org/node/3485189310
3773 https://www.openstreetmap.org/way/496330029
4854 https://www.openstreetmap.org/way/307369660
4854 https://www.openstreetmap.org/node/2943949360
5030 https://www.openstreetmap.org/node/3448566121
5030 https://www.openstreetmap.org/way/171631959
5031 https://www.openstreetmap.org/node/3448565442
5031 https://www.openstreetmap.org/way/532312624
5032 https://www.openstreetmap.org/node/3448565475
5032 https://www.openstreetmap.org/way/196715325
5037 https://www.openstreetmap.org/way/255513337
5037 https://www.openstreetmap.org/way/494764304
5042 https://www.openstreetmap.org/relation/4149604
5042 https://www.openstreetmap.org/way/187243312
5073 https://www.openstreetmap.org/node/3489640930
5073 https://www.openstreetmap.org/way/446088788
5129 https://www.openstreetmap.org/node/3456439187
5129 https://www.openstreetmap.org/way/399598537
5130 https://www.openstreetmap.org/node/3445506392
5130 https://www.openstreetmap.org/way/481395854
5156 https://www.openstreetmap.org/node/1846889148
5156 https://www.openstreetmap.org/way/394142345

@connorhu
Copy link
Contributor Author

connorhu commented Feb 1, 2024

@borazslo
Copy link
Owner

borazslo commented Feb 1, 2024

tl;dr: Én támogatom, hogy írtsd a felesleget és egyszerűsíts. :D

  • Azért is volt eddig így a koordináta duplikáció, mert még csak pár hete mondtam ki magamba, hogy az a 53 misézőhely, aminek nincs még OSM megfelelője és így koordinátája menjen a levesbe. Majd ha valakiknek hiányzik, akkor felvisszük, de ennyi ügyetlen adatért nem érdems duplázást és túlkomplexitást megtaratni. Szóval pusztuljon!
  • Az 56 duplikátum vagy mi jelentős része nyers hiba. Van olyan is, hogy templom és a kápolnája is megkaptam OSM-ben az url:miserend-et mert egy miserend oldalon van szó mindkettőre. De ha komlyan vesszük akkor ez is hiba, mert legyen külön miserend.hu lapja, ha tényleg két misézőhely. Szóval pusztuljon mind!

@connorhu
Copy link
Contributor Author

connorhu commented Feb 2, 2024

Ha soha nem szeretnénk a templom alaprajzát megjeleníteni, akkor (jelenlegi ismereteim szerint) tulajdonképpen az OSM tábla és a kapcsolótáblája kuka. A metaadatokhoz (tags) bővítsük fel a church táblát plusz x mezővel és kerüljenek át oda. Accessibility pl mindenképpen, de meg kell nézzem milyen tag-ek vannak.

További kérdés, hogy a templom idegen neveit nem akarjuk-e soha megjeleníteni. A symfonyban van eszköz a lokalizációra, és lehet csinálni fordítást, minimum az anoním módon elérhető felületekről, segítve ezzel a hazánkban élő / ide látogató embereket.

@connorhu
Copy link
Contributor Author

connorhu commented Feb 2, 2024

(rákerestem a máriabesnyői templomra és egybe van rajzolva a templom a rendházzal. Szóval szép gondolat az alaprajz, de ha ilyen alapossággal rajzolták meg akkor inkább meh mint hasznos)

@connorhu connorhu changed the title sémahibák sémakisimítás Feb 2, 2024
@connorhu
Copy link
Contributor Author

connorhu commented Feb 2, 2024

Következő merényletem a distances tábla ellen van, ami tulajdonképpen ez:

SELECT c1.nev, c1.id, c2.nev, c2.id, st_distance_sphere(point(c1.lon, c1.lat), point(c2.lon, c2.lat)) distance_in_meter
FROM templomok c1
LEFT JOIN templomok c2 ON c1.id <> c2.id
WHERE c1.id = 408 AND c1.lat IS NOT NULL AND c1.lon IS NOT NULL AND c2.lat IS NOT NULL AND c2.lon IS NOT NULL
ORDER BY distance_in_meter
LIMIT 10;

Kuka?
A távolság számolgatás elmentésének akkor látnám értelmét, ha nem két pont közötti légvonalban mért távolságot értenénk, hanem gyalogos útvonaltervezést.

@connorhu
Copy link
Contributor Author

connorhu commented Feb 2, 2024

@borazslo
Copy link
Owner

borazslo commented Feb 2, 2024

Pontosan és ezért is van distances. :D Csak üzemen kívül. :(

A cél, hogy minden misézőhelyhez meglegyen, hogy körülötte kik a legközeli misézőhelyek. A mapquest API-val szép lassan ki lehet számolni minden útvonal távolságot: mondjuk 1 km légvonal fölött autósat, az alatt gyalogosat. A cronban van egy distances számolás, amikor először leszűkítjük befoglaló dobozzal a lehetséges templomokat, aztán számolgatuk a mapquest API-val és ilyenek.

Csakhogy jóóóó sok kell belőle, ami az elhibázások miatt ki-kimerítette az ingyenes keretet. (Bár ha jól működik fizetek én érte.) Illetve kissé bonyolult lett, hogy mikor frissítsünk milyen távolságokat. Szóval, hogy kell olyan metódus, hogy ha az OSM-ről új koordináta érkezik egy templomhoz akkor törlődjenek a távolságok ami az adott templomot érinti. De akkor újra kell számolni, hog ykik a közeli templomok, és nem csak annak a templomnak, hanem mindegyiknek ami potenciálisan érintett lehet. És mivel hibák esetén száz kilométert is jelenthet a változás, így a régi pont és az új pont körül is sok újraszámítás kell.

Ezt nem sikreült optimalizálni. És a mapquest API ha kifutott a lehetőségből csak dobta a hibát mert még nem szereltem meg, hogy szép üzenet legyen és ne zavarjon. Viszont kiderült, hogy már a mysql nagyon gyorsan tud számolni st_distance_sphere()-t, ezért ideiglenesen (ha-ha) kiiktatásra került a distances és jelenleg nem használjuk.

@connorhu
Copy link
Contributor Author

connorhu commented Feb 2, 2024

És ha átcuccolunk az openrouteservice.org-ra?

@borazslo
Copy link
Owner

borazslo commented Feb 2, 2024

Ha soha nem szeretnénk a templom alaprajzát megjeleníteni, akkor (jelenlegi ismereteim szerint) tulajdonképpen az OSM tábla és a kapcsolótáblája kuka. A metaadatokhoz (tags) bővítsük fel a church táblát plusz x mezővel és kerüljenek át oda. Accessibility pl mindenképpen, de meg kell nézzem milyen tag-ek vannak.

Én úgy csinálnám, hogy a church táblát bővíteném akkor az osm_type és osm_id mezőkkel. A rendszernek tudnia kell, hogy melyik OSM izével vagyunk összeköttetésben. Azért hogy ellenőrizzük, azért is hogy módosításkor tudjuk küldeni az adatokat.

És aztán egy másik/új egyszerű church_id primary key-el rendelkező táblába tenném bele mind azt a plusz x extra mezőt, amit mindig az OSM-ből töltünk fel és töltünk vissza. Mert ez 15+ mező lesz pillanatok alatt.

További kérdés, hogy a templom idegen neveit nem akarjuk-e soha megjeleníteni. A symfonyban van eszköz a lokalizációra, és lehet csinálni fordítást, minimum az anoním módon elérhető felületekről, segítve ezzel a hazánkban élő / ide látogató embereket.

Lehet, de akkor mégsem jó az előző terv. Mert mondjuk az OSM-ből lehúzzuk a templom nevét olykor 15 nyelven, akkor eleve létrehozunk 15 mezőt/oszlopot a church táblában? Van egy-két templom ahol van ennyi név. Vagy korlátozzunk magunkat, néhányra?

@borazslo
Copy link
Owner

borazslo commented Feb 2, 2024

És ha átcuccolunk az openrouteservice.org-ra?

Részemről lehet. De azért itt is figyelni kellhet. Ha minden és midnen között számolunk, akkor 5000 misézőhely x 5000 misézőhely. Ami tök sok. És sok idő is kiszámolni. Még jó hogy nem kell midnent. Szóval kell beléje logika, csak könnyebb ezzel. Átállhatunk.

@connorhu
Copy link
Contributor Author

connorhu commented Feb 2, 2024

#172 issue kapott pár ötletet és közben megtaláltam, hogy van forráskód is az ors-hez.

@connorhu
Copy link
Contributor Author

connorhu commented Feb 6, 2024

Valahol olvastam egy olyan gondolatot, hogy azért olyan amilyen a miserend sémája és logikája, hogy lássad a változásokat. Nem találom, hogy ezt hol írtad, de mi volt ezzel a cél? Kíváncsiság vagy egyfajta audit?

@borazslo
Copy link
Owner

borazslo commented Feb 6, 2024

#144 -ben írtam. Szituációk:

  • Felhasználó / vendég jelzi, hogy módosult a miserend. Jelenleg egy szöveget írt üzenetként. Cél: maga át tudja kattintgatni a miserendet. Aztán rányom egy "beküld" gombra és az illetékesek (miserend admin, egyházemgye felelős, tmeplom gondnokok) kapnak egy emailt, hogy íme változást javasolnak. És ilyenkor fontos látni, hogy mi is a változás a javaslatban. Majd ha jó az, akkor egy gombbal elfogadjuk.
  • De ha az egyik illetékes már elfogadta a változást, akkor a másik illetékesnek kell hogy meg tudja nézni, hogy mi is volt itten a változás. Szóval egyféle audit, hogy - mivel többen szerkesztik a miserendeket - lássuk a változásokat.
  • +1 aranyos dolog de nem lényeges: Az a hosszú távú adatgyűjtés: 2024 január 1-én x templomban összesen y mise volt. 2025 január elsején már csak kevesebb.

@connorhu
Copy link
Contributor Author

connorhu commented Feb 6, 2024

Rendben! Elgondolkodom, hogy ezt milyen meglévő eszközökkel lehetne megcsinálni. Auditra nagyon sok eszköz van, de itt tulajdonképpen adott esetben rollback-re, módosításra és jóváhagyásra is szükség van anélkül, hogy az alap miserend kirajzolása végtelenül bonyolulttá válna.

@borazslo
Copy link
Owner

borazslo commented Feb 6, 2024

Közben a Wiki-be bekerük az emails és a crons tábla. Utóbbiba felsorolva azt is, hogy melyik benne lévő sor/függvény mit is kéne hogy csináljon.

@borazslo
Copy link
Owner

borazslo commented Feb 6, 2024

anélkül, hogy az alap miserend kirajzolása végtelenül bonyolulttá válna.

A #144-ben még írom hogy a a) mostani miserend adat struktúra igazából rossz. b) Konkrét miséket (pl. hogy holnap mikor lesz mise) amúgy is opcionális icals -ból jött adatokkal is kell keresni. Szóval bonyolultnak tűnik, de úgy "érzem", hogy évek szenvedése után egy soooookkal átláhatóbb, tisztább, és működőképesebb logika van mögötte. Én szeretem, de meggyőzhető lehetek.

@connorhu
Copy link
Contributor Author

connorhu commented Feb 6, 2024

Egyrészt a mező szintű változásokat egy audit táblába külön kell rakni és az alapján követhető, hogy mikor mi változott. Másrészt az anoním javaslatot egy önálló miserendként kell elmenteni mint draft. Két miserendet össze kell tudni hasonlítani és amikor jóváhagyják a javaslatot akkor az kb rámentődik az élesre (amivel triggerel egy frissítést, csak azok a mezők változnak amik ténylegesen különböznek és így az audit táblába is azok kerülnek be amik változtak). Ezt követően a draft kukába kerül, mert érvényre jutott. És ez még nem a szerkezeti szintű kérdések, ez csak az üzleti logika. A jelenlegi rendszerban azt látom egyik problémának, hogy nem ismeri a unit of work patternt és emiatt minden mindig frissül (ha jól értettem a korábbi leírásodból).

connorhu added a commit to connorhu/miserend.hu that referenced this issue Feb 21, 2024
borazslo pushed a commit that referenced this issue Feb 21, 2024
… szentek, unnepnaptar, updates táblák törlése #174 (#221)
@MMate2007
Copy link
Contributor

MMate2007 commented May 19, 2024

A 0000-00-00 és a 0000-00-00 00:00:00 értékekkel mi legyen? DB migrációk nem jönnek össze miatta, emiatt build konténer nem teszi rendesen a dolgát.
Vagy akár lehetne az alapértelmezett érték (főleg a created_at, registered_at oszlopoknál) a CURRENT_TIMESTAMP.

@borazslo
Copy link
Owner

Alapvetően simán lehet NULL a legtöbb helyén. Egy rossz gyakorlat ragadt be még sok-sok évvel ezelőttről. És jogos, hogy a created_at és registered_at világoknál a CURRENT_TIMESTAMP jó dolog. De szerintem el kell viselnünk ott is a NULL-t (amiko az "időszámításunk" előtt jött létre valami. ) Pusztítsuk mi feleslehes

@MMate2007
Copy link
Contributor

Elkezdtem dolgozni rajta. A dumpban NULL-ra cseréljem a 0000-00-00 00:00:00 és a 000-00-00 értékeket, vagy valami fiktívre?

@borazslo
Copy link
Owner

Szerintem NULL-ra

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants