chore(qa): add PDF-based control QA scripts and results
Some checks failed
CI/CD / go-lint (push) Has been skipped
CI/CD / python-lint (push) Has been skipped
CI/CD / nodejs-lint (push) Has been skipped
CI/CD / test-go-ai-compliance (push) Failing after 36s
CI/CD / test-python-backend-compliance (push) Successful in 32s
CI/CD / test-python-document-crawler (push) Successful in 22s
CI/CD / test-python-dsms-gateway (push) Successful in 19s
CI/CD / validate-canonical-controls (push) Successful in 10s
CI/CD / Deploy (push) Has been skipped
Some checks failed
CI/CD / go-lint (push) Has been skipped
CI/CD / python-lint (push) Has been skipped
CI/CD / nodejs-lint (push) Has been skipped
CI/CD / test-go-ai-compliance (push) Failing after 36s
CI/CD / test-python-backend-compliance (push) Successful in 32s
CI/CD / test-python-document-crawler (push) Successful in 22s
CI/CD / test-python-dsms-gateway (push) Successful in 19s
CI/CD / validate-canonical-controls (push) Successful in 10s
CI/CD / Deploy (push) Has been skipped
QA pipeline that matches control source_original_text directly against original PDF documents to verify article/paragraph assignments. Covers backfill, dedup, source normalization, Qdrant cleanup, and prod sync. Key results (2026-03-20): - 4,110/7,943 controls matched to PDF (100% for major EU regs) - 3,366 article corrections, 705 new assignments - 1,290 controls from Erwägungsgründe (preamble) identified - 779 controls from Anhänge (annexes) identified Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
27
scripts/qa/delete_gpsr_prod.py
Normal file
27
scripts/qa/delete_gpsr_prod.py
Normal file
@@ -0,0 +1,27 @@
|
||||
"""Delete eu_2023_988 duplicate from production Qdrant."""
|
||||
import httpx
|
||||
|
||||
PROD_URL = "https://qdrant-dev.breakpilot.ai"
|
||||
HEADERS = {"api-key": "z9cKbT74vl1aKPD1QGIlKWfET47VH93u"}
|
||||
|
||||
# Delete
|
||||
resp = httpx.post(
|
||||
f"{PROD_URL}/collections/bp_compliance_ce/points/delete",
|
||||
json={"filter": {"must": [{"key": "regulation_id", "match": {"value": "eu_2023_988"}}]}},
|
||||
headers=HEADERS, timeout=60,
|
||||
)
|
||||
print(f"Delete status: {resp.json().get('status')}")
|
||||
|
||||
# Verify
|
||||
resp2 = httpx.post(
|
||||
f"{PROD_URL}/collections/bp_compliance_ce/points/count",
|
||||
json={"filter": {"must": [{"key": "regulation_id", "match": {"value": "eu_2023_988"}}]}, "exact": True},
|
||||
headers=HEADERS, timeout=15,
|
||||
)
|
||||
remaining = resp2.json().get("result", {}).get("count", 0)
|
||||
print(f"Remaining: {remaining}")
|
||||
|
||||
# Total
|
||||
resp3 = httpx.get(f"{PROD_URL}/collections/bp_compliance_ce", headers=HEADERS, timeout=10)
|
||||
total = resp3.json().get("result", {}).get("points_count", "?")
|
||||
print(f"Total points: {total}")
|
||||
Reference in New Issue
Block a user