fix: apply_templates_023.py — placeholders als JSONB + version/status Felder
All checks were successful
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / test-go-ai-compliance (push) Successful in 34s
CI / test-python-backend-compliance (push) Successful in 30s
CI / test-python-document-crawler (push) Successful in 21s
CI / test-python-dsms-gateway (push) Successful in 16s

- json.dumps() für jsonb-Spalte statt Python-Liste
- CAST(:placeholders AS jsonb) in SQL
- version='1.0' + status='active' hinzugefügt

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Benjamin Admin
2026-03-04 14:45:50 +01:00
parent e0f7f2134e
commit f0357ee473

View File

@@ -13,7 +13,9 @@ Usage:
docker exec bp-compliance-backend python3 /tmp/apply_templates_023.py docker exec bp-compliance-backend python3 /tmp/apply_templates_023.py
""" """
import json
import os import os
import re
import sys import sys
import uuid import uuid
@@ -640,8 +642,7 @@ def main() -> None:
print(f'[SKIP] Bereits vorhanden: {t["title"]}') print(f'[SKIP] Bereits vorhanden: {t["title"]}')
continue continue
# Extract placeholders from content # Extract placeholders from content (jsonb column → pass as JSON string)
import re
placeholders = sorted(set(re.findall(r'\{\{[A-Z_]+\}\}', t['content']))) placeholders = sorted(set(re.findall(r'\{\{[A-Z_]+\}\}', t['content'])))
new_id = str(uuid.uuid4()) new_id = str(uuid.uuid4())
@@ -651,12 +652,12 @@ def main() -> None:
(id, title, document_type, language, jurisdiction, (id, title, document_type, language, jurisdiction,
content, description, license_id, license_name, content, description, license_id, license_name,
source_name, is_complete_document, attribution_required, source_name, is_complete_document, attribution_required,
placeholders, created_at, updated_at) placeholders, version, status, created_at, updated_at)
VALUES VALUES
(:id, :title, :document_type, :language, :jurisdiction, (:id, :title, :document_type, :language, :jurisdiction,
:content, :description, :license_id, :license_name, :content, :description, :license_id, :license_name,
:source_name, :is_complete_document, :attribution_required, :source_name, :is_complete_document, :attribution_required,
:placeholders, NOW(), NOW()) CAST(:placeholders AS jsonb), :version, :status, NOW(), NOW())
'''), '''),
{ {
'id': new_id, 'id': new_id,
@@ -671,7 +672,9 @@ def main() -> None:
'source_name': t['source_name'], 'source_name': t['source_name'],
'is_complete_document': t['is_complete_document'], 'is_complete_document': t['is_complete_document'],
'attribution_required': t['attribution_required'], 'attribution_required': t['attribution_required'],
'placeholders': placeholders, 'placeholders': json.dumps(placeholders),
'version': '1.0',
'status': 'active',
} }
) )
print(f'[OK] {t["title"]} ({t["document_type"]}/{t["language"]}) — {len(placeholders)} Platzhalter') print(f'[OK] {t["title"]} ({t["document_type"]}/{t["language"]}) — {len(placeholders)} Platzhalter')