Explorer
/proc/123/root/tmp/aa048_end.py
← Zurück ↓ Download
import sqlite3,json,datetime,urllib.request,subprocess
now=datetime.datetime.now(datetime.timezone.utc)
p='/opt/struktur/youtube-research/knowledge.db'; c=sqlite3.connect('file:'+p+'?mode=ro',uri=True); c.row_factory=sqlite3.Row
status=[dict(r) for r in c.execute("select graphiti_status,count(*) rows,count(distinct video_id) ids from graphiti_import_queue group by graphiti_status order by graphiti_status")]
q=dict(c.execute("select id,video_id,graphiti_status,attempt_count,graphiti_attempts,next_attempt_at,graphiti_episode_id,remote_outcome,last_http_status,last_error_class,last_error_message,lock_owner,unknown_since,updated_at from graphiti_import_queue where id=876").fetchone())
c.close()
rdb='/opt/struktur/graphiti/request-data/requests.db'; rc=sqlite3.connect('file:'+rdb+'?mode=ro',uri=True); rc.row_factory=sqlite3.Row
rows=[dict(x) for x in rc.execute("select request_id,queue_id,status,http_status,error_phase,model,provider,started_at,completed_at,llm_request_count from graphiti_requests where started_at >= '2026-08-28T21:40:00' order by started_at")]
rc.close()
health=json.load(urllib.request.urlopen('http://127.0.0.1:8644/health',timeout=20)); maint=json.load(urllib.request.urlopen('http://127.0.0.1:8644/maintenance/status',timeout=20)); search=json.load(urllib.request.urlopen(urllib.request.Request('http://127.0.0.1:8644/search',data=b'{"query":"Obsidian","limit":1}',headers={'Content-Type':'application/json'}),timeout=60))
out={'captured_at_utc':now.isoformat(),'queue_status':status,'queue876':q,'requests_window':rows,'health':{k:health.get(k) for k in ['ready','provider_ready','provider_authenticated','provider_rate_limited','active_request_count','maintenance_mode','write_requests_allowed']},'maintenance':maint,'search':search}
open('/opt/struktur/reports/AA-048-end-snapshot.json','w').write(json.dumps(out,indent=2,ensure_ascii=False)+'\n'); print(json.dumps(out,ensure_ascii=False))