From 3b02e31f9d9a79e8a37a52acfcf571d553399519 Mon Sep 17 00:00:00 2001 From: iscarelli Date: Wed, 10 Jun 2026 13:56:06 -0300 Subject: [PATCH] =?UTF-8?q?feat:=20rolo=20n=C3=A3o=20pesado=20exibe=20peso?= =?UTF-8?q?=20nominal=20(assumido)=20no=20lugar=20de=20"=E2=80=94"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Um rolo recém-cadastrado, ainda sem pesagem, passava a impressão de estar "zerado": o detalhe mostrava "Não pesado ainda" e a lista/inventário/detalhe do filamento mostravam "—". Os relatórios e as roscas já o tratavam como cheio (= nominal) desde a v1.35.0, deixando a exibição inconsistente. Agora essas telas exibem o peso nominal rotulado como "não pesado", assumindo o rolo cheio — consistente com relatórios e donuts. Nenhuma pesagem sintética é criada: o histórico segue vazio até a primeira pesagem real (dado honesto). - translations.py: nova chave "não pesado" (EN/ES), paridade validada - tests: test_unweighed_spool_detail_shows_nominal - VERSION 1.35.2 + CHANGELOG Co-Authored-By: Claude Opus 4.8 --- CHANGELOG.md | 5 +++++ VERSION | 2 +- templates/filaments/detail.html | 2 +- templates/reports/inventory.html | 2 +- templates/spools/detail.html | 3 ++- templates/spools/list.html | 2 +- tests/test_smoke.py | 9 +++++++++ translations.py | 2 ++ 8 files changed, 22 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ee3755b..5f23f7a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,11 @@ Versioning follows [SemVer](https://semver.org/): **MAJOR.MINOR.PATCH** --- +## [1.35.2] — 2026-06-10 + +### Changed +- **Rolo recém-cadastrado (ainda não pesado) passa a exibir o peso nominal como peso assumido** (cheio), em vez de mostrar "—" / "Não pesado ainda". O detalhe do rolo, a lista, o detalhe do filamento e o inventário agora mostram o nominal rotulado como `não pesado`, consistente com os relatórios e as roscas (que já o tratavam como cheio desde v1.35.0). Nenhuma pesagem é criada — o dado continua honesto (o histórico de pesagens segue vazio até a primeira pesagem real); só a exibição deixou de parecer "zerada". + ## [1.35.1] — 2026-06-10 ### Fixed diff --git a/VERSION b/VERSION index 7eee785..0035f2a 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.35.1 +1.35.2 diff --git a/templates/filaments/detail.html b/templates/filaments/detail.html index 0de5cce..2bc5978 100644 --- a/templates/filaments/detail.html +++ b/templates/filaments/detail.html @@ -111,7 +111,7 @@
{{ _('Spools') }} ({{ spools|length }})
{{ s.nominal_weight_g|int }}g {% if s.current_net_g is not none %}{{ s.current_net_g|int }}g - {% else %}{% endif %} + {% else %}{{ s.nominal_weight_g|int }}g{% endif %} {% if s.active %} diff --git a/templates/reports/inventory.html b/templates/reports/inventory.html index d3e13e2..e2c9bf4 100644 --- a/templates/reports/inventory.html +++ b/templates/reports/inventory.html @@ -25,7 +25,7 @@

{{ _('Inventário') }} ({ data-hex="{{ s.color_hex }}" data-fill="{{ fill }}" data-pct="{{ pct }}" - data-remaining="{% if s.current_net_g is not none %}{{ s.current_net_g|int }} g / {{ s.nominal_weight_g|int }} g ({{ pct|int }}%){% else %}—{% endif %}" + data-remaining="{% if s.current_net_g is not none %}{{ s.current_net_g|int }} g / {{ s.nominal_weight_g|int }} g ({{ pct|int }}%){% else %}{{ s.nominal_weight_g|int }} g · {{ _('não pesado') }}{% endif %}" data-diameter="{{ s.diameter_mm }} mm" data-location="{{ s.location or '—' }}" data-notes="{{ s.notes }}" diff --git a/templates/spools/detail.html b/templates/spools/detail.html index 0357f8c..f46c9c1 100644 --- a/templates/spools/detail.html +++ b/templates/spools/detail.html @@ -100,7 +100,8 @@

SP-{{ '%04d'|format(spool.id) }}

{{ _('Pesado em') }} {{ spool.last_weighed_at | localdate }}
{% endif %} {% else %} -
{{ _('Não pesado ainda') }}
+
{{ spool.nominal_weight_g|int }}g
+
{{ _('de {n}g nominais').replace('{n}', spool.nominal_weight_g|int|string) }} · {{ _('não pesado') }}
{% if logged_in and spool.active %} {{ _('Registrar peso') }} {% endif %} diff --git a/templates/spools/list.html b/templates/spools/list.html index 394b586..edbc1a8 100644 --- a/templates/spools/list.html +++ b/templates/spools/list.html @@ -72,7 +72,7 @@

{{ s.brand }} / {{ s.family }} {{ s.location or '—' }} - {% if s.current_net_g is not none %}{{ s.current_net_g|int }}g{% else %}—{% endif %} + {% if s.current_net_g is not none %}{{ s.current_net_g|int }}g{% else %}{{ s.nominal_weight_g|int }}g{% endif %} {{ _('Ver') }} diff --git a/tests/test_smoke.py b/tests/test_smoke.py index 940b36f..9da94dc 100644 --- a/tests/test_smoke.py +++ b/tests/test_smoke.py @@ -138,6 +138,15 @@ def test_spool_detail_pages_render(auth_client, db): assert resp.status_code == 200, f"{url} retornou {resp.status_code}" +def test_unweighed_spool_detail_shows_nominal(auth_client, db): + """Rolo não pesado: o detalhe assume o peso nominal (cheio) em vez de exibir 0/—. + Trava a correção visual — consistente com relatórios e donuts.""" + sid = _make_spool(db, nominal=1000) + html = auth_client.get(f"/spools/{sid}").get_data(as_text=True) + assert "1000g" in html + assert "Não pesado ainda" not in html + + # ── Autoatualização: o app só escreve o flag (sem privilégio) ──────────────── def test_update_run_writes_flag(auth_client, db): diff --git a/translations.py b/translations.py index aee94d9..37cb51b 100644 --- a/translations.py +++ b/translations.py @@ -1082,6 +1082,7 @@ _EN["Tara (g)"] = "Tare (g)" _EN["Compra"] = "Purchase" _EN["Não pesado ainda"] = "Not weighed yet" +_EN["não pesado"] = "not weighed" _EN["Remover da fila de impressão"] = "Remove from print queue" _EN["Adicionar à fila de impressão"] = "Add to print queue" _EN["de {n}g nominais"] = "of {n}g nominal" @@ -1111,6 +1112,7 @@ _ES["Tara (g)"] = "Tara (g)" _ES["Compra"] = "Compra" _ES["Não pesado ainda"] = "Aún no pesado" +_ES["não pesado"] = "sin pesar" _ES["Remover da fila de impressão"] = "Quitar de la cola de impresión" _ES["Adicionar à fila de impressão"] = "Agregar a la cola de impresión" _ES["de {n}g nominais"] = "de {n}g nominales"