feat: Fusion bloc 1 — barre d'apps commune (ACC-1.1, #17) et références croisées external_ref (ACC-1.3, #18)
FlowDeck CI / lint (push) Failing after 2m33s
FlowDeck CI / test (push) Failing after 30m3s
FlowDeck CI / docker (push) Skipped

This commit is contained in:
Spark
2026-10-20 23:17:18 -04:00
parent 12beab01c9
commit d8548eede9
16 changed files with 845 additions and 4 deletions
+34
View File
@@ -2025,3 +2025,37 @@ def _migration_template_runs(conn: sqlite3.Connection) -> None:
"CREATE INDEX IF NOT EXISTS idx_template_runs_tpl "
"ON template_runs(template_id, created_at)"
)
@register(50, "fusion: références croisées `external_refs` (ACC-1.3)")
def _migration_external_refs(conn: sqlite3.Connection) -> None:
"""Migration 50 — table des références croisées entre objets.
Modèle figé par dracodev-commons (contrats/external_ref.schema.json,
v0.1.0) : la référence vit chez le propriétaire de l'objet source
(page ou projet/collection Flowdeck) ; une seule source de vérité
par objet, des liens — jamais des copies du contenu cible.
"""
conn.execute(
"""
CREATE TABLE IF NOT EXISTS external_refs (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER,
owner_type TEXT NOT NULL,
owner_id INTEGER NOT NULL,
target_app TEXT NOT NULL,
target_type TEXT NOT NULL,
target_id TEXT NOT NULL,
target_url TEXT NOT NULL,
label TEXT NOT NULL DEFAULT '',
domain TEXT,
status TEXT NOT NULL DEFAULT 'ok',
created_by TEXT NOT NULL DEFAULT 'user',
created_at TEXT NOT NULL DEFAULT (datetime('now'))
)
"""
)
conn.execute(
"CREATE INDEX IF NOT EXISTS idx_external_refs_owner "
"ON external_refs(owner_type, owner_id)"
)