MÁV és az óraátállítás
Posted by Benceking24@reddit | programmingHungary | View on Reddit | 52 comments
Ritkán használom a MÁVot de tegnap sikerült egy újat mutatnia. 2025.10.26 délelőtt vettem jegyet hazafelé vonatra majd sikeres tranzakció után zsebrevágtam a mobilt. Peronon várakozva azért ránéztem a jegyeimre és akkor láttam hogy egy órával későbbi vonatra adta a MÁV+ Android app a jegyet. Gondoltam én vagyok a béna és rosszat választottam ki ezért újra végig csináltam a vásárlást most figyelve hogy minden lapon jó időpontot ír az alkalmazás tranzakció előtt. Ehhez képest másodjára is ugyanúgy egy órával későbbi járatra adott úgy hogy azt egyszer se jelezte hogy nem tud a kijelölt járatra. (Se nem volt teli a járat és csak menetjegyet akartam venni nem is helyjegyet...)
Mivel kevés volt az idő indulásig jegypénztárban vettem jegyet ahol ámult a pénztáros hogy csak prémium plusz helyjeggyel együtt tud menetjegyet adni ami így 3x annyiba került mint normál esetben.
Én nem tudtam elképzelni, hogy esetleg nem UNIX időként dolgoznak a dátumokkal vagy a megjelenítésnél rontották el a formátumot de esélyes hogy tényleg az óra visszaállítást nem kezelték le kézzel?! én voltam balek hogy a feláras jegyet adták el nekem?
(Írtam panasz bejelentést de hát szokásos 1 hónapos határidőt írták kíváncsi leszek milyen indokkal másznak ki a kártérítés alól)
Benceking24@reddit (OP)
Update: ma 25 nap után válaszoltak először a levelemre amit a hiba után pár órával küldtem, hogy a két hibás tranzakciót visszautalják viszont a drágább jegypénztári jegy kapcsán semmilyen térítést nem nyújtanak. Várom, hogy a folyósítás is egy hónapba fog-e vajon telni.
Benceking24@reddit (OP)
Update #2: eltelt 4 teljes munaknap a válaszuk óta és továbbra se érkezett meg az utalás, és jobban átnézve a levelüket nem tettek említést határidőre, hogy mikor utalják azt az óriási 7 ezer forintú összeget. Megpanaszoltam válaszolva, kíváncsi vagyok ez is 1 hónapig fog-e tartani mint az előző válaszuk...
Szunyog_a_sarokban@reddit
Valahol volt erről már poszt, ezek ennyire balfaszok, hogy egy óraátállítást sem tudnak megugrani szoftveresen.
Halal0szto@reddit
Mondjuk azt, hogy nem is triviális, de ezért vannak a szeniorok egy projektben.
Az, hogy a váltáson átívelő dolgok extra gondolkozást igényenek az alap. De hogy a váltás másnapján napon belül nem működött rendesen, az azt jelenti hogy az aktuális verziót téli időszámítással nem is tesztelték egyáltalán. Nem a váltást kezeli rosszul, hanem a telet kompletten.
arzenal96@reddit
Szerintem ez nem egy nagy problémakör.
Szerver oldalon elég mindent UTC-ben tárolni és kliens oldalon local time-ként megjeleníteni. Ezt bármilyen normális keretrendszernek illene támogatnia.
ytg895@reddit
azt gondolnám, hogy a senior nem azért van a projekten, hogy mindenkire rászóljon, hogy a cipőfűzőjét kösse be, és ne tároljon stringben timestampet időzóna megjelölése nélkül. másrészt viszont most elszomorodtam, mert belegondoltam hány seniort ismerek, akik ugyanúgy letárolják időzóna nélkül a timestampet stringbe, aztán lesnek, hogy mi ment félre mikor már számolni kellett vele.
Halal0szto@reddit
Nem az a kérdés hogy hogyan tárolja le. Hanem hogy a design során felfogta-e hogy ezzel foglalkozni kell, és hogy milyen tesztelési tervet talált ki az ellenőrzésére.
A dolog sokkal bonyolultabb annál, mint hogy timestamp vagy timestamp with timezone amit eltárolunk.
Könnyen beszélek, sokat kellett ezzel foglalkoznom, órákat tudnék róla mesélni. Egy ilyen jegy téma nem nagyon bonyolult, de ott is ésszel kell lenni. Teljesen naiv hozzáállás az user helyi ideje szeirnt írni bármit. Mindig minden időpontot azon időzóna szerint szokás kiírni, ami akkor érvényes ott, ahol a jármű van. Pl ezért van az, hogy a Bukarest-Budapest repülőút a jegyen levő időpontok szerint csak fél óra. De létezik olyan utazás, ahol az indulás dátuma kisebb mint az érkezésé.
Tradizar@reddit
lehet én vagyok a túl béna backendes, de... az adott vonatnak gondolom van egy id-ja, ami mindenfajta időzónától különbözik. Miért nem azzal kommunikál minden ha rá kell mutatni egy konkrét vonatra?
Benceking24@reddit (OP)
Valószínűleg a vonat azonosítása jó volt csak a felhasználó mint én nem id-t választ ki vonatok között hanem egy grafikus elemet aminek az ideje viszont nem úgy lett megjelenítve mint ami mögötte a valós adat (vagy még lehet az is el lett szúrva... Ki tudja)
Benceking24@reddit (OP)
Pontosabban az az igazán érdekes kérdés hogy egy országon belüli szolgálatás esetén miért nem szerver oldali az időzóna is és akkor a azonosító és indulás érkezés közt fix kapcsolat lenne? (Persze vannak nemzetközi járatok de az a MÁV kicsi része csak)
Halal0szto@reddit
Mert ahhoz pl UX szinten fel kellene fogni, hogy a kiírt dátuk az user saját pillanatnyi helye alapján értendő, vagy a vonat helye alapján.
Pl browserben általános, hogy a backendtől UTC jön, és a browser konvertálja az user saját timezonejára. És mi történik? A fuser születésnapja március 12, de miven idő nincs, hát nulla óra nulla perc. A browserben ez tél-nyár függően március 12 hajnali egy vagy két órává változik, de mivel az időt nem írjuk ki, nem tűnik fel senkinek. Aztán megjelenik az első user, aki egy mínuszos zónában van. És neki rosszul írja ki a szülinapját, mert az előző napot írja ki.
Ok-Scheme-913@reddit
Amúgy így általánosságban ajánlom mindenkinek a témában átnézni egy "modern" date-time libet, mint például a Java "új" api-ja, ami alapján az újabb nyelvek lib-je is készült (rust, js temporal API, stb).
Ott szándékosan más egy dátum, egy dátum és idő, vagy egy időpillanat. Mindehhez szépen hozzájönnek az időzónák (nem is lehet szabadon konvertálni a fentiek közt időzóna nélkül), a különbség időintervallum és két dátum közt (1 hónap előre ugrást nem időben értünk, mert akkor megint előjönnek a hasonló finomságok), stb.
Szóval egy modern API kifejezetten tereli is a felhasználót a jó irányba, majdhogynem elég tudni, hogy "ne a régi Date-et használd" a legtöbb nyelvben. De ehhez minimum az kell, hogy tudd hogy ezek léteznek.
Halal0szto@reddit
Ahhoz, hogy egy okos libet használj, muszáj érteni mi történik, és fel kell tudni tenni a jó kérdéseket. Nincs ultimate jó irány, a helyes irány csak a probléma megértése által található meg. Abból jönnek ki a hoppák, hogy mindenféle dolgok terelik a fejlesztőt és úgy lép bele a szarba hogy azt sem tudta merre jár és miért ment arra.
Milyen dátum van Január 30-adika után egy hónappal? Ha a product owner/elemző nem tud erre válaszolni, akkor tökmindegy hogy a lib mit mond erre. Ha nem tetszik nekik amit a lib csinál, mivel indokolod? A tervezés során mondhatjuk, hogy a lib szerint ez a default működés, jó lesz-e így, de ehhez az kell hogy értsük mi történik, ne vakon ráhagyjuk magunkat a libre, és hogy a tervezés során legyen kommunikáció.
Ha születik egy gyerek New Yorkban január 10edikén 3:15amUTC, és egy másik Budapesten január 10edikén 2:45amUTC, akkor melyik az öregebb, melyik az elsőszülött? Ez nem egy matek kérdés, hanem egy jogi kérdés, nem libek dolga eldönteni hogy ki örököl.
Ok-Scheme-913@reddit
Persze, minél jobban ért hozzá az ember annál jobb.
De ha néz, hogy az Instantból nem tud csak úgy egy "normális" dátumot csinálni, csak timezone-nal, akkor ez a plusz akadály legalább elgáncsolhatja abban, hogy zsigerből szarul kezelje le és a lehetőség megvan, hogy elgondolkodik a problémán.
Ugyanez a helyzet a toUpper/LowerCase-el, ahol pl a török nyelv miatt rengeteg hiba van (van pontos és pont nélküli i, de a nagybetűs verzióban nincs különbség köztük), ahol az újabb api-k már várnak egy explicit lokált hogy mi szerint történjen az átalakítás (az implicit env változós lokál helyett)
Halal0szto@reddit
Az implicit az OSből vesszük a local-t azt hagyjuk. Szerencsére már a múlt, de volt egy évtized amikor általános volt hogy a jvm felvette a unixtól, az appserver a jvm-től, a backendem az appservertől. És nekem jöt a ticket, amikor valaki az ops-ban jó ötletnek tartotta a szerveren megváltoztatni az appservert futtató user locale-ját.
Tradizar@reddit
dotnetben pl régóta van dateonly típus, ami nem tartalmaz időt, csak dátumot
Dear_Potential5151@reddit
Lehet ezt a témát csűrni-csavarni, de ez durvára nem egy bonyolult feladat, csak át kell gondolni (majd beimportálni mások által lefejlesztett, tesztelt könyvtárat), és teszteket írni az edge casekre. Égvilágon semmi atomtudomány nincs ebben, állítólag mi programozók szeretjük arra verni, hogy mekkora logikai zsenik vagyunk (/s).
Az igazság az, hogy nagyon sok túlfizetett eméesztőgép van, és ők le lesznek váltva a csetdzsípítí által, akármennyire lázonganak, hogy az hasztalan.
kivimango23@reddit
Nem védem őket, de ez a date/time/timezone valami eszméletlenül nagy agyfasz az IT rendszerekben.
Independent_Dress278@reddit
Ahogy olvastam, még a szökőmásodperc is “fasza” dolog..
Szunyog_a_sarokban@reddit
Pár tízmilliárd forintnyi közpénz elégetése közben azért megoldható.
thatsmemerengo@reddit
Basszus! Ugyanez történt velem is! Egy órával későbbi vonatra adott jegyet. Azt hittem, hogy én bénáztam el. Mondjuk előtte jól felcsesztem magam, mert az érvényben lévő vágányzárról semmi infót nem lehetett találni abban a fosban...
Benceking24@reddit (OP)
Tettél panasz bejelentést a jeggyel kapcsolatban?
thatsmemerengo@reddit
Nem. Csak a posztodat olvasva jöttem rá, hogy nem én rontottam el, hanem a rendszer.
Pleasant_Resolve5678@reddit
Nem feltétlen van köze az óraátállításhoz, nekem is totál káosz a MÁV+ app. Más árakat mutat az appban, mint a jegy.mav.hu-n, és a jegy.mav.hu-n elszáll error-al, ha ott akarom venni. Egyébként a jegy.mav.hu-s árakon utaztam az elmúlt kb. 1 évben mindig. A pénztárban meg nekem is azt mondták, hogy csak a legdrágább féléből van már csak, mikor a jegy.mav.hu-n azt írja, hogy üres a vonat kb. :D Szerintem pár hete kireleaselztek valamit, amit nagyon nem teszteltek le jól. Én is írtam nekik erről 2-3 hete, de semmi válasz. Szerintem ég a ház bent. :D Egyébként a MÁV-tól jött kollégák eddig minden korábbi cégemnél a legnoobabb arcok voltak. Biztos vannak ott is jó fejlesztők, de a helyükben nem írnám be a MÀV-ot a korábbi munkahelyek közé.
Left-Record-6944@reddit
itt annyiban lottel melle, hogy a MAV-os fejlesztoknek ehhez semmi koze, mert nem ok fejlesztik az uj appot. 3 betus ceg, lehet talalgatni.
Dear_Potential5151@reddit
G.w.M?
Arcanium_Walker@reddit
Music Productions
PurplePiIIs@reddit
MAV?
Left-Record-6944@reddit
Majdnem. 4IG egy hozza tartozo ceggel egyutt.
VeterinarianEqual609@reddit
Majd a Józsi átírja CESTről CET-re ha vissza jött hosszú hétvégéről. Nem kell sietni mi baj lehet.
Halal0szto@reddit
Nyugtass meg hogy amerikaiaknak dolgozol. Eddig azzal bíztattam magam hogy ezt a módszert, hogy az ország időzónája változik az állításkor nem használja senki Európában.
VeterinarianEqual609@reddit
Most nem tudom eldönteni miből gondoltad ez szerintem jó ötlet.
Halal0szto@reddit
Két hozzáállás van.
Az egyik szerint most a hétvégén mi időzónát váltottunk. Eddig CEST voltunk, mostantól tavaszig CET leszünk. Ebben a rendszerben a december 12 14:45:00 CEST az egy invalid date, mert decemberben nincs nyári időszámítás.
A másik szerint a mi időzónánk az Europe/Budapest és ez tartalmazza azt, hogy mikor mennyi az offset. Télen is ez az időzónánk, meg nyáron is, csak ez egy olyan időzóna, amiben néha változik az offset. Ebben is vannak invalid dátumok, pl 2025-10-26 01:30:00 az nem volt sosem és nem is lesz, de azért sokkal egyértelműbb így.
ytg895@reddit
Három hozzáállás van: a library amit használok vagy tudja értelmezni, hogy "Europe/Budapest", vagy csak azt hogy "CET"/"CEST", vagy még azt sem, és kézzel kell kiírni, hogy "+01:00". Nyilván az előbbinek jobban örülünk.
Halal0szto@reddit
Programozásilag igen, ez a három van. De funcionálisan, a valódi nyújtott üzleti szolgáltatás tekintetében nem ez a lényeg. Hanem hogy az user mire számít, és hogy a funkció mikor működik elvárás szerint.
Az offsetesnek nem örülünk, de nem az a baj hogy legörbül a szánk széle, hanem hogy egy csomó mindent lehetetlen vele precízen megvalósítani.
Mondok egy példát:
2030 November harmadika 15:00 az hány óra múlva lesz? A helyes válasz: nem tudjuk! Ugyanis lehet hogy addigra eltörlik a óraátállítást, lehet hogy nem, lehet hogy a nyárit tartják meg, lehet hogy a télit. Ha megtartják is, nem tudjuk mikor lesz az őszi állítás, mert még nem dőlt el, és ha eldőlt, akkor is változhat.
Mindezt a bizonytalanságot nem tudod lekódolni. Ha az a kérdés hogy 2030 November harmadika 15:00 Europe/Budapest hány óra múlva lesz, akkor legalább meg tudom mondani, hogy a jelenlegi állás szerint mennyi. És elég lesz a dátum library-t upgradelni rendszeresen ahhoz, hogy a jövőben megjelenjenek benne a megismert politikai-jogi változások.
Ezért a design során fel kell mérni, hogy hol is van valójában a naptár és időzóna implementáció. A mi kódunkba húztunk be egy libet, és nekünk fog kelleni frissítést kiadni hogy bejöjjön a változás (és a lib gazdája kell frissítse a libet), vagy a runtime része a lib, és az ops teamnek kell a runtime-t (pl jdk) up to date tartani, vagy az oprendszer része a lib, és azon múlik hogy patchelik-e rendesen, vagy egy külső szolgáltatás adja (pl az adatbázisszerver) és azzal kell törődni hogy az patchelve legyen rendesen.
kukacmalac@reddit
Volt is ilyen poszt, ahol 0:08 percet ment a vonat Bp-ről Győrbe. Ami fura benne, hogy az indulás-érkezés az jól volt feltüntetve (látszólag, lehet az is 1-1 órával csúszva volt), de a menetidőt nem az érkezési_idő - indulási_idő kivonással számolták, hanem valahogy máshogy, amire hatással volt az átállás. Tehát legrosszabb eset áll fent: néhány helyen kezelik, néhány helyen meg nem :D
benbehu@reddit
Engem meg is baszott kétezerre a kaller, hiába mutattam, hogy nincs esélyem kitalálni, melyik vonatra kellene jegyet vennem.
Halal0szto@reddit
Baaa. Biztos tesztelték
Szunyog_a_sarokban@reddit
Közösségi teszt. Várják a felhasználók visszajelzéseit, majd leszarják.
Dear_Potential5151@reddit
Early access
stea27@reddit
Az nem lehetett, hogy jó órára vetted a jegyet, és valóságban akkortól is valid a jegy, csak egy kijelzett dátum nem jó ott?
Benceking24@reddit (OP)
Email számlában és emailbe csatolt pdf be is már a rossz idő volt úgyhogy mobilapp tudta rosszul a kiírt időt és backenden már konzisztens volt a dolog.
Aggressive-Side4558@reddit
Dátum és időpont kezelés megspékelve téli-nyári időszámítással... el sem hinnéd hány mediort láttam elvérezni ezen. Nem mindig egyszerű, főleg ha a kliens idejével is számolni kell nemzetközi szinten, de azért pár év tapasztalattal már esélyes, hogy lát rá példát az ember (kérdés, hogy jó példát lát-e). Tud érdekes helyzeteket teremteni az óra állítás (pl. amikor helyi időben kell megjeleníteni az időpontokat egy idő-soros listában az átállítás idején vagy éppen rögzíteni kell tudni ezekre az időpontokra egy felületen), de azért van megoldás.
Egy jegy-vásárlást kezelő alkalmazásnál illene ezt jól kezelni, csak gyanítom itt is jellemző, hogy alul fizetett fejlesztők, PO-k és QA-k telibeszarják (vagy nem is értenek hozzá), esetleg low-prio a hiba javítása hiszen évente 2x jöhet elő a gond, majd a következőre beütemezik (majd elfelejtik). Az is lehet, hogy alapjaiban van elcseszve a rendszer és időzóna nélkül kezelnek mindent és nem triviális/rizikós a refactor/adat migráció.
Humble-Vegetable9691@reddit
"ahol ámult a pénztáros hogy csak prémium plusz helyjeggyel együtt tud menetjegyet adni" - nem azért tett át másik vonatra, mert nem tudott helyjegyet adni? Velem egyszer majdnem eljátszotta a helyjegy választó képernyőről. Ha itt nem kérdezett, az viszont hiba.
Benceking24@reddit (OP)
Mondtam neki hogy csak menetjegyet kérek megnézte kattingatott majd mondta hogy csak helyjeggyel együtt abból is a legdrágábból tud már csak adni arra a járatra amivel jönni szerettem volna és puffogtatt egy sort utána hogy pedig vasárnap van, ilyenkor szokott még lenni stb... Amit nem értek mert a menetjegy az nem túl árusítótt termék? hogy úgyse száll fel mindenki ha meg igen akkor ácsorogjon a jónép aki spúrkodott venni helyjegyet is (különben nem tudom elhinni ez mér nem okoz gondot Balaton déli vonalain fesztivál szezonban)
Weekly_Car956@reddit
“ hogy csak prémium plusz helyjeggyel együtt tud menetjegyet adni ami így 3x annyiba került mint normál esetben”
Mivel IC, igy eleg lett volna kizarolag uj helyjegyet adnia az adott jaratra, mert az IC jegy 24 oraig ervenyes…nem kellett volna fullra teljesen mindent ujbol eladnia….kiveve, ha okosjegy.
Benceking24@reddit (OP)
Na de az IC jegy kezdeti érvényességét elcseszte az app vásárláskor és még egy órával az indulást követően lett volna érvényes csak. Ezért néztem hogy a pénztáros mér nem tudja azt eladni jó dátummal amit én appban eredetileg szerettem volna és mér muszáj helyjegy is hozzá
Weekly_Car956@reddit
Bocsi jogos, eggyel korabbi volt nekem fejbe valamiert…tisztasor amit irsz akk igy tenyleg mas
catof21@reddit
a Máv+ sokkal megbízhatatlanabb, mint a régi app...
terrrmon@reddit
alig 40 milliárdból mit vársz, működő rendszert?
ytg895@reddit
"nem halt meg senki"
polyspastos@reddit