schema_sqlite.sql 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. -- ============================================================
  2. -- vent_agent 2.0 — 默认 SQLite 业务库
  3. -- ============================================================
  4. -- 与 mysql_schema.sql 结构完全等价,仅类型与索引语法按 SQLite 调整。
  5. -- 会话、业务任务、计费与推送记录均使用本库;checkpoint 使用独立 SQLite 文件。
  6. -- ============================================================
  7. CREATE TABLE IF NOT EXISTS sessions (
  8. id TEXT PRIMARY KEY,
  9. title TEXT NOT NULL DEFAULT '',
  10. user_name TEXT NOT NULL DEFAULT 'default',
  11. mode TEXT NOT NULL DEFAULT 'full',
  12. pinned INTEGER NOT NULL DEFAULT 0,
  13. created_at TEXT NOT NULL,
  14. updated_at TEXT NOT NULL
  15. );
  16. CREATE INDEX IF NOT EXISTS idx_sessions_user_updated ON sessions (user_name, updated_at);
  17. CREATE INDEX IF NOT EXISTS idx_sessions_title ON sessions (title);
  18. CREATE TABLE IF NOT EXISTS messages (
  19. id TEXT PRIMARY KEY,
  20. session_id TEXT NOT NULL,
  21. msg_role TEXT NOT NULL,
  22. content TEXT,
  23. tool_calls TEXT,
  24. citations TEXT,
  25. created_at TEXT NOT NULL
  26. );
  27. CREATE INDEX IF NOT EXISTS idx_messages_session_created ON messages (session_id, created_at);
  28. CREATE TABLE IF NOT EXISTS session_context_usage (
  29. id TEXT PRIMARY KEY,
  30. session_id TEXT NOT NULL,
  31. turn INTEGER NOT NULL DEFAULT 0,
  32. input_tokens INTEGER NOT NULL DEFAULT 0,
  33. output_tokens INTEGER NOT NULL DEFAULT 0,
  34. cache_read_tokens INTEGER NOT NULL DEFAULT 0,
  35. total_tokens INTEGER NOT NULL DEFAULT 0,
  36. usage_source TEXT NOT NULL DEFAULT 'provider',
  37. compacted INTEGER NOT NULL DEFAULT 0,
  38. compact_count INTEGER NOT NULL DEFAULT 0,
  39. snapshot TEXT,
  40. created_at TEXT NOT NULL
  41. );
  42. CREATE INDEX IF NOT EXISTS idx_ctx_session_created ON session_context_usage (session_id, created_at);
  43. CREATE TABLE IF NOT EXISTS context_archives (
  44. id TEXT PRIMARY KEY,
  45. session_id TEXT NOT NULL,
  46. turn INTEGER NOT NULL DEFAULT 0,
  47. file_path TEXT NOT NULL DEFAULT '',
  48. tokens INTEGER NOT NULL DEFAULT 0,
  49. created_at TEXT NOT NULL
  50. );
  51. CREATE INDEX IF NOT EXISTS idx_archive_session_created ON context_archives (session_id, created_at);
  52. CREATE TABLE IF NOT EXISTS schedules (
  53. id TEXT PRIMARY KEY,
  54. user_name TEXT NOT NULL DEFAULT 'default',
  55. title TEXT NOT NULL DEFAULT '',
  56. cron TEXT NOT NULL,
  57. prompt TEXT NOT NULL,
  58. mode TEXT NOT NULL DEFAULT 'full',
  59. enabled INTEGER NOT NULL DEFAULT 1,
  60. created_at TEXT NOT NULL,
  61. updated_at TEXT NOT NULL
  62. );
  63. CREATE INDEX IF NOT EXISTS idx_schedules_enabled ON schedules (enabled);
  64. CREATE TABLE IF NOT EXISTS schedule_runs (
  65. id TEXT PRIMARY KEY,
  66. schedule_id TEXT NOT NULL,
  67. thread_id TEXT NOT NULL,
  68. status TEXT NOT NULL,
  69. started_at TEXT NOT NULL,
  70. finished_at TEXT,
  71. error TEXT,
  72. output TEXT
  73. );
  74. CREATE INDEX IF NOT EXISTS idx_runs_schedule_started ON schedule_runs (schedule_id, started_at);
  75. CREATE TABLE IF NOT EXISTS billing_usage (
  76. id TEXT PRIMARY KEY,
  77. user_name TEXT NOT NULL DEFAULT 'default',
  78. session_id TEXT NOT NULL DEFAULT '',
  79. kind TEXT NOT NULL DEFAULT 'chat',
  80. model TEXT NOT NULL DEFAULT '',
  81. input_tokens INTEGER NOT NULL DEFAULT 0,
  82. output_tokens INTEGER NOT NULL DEFAULT 0,
  83. total_tokens INTEGER NOT NULL DEFAULT 0,
  84. cost REAL NOT NULL DEFAULT 0,
  85. usage_day TEXT NOT NULL,
  86. trace_id TEXT NOT NULL DEFAULT '',
  87. created_at TEXT NOT NULL
  88. );
  89. CREATE INDEX IF NOT EXISTS idx_billing_user_day ON billing_usage (user_name, usage_day);
  90. CREATE INDEX IF NOT EXISTS idx_billing_session ON billing_usage (session_id);
  91. CREATE TABLE IF NOT EXISTS billing_pricing (
  92. model TEXT PRIMARY KEY,
  93. input_price REAL NOT NULL DEFAULT 0,
  94. output_price REAL NOT NULL DEFAULT 0,
  95. currency TEXT NOT NULL DEFAULT 'CNY',
  96. updated_at TEXT NOT NULL
  97. );
  98. CREATE TABLE IF NOT EXISTS daily_quota (
  99. user_name TEXT NOT NULL,
  100. usage_day TEXT NOT NULL,
  101. limit_tokens INTEGER NOT NULL DEFAULT 0,
  102. used_tokens INTEGER NOT NULL DEFAULT 0,
  103. updated_at TEXT NOT NULL,
  104. PRIMARY KEY (user_name, usage_day)
  105. );
  106. CREATE TABLE IF NOT EXISTS user_preferences (
  107. id TEXT PRIMARY KEY,
  108. user_name TEXT NOT NULL,
  109. pref_key TEXT NOT NULL,
  110. pref_value TEXT NOT NULL,
  111. updated_at TEXT NOT NULL
  112. );
  113. CREATE UNIQUE INDEX IF NOT EXISTS uk_pref_user_key ON user_preferences (user_name, pref_key);
  114. CREATE TABLE IF NOT EXISTS execution_runs (
  115. id TEXT PRIMARY KEY,
  116. session_id TEXT NOT NULL,
  117. user_name VARCHAR(128) NOT NULL,
  118. kind VARCHAR(24) NOT NULL,
  119. status VARCHAR(24) NOT NULL,
  120. error TEXT,
  121. started_at VARCHAR(32) NOT NULL,
  122. finished_at VARCHAR(32)
  123. );
  124. CREATE TABLE IF NOT EXISTS billing_pending (
  125. id TEXT PRIMARY KEY,
  126. payload TEXT NOT NULL,
  127. created_at VARCHAR(32) NOT NULL
  128. );
  129. CREATE TABLE IF NOT EXISTS request_keys (
  130. id TEXT PRIMARY KEY,
  131. session_id TEXT NOT NULL,
  132. run_id TEXT NOT NULL,
  133. created_at VARCHAR(32) NOT NULL
  134. );
  135. CREATE TABLE IF NOT EXISTS business_agent_state (
  136. name TEXT PRIMARY KEY,
  137. local_enabled INTEGER NOT NULL DEFAULT 1,
  138. gateway_online INTEGER NOT NULL DEFAULT 1,
  139. updated_at TEXT NOT NULL
  140. );
  141. CREATE TABLE IF NOT EXISTS business_session_agents (
  142. session_id TEXT PRIMARY KEY,
  143. agent_name TEXT NOT NULL
  144. );
  145. CREATE TABLE IF NOT EXISTS business_jobs (
  146. id TEXT PRIMARY KEY,
  147. agent_name TEXT NOT NULL,
  148. agent_code TEXT,
  149. user_name TEXT NOT NULL,
  150. source TEXT NOT NULL,
  151. payload TEXT NOT NULL,
  152. status TEXT NOT NULL,
  153. session_id TEXT,
  154. run_id TEXT,
  155. error TEXT,
  156. result_json TEXT,
  157. push_status TEXT NOT NULL DEFAULT 'none',
  158. push_attempts INTEGER NOT NULL DEFAULT 0,
  159. next_push_at TEXT,
  160. push_payload TEXT,
  161. receipt_json TEXT,
  162. created_at TEXT NOT NULL,
  163. updated_at TEXT NOT NULL,
  164. finished_at TEXT
  165. );
  166. CREATE INDEX IF NOT EXISTS idx_business_jobs_status ON business_jobs (agent_name, status, created_at);
  167. CREATE TABLE IF NOT EXISTS business_push_targets (
  168. job_id TEXT PRIMARY KEY,
  169. endpoint TEXT NOT NULL,
  170. created_at TEXT NOT NULL
  171. );
  172. CREATE TABLE IF NOT EXISTS business_files (
  173. id TEXT PRIMARY KEY,
  174. job_id TEXT NOT NULL,
  175. file_id TEXT NOT NULL,
  176. version TEXT NOT NULL,
  177. filename TEXT NOT NULL,
  178. local_path TEXT NOT NULL,
  179. sha256 TEXT NOT NULL,
  180. size INTEGER NOT NULL,
  181. created_at TEXT NOT NULL
  182. );
  183. CREATE TABLE IF NOT EXISTS main_fan_documents (
  184. id TEXT PRIMARY KEY,
  185. sha256 TEXT NOT NULL,
  186. facts_json TEXT NOT NULL,
  187. method TEXT NOT NULL,
  188. created_at TEXT NOT NULL
  189. );
  190. CREATE TABLE IF NOT EXISTS main_fan_analyses (
  191. id TEXT PRIMARY KEY,
  192. user_name TEXT NOT NULL,
  193. session_id TEXT NOT NULL,
  194. result_json TEXT NOT NULL,
  195. created_at TEXT NOT NULL
  196. );
  197. CREATE TABLE IF NOT EXISTS main_fan_workflows (
  198. id TEXT PRIMARY KEY,
  199. user_name TEXT NOT NULL,
  200. session_id TEXT NOT NULL,
  201. context_json TEXT NOT NULL,
  202. stages_json TEXT NOT NULL,
  203. result_json TEXT,
  204. status TEXT NOT NULL,
  205. created_at TEXT NOT NULL,
  206. updated_at TEXT NOT NULL
  207. );
  208. CREATE TABLE IF NOT EXISTS test_lab_assets (
  209. id TEXT PRIMARY KEY,
  210. user_name TEXT NOT NULL,
  211. filename TEXT NOT NULL,
  212. sha256 TEXT NOT NULL,
  213. size INTEGER NOT NULL,
  214. created_at TEXT NOT NULL
  215. );
  216. CREATE TABLE IF NOT EXISTS test_lab_runs (
  217. job_id TEXT PRIMARY KEY,
  218. user_name TEXT NOT NULL,
  219. agent_name TEXT NOT NULL,
  220. label TEXT NOT NULL,
  221. scenario_id TEXT NOT NULL,
  222. execution_mode TEXT NOT NULL,
  223. request_json TEXT NOT NULL,
  224. created_at TEXT NOT NULL
  225. );