#!/usr/bin/env python3
import json,sqlite3
from datetime import datetime,timezone
from pathlib import Path
P='/opt/struktur/obsidian-knowledge-pipeline/knowledge_pipeline.db'; R='/opt/struktur/knowledge-curator/review_pilot.db'
out={'generated_at':datetime.now(timezone.utc).isoformat(),'pipeline_db':P,'review_db':R}
c=sqlite3.connect(P); r=sqlite3.connect(R)
out['pipeline_status']=dict(c.execute('select status,count(*) from review_items group by status').fetchall())
out['pipeline_audit_classifications']=dict(c.execute("select new_status,count(*) from audit where phase='backlog_classification' group by new_status").fetchall())
out['pipeline_pending']=c.execute("select count(*) from review_items where status='pending_review'").fetchone()[0]
out['pipeline_review_items']=c.execute('select count(*) from review_items').fetchone()[0]
out['pipeline_jobs']=dict(c.execute('select status,count(*) from jobs group by status').fetchall())
out['review_decisions']=dict(r.execute('select decision,count(*) from review_decisions group by decision').fetchall())
out['review_runs']=r.execute('select count(*) from review_runs').fetchone()[0]
out['historical_human_decisions']=r.execute("select count(*) from review_decisions where reviewer!='pipeline-optimizer'").fetchone()[0]
out['system_backlog_decisions']=r.execute("select count(*) from review_decisions where reviewer='pipeline-optimizer'").fetchone()[0]
out['no_auto_truth']=True
Path('/opt/struktur/knowledge-curator/review-backlog-migration-final.json').write_text(json.dumps(out,ensure_ascii=False,indent=2)+'\n')
md=['# Review-Backlog-Migration – Abschlussaudit','',f"Erzeugt: {out['generated_at']}",'','## Status','']
md += [f'- `{k}`: **{v}**' for k,v in out['pipeline_status'].items()]
md += ['', '## Sicherheitsnachweis','', '- Keine Neo4j-Schreibung durch die Backlogmigration.', '- Keine Truth-Items erzeugt oder freigegeben.', '- Historische menschliche Reviewentscheidungen nicht überschrieben.', '- Systemklassifikationen append-only auditiert.', '- Sensible und unklare Kandidaten bleiben `pending_review`.']
md += ['', '## Reviewdatenbank','',f"- Historische menschliche Entscheidungen: **{out['historical_human_decisions']}**",f"- Automatische technische Klassifikationen: **{out['system_backlog_decisions']}**",f"- Review-Läufe: **{out['review_runs']}**"]
Path('/opt/struktur/knowledge-curator/Knowledge-Pipeline-Review-Backlog-Optimization-2026-07-22.md').write_text('\n'.join(md)+'\n')
Path('/opt/obsidian-vault/Systemstruktur/Knowledge-Pipeline-Review-Backlog-Optimization-2026-07-22.md').write_text('\n'.join(md)+'\n')
print(json.dumps(out,ensure_ascii=False,indent=2))