From 85cd1c30abfc3a6e92f4b50e95202b5dd70d0af4 Mon Sep 17 00:00:00 2001 From: Schubert Ferenc Date: Sun, 12 Jul 2026 13:15:02 +0200 Subject: [PATCH] fix(orion): replace cover result box with compact status text --- .../orion/__pycache__/result.cpython-313.pyc | Bin 2720 -> 3210 bytes .../__pycache__/chapters.cpython-313.pyc | Bin 29424 -> 29576 bytes .../app/modules/orion/components/chapters.py | 7 +++- .../mercury/app/modules/orion/result.py | 11 +++++ .../app/modules/orion/templates/report.css | 25 +++++++++++ ...tion_workflow.cpython-313-pytest-8.3.4.pyc | Bin 168821 -> 174252 bytes .../mercury/tests/test_validation_workflow.py | 39 +++++++++++++++--- 7 files changed, 75 insertions(+), 7 deletions(-) diff --git a/validation-suite/backend/mercury/app/modules/orion/__pycache__/result.cpython-313.pyc b/validation-suite/backend/mercury/app/modules/orion/__pycache__/result.cpython-313.pyc index 9ce7b6fb37b21c6fe5dbe49af8989eb30b45111b..bb070804033c313de9317c7450a46ddf56da1567 100644 GIT binary patch delta 797 zcmaiy&1(}u7{+%tyUXSiN}E>OCYjbG?bZ;C#WV^QT5M5}96BH#gph8g$%eQa-rc0q zOVX=|Q06Y`&6|+Fq4$ahL-63$Tcml6cd) zq`4kCiCsg#Pgc&>Z;-`#si{DSq)EbeVeXQ?i;xt-c|;R)<8GRVM z4*)_b7FTm9$+p!^w8oCr*U>e;2t>FT2n@EUt)d*;(b97!63hQ>Djx%qgwD6wD{a1q z2qH2G5QV6D#g?Bg?a7zPf1_a1lA)E4HXc|Md(>>$mTNXBeo}2&HH$*WuH(ZF)F`HK z;I!&MEwh35sq0nk8nyFBrK`c-1o_%Kgh7~0WkP5inM{c)b^^L<=CU3u+%oG>++M7Fvc(^Qn)Kl!_QQB zzSHt5rqiWRxy-{Y9=pdsSD3!^bvjr0nE5OcM#FAtZW4HwG8sfRy;>Xg=hG>%A- z_?LL*6Yt^dnUWpUw0G#HUtE;)Ag;x~?~&SRw<#EkUo8~Ge4Y!ttKU|O-0ZNn{sI~7 zyPhhF4Z((xk`VDU4ebK-X9Yb{_8q4+5s0zP;BG1@fEgiKA$}z};ly^J$le4Kq5Is5 f_vQ}SY4CL6r>>)w@vO9kcF`|MN7`5j%<{w^pWMr& delta 330 zcmeB@Tp-H#nU|M~0SGGMgR=}dCh|!zewnC#K~pJMMv5VerHCt7Ian6V;trMzme*qp zRtZ)B@w1qUc+wR$RX1xfHZn14ZeGJ&#K5g?aqvK1jj!N#y8<>%)hDd3$f$L;1Q3(_D0B2+;H z*kRfr7RZhweh?uBBE*5jEe@O9{FKt1RJ$TeAeRw{i!V=J#eG!l0|$d6qZ{LQ1`bBH J4_qPLrDMt diff --git a/validation-suite/backend/mercury/app/modules/orion/components/__pycache__/chapters.cpython-313.pyc b/validation-suite/backend/mercury/app/modules/orion/components/__pycache__/chapters.cpython-313.pyc index 2304cbe0b3ecc0beb6835cb83f36eea32a7c17c9..79bd7695672a225038575567e93b0327b858f424 100644 GIT binary patch delta 5525 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 delta 5423 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 Rdbbo$?Ncwv-#B30{{X?Ve%k;5 diff --git a/validation-suite/backend/mercury/app/modules/orion/components/chapters.py b/validation-suite/backend/mercury/app/modules/orion/components/chapters.py index 09ab5193..f1f44e79 100644 --- a/validation-suite/backend/mercury/app/modules/orion/components/chapters.py +++ b/validation-suite/backend/mercury/app/modules/orion/components/chapters.py @@ -8,7 +8,7 @@ from app.modules.orion.assets import schubamed_logo_uri from app.modules.orion.components.base import ReportComponent from app.modules.orion.context import ReportContext from app.modules.orion.html import definition_list, paragraph, section, table, text, yes_no -from app.modules.orion.result import validation_result_box, validation_result_label +from app.modules.orion.result import validation_result_box, validation_result_cover_sentence, validation_result_label def render_template_text(content: str, context: ReportContext) -> str: @@ -84,7 +84,10 @@ class CoverComponent(ReportComponent): f'

{text(context.customer.name)}

' f"{rows}" '
' - f"{validation_result_box(validation.result)}" + '
' + "

Ergebnis der Validierung

" + f"

{text(validation_result_cover_sentence(validation.result))}

" + "
" '
Unterschrift technische Validierung
' "
" "" diff --git a/validation-suite/backend/mercury/app/modules/orion/result.py b/validation-suite/backend/mercury/app/modules/orion/result.py index 13d38b4c..5c378104 100644 --- a/validation-suite/backend/mercury/app/modules/orion/result.py +++ b/validation-suite/backend/mercury/app/modules/orion/result.py @@ -55,6 +55,17 @@ def validation_result_label(value: str | None) -> str: return validation_result_presentation(value).label +def validation_result_cover_sentence(value: str | None) -> str: + presentation = validation_result_presentation(value) + sentences = { + "BESTANDEN": "Die technische Validierung wurde erfolgreich bestanden.", + "BESTANDEN_MIT_AUFLAGEN": "Die technische Validierung wurde mit Auflagen bestanden.", + "NICHT_BESTANDEN": "Die technische Validierung wurde nicht bestanden.", + "OFFEN": "Die technische Validierung wurde noch nicht bewertet.", + } + return sentences[presentation.key] + + def validation_result_box(value: str | None, *, compact: bool = False) -> str: presentation = validation_result_presentation(value) size_class = "result-box--compact" if compact else "result-box--cover" diff --git a/validation-suite/backend/mercury/app/modules/orion/templates/report.css b/validation-suite/backend/mercury/app/modules/orion/templates/report.css index 8fdb8c57..1b1ed883 100644 --- a/validation-suite/backend/mercury/app/modules/orion/templates/report.css +++ b/validation-suite/backend/mercury/app/modules/orion/templates/report.css @@ -204,6 +204,31 @@ h1 { page-break-inside: avoid; } +.cover-result-text { + border-top: .25mm solid #DCE3E3; + break-inside: avoid; + margin: 2mm 0 0 0; + page-break-inside: avoid; + padding-top: 2.2mm; +} + +.cover-result-text h2 { + border: 0; + color: #4F6A74; + font-size: 10pt; + letter-spacing: .04em; + margin: 0 0 1mm 0; + padding: 0; + text-transform: uppercase; +} + +.cover-result-text p { + color: #2E3B40; + font-size: 10.5pt; + font-weight: 700; + margin: 0; +} + .result-box { border: .65mm solid #8A9498; border-radius: 1.5mm; diff --git a/validation-suite/backend/mercury/tests/__pycache__/test_validation_workflow.cpython-313-pytest-8.3.4.pyc b/validation-suite/backend/mercury/tests/__pycache__/test_validation_workflow.cpython-313-pytest-8.3.4.pyc index b594b2cd1706ee00b35fa40a59dcf44f12762326..92f952e785a8b398cf5be9eff94e094ec46b3c6d 100644 GIT binary patch delta 4746 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 diff --git a/validation-suite/backend/mercury/tests/test_validation_workflow.py b/validation-suite/backend/mercury/tests/test_validation_workflow.py index af818421..05cf5cd7 100644 --- a/validation-suite/backend/mercury/tests/test_validation_workflow.py +++ b/validation-suite/backend/mercury/tests/test_validation_workflow.py @@ -917,23 +917,52 @@ def test_orion_result_boxes_render_on_cover_summary_and_results(tmp_path): html = OrionReportService(db, tmp_path).render_html(validation.id) - assert html.count("VALIDIERUNGSERGEBNIS") >= 3 - assert "BESTANDEN MIT AUFLAGEN" in html + assert html.count("VALIDIERUNGSERGEBNIS") >= 2 + assert 'class="result-box result-box--cover' not in html + assert html.count('class="result-box result-box--compact') >= 2 + assert "Ergebnis der Validierung" in html + assert "Die technische Validierung wurde mit Auflagen bestanden." in html + assert "BESTANDEN MIT AUFLAGEN" not in html assert "Bestanden mit Auflagen" in html assert 'class="cover-closing"' in html + assert 'class="cover-result-text"' in html assert 'class="signature-block"' in html assert "Unterschrift technische Validierung" in html assert "Unterschrift Auftraggeber" not in html - assert html.index('id="cover"') < html.index("BESTANDEN MIT AUFLAGEN") assert html.index('id="summary"') < html.index("Bestanden mit Auflagen") assert html.index('id="results"') < html.rindex("Bestanden mit Auflagen") +def test_orion_cover_result_text_for_supported_statuses(tmp_path): + expected = { + "BESTANDEN": "Die technische Validierung wurde erfolgreich bestanden.", + "BESTANDEN_MIT_AUFLAGEN": "Die technische Validierung wurde mit Auflagen bestanden.", + "NICHT_BESTANDEN": "Die technische Validierung wurde nicht bestanden.", + } + + for value, sentence in expected.items(): + db = session() + customer, location, device = seed(db) + validation = valid_validation(customer, location, device) + validation.report_number = f"VAL-{value}" + validation.result = value + db.add(validation) + db.flush() + + html = OrionReportService(db, tmp_path / value).render_html(validation.id) + + assert "Ergebnis der Validierung" in html + assert sentence in html + assert 'class="result-box result-box--cover' not in html + assert html.count('class="result-box result-box--compact') >= 2 + + def test_orion_result_box_css_prevents_page_breaks(): css = Path("app/modules/orion/templates/report.css").read_text(encoding="utf-8") assert ".result-box" in css assert ".cover-closing" in css + assert ".cover-result-text" in css assert ".signature-block" in css assert "break-inside: avoid" in css assert "page-break-inside: avoid" in css @@ -1116,8 +1145,8 @@ def test_orion_pdf_first_page_is_cover_not_blank(tmp_path): assert "PRÜFBERICHTZURVALIDIERUNG" in normalized_text assert "FUNKTIONS-UNDLEISTUNGSQUALIFIKATION" in normalized_text - assert "VALIDIERUNGSERGEBNIS" in normalized_text - assert "BESTANDEN" in normalized_text + assert "ERGEBNISDERVALIDIERUNG" in normalized_text + assert "DIETECHNISCHEVALIDIERUNGWURDEERFOLGREICHBESTANDEN" in normalized_text def test_orion_bookmark_labels_are_created_from_central_sections(tmp_path):