Explorer
/proc/184/root/tmp/add_carousel_schema.py
← Zurück ↓ Download
from pathlib import Path
p=Path('/opt/struktur/social-media-agent/publish_ready.py'); s=p.read_text()
# Add carousel schema before media_briefs creation.
needle='''    CREATE TABLE IF NOT EXISTS media_briefs ('''
carousel_sql='''    CREATE TABLE IF NOT EXISTS carousels (
        carousel_id TEXT PRIMARY KEY, package_id TEXT NOT NULL REFERENCES publication_packages(package_id), media_brief_id TEXT NOT NULL, slide_count INTEGER NOT NULL, media_type TEXT NOT NULL DEFAULT 'carousel', media_type_reason TEXT NOT NULL, human_rating TEXT NOT NULL DEFAULT '', human_reason_verbatim TEXT NOT NULL DEFAULT '', human_reason_structured_json TEXT NOT NULL DEFAULT '{}', human_feedback_at TEXT NOT NULL DEFAULT '', human_feedback_by TEXT NOT NULL DEFAULT '', final_for_package INTEGER NOT NULL DEFAULT 0, selected_by_human INTEGER NOT NULL DEFAULT 0, selected_at TEXT NOT NULL DEFAULT '', selected_by TEXT NOT NULL DEFAULT '', created_at TEXT NOT NULL
    );
    CREATE INDEX IF NOT EXISTS idx_carousels_package ON carousels(package_id, created_at);
    CREATE TABLE IF NOT EXISTS carousel_slides (
        slide_id TEXT PRIMARY KEY, carousel_id TEXT NOT NULL REFERENCES carousels(carousel_id), package_id TEXT NOT NULL, slide_number INTEGER NOT NULL, slide_count INTEGER NOT NULL, purpose TEXT NOT NULL, statement TEXT NOT NULL, image_path TEXT NOT NULL DEFAULT '', origin_path TEXT NOT NULL DEFAULT '', sha256 TEXT NOT NULL DEFAULT '', file_bytes INTEGER NOT NULL DEFAULT 0, generator TEXT NOT NULL DEFAULT 'Codex built-in image_gen', prompt TEXT NOT NULL DEFAULT '', media_brief_id TEXT NOT NULL, qa_status TEXT NOT NULL DEFAULT 'not_checked', qa_report_json TEXT NOT NULL DEFAULT '{}', qa_failure_reasons TEXT NOT NULL DEFAULT '', human_rating TEXT NOT NULL DEFAULT '', human_reason_verbatim TEXT NOT NULL DEFAULT '', human_reason_structured_json TEXT NOT NULL DEFAULT '{}', human_feedback_at TEXT NOT NULL DEFAULT '', human_feedback_by TEXT NOT NULL DEFAULT '', created_at TEXT NOT NULL, UNIQUE(carousel_id, slide_number)
    );
    CREATE INDEX IF NOT EXISTS idx_carousel_slides_carousel ON carousel_slides(carousel_id, slide_number);
    CREATE TABLE IF NOT EXISTS media_briefs ('''
assert s.count(needle)==1; s=s.replace(needle,carousel_sql)
# Add package media type fields to ensure-column dict.
old='''        "qa_status": "TEXT NOT NULL DEFAULT 'not_checked'", "qa_report_json": "TEXT NOT NULL DEFAULT '{}'", "qa_failure_reasons": "TEXT NOT NULL DEFAULT ''", "qa_checked_at": "TEXT NOT NULL DEFAULT ''", "human_visual_approval": "TEXT NOT NULL DEFAULT ''",'''
new='''        "qa_status": "TEXT NOT NULL DEFAULT 'not_checked'", "qa_report_json": "TEXT NOT NULL DEFAULT '{}'", "qa_failure_reasons": "TEXT NOT NULL DEFAULT ''", "qa_checked_at": "TEXT NOT NULL DEFAULT ''", "human_visual_approval": "TEXT NOT NULL DEFAULT ''", "media_type": "TEXT NOT NULL DEFAULT 'single_image'", "media_type_reason": "TEXT NOT NULL DEFAULT ''",'''
assert s.count(old)==1; s=s.replace(old,new)
p.write_text(s); print('carousel schema added')