fix(tcf): Schema-Mapping fuer NOT NULL constraints (domain_pattern, source_name)
CI / detect-changes (push) Successful in 10s
CI / branch-name (push) Has been skipped
CI / guardrail-integrity (push) Has been skipped
CI / secret-scan (push) Has been skipped
CI / dep-audit (push) Has been skipped
CI / sbom-scan (push) Has been skipped
CI / validate-canonical-controls (push) Successful in 14s
CI / loc-budget (push) Failing after 20s
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / nodejs-build (push) Successful in 2m33s
CI / test-go (push) Failing after 52s
CI / iace-gt-coverage (push) Successful in 25s
CI / test-python-backend (push) Successful in 40s
CI / test-python-document-crawler (push) Has been skipped
CI / test-python-dsms-gateway (push) Has been skipped
CI / detect-changes (push) Successful in 10s
CI / branch-name (push) Has been skipped
CI / guardrail-integrity (push) Has been skipped
CI / secret-scan (push) Has been skipped
CI / dep-audit (push) Has been skipped
CI / sbom-scan (push) Has been skipped
CI / validate-canonical-controls (push) Successful in 14s
CI / loc-budget (push) Failing after 20s
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / nodejs-build (push) Successful in 2m33s
CI / test-go (push) Failing after 52s
CI / iace-gt-coverage (push) Successful in 25s
CI / test-python-backend (push) Successful in 40s
CI / test-python-document-crawler (push) Has been skipped
CI / test-python-dsms-gateway (push) Has been skipped
This commit is contained in:
@@ -91,28 +91,38 @@ async def fetch_and_ingest_tcf_vendors(db: Session) -> dict:
|
|||||||
leg_purposes = v.get("legIntPurposes") or []
|
leg_purposes = v.get("legIntPurposes") or []
|
||||||
all_purposes = list(set(purposes) | set(leg_purposes))
|
all_purposes = list(set(purposes) | set(leg_purposes))
|
||||||
category = _category_for_purposes(all_purposes)
|
category = _category_for_purposes(all_purposes)
|
||||||
|
privacy_url = (v.get("policyUrl") or "").strip()[:500] or None
|
||||||
|
|
||||||
# Cookie-Names die der Vendor laut TCF setzt sind nicht in der
|
# Cookie-Names die der Vendor laut TCF setzt sind nicht in der
|
||||||
# GVL — wir kennzeichnen nur den Vendor-Eintrag mit ID + Purposes.
|
# GVL — wir kennzeichnen nur den Vendor-Eintrag mit ID + Purposes.
|
||||||
# Vendor wird mit synthetic cookie_name='<vendor>_tcf_marker'
|
|
||||||
# gespeichert; Library-Lookup nutzt vendor_name-Match.
|
|
||||||
marker = f"_tcf_v{vid}"
|
marker = f"_tcf_v{vid}"
|
||||||
try:
|
try:
|
||||||
db.execute(sa_text(
|
db.execute(sa_text(
|
||||||
"""
|
"""
|
||||||
INSERT INTO compliance.cookie_library
|
INSERT INTO compliance.cookie_library
|
||||||
(cookie_name, actual_category, vendor_name, source)
|
(cookie_name, domain_pattern, vendor_name,
|
||||||
VALUES (:n, :cat, :v, 'iab_tcf_v2')
|
vendor_privacy_url, actual_category,
|
||||||
|
purpose_en, source_name, source_url, confidence)
|
||||||
|
VALUES (:n, :dp, :v, :pu, :cat, :purp, 'iab_tcf_v2',
|
||||||
|
'https://vendor-list.consensu.org/v3/vendor-list.json',
|
||||||
|
0.99)
|
||||||
ON CONFLICT (cookie_name) DO UPDATE
|
ON CONFLICT (cookie_name) DO UPDATE
|
||||||
SET actual_category = EXCLUDED.actual_category,
|
SET actual_category = EXCLUDED.actual_category,
|
||||||
vendor_name = EXCLUDED.vendor_name
|
vendor_name = EXCLUDED.vendor_name,
|
||||||
|
vendor_privacy_url = EXCLUDED.vendor_privacy_url,
|
||||||
|
purpose_en = EXCLUDED.purpose_en,
|
||||||
|
source_name = EXCLUDED.source_name,
|
||||||
|
confidence = EXCLUDED.confidence
|
||||||
"""
|
"""
|
||||||
), {"n": marker, "cat": category,
|
), {"n": marker, "dp": "*",
|
||||||
"v": f"[TCF-{vid}] {name}"})
|
"v": f"[TCF-{vid}] {name}",
|
||||||
|
"pu": privacy_url, "cat": category,
|
||||||
|
"purp": f"IAB TCF v2 Purposes: {sorted(all_purposes)}"})
|
||||||
inserted += 1
|
inserted += 1
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.warning("TCF vendor %s insert failed: %s", vid, e)
|
logger.warning("TCF vendor %s insert failed: %s", vid, e)
|
||||||
skipped += 1
|
skipped += 1
|
||||||
|
db.rollback() # neue Transaktion fuer naechsten Insert
|
||||||
db.commit()
|
db.commit()
|
||||||
return {"n_vendors_in_gvl": len(vendors), "inserted": inserted,
|
return {"n_vendors_in_gvl": len(vendors), "inserted": inserted,
|
||||||
"skipped": skipped}
|
"skipped": skipped}
|
||||||
|
|||||||
Reference in New Issue
Block a user