Reguli text per cont (operation_text_rules), resolve_prestatii cu param aditiv text_rules + precedenta stricta, threadat pe toate cele 6 callsite-uri + valid_codes + seam classify_prezentare. UI Mapari: sectiune reguli + preview pre-salvare + overlap + telemetrie text_rule_hit. UX tabel: cod_rar sub operatie, pill eticheta scurta, fara scroll orizontal (scopat .tabel-trimiteri + carduri <768px), detaliu inline expandabil (a11y + pauza poll). code-review: reparat regula auto_send=0 care trimitea automat la RAR in loc sa tina randul pentru review. 814 passed. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
82 lines
3.5 KiB
Python
82 lines
3.5 KiB
Python
"""FIX (code-review 5.8): o regula text cu auto_send=0 (DEFAULT, decizia CEO) trebuie
|
|
sa TINA randul pentru verificare umana (needs_mapping/review), NU sa-l trimita automat.
|
|
|
|
`has_no_auto_send` trebuie sa prinda si itemii rezolvati-prin-regula-text cu auto_send=0,
|
|
nu doar maparile exacte din operations_mapping. Adnotarile (cod_sursa/regula_fara_autosend)
|
|
trebuie curatate la fiecare rezolvare (anti-staleness).
|
|
|
|
Functii pure -> teste fara DB.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from app.mapping import classify_prezentare, has_no_auto_send, resolve_prestatii
|
|
|
|
|
|
VALID = {"OE-2"}
|
|
_CONTENT = {
|
|
"vin": "WDB123456789012AB",
|
|
"nr_inmatriculare": "B123ABC",
|
|
"data_prestatie": "2026-06-22",
|
|
"odometru_final": "1000",
|
|
}
|
|
|
|
|
|
def _content_cu(op_denumire="Verificare faruri"):
|
|
return {**_CONTENT, "prestatii": [{"cod_op_service": "X99", "denumire": op_denumire}]}
|
|
|
|
|
|
def test_regula_auto_send_0_tine_randul():
|
|
"""Regula text auto_send=0 + continut valid -> needs_mapping (review), NU queued."""
|
|
tr = [{"pattern": "verificare", "cod_prestatie": "OE-2", "auto_send": 0, "priority": 0}]
|
|
cl = classify_prezentare(_content_cu(), {}, {}, VALID, tr)
|
|
assert cl["status"] == "needs_mapping", f"asteptat needs_mapping (held), got {cl['status']}"
|
|
|
|
|
|
def test_regula_auto_send_1_trece_in_coada():
|
|
"""Regula text auto_send=1 + continut valid -> queued (trimite automat)."""
|
|
tr = [{"pattern": "verificare", "cod_prestatie": "OE-2", "auto_send": 1, "priority": 0}]
|
|
cl = classify_prezentare(_content_cu(), {}, {}, VALID, tr)
|
|
assert cl["status"] == "queued", f"asteptat queued, got {cl['status']}"
|
|
|
|
|
|
def test_has_no_auto_send_prinde_flagul_regula():
|
|
"""has_no_auto_send=True cand un item poarta regula_fara_autosend; codul e tot rezolvat."""
|
|
tr = [{"pattern": "verificare", "cod_prestatie": "OE-2", "auto_send": 0, "priority": 0}]
|
|
resolved, unmapped = resolve_prestatii(
|
|
[{"cod_op_service": "X99", "denumire": "Verificare faruri"}], {}, VALID, tr
|
|
)
|
|
assert unmapped == []
|
|
assert resolved[0]["cod_prestatie"] == "OE-2"
|
|
assert resolved[0].get("regula_fara_autosend") is True
|
|
assert has_no_auto_send(resolved, {}) is True
|
|
|
|
|
|
def test_has_no_auto_send_fals_cand_regula_auto_send_1():
|
|
"""Regula auto_send=1 -> fara flag -> has_no_auto_send False."""
|
|
tr = [{"pattern": "verificare", "cod_prestatie": "OE-2", "auto_send": 1, "priority": 0}]
|
|
resolved, _ = resolve_prestatii(
|
|
[{"cod_op_service": "X99", "denumire": "Verificare faruri"}], {}, VALID, tr
|
|
)
|
|
assert resolved[0].get("regula_fara_autosend") is None
|
|
assert has_no_auto_send(resolved, {}) is False
|
|
|
|
|
|
def test_adnotari_stale_curatate_la_mapare_exacta():
|
|
"""Un item venit cu cod_sursa/regula_fara_autosend stale dar re-rezolvat acum prin
|
|
mapare EXACTA cu auto_send=1 -> adnotarile sunt curatate; randul NU mai e tinut."""
|
|
item_stale = {
|
|
"cod_op_service": "X99",
|
|
"denumire": "Verificare faruri",
|
|
"cod_sursa": "text_rule:verificare",
|
|
"regula_fara_autosend": True,
|
|
}
|
|
# Acum X99 are mapare exacta cu auto_send=1.
|
|
mapping = {"X99": "OE-2"}
|
|
mapping_meta = {"X99": {"cod_prestatie": "OE-2", "auto_send": True}}
|
|
resolved, _ = resolve_prestatii([item_stale], mapping, VALID, text_rules=None)
|
|
assert resolved[0]["cod_prestatie"] == "OE-2"
|
|
assert "cod_sursa" not in resolved[0], "cod_sursa stale nu a fost curatat"
|
|
assert "regula_fara_autosend" not in resolved[0], "flag stale nu a fost curatat"
|
|
assert has_no_auto_send(resolved, mapping_meta) is False
|