feat(5.9): US-004 - detaliu editabil in-place + butoane consolidate in modal
- _trimitere_detaliu.html rescris pe ordinea verticala R10: header+motiv, eroare blocanta, mapare inline, formular editabil/context read-only, actiuni, <details> Detalii tehnice colapsat - zero dublare: campurile editabile apar O SINGURA DATA (nr rand propriu, VIN dedesubt, restul in grila); blocul read-only de grila contopit cu formularul - R9: operatie+cod read-only deasupra campurilor cu prez.cod_rar (fallback nemapat), fara eticheta separata Cod RAR - R2 (fix F7): buton primar conditionat de stare - error->Re-pune(/repune), needs_data/needs_mapping->Salveaza si retrimite(/corecteaza); duplicatul gol eliminat - R11: un singur Sterge outline var(--err) pe rand separat, hx-confirm specific, full-width pe mobil (.detaliu-actiuni-jos in @media 767px, base.html) - R5: hx-disabled-elt pe toate formele; inchidere pe succes prin inchideModal - R4: script modal-appropriate pastrat (curatat de US-003) - 6 teste noi in test_web_corectie.py; rutele + _detaliu_ctx NESCHIMBATE - suita 835 passed (-m 'not live'); prd.json/progress.txt US-004 passes Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -96,3 +96,49 @@ Note: PRD APROBAT 2026-06-24 cu revizii obligatorii R1-R12 (raport AUTOPLAN). R1
|
||||
- VERIFY: gstack browser la 375px pe `/` — fara scroll orizontal de pagina; ☰ deschide meniul cont;
|
||||
modal deschis ocupa tot ecranul si se inchide din `x` (requiresBrowserCheck + requiresDesignReview).
|
||||
---
|
||||
|
||||
## US-004: Detaliu editabil in-place + butoane consolidate (in modal), ordine verticala R10
|
||||
|
||||
### Ce s-a livrat:
|
||||
- app/web/templates/_trimitere_detaliu.html REscris pe ordinea verticala R10:
|
||||
(1) header #id + pill + motiv uman; (2) bloc eroare blocanta (card_erori) cand exista;
|
||||
(3) mapare inline (5.7) cand nemapate_inline, tintind #detaliu-modal-body; (4) formular
|
||||
editabil SAU context read-only; (5) actiuni jos; (6) <details> „Detalii tehnice" colapsat.
|
||||
- Zero dublare: blocul read-only de grila (vechiul :19-32) si formularul de corectie s-au
|
||||
contopit. Campurile editabile (nr_inmatriculare, vin, data_prestatie, odometru_final,
|
||||
odometru_initial) apar O SINGURA DATA, ca inputuri pre-completate. Nr. pe rand propriu,
|
||||
VIN dedesubt (ambele latime plina), restul in grila.
|
||||
- R9: operatie + cod RAR rezolvat read-only deasupra campurilor, folosind prez.cod_rar
|
||||
(fallback „nemapat"), fara eticheta separata „Cod RAR" (vechiul :23 eliminat).
|
||||
- R2 (fix F7): buton primar CONDITIONAT DE STARE, unul singur per stare:
|
||||
* error -> „Re-pune in coada" pe /repune (error NU e editabil, /corecteaza ar da 403);
|
||||
* needs_data/needs_mapping -> „Salveaza si retrimite" pe /corecteaza (submit-ul formularului).
|
||||
Butonul gol „Re-pune in coada" duplicat (vechiul :55-59) eliminat.
|
||||
- R11: UN SINGUR „Sterge" (outline distructiv var(--err)) pe RAND SEPARAT (clasa
|
||||
.detaliu-actiuni-jos, NU margin-left:auto), hx-confirm specific
|
||||
„Stergi definitiv trimiterea #{id}? Nu se poate anula."; full-width stivuit pe mobil
|
||||
prin regula noua `.detaliu-actiuni-jos button { width:100% }` in @media 767px (base.html).
|
||||
- R5: hx-disabled-elt="find button" pe toate cele 3 forme (corectie/repune/sterge + mapare);
|
||||
inchiderea modalului pe succes vine din HX-Trigger inchideModal emis de rute (neschimbat).
|
||||
- R4: scriptul inline modal-appropriate (curatat deja de US-003) pastrat; comentariu actualizat.
|
||||
- Detalii tehnice colapsate: Nr. prezentare RAR, Cod HTTP, Reincercari, timestamps, mesaj RAR
|
||||
brut + cod brut (erori_3n[0].cod, doar cand exista).
|
||||
- tests/test_web_corectie.py: 6 teste noi US-004 (test_camp_apare_o_singura_data,
|
||||
test_nr_si_vin_pe_randuri_separate, test_un_singur_buton_primar_per_stare,
|
||||
test_error_foloseste_repune, test_sterge_prezent_si_distinct, test_corectie_pastreaza_comportament).
|
||||
|
||||
### Learnings:
|
||||
- F7 (CRITICAL): consolidarea naiva pe /corecteaza ar fi scos retry-ul randurilor `error`
|
||||
(_CORECTABILE=needs_data/needs_mapping; post_corectie da 403 pe error). Rezolvat prin buton
|
||||
primar conditionat de stare: error pastreaza fluxul existent /repune (re-pune in coada),
|
||||
needs_data/needs_mapping merg pe /corecteaza. Logica backend a rutelor NESCHIMBATA.
|
||||
- _detaliu_ctx neatins (avea deja toate flag-urile necesare: editabil, gestionabil, status,
|
||||
prez.cod_rar, erori_3n). Zero logica noua in routes.py.
|
||||
- test_web_lifecycle.py::test_buton_sterge_doar_pe_blocate ramane verde (error arata
|
||||
„Re-pune in coada", sent nu) — fluxul error->repune e pastrat.
|
||||
|
||||
### Next:
|
||||
- VERIFY (requiresBrowserCheck + requiresDesignReview): gstack browser — needs_data arata
|
||||
fiecare camp o data (nr. rand propriu, VIN dedesubt), corectez data, „Salveaza si retrimite"
|
||||
-> queued; error arata „Re-pune in coada"; „Sterge" clar separat, rosu, full-width pe mobil.
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user