orchai/src-tauri/migrations/005_orchestration_modules_chat_tasks.sql

122 lines
3.5 KiB
SQL

CREATE TABLE IF NOT EXISTS project_modules (
id TEXT PRIMARY KEY,
project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
module_key TEXT NOT NULL,
name TEXT NOT NULL,
description TEXT NOT NULL DEFAULT '',
enabled INTEGER NOT NULL DEFAULT 1,
config_json TEXT NOT NULL DEFAULT '{}',
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
UNIQUE(project_id, module_key)
);
CREATE INDEX IF NOT EXISTS idx_project_modules_project_id ON project_modules(project_id);
CREATE TABLE IF NOT EXISTS project_live_sessions (
id TEXT PRIMARY KEY,
project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
agent_id TEXT NOT NULL REFERENCES agents(id),
title TEXT NOT NULL,
status TEXT NOT NULL DEFAULT 'active',
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
);
CREATE INDEX IF NOT EXISTS idx_live_sessions_project_id ON project_live_sessions(project_id);
CREATE TABLE IF NOT EXISTS project_live_messages (
id TEXT PRIMARY KEY,
session_id TEXT NOT NULL REFERENCES project_live_sessions(id) ON DELETE CASCADE,
sender TEXT NOT NULL,
content TEXT NOT NULL,
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
);
CREATE INDEX IF NOT EXISTS idx_live_messages_session_id ON project_live_messages(session_id);
CREATE TABLE IF NOT EXISTS project_agent_tasks (
id TEXT PRIMARY KEY,
project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
agent_id TEXT NOT NULL REFERENCES agents(id),
title TEXT NOT NULL,
description TEXT NOT NULL,
status TEXT NOT NULL DEFAULT 'pending',
result TEXT,
error TEXT,
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
started_at TEXT,
finished_at TEXT
);
CREATE INDEX IF NOT EXISTS idx_agent_tasks_project_id ON project_agent_tasks(project_id);
CREATE INDEX IF NOT EXISTS idx_agent_tasks_status_created_at ON project_agent_tasks(status, created_at);
INSERT OR IGNORE INTO project_modules (
id,
project_id,
module_key,
name,
description,
enabled,
config_json,
created_at,
updated_at
)
SELECT
lower(hex(randomblob(16))),
p.id,
'tuleap_polling_auto_resolve',
'Polling Tuleap + auto-resolve',
'Surveille Tuleap et lance le pipeline analyste/developpeur.',
1,
'{}',
strftime('%Y-%m-%dT%H:%M:%fZ', 'now'),
strftime('%Y-%m-%dT%H:%M:%fZ', 'now')
FROM projects p;
INSERT OR IGNORE INTO project_modules (
id,
project_id,
module_key,
name,
description,
enabled,
config_json,
created_at,
updated_at
)
SELECT
lower(hex(randomblob(16))),
p.id,
'ai_live_chat',
'Live chat agent',
'Discussion live avec un agent sur le contexte du projet.',
1,
'{}',
strftime('%Y-%m-%dT%H:%M:%fZ', 'now'),
strftime('%Y-%m-%dT%H:%M:%fZ', 'now')
FROM projects p;
INSERT OR IGNORE INTO project_modules (
id,
project_id,
module_key,
name,
description,
enabled,
config_json,
created_at,
updated_at
)
SELECT
lower(hex(randomblob(16))),
p.id,
'agent_task_runner',
'Agent task runner',
'File de tâches asynchrones traitées par des agents pré-définis.',
1,
'{}',
strftime('%Y-%m-%dT%H:%M:%fZ', 'now'),
strftime('%Y-%m-%dT%H:%M:%fZ', 'now')
FROM projects p;