Files
aios/migrations/001_webops_core_sqlite.sql
T

14 lines
3.2 KiB
SQL

CREATE TABLE IF NOT EXISTS users(id TEXT PRIMARY KEY, username TEXT UNIQUE NOT NULL, display_name TEXT, role TEXT NOT NULL CHECK(role IN ('owner','admin','user')), status TEXT NOT NULL DEFAULT 'pending' CHECK(status IN ('pending','approved','disabled')), password_hash TEXT, created_at TEXT NOT NULL, updated_at TEXT NOT NULL);
CREATE TABLE IF NOT EXISTS node_status(node_id TEXT PRIMARY KEY CHECK(node_id IN ('server-hw','server-local')), health TEXT NOT NULL DEFAULT 'unknown', active INTEGER NOT NULL DEFAULT 0, last_seen_at TEXT, score INTEGER NOT NULL DEFAULT 0, note TEXT);
CREATE TABLE IF NOT EXISTS routing_policy(role TEXT PRIMARY KEY CHECK(role IN ('owner','admin','user')), primary_node TEXT NOT NULL CHECK(primary_node IN ('server-hw','server-local')), backup_node TEXT NOT NULL CHECK(backup_node IN ('server-hw','server-local')), active_node TEXT NOT NULL CHECK(active_node IN ('server-hw','server-local')), failover_priority INTEGER NOT NULL, updated_at TEXT NOT NULL);
CREATE TABLE IF NOT EXISTS approvals(id TEXT PRIMARY KEY, action TEXT NOT NULL, payload TEXT NOT NULL, requested_by TEXT NOT NULL, status TEXT NOT NULL DEFAULT 'pending' CHECK(status IN ('pending','approved','rejected','executed','failed')), risk TEXT NOT NULL DEFAULT 'medium', created_at TEXT NOT NULL, decided_by TEXT, decided_at TEXT, result TEXT);
CREATE TABLE IF NOT EXISTS operations(id TEXT PRIMARY KEY, op_type TEXT NOT NULL, payload TEXT NOT NULL, status TEXT NOT NULL DEFAULT 'queued' CHECK(status IN ('queued','running','succeeded','failed','skipped')), created_by TEXT NOT NULL, created_at TEXT NOT NULL, started_at TEXT, finished_at TEXT, result TEXT);
CREATE TABLE IF NOT EXISTS audit_logs(id TEXT PRIMARY KEY, actor TEXT NOT NULL, action TEXT NOT NULL, target TEXT, payload TEXT, created_at TEXT NOT NULL);
CREATE TABLE IF NOT EXISTS events(id TEXT PRIMARY KEY, channel TEXT NOT NULL, actor TEXT, event_type TEXT NOT NULL, payload TEXT NOT NULL, route_target TEXT, status TEXT NOT NULL DEFAULT 'received', created_at TEXT NOT NULL);
CREATE TABLE IF NOT EXISTS quota_policy(username TEXT PRIMARY KEY, daily_limit INTEGER NOT NULL DEFAULT 100, used_today INTEGER NOT NULL DEFAULT 0, updated_at TEXT NOT NULL);
CREATE TABLE IF NOT EXISTS model_policy(role TEXT PRIMARY KEY CHECK(role IN ('owner','admin','user')), default_model TEXT NOT NULL, allowed_models TEXT NOT NULL, updated_at TEXT NOT NULL);
CREATE TABLE IF NOT EXISTS memory_items(id TEXT PRIMARY KEY, username TEXT NOT NULL, scope TEXT NOT NULL DEFAULT 'user', content TEXT NOT NULL, status TEXT NOT NULL DEFAULT 'active', created_at TEXT NOT NULL);
CREATE TABLE IF NOT EXISTS owner_notifications(id TEXT PRIMARY KEY, event_type TEXT NOT NULL, payload TEXT NOT NULL, status TEXT NOT NULL DEFAULT 'queued', created_at TEXT NOT NULL, sent_at TEXT);
CREATE TABLE IF NOT EXISTS self_optimization_suggestions(id TEXT PRIMARY KEY, category TEXT NOT NULL, severity TEXT NOT NULL, title TEXT NOT NULL, detail TEXT NOT NULL, proposed_fix TEXT, safe_auto_fix INTEGER NOT NULL DEFAULT 0, status TEXT NOT NULL DEFAULT 'open', created_at TEXT NOT NULL);
CREATE TABLE IF NOT EXISTS uat_results(id TEXT PRIMARY KEY, run_id TEXT NOT NULL, tc_id TEXT NOT NULL, category TEXT NOT NULL, status TEXT NOT NULL, latency_ms INTEGER, detail TEXT, created_at TEXT NOT NULL);