Explorer
/tmp/generate_three_variants.py
← Zurück ↓ Download
from pathlib import Path
p=Path('/opt/struktur/social-media-agent/publish_ready.py'); s=p.read_text()
start=s.index('def generate_package_image('); end=s.index('\n\ndef _direct_url',start)
replacement='''def generate_package_image(package_id: str, *, force: bool = False) -> dict:
    """Generate exactly three independent Codex variants for one manual request."""
    con = sqlite3.connect(CASES_DB); con.row_factory = sqlite3.Row
    row = con.execute("SELECT * FROM publication_packages WHERE package_id=?", (package_id,)).fetchone()
    if not row:
        con.close(); raise ValueError("publication package not found")
    package = dict(row); old_version = int(package.get("image_version") or 0)
    prompt_base = fach_image_prompt(package)
    prompt_ok, prompt_reason = image_relevance_gate(package, prompt_base)
    if not prompt_ok:
        con.execute("UPDATE publication_packages SET image_status='error',image_error=?,qa_status='failed',qa_failure_reasons=?,updated_at=? WHERE package_id=?", (prompt_reason, prompt_reason, _now(), package_id)); con.commit(); con.close()
        return {"ok": False, "status": "Bild fachlich unpassend", "error": prompt_reason, "attempts": []}
    generation_group_id = f"GRP-{uuid.uuid4()}"; reports=[]
    for variant_no in range(1, 4):
        prompt = prompt_base
        target = (BASE_DIR / "generated_visuals" / f"{package['signal_id']}_codex-image-gen-group-{generation_group_id[-8:]}-v{variant_no}.png").resolve()
        try:
            generated = generate_with_codex(prompt, target)
            qa = run_image_qa(target, _text(package.get("topic")), _text(package.get("final_text") or package.get("facebook_text")))
            persist_image_variant(con, package_id, generation_group_id, variant_no, generated, prompt, qa)
            reports.append({"variant": variant_no, "path": str(target), "origin_path": generated.get("origin_path"), "bytes": generated.get("bytes"), "sha256": generated.get("sha256"), "qa": qa})
        except (CodexImageError, CodexImageQAError, OSError, ValueError) as exc:
            reports.append({"variant": variant_no, "qa": {"overall": "FAIL", "failure_reasons": [str(exc)]}, "error": str(exc)})
        con.commit()
    passed = sum(1 for r in reports if r.get("qa", {}).get("overall") == "PASS")
    con.close()
    return {"ok": len(reports) == 3, "status": f"{len(reports)} Varianten erzeugt; {passed} technisch bestanden", "generation_group_id": generation_group_id, "variants": reports, "attempts": reports}
'''
s=s[:start]+replacement+s[end:]
p.write_text(s); print('switched manual generation to exactly three variants')