Explorer
/proc/thread-self/root/tmp/aa050_preflight.py
← Zurück ↓ Download
import sqlite3,json,datetime,urllib.request
DB='/opt/struktur/youtube-research/knowledge.db'; now=datetime.datetime.now(datetime.timezone.utc).isoformat()
c=sqlite3.connect('file:'+DB+'?mode=ro',uri=True); c.row_factory=sqlite3.Row
allcols=[r[1] for r in c.execute('pragma table_info(graphiti_import_queue)')]
rows=[]
for r in c.execute("select * from graphiti_import_queue where graphiti_status='processing' order by id"):
 d=dict(r); rows.append({k:d.get(k) for k in ['id','video_id','source_type','obsidian_path','graphiti_status','attempt_count','graphiti_attempts','locked_at','lock_owner','lock_token','lease_expires_at','heartbeat_at','updated_at','last_attempt_at','last_http_status','last_error_class','last_error_message','remote_outcome','graphiti_episode_id','content_hash','content_version_hash','payload_hash','import_identity','graphiti_release'] if k in d})
out={'checked_at_utc':now,'columns':allcols,'rows':rows}
try:
 with urllib.request.urlopen('http://127.0.0.1:8644/episodes/inventory',timeout=30) as r: inv=json.loads(r.read()).get('episodes',[])
 for row in out['rows']:
  iid=row.get('import_identity'); row['episode_matches']=[]
  for e in inv:
   if iid and iid in json.dumps(e,ensure_ascii=False,sort_keys=True): row['episode_matches'].append({'uuid':e.get('uuid'),'name':e.get('name')})
except Exception as e: out['inventory_error']=type(e).__name__+': '+str(e)
try:
 d=sqlite3.connect('file:/opt/struktur/graphiti/request-data/requests.db?mode=ro',uri=True); d.row_factory=sqlite3.Row
 ids=[r['id'] for r in out['rows']]
 if ids:
  marks=','.join('?'*len(ids)); out['requests']=[dict(r) for r in d.execute('select request_id,queue_id,status,http_status,error_phase,terminal_reason,started_at,completed_at,llm_request_count,error_message,episode_uuid from graphiti_requests where queue_id in ('+marks+') order by started_at desc',ids)]
 else: out['requests']=[]
except Exception as e: out['request_error']=type(e).__name__+': '+str(e)
print(json.dumps(out,ensure_ascii=False,indent=2))