feat(5.9): US-001 - eticheta umana scurta pe rand + cod brut pentru modal (R1)
- _submission_row_view expune eticheta_problema (motiv || eticheta_scurta), gol pe queued/sending/sent, fara decoder nou (R1 DRY) - parse_erori expune cheia `cod` (cod brut catalog) pe ramurile imbogatite, pentru derivare in modal - 5 teste US-001 in tests/test_web_submissions.py - gates: tests PASS (819), /review (backend) PASS Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -275,6 +275,8 @@ def parse_erori(rar_error: object) -> list[dict]:
|
||||
"cauza": e.get("cauza") or e.get("message") or "",
|
||||
"fix": e.get("fix") or "",
|
||||
"field": e.get("field"),
|
||||
# Cod BRUT de catalog (ex. RAR_EROARE_SERVER) — DOAR pentru modal (US-001/R1).
|
||||
"cod": e.get("cod"),
|
||||
})
|
||||
else:
|
||||
# Forma veche: {field, message} fara cod
|
||||
@@ -303,6 +305,8 @@ def parse_erori(rar_error: object) -> list[dict]:
|
||||
"cauza": data.get("cauza") or "",
|
||||
"fix": data.get("fix") or "",
|
||||
"field": data.get("field"),
|
||||
# Cod BRUT de catalog (ex. COD_NEMAPAT) — DOAR pentru modal (US-001/R1).
|
||||
"cod": data.get("cod"),
|
||||
}]
|
||||
# Dict vechi: unmapped
|
||||
if "unmapped" in data:
|
||||
|
||||
@@ -649,9 +649,31 @@ def _is_iso_date(value: object) -> bool:
|
||||
return False
|
||||
|
||||
|
||||
# Stari care semnaleaza o problema ce necesita atentia operatorului. Eticheta umana
|
||||
# scurta de pe rand (US-001, R1) e ne-goala DOAR pe acestea; pe queued/sending/sent e "".
|
||||
_STARI_CU_PROBLEMA = ("error", "needs_data", "needs_mapping")
|
||||
|
||||
|
||||
def _eticheta_problema(status: str, motiv: str) -> str:
|
||||
"""Eticheta umana scurta a problemei pentru randul de tabel (US-001, R1).
|
||||
|
||||
Reutilizeaza `motiv` (motiv_uman, deja calculat in randul de view) si cade pe
|
||||
`eticheta_scurta` cand motivul e gol — NU re-parseaza `rar_error` (R1: DRY, fara
|
||||
al 3-lea decoder). Codul BRUT de catalog ramane doar pentru modal, nu pe rand.
|
||||
|
||||
Sir gol pe stari fara problema (queued/sending/sent); ne-gol pe error/needs_*.
|
||||
Defensiv: motiv_uman nu arunca, iar starile cu problema au intotdeauna eticheta
|
||||
scurta -> fallback-ul garanteaza un text ne-gol chiar la `rar_error` lipsa/corupt.
|
||||
"""
|
||||
if status not in _STARI_CU_PROBLEMA:
|
||||
return ""
|
||||
return motiv or eticheta_scurta(status)
|
||||
|
||||
|
||||
def _submission_row_view(r) -> dict:
|
||||
"""Imbogateste un rand de submission cu campuri afisabile umane (US-003/US-004)."""
|
||||
eticheta = eticheta_stare(r["status"])
|
||||
motiv = motiv_uman(r["status"], r["rar_error"])
|
||||
return {
|
||||
"id": r["id"],
|
||||
"status": r["status"],
|
||||
@@ -662,7 +684,9 @@ def _submission_row_view(r) -> dict:
|
||||
"prez": prezentare_din_payload(r["payload_json"]),
|
||||
"id_prezentare": r["id_prezentare"],
|
||||
"updated_at": format_data_rar(r["updated_at"]),
|
||||
"motiv": motiv_uman(r["status"], r["rar_error"]),
|
||||
"motiv": motiv,
|
||||
# US-001/R1: eticheta umana scurta a problemei sub pill (text, nu cod brut).
|
||||
"eticheta_problema": _eticheta_problema(r["status"], motiv),
|
||||
# US-011: randurile blocate (error/needs_data/needs_mapping) sunt selectabile
|
||||
# pentru stergere bulk; sent/sending/queued raman read-only (fara checkbox).
|
||||
"gestionabil": r["status"] in _GESTIONABILE_WEB,
|
||||
|
||||
Reference in New Issue
Block a user