"""B13 wiring — Widerrufsbelehrung-Reachability. Hängt sich an `state["extra_findings"]` an und rendert einen eigenständigen V2-HTML-Block (`widerruf_reach_html`). """ from __future__ import annotations import html import logging from compliance.services.widerrufsbelehrung_reachability_check import ( check_widerrufsbelehrung_reachability, ) logger = logging.getLogger(__name__) def run_b13(state: dict) -> None: new = check_widerrufsbelehrung_reachability(state) if not new: return extras = state.get("extra_findings") or [] extras.extend(new) state["extra_findings"] = extras state["widerruf_reach_html"] = _render(new) logger.info("B13 widerruf-reach: %d finding(s)", len(new)) def _render(findings: list[dict]) -> str: cards = [] for f in findings: sev = (f.get("severity") or "").upper() color = "#dc2626" if sev == "HIGH" else "#f59e0b" scope_tag = f.get("b2c_scope") or "" scope_html = ( f"Scope: {html.escape(scope_tag)}" if scope_tag else "" ) cards.append( f"