"""Központi hibakód-nyilvántartás.

2026-09-24-i külső biztonsági audit találata volt, hogy több végponton a nyers Python kivétel
típusa/szövege (néha stack trace-e is) került vissza a kliensnek egy hiba esetén - ezt 2026-09-28-
án generikus üzenetekre cseréltük (l. security-review memóriák). A user felvetésére most egy
lépéssel tovább megyünk: minden ilyen generikus üzenethez egy egyedi HIBAKÓD is társul, amit a
kliens is lát - így a felhasználó be tudja diktálni telefonon/e-mailben ("E-EBK-01 hibát kaptam"),
a rendszeradmin/support pedig a lenti táblázatból (és a rendszeradmin felület "Rendszerinformáció"
oldaláról) azonnal tudja, MELYIK terület/funkció hibázott, anélkül hogy a szerver logjához kellene
first hozzáférnie a teljes kivétel-részletért (az persze továbbra is a print(f"❌ ...") sorokban
landol, változatlanul).

Használat egy route-ban (a kliensnek szóló rövid üzenet marad a route-ban, ez a függvény csak a
kódot fűzi a végére - a HIBAKODOK-beli TELJES magyarázat kizárólag a rendszeradmin felület
hibakód-táblázatában jelenik meg, a kliensnek nem):
    from hibakodok import hiba_uzenet
    return JSONResponse(status_code=400, content={"message": hiba_uzenet("Hiba történt a mentés közben!", "E-EBK-01")})
"""

HIBAKODOK = {
    "E-DOK-01": "Dokumentum-import: a feltöltés előkészítése (ideiglenes tároló mappa létrehozása) sikertelen - jellemzően szerver-oldali lemez-/jogosultsági hiba.",
    "E-DOK-02": "Dokumentum-import: egy konkrét fájl mentése a géphez sikertelen (pl. a fájl sérült, vagy a gép/dokumentum-adatok időközben megváltoztak).",
    "E-DOK-03": "Dokumentum-import: egy több gép közötti ütközés feloldása (a felhasználó döntése alapján) sikertelen.",
    "E-DOK-04": "Dokumentum-import: az összegző riport PDF elkészítése sikertelen.",
    "E-EBK-01": "EBK ellenőrzés mentése sikertelen - jellemzően érvénytelen vagy hiányzó adat egy tételnél/szabálytalanságnál.",
    "E-EXCEL-01": "Gép-import: a feltöltött Excel fájl nem olvasható be - nem érvényes .xlsx fájl, vagy sérült/jelszóval védett.",
    "E-EXCEL-02": "Gép-import: egy Excel-sor feldolgozása sikertelen - hiányzó kötelező mező vagy érvénytelen adat a sorban.",
    "E-EXCEL-03": "Gép-import: egy ütközés-feloldási döntés (felülírás/új gépként mentés) végrehajtása sikertelen.",
    "E-JKV-01": "Vizsgálati jegyzőkönyv (PDF) generálása sikertelen.",
    "E-ADMIN-01": "Rendszeradmin: cég végleges törlése közben hiba történt, semmi nem került mentésre.",
    "E-ADMIN-02": "Rendszeradmin: felhasználó végleges törlése közben hiba történt, semmi nem került mentésre.",
    "E-ADMIN-03": "Rendszeradmin: gép végleges törlése közben hiba történt, semmi nem került mentésre.",
    "E-ADMIN-04": "Rendszeradmin: VIVÜ jegyzőkönyv utólagos karbantartó felületén a mentés sikertelen.",
    "E-TUZ-01": "Tűzvédelem: hibás adat vagy fájlművelet mentés közben (pl. érvénytelen dátum vagy lemez-hiba).",
    "E-TUZ-02": "Tűzvédelem: fájlfeltöltés (fénykép/dokumentum) sikertelen.",
    "E-TUZIMP-01": "Tűzvédelmi import: a feltöltött Excel fájl nem olvasható be - nem érvényes .xlsx fájl, vagy sérült/jelszóval védett.",
    "E-TUZIMP-02": "Tűzvédelmi import: egy Excel-sor feldolgozása sikertelen.",
    "E-TUZIMP-03": "Tűzvédelmi import: egy ütközés-feloldási döntés végrehajtása sikertelen.",
    "E-VIVU-01": "VIVÜ ellenőrzés mentése sikertelen - jellemzően érvénytelen vagy hiányzó adat egy tételnél/szabálytalanságnál.",
    "E-LIC-01": "Licenszkorlát átlépve (szimultán bejelentkezés)",
    "E-AI-01": "AI-alapú adattábla-szkennelés: az AI szolgáltatás (Anthropic API) hívása sikertelen vagy hibás választ adott.",
}


def hiba_uzenet(rovid_uzenet: str, kod: str) -> str:
    """A route saját, rövid (nem részletező) hibaüzenetéhez fűzi hozzá a hibakódot - a HIBAKODOK
    dict-ben tárolt teljes magyarázat sosem kerül ki a kliensnek, kizárólag a rendszeradmin
    felület hibakód-táblázatában jelenik meg."""
    return f"{rovid_uzenet} (Hibakód: {kod})"
