Explorer
/tmp/check_aa043.py
← Zurück ↓ Download
import sqlite3
conn = sqlite3.connect('/opt/struktur/youtube-research/knowledge.db')
c = conn.cursor()
# total open AA-043 queue lines (not done)
c.execute("""
SELECT COUNT(*) 
FROM graphiti_import_queue 
WHERE reconciliation_record_id LIKE 'aa043:%' 
  AND graphiti_status != 'done'
""")
open_queue = c.fetchone()[0]
print(f'Open AA-043 queue lines (not done): {open_queue}')
# distinct source_identity among open (need to join source_versions)
c.execute("""
SELECT COUNT(DISTINCT sv.source_identity) 
FROM graphiti_import_queue g
JOIN source_versions sv ON g.source_version_id = sv.version_id
WHERE g.reconciliation_record_id LIKE 'aa043:%'
  AND g.graphiti_status != 'done'
""")
distinct_src_open = c.fetchone()[0]
print(f'Distinct source_identity (open): {distinct_src_open}')
# distinct source_version_id among open
c.execute("""
SELECT COUNT(DISTINCT g.source_version_id) 
FROM graphiti_import_queue g
WHERE g.reconciliation_record_id LIKE 'aa043:%'
  AND g.graphiti_status != 'done'
""")
distinct_ver_open = c.fetchone()[0]
print(f'Distinct source_version_id (open): {distinct_ver_open}')
# distinct obsidian_path among open
c.execute("""
SELECT COUNT(DISTINCT g.obsidian_path 
FROM graphiti_import_queue g
WHERE g.reconciliation_record_id LIKE 'aa043:%'
  AND g.graphiti_status != 'done'
""")
# Actually we need count distinct
c.execute("""
SELECT COUNT(DISTINCT g.obsidian_path) 
FROM graphiti_import_queue g
WHERE g.reconciliation_record_id LIKE 'aa043:%'
  AND g.graphiti_status != 'done'
""")
distinct_path_open = c.fetchone()[0]
print(f'Distinct obsidian_path (open): {distinct_path_open}')
# breakdown by status for all aa043 items
print('\nStatus breakdown for all AA-043 items:')
c.execute("""
SELECT graphiti_status, COUNT(*) AS cnt
FROM graphiti_import_queue
WHERE reconciliation_record_id LIKE 'aa043:%'
GROUP BY graphiti_status
ORDER BY cnt DESC
""")
for status, cnt in c.fetchall():
    print(f'  {status}: {cnt}')
# For done items, check remote_outcome to differentiate WRITE_CONFIRMED vs POLICY_BLOCK etc.
print('\nDone items breakdown by remote_outcome:')
c.execute("""
SELECT COALESCE(remote_outcome, '(null)') AS outcome, COUNT(*) AS cnt
FROM graphiti_import_queue
WHERE reconciliation_record_id LIKE 'aa043:%'
  AND graphiti_status = 'done'
GROUP BY outcome
ORDER BY cnt DESC
""")
for outcome, cnt in c.fetchall():
    print(f'  {outcome}: {cnt}')
# Promotion policy breakdown for open items (if column exists)
c.execute("PRAGMA table_info(graphiti_import_queue)")
cols = [row[1] for row in c.fetchall()]
if 'promotion_policy' in cols:
    print('\nPromotion policy breakdown (open items):')
    c.execute("""
    SELECT promotion_policy, COUNT(*) AS cnt
    FROM graphiti_import_queue
    WHERE reconciliation_record_id LIKE 'aa043:%'
      AND graphiti_status != 'done'
    GROUP BY promotion_policy
    ORDER BY cnt DESC
    """)
    for pol, cnt in c.fetchall():
        print(f'  {pol}: {cnt}')
    # distinct source_identity per promotion policy (open)
    print('\nDistinct source_identity per promotion policy (open):')
    c.execute("""
    SELECT promotion_policy, COUNT(DISTINCT sv.source_identity) AS cnt
    FROM graphiti_import_queue g
    JOIN source_versions sv ON g.source_version_id = sv.version_id
    WHERE g.reconciliation_record_id LIKE 'aa043:%'
      AND g.graphiti_status != 'done'
    GROUP BY promotion_policy
    ORDER BY cnt DESC
    """)
    for pol, cnt in c.fetchall():
        print(f'  {pol}: {cnt}')
else:
    print('\nPromotion policy column not present in graphiti_import_queue')
conn.close()