| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- -- ============================================================
- -- deep_agent 2.0 — SQLite 开发/测试档建表脚本
- -- ============================================================
- -- 与 mysql_schema.sql 结构完全等价,仅类型与索引语法按 SQLite 调整。
- -- 用途:无 MySQL 可用时的本地开发与自动化测试(DB_DIALECT=sqlite)。
- -- 生产/联调一律走 MySQL。
- -- ============================================================
- CREATE TABLE IF NOT EXISTS sessions (
- id TEXT PRIMARY KEY,
- title TEXT NOT NULL DEFAULT '',
- user_name TEXT NOT NULL DEFAULT 'default',
- mode TEXT NOT NULL DEFAULT 'full',
- pinned INTEGER NOT NULL DEFAULT 0,
- created_at TEXT NOT NULL,
- updated_at TEXT NOT NULL
- );
- CREATE INDEX IF NOT EXISTS idx_sessions_user_updated ON sessions (user_name, updated_at);
- CREATE INDEX IF NOT EXISTS idx_sessions_title ON sessions (title);
- CREATE TABLE IF NOT EXISTS messages (
- id TEXT PRIMARY KEY,
- session_id TEXT NOT NULL,
- msg_role TEXT NOT NULL,
- content TEXT,
- tool_calls TEXT,
- citations TEXT,
- created_at TEXT NOT NULL
- );
- CREATE INDEX IF NOT EXISTS idx_messages_session_created ON messages (session_id, created_at);
- CREATE TABLE IF NOT EXISTS session_context_usage (
- id TEXT PRIMARY KEY,
- session_id TEXT NOT NULL,
- turn INTEGER NOT NULL DEFAULT 0,
- input_tokens INTEGER NOT NULL DEFAULT 0,
- output_tokens INTEGER NOT NULL DEFAULT 0,
- cache_read_tokens INTEGER NOT NULL DEFAULT 0,
- total_tokens INTEGER NOT NULL DEFAULT 0,
- usage_source TEXT NOT NULL DEFAULT 'provider',
- compacted INTEGER NOT NULL DEFAULT 0,
- compact_count INTEGER NOT NULL DEFAULT 0,
- snapshot TEXT,
- created_at TEXT NOT NULL
- );
- CREATE INDEX IF NOT EXISTS idx_ctx_session_created ON session_context_usage (session_id, created_at);
- CREATE TABLE IF NOT EXISTS context_archives (
- id TEXT PRIMARY KEY,
- session_id TEXT NOT NULL,
- turn INTEGER NOT NULL DEFAULT 0,
- file_path TEXT NOT NULL DEFAULT '',
- tokens INTEGER NOT NULL DEFAULT 0,
- created_at TEXT NOT NULL
- );
- CREATE INDEX IF NOT EXISTS idx_archive_session_created ON context_archives (session_id, created_at);
- CREATE TABLE IF NOT EXISTS schedules (
- id TEXT PRIMARY KEY,
- user_name TEXT NOT NULL DEFAULT 'default',
- title TEXT NOT NULL DEFAULT '',
- cron TEXT NOT NULL,
- prompt TEXT NOT NULL,
- mode TEXT NOT NULL DEFAULT 'full',
- enabled INTEGER NOT NULL DEFAULT 1,
- created_at TEXT NOT NULL,
- updated_at TEXT NOT NULL
- );
- CREATE INDEX IF NOT EXISTS idx_schedules_enabled ON schedules (enabled);
- CREATE TABLE IF NOT EXISTS schedule_runs (
- id TEXT PRIMARY KEY,
- schedule_id TEXT NOT NULL,
- thread_id TEXT NOT NULL,
- status TEXT NOT NULL,
- started_at TEXT NOT NULL,
- finished_at TEXT,
- error TEXT,
- output TEXT
- );
- CREATE INDEX IF NOT EXISTS idx_runs_schedule_started ON schedule_runs (schedule_id, started_at);
- CREATE TABLE IF NOT EXISTS billing_usage (
- id TEXT PRIMARY KEY,
- user_name TEXT NOT NULL DEFAULT 'default',
- session_id TEXT NOT NULL DEFAULT '',
- kind TEXT NOT NULL DEFAULT 'chat',
- model TEXT NOT NULL DEFAULT '',
- input_tokens INTEGER NOT NULL DEFAULT 0,
- output_tokens INTEGER NOT NULL DEFAULT 0,
- total_tokens INTEGER NOT NULL DEFAULT 0,
- cost REAL NOT NULL DEFAULT 0,
- usage_day TEXT NOT NULL,
- trace_id TEXT NOT NULL DEFAULT '',
- created_at TEXT NOT NULL
- );
- CREATE INDEX IF NOT EXISTS idx_billing_user_day ON billing_usage (user_name, usage_day);
- CREATE INDEX IF NOT EXISTS idx_billing_session ON billing_usage (session_id);
- CREATE TABLE IF NOT EXISTS billing_pricing (
- model TEXT PRIMARY KEY,
- input_price REAL NOT NULL DEFAULT 0,
- output_price REAL NOT NULL DEFAULT 0,
- currency TEXT NOT NULL DEFAULT 'CNY',
- updated_at TEXT NOT NULL
- );
- CREATE TABLE IF NOT EXISTS daily_quota (
- user_name TEXT NOT NULL,
- usage_day TEXT NOT NULL,
- limit_tokens INTEGER NOT NULL DEFAULT 0,
- used_tokens INTEGER NOT NULL DEFAULT 0,
- updated_at TEXT NOT NULL,
- PRIMARY KEY (user_name, usage_day)
- );
- CREATE TABLE IF NOT EXISTS user_preferences (
- id TEXT PRIMARY KEY,
- user_name TEXT NOT NULL,
- pref_key TEXT NOT NULL,
- pref_value TEXT NOT NULL,
- updated_at TEXT NOT NULL
- );
- CREATE UNIQUE INDEX IF NOT EXISTS uk_pref_user_key ON user_preferences (user_name, pref_key);
- CREATE TABLE IF NOT EXISTS execution_runs (
- id TEXT PRIMARY KEY,
- session_id TEXT NOT NULL,
- user_name VARCHAR(128) NOT NULL,
- kind VARCHAR(24) NOT NULL,
- status VARCHAR(24) NOT NULL,
- error TEXT,
- started_at VARCHAR(32) NOT NULL,
- finished_at VARCHAR(32)
- );
- CREATE TABLE IF NOT EXISTS billing_pending (
- id TEXT PRIMARY KEY,
- payload TEXT NOT NULL,
- created_at VARCHAR(32) NOT NULL
- );
- CREATE TABLE IF NOT EXISTS request_keys (
- id TEXT PRIMARY KEY,
- session_id TEXT NOT NULL,
- run_id TEXT NOT NULL,
- created_at VARCHAR(32) NOT NULL
- );
|