Intègre un chat IA capable de manipuler la scène via les mêmes fonctions que l'éditeur manuel (objets, variables, déclencheurs, images générées), avec conversations multiples par écran façon Claude. Corrige au passage le rafraîchissement pjax hors-ordre, l'onglet IA/déclencheurs vide après sélection d'un objet, la comparaison de booléens dans les conditions, et le blocage du glisser-déposer hors du cadre caméra après un redimensionnement de fond par l'IA. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
39 lines
1.8 KiB
Python
39 lines
1.8 KiB
Python
import db
|
|
|
|
|
|
def ensure_ia_chat_schema(slug):
|
|
"""Chat "Générer avec l'IA" — plusieurs CONVERSATIONS par écran
|
|
(demande explicite : gérer plusieurs fils, comme claude.ai), chacune
|
|
portant sa propre liste de messages. ON DELETE CASCADE à chaque
|
|
niveau (écran supprimé -> ses conversations -> leurs messages),
|
|
même patron que _scene_objects (screens/scenes/ensure_scene_schema.py)."""
|
|
conn = db.connect(slug)
|
|
# _ia_chat_messages existait déjà (phase précédente, une seule
|
|
# conversation par écran, colonne screen_id directe) sur les projets
|
|
# déjà testés avant ce chantier — CREATE TABLE IF NOT EXISTS ne
|
|
# migrerait pas son schéma. Aucune donnée à préserver (fonctionnalité
|
|
# tout juste testée manuellement) : on repart d'une table neuve plutôt
|
|
# que d'écrire une vraie migration pour quelques messages de test.
|
|
cols = {row["name"] for row in conn.execute("PRAGMA table_info(_ia_chat_messages)").fetchall()}
|
|
if cols and "conversation_id" not in cols:
|
|
conn.execute("DROP TABLE _ia_chat_messages")
|
|
conn.executescript(
|
|
"""
|
|
CREATE TABLE IF NOT EXISTS _ia_conversations (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
screen_id INTEGER NOT NULL REFERENCES _screens(id) ON DELETE CASCADE,
|
|
title TEXT NOT NULL DEFAULT 'Nouvelle conversation',
|
|
created_at TEXT DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
CREATE TABLE IF NOT EXISTS _ia_chat_messages (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
conversation_id INTEGER NOT NULL REFERENCES _ia_conversations(id) ON DELETE CASCADE,
|
|
role TEXT NOT NULL CHECK (role IN ('user', 'assistant')),
|
|
content TEXT NOT NULL,
|
|
created_at TEXT DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
"""
|
|
)
|
|
conn.commit()
|
|
conn.close()
|