From 86b4a263d2ce7b4221679d15e98f8ec9f5ed10eb Mon Sep 17 00:00:00 2001 From: Benjamin Admin Date: Thu, 21 May 2026 11:29:41 +0200 Subject: [PATCH] =?UTF-8?q?fix(audit):=20P90-B1=20=E2=80=94=20cmp=5Fpayloa?= =?UTF-8?q?ds=20bei=20kurzem=20DSE-Text=20nicht=20verwerfen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit BMW-Lauf 9811eba1 hatte 0 cmp_vendors obwohl consent-tester ePaaS 4x captured (~393KB). Root-Cause in _fetch_text Z.1254: if merged and len(merged.split()) > 100: return merged, cmp_payloads Wenn DSE/Cookie-URL nur kurzen SPA-Shell-Text liefert (BMW: 10 Worte), greift die Schwelle nicht — Code faellt durch zum HTTP-Fallback der return text, [] zurueckgibt. Die zuvor captured CMP-Payloads (ePaaS-JSON mit allen Vendor-Daten) werden komplett verworfen. Fix: vor dem HTTP-Fallback pruefen ob cmp_payloads vorhanden sind. Wenn ja, diese zurueckgeben mit dem (kurzen) Text oder dem rekonstruierten cmp_cookie_text. Auch ohne 100-Wort-Schwelle. Effekt: BMW-VVT-Tabelle wird gefuellt (~90 Vendors aus ePaaS-JSON). Mercedes/andere OEMs unveraendert. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../api/agent_compliance_check_routes.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/backend-compliance/compliance/api/agent_compliance_check_routes.py b/backend-compliance/compliance/api/agent_compliance_check_routes.py index 6a3fc653..1fae9297 100644 --- a/backend-compliance/compliance/api/agent_compliance_check_routes.py +++ b/backend-compliance/compliance/api/agent_compliance_check_routes.py @@ -1256,6 +1256,20 @@ async def _fetch_text(url: str, doc_type: str = "") -> tuple[str, list[dict]]: logger.info("Merged %d docs from %s (%d words)", len(texts), url, len(merged.split())) return merged, cmp_payloads + # P90-Bug-Fix: auch wenn DSE-Text zu kurz fuer 100-Wort- + # Schwelle ist, die captured CMP-Payloads NICHT verwerfen. + # BMW-Bug: DSE liefert 10 Wort SPA-Shell, aber ePaaS-JSON + # (393KB) wurde captured. Backend braucht die fuer + # extract_vendors_from_payloads (VVT-Tabelle). + if cmp_payloads: + logger.info( + "P90: keeping %d CMP payloads for %s despite " + "short text (%d words) — HTTP fallback runs in parallel", + len(cmp_payloads), url, + len((merged or cmp_cookie_text).split()), + ) + fallback_text = merged or cmp_cookie_text or "" + return fallback_text, cmp_payloads except Exception as e: logger.warning("Consent-tester fetch failed for %s: %s", url, e)