""" labels.py — traducere stari tehnice in text uman + clasa CSS (US-001, PRD 3.4). Functii pure: fara DB, fara request. Usor de testat unitar si de importat in template-uri. Sursa de adevar pentru texte: tabelul din PRD 3.4 §3 US-001. """ from typing import Tuple # --------------------------------------------------------------------------- # Tipul returnat: (text_principal, subtext_tooltip, css_class) # --------------------------------------------------------------------------- Eticheta = Tuple[str, str, str] # --------------------------------------------------------------------------- # Etichete stari submissions # Clasele CSS corespund celor definite in base.html: # s-queued (accent/albastru), s-sending (warn/galben), s-sent (ok/verde), # s-error, s-needs_data, s-needs_mapping (err/rosu). # --------------------------------------------------------------------------- STARI_SUBMISSION: dict[str, Eticheta] = { "queued": ( "In asteptare sa fie trimise", "", "s-queued", ), "sending": ( "Se trimite acum", "", "s-sending", ), "sent": ( "Declarate la RAR (finalizate)", "Confirmate cu numar de prezentare; nu se mai pot modifica.", "s-sent", ), "needs_mapping": ( "Lipseste codul prestatiei", "Alege codul RAR in tab-ul Mapari.", "s-needs_mapping", ), "needs_data": ( "Date incomplete (respinse de RAR)", "Corecteaza randul si reimporta.", "s-needs_data", ), "error": ( "Eroare la trimitere", "Vezi detaliul randului; se reincearca automat sau necesita corectie.", "s-error", ), } def eticheta_stare(status: str) -> Eticheta: """ Returneaza (text, subtext, css_class) pentru o stare de submission. Arunca KeyError daca starea nu este mapata — intentionat, ca sa prinda stari noi adaugate in schema fara mapare corespunzatoare. """ try: return STARI_SUBMISSION[status] except KeyError: raise KeyError( f"Starea de submission {status!r} nu are eticheta umana in labels.py. " "Adauga-o in STARI_SUBMISSION." ) # --------------------------------------------------------------------------- # Etichete worker (viu / mort) # --------------------------------------------------------------------------- def eticheta_worker(viu: bool) -> Eticheta: """ Returneaza (text, subtext, css_class) pentru starea worker-ului. viu=True => "Trimitere automata: activa" (clasa s-sent / verde) viu=False => "Trimitere automata: oprita" (clasa s-error / rosu) """ if viu: return ( "Trimitere automata: activa", "Sistemul verifica coada si trimite la RAR la fiecare cateva secunde.", "s-sent", ) return ( "Trimitere automata: oprita", "Nimic nu pleaca spre RAR pana reporneste. Anunta administratorul.", "s-error", ) # --------------------------------------------------------------------------- # Etichete conexiune RAR (ok / indisponibil) # --------------------------------------------------------------------------- def eticheta_rar(stare: str) -> Eticheta: """ Returneaza (text, subtext, css_class) pentru starea conexiunii cu RAR. stare="ok" => "Legatura cu RAR: functionala" (s-sent / verde) stare="indisponibil" => "Legatura cu RAR: indisponibila" (s-error / rosu) """ if stare == "ok": return ( "Legatura cu RAR: functionala", "Portalul AUTOPASS raspunde.", "s-sent", ) return ( "Legatura cu RAR: indisponibila", "Portalul RAR nu raspunde acum; coada se reia automat cand revine.", "s-error", ) # --------------------------------------------------------------------------- # Constante auxiliare (microcopy fix, fara logica) # --------------------------------------------------------------------------- ETICHETA_ULTIMA_AUTENTIFICARE_RAR = "Ultima autentificare la RAR"