feat(5.9): US-007 - responsive pagini de continut (card Mapari, scroll contained Jurnal/Nomenclator/Admin, formulare stivate)

- base.html @media(max-width:767px): clasa .tabel-card (card per rand) scopata
  SEPARAT de .tabel-trimiteri 5.8; reguli formular full-width + butoane >=44px
  scopate pe #card-cont / #form-test-cheie / #filtre-jurnal (marker US-007)
- _mapari.html: tabel-card + data-eticheta pe toate 4 tabelele; override select
  in card local (evita batalia de specificitate cu stilul inline)
- _integrare.html: id=form-test-cheie (ancora de scope pe formularul de test)
- R12 per-tabel: Mapari=card; Jurnal/Nomenclator/Admin=.tablewrap scroll contained;
  Cont/Integrare=fara tabele (doar formulare)
- tests: +3 (tabele clasa responsive, formulare full-width, regresie carduri 5.8)
- suita: 838 passed, 1 deselected
- prd.json US-007 passes=true + notes; progress.txt

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude Agent
2026-06-25 09:17:47 +00:00
parent 141949dc95
commit d3433015ad
6 changed files with 220 additions and 25 deletions

View File

@@ -190,12 +190,12 @@
],
"requiresBrowserCheck": true,
"requiresDesignReview": false,
"passes": false,
"passes": true,
"failed": false,
"blocked": false,
"retries": 0,
"failureReason": "",
"notes": ""
"notes": "Implementat. R12 per-tabel: Mapari=CARD (clasa .tabel-card scopata separat de .tabel-trimiteri 5.8, data-eticheta pe td-uri in toate 4 tabelele); Jurnal/Nomenclator/Admin=.tablewrap scroll contained (deja existau; dense/admin-only, risc minim). Cont/Integrare=fara tabele, doar formulare stivate. CSS card+formulare in blocul @media(max-width:767px) din base.html (marker US-007). Formulare: inputuri full-width (!important doar pe mobil ca sa invinga latimile inline desktop), butoane >=44px, filtre jurnal pe o coloana. id=form-test-cheie adaugat la integrare pt scope. Override select mapari in card local in _mapari.html (evita batalia de ordine/specificitate cu stilul inline). Teste: test_tabele_continut_au_clasa_responsive, test_formulare_full_width_mobil, test_carduri_trimiteri_5_8_supravietuiesc (regresie). Suita: 838 passed, 1 deselected. E2E ramas pt browser (375px fara scroll orizontal de pagina pe fiecare pagina)."
},
{
"id": "US-008",
@@ -259,4 +259,4 @@
"notes": ""
}
]
}
}

View File

@@ -142,3 +142,55 @@ Note: PRD APROBAT 2026-06-24 cu revizii obligatorii R1-R12 (raport AUTOPLAN). R1
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.
---
## US-007: Responsive — paginile de continut (Mapari, Cont, Nomenclator, Integrare, Jurnal, Admin)
### Decizia per-tabel (R12):
- Mapari = CARD per rand sub 767px (tabele actionabile: selecturi nomenclator + butoane +
kebab). Toate cele 4 tabele (De rezolvat, Mapari salvate, Formate coloane, Reguli text)
primesc `data-eticheta` pe `<td>`-uri + clasa `tabel-card` pe `.tablewrap`.
- Jurnal = .tablewrap (scroll orizontal contained). Dens read-only, multe coloane (Cand/Sursa/
Tip/Nivel/Cont/Cod/Mesaj) — cardul ar fi lung si zgomotos; scroll contained pastreaza tabularitatea.
- Nomenclator = .tablewrap (scroll contained). Dens read-only (Cod/Denumire/Actualizat).
- Admin = .tablewrap (scroll contained). Actionabil DAR admin-only, dens (8 coloane), actiunile sunt
deja in kebab compact + bulk-bar; cardul ar fi cost mare pe o pagina low-traffic pe mobil. Risc minim.
- Cont / Integrare = fara tabele (doar formulare + blocuri de cod). Formularele stivate; blocurile
`<pre>` de cod si tab-bar-urile aveau deja `overflow-x:auto` (contained).
### Ce s-a livrat:
- app/web/templates/base.html: in blocul `@media (max-width:767px)` (marker US-007):
- `.tabel-card` — card per rand SCOPAT separat de `.tabel-trimiteri` (5.8 intact). thead ascuns,
tr=card, td=block cu `::before` din `data-eticheta`; celulele fara eticheta (doar actiuni) nu
afiseaza antet gol; selecturi/inputuri full-width, butoane in card width:100% + min-height:44px.
- Formulare de continut pe o coloana: inputuri full-width (`width:100% !important` DOAR pe mobil,
ca sa invinga latimile inline de desktop — desktop neschimbat), butoane >=44px + full-width,
filtrele de jurnal stivuite (`#filtre-jurnal > div { width:100% }`). Scopat strict pe
`#card-cont`, `#form-test-cheie`, `#jurnal-section #filtre-jurnal` (nu atinge taburile ARIA,
butoanele de copiere absolute, tabelul de trimiteri sau modalul).
- app/web/templates/_mapari.html: `tabel-card` pe cele 4 `.tablewrap`; `data-eticheta` pe td-uri;
override local in `<style>` (`@media 767px` -> select/input `max-width:none; min-width:0`) ca sa
evite batalia de specificitate/ordine cu regula inline `#mapari-section td select`.
- app/web/templates/_integrare.html: `id="form-test-cheie"` pe formularul de test (ancora de scope).
- tests/test_web_responsive.py: +3 teste (test_tabele_continut_au_clasa_responsive,
test_formulare_full_width_mobil, test_carduri_trimiteri_5_8_supravietuiesc — regresie 5.8).
### Gates rulate:
- Typecheck/Lint: SKIP (comenzi goale in techStack).
- Tests: PASS — tests/test_web_responsive.py 6; suita completa 838 passed, 1 deselected.
- Browser (E2E requiresBrowserCheck): DEFERAT la VERIFY (loop fara browser).
### Learnings:
- `.tablewrap` (overflow-x:auto, scroll contained) exista DEJA global din 5.5 si era aplicat pe toate
tabelele de continut (Jurnal/Nomenclator/Mapari/Admin). US-007 a insemnat: (a) CONVERSIA Mapari la
card (nou), (b) confirmarea scroll-contained pe restul, (c) tratamentul de formular pe mobil.
- Stilurile inline (`style="width:..."`) din templates inv ing stylesheet-ul fara `!important`;
pe mobil am folosit `!important` scopat strict, evitand regresia pe desktop.
- Scoparea separata `.tabel-card` vs `.tabel-trimiteri` e CRITICA: ambele mecanisme de card coexista
in acelasi bloc media; test de regresie confirma ca blocul 5.8 (.tabel-trimiteri thead/td::before)
supravietuieste.
### Next:
- US-008 (responsive Acasa + login/signup), US-005 (poll nu inchide modalul).
- VERIFY: gstack browser la 375px pe /?tab=mapari, ?tab=jurnal, Cont/Nomenclator/Integrare, /admin —
fiecare fara scroll orizontal de pagina, tabele lizibile, formulare pe o coloana.
---