Repository navigation
feat(api): add GET /ping/time server clock endpoint - #453
Conversation
🗑️ Preview removed
Posted by filc-deployer. The preview database is its own container and is |
|
[P1] Az iskolai időzóna egységes használata a dátumkezelésben Az új végpont és a hét napjának meghatározása már a "CHRONOS_TIME_ZONE" beállítást használja, viszont a "toDateOnlyString()" továbbra is a szerver helyi időzónájára támaszkodik. Ez eltérő dátumokat eredményezhet, ha a szerver UTC időzónában fut. Példa:
Ez az aktív órarend kiválasztását is érinti a "getTimetableIdForDate()" függvényen keresztül. Javaslat: A közös dátumkezelő függvény is a konfigurált iskolai időzónát használja. Közben figyelni kell arra, hogy ne alakuljon ki körkörös import a "date.ts" és az "environment.ts" között. |
|
[P2] A YYYY-MM-DD dátumformátum garantálása A válaszséma szerint a "date" mező formátuma "YYYY-MM-DD", azonban az "Intl.DateTimeFormat('en-CA')" nem garantálja minden JavaScript-futtatókörnyezetben és ICU-konfigurációban pontosan ezt a formátumot. Javaslat: Érdemes lenne a "formatToParts()" segítségével külön kinyerni az évet, hónapot és napot, majd ezekből összeállítani a dátumot. Így az API minden környezetben egységes formátumot adna vissza. |
|
[P3] Automatikus tesztek hozzáadása az időzóna-kezeléshez A megvalósítás alapvetően megfelelőnek tűnik, viszont a PR új időzónafüggő működést vezet be célzott tesztek nélkül. Érdemes lenne az alábbi eseteket lefedni:
Ezekkel megelőzhetők lennének a későbbi dátumkezelési hibák és regressziók. |
Summary
Closes #451
Adds a public
GET /ping/timeendpoint that returns the server clock in theschool's timezone, so clients (kiosk, mobile) can render an authoritative
local date and UTC offset instead of trusting the device clock. The timezone
is configurable with
CHRONOS_TIME_ZONEand defaults toEurope/Budapest.Changes
GET /api/ping/time→{ iso, unixMs, date, timeZone, offsetMinutes }, public and unauthenticated like/pingand/ping/uptime.offsetMinutesis DST-correct for the configured zone;dateis that zone's calendar date, not UTC's.CHRONOS_TIME_ZONEenv var (validated as an IANA zone, defaultEurope/Budapest), documented inapps/chronos/.env.example.getWeekdayInSchoolTimeZone)./ping/timeadded).Verification
bun lintbun typecheckbun run build— contract and module router changedbun run openapi:check— regenerated document matches the contract