4bc1b8d2e3
CI / docker (push) Has been cancelled
引入用户端对话/生图与管理端 Provider 配置,统一 invoke 编排、Gateway、请求日志与模型管理;前端按设计规范拆分布局,Go module 更名为 github.com/rose_cat707/Atlas;生图长任务 SSE 推送;管理端登录防爆破;协议与服务类型联动;Replicate 模型同步修复;用户端创作台 UI 重构;管理端创作历史替代请求日志。 Co-authored-by: Cursor <cursoragent@cursor.com>
132 lines
4.6 KiB
SQL
132 lines
4.6 KiB
SQL
-- +goose Up
|
|
CREATE TABLE IF NOT EXISTS providers (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
name TEXT NOT NULL,
|
|
protocol TEXT NOT NULL,
|
|
base_url TEXT NOT NULL,
|
|
api_key TEXT NOT NULL DEFAULT '',
|
|
service_type TEXT NOT NULL,
|
|
is_default INTEGER NOT NULL DEFAULT 0,
|
|
enabled INTEGER NOT NULL DEFAULT 1,
|
|
extra_json TEXT NOT NULL DEFAULT '{}',
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS user_sessions (
|
|
id TEXT PRIMARY KEY,
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
last_seen_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS chat_conversations (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
session_id TEXT NOT NULL,
|
|
title TEXT NOT NULL DEFAULT '新对话',
|
|
model TEXT NOT NULL DEFAULT '',
|
|
params_json TEXT NOT NULL DEFAULT '{}',
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
);
|
|
CREATE INDEX IF NOT EXISTS idx_chat_conversations_session ON chat_conversations(session_id);
|
|
|
|
CREATE TABLE IF NOT EXISTS chat_messages (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
conversation_id INTEGER NOT NULL,
|
|
role TEXT NOT NULL,
|
|
content TEXT NOT NULL,
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
FOREIGN KEY (conversation_id) REFERENCES chat_conversations(id) ON DELETE CASCADE
|
|
);
|
|
CREATE INDEX IF NOT EXISTS idx_chat_messages_conv ON chat_messages(conversation_id);
|
|
|
|
CREATE TABLE IF NOT EXISTS generations (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
session_id TEXT NOT NULL,
|
|
service_type TEXT NOT NULL,
|
|
provider_id INTEGER,
|
|
model TEXT NOT NULL DEFAULT '',
|
|
input_json TEXT NOT NULL DEFAULT '{}',
|
|
output_json TEXT NOT NULL DEFAULT '{}',
|
|
task_id INTEGER,
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
);
|
|
CREATE INDEX IF NOT EXISTS idx_generations_session ON generations(session_id, created_at DESC);
|
|
|
|
CREATE TABLE IF NOT EXISTS presets (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
session_id TEXT NOT NULL,
|
|
name TEXT NOT NULL,
|
|
service_type TEXT NOT NULL,
|
|
params_json TEXT NOT NULL DEFAULT '{}',
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
);
|
|
CREATE INDEX IF NOT EXISTS idx_presets_session ON presets(session_id, service_type);
|
|
|
|
CREATE TABLE IF NOT EXISTS tasks (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
session_id TEXT NOT NULL,
|
|
service_type TEXT NOT NULL,
|
|
protocol TEXT NOT NULL,
|
|
provider_id INTEGER NOT NULL,
|
|
status TEXT NOT NULL DEFAULT 'pending',
|
|
progress INTEGER NOT NULL DEFAULT 0,
|
|
input_json TEXT NOT NULL DEFAULT '{}',
|
|
result_json TEXT NOT NULL DEFAULT '{}',
|
|
error TEXT NOT NULL DEFAULT '',
|
|
external_id TEXT NOT NULL DEFAULT '',
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
completed_at TEXT
|
|
);
|
|
CREATE INDEX IF NOT EXISTS idx_tasks_session_status ON tasks(session_id, status);
|
|
|
|
CREATE TABLE IF NOT EXISTS files (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
session_id TEXT NOT NULL,
|
|
kind TEXT NOT NULL,
|
|
mime TEXT NOT NULL DEFAULT '',
|
|
storage_path TEXT NOT NULL,
|
|
size_bytes INTEGER NOT NULL DEFAULT 0,
|
|
sha256 TEXT NOT NULL DEFAULT '',
|
|
expires_at TEXT,
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
);
|
|
CREATE INDEX IF NOT EXISTS idx_files_session ON files(session_id);
|
|
|
|
CREATE TABLE IF NOT EXISTS request_logs (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
session_id TEXT NOT NULL DEFAULT '',
|
|
method TEXT NOT NULL,
|
|
path TEXT NOT NULL,
|
|
protocol TEXT NOT NULL DEFAULT '',
|
|
provider_id INTEGER,
|
|
model TEXT NOT NULL DEFAULT '',
|
|
status_code INTEGER NOT NULL DEFAULT 0,
|
|
latency_ms INTEGER NOT NULL DEFAULT 0,
|
|
error TEXT NOT NULL DEFAULT '',
|
|
request_summary TEXT NOT NULL DEFAULT '',
|
|
response_summary TEXT NOT NULL DEFAULT '',
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
);
|
|
CREATE INDEX IF NOT EXISTS idx_request_logs_created ON request_logs(created_at DESC);
|
|
|
|
INSERT OR IGNORE INTO settings (key, value) VALUES
|
|
('file_sign_secret', 'change-me-atlas-file-sign'),
|
|
('write_flush_interval_ms', '200'),
|
|
('task_progress_flush_interval_ms', '1000'),
|
|
('cache_ttl_seconds', '30');
|
|
|
|
UPDATE settings SET value = 'Atlas' WHERE key = 'app_name';
|
|
|
|
-- +goose Down
|
|
DROP TABLE IF EXISTS request_logs;
|
|
DROP TABLE IF EXISTS files;
|
|
DROP TABLE IF EXISTS tasks;
|
|
DROP TABLE IF EXISTS presets;
|
|
DROP TABLE IF EXISTS generations;
|
|
DROP TABLE IF EXISTS chat_messages;
|
|
DROP TABLE IF EXISTS chat_conversations;
|
|
DROP TABLE IF EXISTS user_sessions;
|
|
DROP TABLE IF EXISTS providers;
|