| public | ||
| server | ||
| package.json | ||
| README.md | ||
Kréta+
Emberi felület az e-Kréta adataihoz. Csak olvasás — adatbevitel nincs benne.
Indítás
node server/index.js # vagy: npm start
Ezután nyisd meg: http://127.0.0.1:4173
Nincs npm install, nincs build lépés, nincs függőség. Node 20+ kell (a natív
fetch és a Headers.getSetCookie() miatt).
Port/host felülírása: PORT=8080 HOST=0.0.0.0 node server/index.js
Belépés
| Mező | Honnan |
|---|---|
| Intézményazonosító | https://intezmenykereso.e-kreta.hu/ — a hosszabbik, klik… kezdetű kód |
| Felhasználónév | oktatási azonosító (ugyanaz, mint a Krétában) |
| Jelszó | ugyanaz, mint a Krétában |
Mit lát
- Áttekintés – súlyozott átlag, igazolatlan órák, közelgő számonkérések és határidők, legutóbbi jegyek, tantárgyi átlagok sávdiagramon
- Jegyek – tantárgyanként csoportosítva, saját súlyozott átlagszámítással, jegyeloszlással, tantárgy/értékelési mód szűrővel, kinyitható részletekkel; a félévi és év végi jegyek külön blokkban
- Órarend – heti nézet óraszám-oszloppal (a 0. óra is külön sorként), hetek közti lépkedéssel, elmaradt óra / helyettesítés / házi / számonkérés jelöléssel; bármelyik órára kattintva előjön az összes mezője
- Mulasztások – igazolt / igazolandó / igazolatlan bontás, késések, tantárgyankénti összesítés
- Házi feladatok, Számonkérések, Feljegyzések, Faliújság, Adatlap
- Átnevezések – saját nevet adhatsz tantárgyaknak, tanároknak, termeknek
és csoportoknak. Csak a megjelenítést írja át: a csoportosítás és az
átlagszámítás továbbra is az eredeti néven megy, így két azonosra átnevezett
tantárgy sem olvad össze. A böngésző
localStorage-ában tárolódik, a Krétához semmi nem megy vissza; a nézet alján ki-be másolható JSON-ként mentheted. - Diagnosztika – megmutatja, mely adatcsomagokat adta vissza a Kréta, hány elemmel, és milyen mezőnevekkel. Értékeket nem tartalmaz, csak szerkezetet, így nyugodtan megosztható, ha valahol hiányos adat jelenik meg.
Az átlagot a kliens maga számolja az értékelések SulySzazalekErteke
súlyaival, csak az évközi, számjegyes értékelésekből.
Tanév
Az oldalsáv alján választható a tanév (az utolsó négy). Ha nincs megadva, a szerver az aktuálisat kéri le — és ha az még teljesen üres (tipikusan augusztus–szeptember elején, amikor az új tanévbe még nem került adat), automatikusan visszaesik az előzőre, hogy ne egy üres felület fogadjon.
A Kréta lekérdezési korlátai
A v3 API végpontonként máshogy viselkedik, ezt a server/kreta.js kezeli le:
| Végpont | Korlát | Kezelés |
|---|---|---|
Ertekelesek |
nincs intervallum-korlát | egy kéréssel, a teljes tanévre |
Mulasztasok |
max 3 hét | 21 napos ablakokra bontva |
HaziFeladatok |
max 3 hét | 21 napos ablakokra bontva |
Feljegyzesek |
max 1 hónap | 28 napos ablakokra bontva |
BejelentettSzamonkeresek |
max 1 hónap | 28 napos ablakokra bontva |
OrarendElemek |
— | hetente, ahogy a nézet igényli |
TanevRendjeElemek |
sok fióknál 403 | nem hiba; a felület halkan jelzi, hogy nem elérhető |
A dátumot mindig YYYY-MM-DD formában kell küldeni: időrésszel
(T23:59:59) a Kréta The field DatumIg is invalid hibával elszáll.
Az ablakokra bontott lekéréseket a ranged() végzi: párhuzamosan futnak,
Uid szerint deduplikálva fűződnek össze, és egy-egy elhaló ablak nem viszi
el az egész csomagot — csak akkor dob hibát, ha minden ablak elhasal.
Hogyan működik
bongeszo ──> server/index.js ──> idp.e-kreta.hu (OAuth2 + PKCE belépés)
(proxy + session) {intezmeny}.e-kreta.hu/ellenorzo/v3/ (adatok)
A böngésző soha nem lát tokent: a szerver egy HttpOnly munkamenet-sütit ad,
az access/refresh token a szerver memóriájában marad, és onnan is eltűnik
kijelentkezéskor vagy 12 óra tétlenség után. Semmi nem íródik lemezre.
A proxy azért kell, mert a Kréta nem küld CORS fejléceket — böngészőből közvetlenül nem hívható.
Fájlok
| Fájl | Szerep |
|---|---|
server/kreta.js |
Kréta API kliens: PKCE belépés, token frissítés, végpontok |
server/index.js |
HTTP szerver: statikus fájlok, munkamenetek, /api/* |
public/app.js |
SPA: nézetek, átlagszámítás, szűrők |
public/style.css |
téma (világos/sötét/rendszer), komponensek |
API végpontok
| Végpont | Leírás |
|---|---|
POST /api/login |
{institute, username, password} → munkamenet-süti |
POST /api/logout |
süti törlése + refresh token visszavonása a Krétánál |
GET /api/session |
be van-e lépve |
GET /api/overview?year= |
egy körben: adatlap, csoportok, jegyek, mulasztások, házik, számonkérések, feljegyzések, faliújság, tanév rendje |
GET /api/lessons?from&to |
órarendi elemek egy időszakra |
GET /api/schema?year= |
diagnosztika: mezőnevek és darabszámok, értékek nélkül |
GET /api/class-averages?taskUid&subjectUid |
osztályátlagok |
Az /api/overview Promise.allSettled-del dolgozik: ha egy végpont elhasal,
a többi adat attól még megjelenik, a hiányzók az errors mezőben jönnek vissza
és a felületen figyelmeztetés lesz belőlük.
Megjegyzések
- Nem hivatalos, nincs köze a Kréta fejlesztőihez. A belépés a hivatalos mobilkliens OAuth-folyamatát játssza le; ha a Kréta ezen változtat, a belépés eltörhet.
- Csak helyi használatra van kitalálva (alapból
127.0.0.1-re köt). Ha kiteszed hálózatra, tegyél elé HTTPS-t — a jelszó egyébként tisztán utazna. - A munkamenetek memóriában élnek, tehát a szerver újraindítása kiléptet.