feat(web): dashboard compact — import pe Acasa, status cu bife, Trimiteri lizibile, Mapari complete (3.5)
Acasa = ecran de import (tab Import scos, ?tab=import->Acasa). Bara status compacta pe 2 randuri cu bife accesibile (glife + text) + data formatata. 'Coada'->'Trimiteri': coloane RO, stare umana, detaliu la click in panou dedicat. Mapari pe 3 sectiuni (de rezolvat / op salvate / formate coloane), Cont doar cheie+creds. Filtrare Trimiteri, corectie inline needs_data cu re-enqueue + detectie coliziune idempotency, badge contoare pe tab-uri. Helper pur partajat payload_view.py (web + GET /v1/prezentari). Backend trimitere (worker/idempotenta/mapping/schema) neatins. 483 teste. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -151,13 +151,10 @@ def test_checklist_pas_creds_bifat_cand_exista(client):
|
||||
assert resp.status_code == 200
|
||||
html = resp.text
|
||||
|
||||
# Cand exista creds, pasul trebuie sa fie bifat
|
||||
# Verificam prezenta unui indicator de bifat (clasa 'bifat' sau 'pas-bifat' sau 'done')
|
||||
# Cel putin unul dintre pattern-urile de bifat trebuie sa apara
|
||||
assert re.search(
|
||||
r'pas-bifat|class="[^"]*bifat|done.*RAR|RAR.*done|checkmark.*RAR|RAR.*checkmark',
|
||||
html, re.DOTALL | re.IGNORECASE
|
||||
), "Pasul RAR trebuie sa fie bifat cand contul are creds configurate"
|
||||
# Cand exista creds, pasul "Cont RAR" e bifat: glifa ✓ (s-sent) langa link-ul Cont RAR
|
||||
# (Acasa compacta PRD 3.5 — checklist pe un rand, bife cu glifa).
|
||||
assert "✓" in html, "Lipseste glifa de bifat cand contul are creds"
|
||||
assert "Cont RAR" in html, "Lipseste pasul 'Cont RAR' din checklist"
|
||||
|
||||
|
||||
# ============================================================
|
||||
@@ -175,17 +172,12 @@ def test_checklist_ascuns_cand_totul_gata(client):
|
||||
assert resp.status_code == 200
|
||||
html = resp.text
|
||||
|
||||
# Cand totul e gata, ghidul compact/discret trebuie sa apara
|
||||
# Fie "Totul e configurat" fie un link discret catre coada
|
||||
assert "Totul e configurat" in html or "totul e configurat" in html.lower(), \
|
||||
"Cand toti pasii sunt gata, trebuie sa apara mesajul discret 'Totul e configurat'"
|
||||
|
||||
# Cardul mare de pasi nu trebuie sa ocupe ecranul
|
||||
# Verificam ca nu mai apare titlul mare al ghidului (Primii pasi)
|
||||
# SAU ca ghidul e marcat ca colapsat (clasa 'ghid-complet' sau similar)
|
||||
# Pattern: fie ghid-complet, fie lipsa titlului complet "Primii pasi" in forma de card mare
|
||||
assert "ghid-complet" in html or "Totul e configurat" in html, \
|
||||
"Ghidul trebuie sa se colapseze cand toti pasii esentiali sunt finalizati"
|
||||
# Cand toti pasii esentiali sunt gata, checklist-ul "Primii pasi" dispare
|
||||
# (Acasa compacta PRD 3.5: nu mai concureaza cu caseta de upload).
|
||||
assert "Primii pasi" not in html, \
|
||||
"Checklist-ul 'Primii pasi' trebuie sa dispara cand toti pasii esentiali sunt gata"
|
||||
# Upload-ul ramane dominant pe pagina chiar si dupa setup complet
|
||||
assert 'hx-post="/_import/upload"' in html
|
||||
|
||||
|
||||
# ============================================================
|
||||
@@ -193,7 +185,7 @@ def test_checklist_ascuns_cand_totul_gata(client):
|
||||
# ============================================================
|
||||
|
||||
def test_linkuri_ghid_duc_la_taburi(client):
|
||||
"""Link-urile din ghid contin ?tab=cont si ?tab=import."""
|
||||
"""Ghidul Acasa duce la Cont; importul e direct pe pagina (nu mai e tab separat)."""
|
||||
acct_id, _ = _create_account_user("links@test.com")
|
||||
_login(client, "links@test.com")
|
||||
|
||||
@@ -205,9 +197,9 @@ def test_linkuri_ghid_duc_la_taburi(client):
|
||||
assert "?tab=cont" in html, \
|
||||
"Ghidul nu contine link catre tab-ul Cont (?tab=cont)"
|
||||
|
||||
# Ghidul trebuie sa contina link catre tab-ul Import
|
||||
assert "?tab=import" in html, \
|
||||
"Ghidul nu contine link catre tab-ul Import (?tab=import)"
|
||||
# Importul e acum direct pe Acasa (caseta de upload), nu un link catre alt tab
|
||||
assert 'hx-post="/_import/upload"' in html, \
|
||||
"Acasa trebuie sa contina caseta de upload (importul e operatia principala)"
|
||||
|
||||
|
||||
# ============================================================
|
||||
@@ -227,13 +219,13 @@ def test_empty_state_coada_gol(client):
|
||||
assert "POST /v1/prezentari" not in html, \
|
||||
"Empty state coada nu trebuie sa contina mesajul tehnic vechi 'POST /v1/prezentari'"
|
||||
|
||||
# Trebuie sa contina un indemn catre Import
|
||||
# Trebuie sa contina un indemn catre Import (acum pe Acasa)
|
||||
assert "import" in html.lower() or "Import" in html, \
|
||||
"Empty state coada trebuie sa contina indemn catre Import"
|
||||
|
||||
# Trebuie sa contina link catre ?tab=import
|
||||
assert "?tab=import" in html, \
|
||||
"Empty state coada trebuie sa contina link ?tab=import"
|
||||
# Trebuie sa contina link catre Acasa (unde traieste importul acum)
|
||||
assert "?tab=acasa" in html, \
|
||||
"Empty state coada trebuie sa contina link catre Acasa (importul e acolo)"
|
||||
|
||||
|
||||
# ============================================================
|
||||
|
||||
Reference in New Issue
Block a user