From 8f39dfbc1e1da1f069fa9cc4b28f625910d70354 Mon Sep 17 00:00:00 2001 From: Claude Agent Date: Mon, 29 Jun 2026 14:44:10 +0000 Subject: [PATCH] feat(5.16): aliniere lista/preview la mockup + fix lock seed la boot MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Implementeaza planul aprobat din docs/raport-comparatie-mockup-5.16.md (T-1..T-9): - T-1/T-8: rand lista 4->2 linii (placuta primar + cod RAR · operatie · data + pill), fallback placuta, eticheta-problema 10px->--fs-xs (_submissions.html, base.html) - T-2: pill slim restilat fill-tint + dot 7px + text colorat per stare (base.html) - T-3: bug 4a coliziune pill/vehicul in preview — col-stare 104->140px (base.html) - T-4: preview 8->5 coloane (scos #, KM, Note; motivul -> title pe pill) - T-5: titlu sectiune "Trimiterile tale" -> sr-only (a11y) + badge/export discret - T-6: linia plan N/60 in corp doar pe avertizare; consum normal in badge+burger - T-7: guard chenar gol chips extra (_chips_prestatii.html) - T-9: "Anuleaza"->"Renunta"; nume operatie emfatic bold Fix boot: init_db reincarca seedul de ~17k operatii (5.18) pe FIECARE pornire, pe API + worker concurent -> "database is locked" la al doilea proces. Guard "_if_empty" pe mapping_suggestions (ca seed_nomenclator_if_empty) -> boot rapid, fara cursa. Teste actualizate (slim 2-linii, fallback placuta, plan in burger). TODOS.md: defer trackuit (eroare HTMX lista, retokenizare px, diacritice). Co-Authored-By: Claude Opus 4.8 --- TODOS.md | 23 +++++++++ app/db.py | 13 ++++- app/web/templates/_chips_prestatii.html | 11 ++-- app/web/templates/_coada.html | 23 ++++++--- app/web/templates/_form_editare.html | 4 +- app/web/templates/_preview_import.html | 9 ++-- app/web/templates/_preview_rand.html | 30 +++++------ app/web/templates/_status.html | 9 ++-- app/web/templates/_submissions.html | 56 ++++++++++---------- app/web/templates/base.html | 32 ++++++++++-- docs/raport-comparatie-mockup-5.16.md | 23 +++++---- tests/test_web_status.py | 16 +++--- tests/test_web_submissions.py | 25 +++++---- tests/test_web_submissions_layout.py | 68 ++++++++++++++----------- 14 files changed, 212 insertions(+), 130 deletions(-) diff --git a/TODOS.md b/TODOS.md index 6da0e97..50745c6 100644 --- a/TODOS.md +++ b/TODOS.md @@ -53,3 +53,26 @@ Elemente deferate din review-uri. Negrupte de un PRD curent; de promovat cand de - [ ] **US-009/US-010 ca PRD separat daca propagarea design e urgenta** — salvarea mapare-din-chip si bulk-fix sunt adiacente FUNCTIONALE (acceptate via SELECTIVE EXPANSION), dincolo de obiectivul pur de propagare design. Daca vrei sa livrezi designul rapid, pot fi scoase intr-un PRD propriu. (CEO, low.) + +## Din raport comparatie mockup 5.16 (2026-06-29) + +> Restul task-urilor din `docs/raport-comparatie-mockup-5.16.md` au fost livrate (T-1..T-9). +> Cele de mai jos raman explicit in coada la cererea userului. + +- [ ] **Stare de eroare HTMX la incarcarea listei (D-4)** — cand `/_fragments/submissions` + da 500 sau pica reteaua, `#submissions-wrap` ramane blocat pe spinner ("se incarca…") fara + mesaj. De adaugat un partial de eroare / `hx-on::response-error` cu "nu s-a putut incarca, + reincearca". Robustete pre-existenta (nu introdusa de 5.16), impact functional real — + **candidatul cu cea mai mare valoare** din lista. (Design D-4, medium.) + +- [ ] **Retokenizare px completa in template-uri** — `_submissions.html` / `_preview_*` folosesc + literali `font-size:13px/12px/11px` in loc de token-urile `--fs-*`. 5.16 a corectat doar + instanta sub-12px (incalca pragul PRD). Restul ramane debt: schimbarea in masa (13px→`--fs-sm` + =13.5px) misca layout-ul, deci necesita o baza de regresie vizuala inainte. (Eng, bounded — + amanat ca scope creep fara baza AC.) + +- [ ] **Diacritice in textul vizibil pentru user** — mockup-urile folosesc diacritice complete + ("Observații", "Salvează", "Adaugă"); aplicatia le omite in majoritatea label-urilor. Fontul + le randeaza corect (US-001 confirmat). De aplicat pe label-uri/butoane/titluri, pastrand + cod/comentariile fara diacritice. Decizie initiala (poarta de gust T3): nu se aplica acum — + reintrodus in coada la cererea userului (2026-06-29) ca finisaj viitor. (Transversal, low.) diff --git a/app/db.py b/app/db.py index b3b52b5..2327b08 100644 --- a/app/db.py +++ b/app/db.py @@ -39,10 +39,19 @@ def init_db() -> None: seed_nomenclator_if_empty(conn) # Seed corpus operatii etichetate -> mapping_suggestions (SILVER, PRD 5.18 US-004). # Gated: OFF in teste (conftest), ON in productie. INSERT OR IGNORE -> idempotent. + # DOAR daca mapping_suggestions e gol: seedul are ~17k randuri; re-rularea lui pe + # FIECARE boot (API + worker concurent) tinea write-lock-ul indelung -> al doilea + # proces primea "database is locked" la pornire. Guard "_if_empty" (ca nomenclatorul) + # -> boot rapid cand e deja seeded. Re-seed dupa actualizarea fisierului = manual + # (goleste tabela), consistent cu semantica v1 ignore-not-upsert a seederului. if get_settings().seed_operatii_enabled: - from .operatii_seed import seed_operatii_etichetate + already = conn.execute( + "SELECT 1 FROM mapping_suggestions LIMIT 1" + ).fetchone() + if not already: + from .operatii_seed import seed_operatii_etichetate - seed_operatii_etichetate(conn) + seed_operatii_etichetate(conn) conn.commit() finally: conn.close() diff --git a/app/web/templates/_chips_prestatii.html b/app/web/templates/_chips_prestatii.html index 5830447..728fca8 100644 --- a/app/web/templates/_chips_prestatii.html +++ b/app/web/templates/_chips_prestatii.html @@ -118,10 +118,13 @@ {% endfor %} {# ===== US-005 (5.16): Chips extra + picker '+ Adauga alta operatie / cod RAR' in mod operatii ===== #} - {# Chips extra: cod_op_service gol, cod_prestatie setat — afisate flat cu × (reuse remove_flat) #} + {# Chips extra: cod_op_service gol, cod_prestatie setat — afisate flat cu × (reuse remove_flat). + T-7 (5.16): containerul .chips se randeaza DOAR cand exista chips extra — altfel ramanea + un chenar gol nefinisat sub randurile de operatie. #} + {% set _extra_chips = _chips | rejectattr('cod_op_service') | selectattr('cod_prestatie') | list %} + {% if _extra_chips %}
- {% for chip in _chips %} - {% if not chip.cod_op_service and chip.cod_prestatie %} + {% for chip in _extra_chips %} {% set _is_warn_extra = chip.cod_prestatie in ('R-ODO', 'I-ODO') %} @@ -134,9 +137,9 @@ hx-vals='{"chips_action":"remove_flat","chips_remove_cod":"{{ chip.cod_prestatie }}"}' aria-label="Sterge codul suplimentar {{ chip.cod_prestatie }}">× - {% endif %} {% endfor %}
+ {% endif %} {% if nomenclator_rar %}