Lyrria.sql 50 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845
  1. /*
  2. Navicat Premium Dump SQL
  3. Source Server : 101.201.60.170 Lyrria@Root@123456
  4. Source Server Type : MySQL
  5. Source Server Version : 50739 (5.7.39)
  6. Source Host : 101.201.60.170:13306
  7. Source Schema : Lyrria
  8. Target Server Type : MySQL
  9. Target Server Version : 50739 (5.7.39)
  10. File Encoding : 65001
  11. Date: 24/03/2026 13:54:04
  12. */
  13. SET NAMES utf8mb4;
  14. SET FOREIGN_KEY_CHECKS = 0;
  15. -- ----------------------------
  16. -- Table structure for asset_purchase_logs
  17. -- ----------------------------
  18. DROP TABLE IF EXISTS `asset_purchase_logs`;
  19. CREATE TABLE `asset_purchase_logs` (
  20. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  21. `user_id` bigint(20) unsigned NOT NULL COMMENT '用户ID',
  22. `item_id` bigint(20) unsigned NOT NULL COMMENT '商品ID',
  23. `quantity` int(10) unsigned NOT NULL COMMENT '购买数量',
  24. `unit_price_energy` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '单价快照-能量石(保留2位小数)',
  25. `unit_price_crystal` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '单价快照-水晶石(保留2位小数)',
  26. `cost_energy` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '总花费-能量石(保留2位小数)',
  27. `cost_crystal` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '总花费-水晶石(保留2位小数)',
  28. `item_name_snapshot` varchar(100) NOT NULL COMMENT '商品名快照',
  29. `image_name_snapshot` varchar(255) NOT NULL COMMENT '图片名称快照',
  30. `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  31. PRIMARY KEY (`id`)
  32. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户购买流水表';
  33. -- ----------------------------
  34. -- Table structure for avatar_assets
  35. -- ----------------------------
  36. DROP TABLE IF EXISTS `avatar_assets`;
  37. CREATE TABLE `avatar_assets` (
  38. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  39. `avatar_id` varchar(64) NOT NULL COMMENT '形象ID',
  40. `state` enum('default','positive','negative','talking','idle','sleep') NOT NULL DEFAULT 'default' COMMENT '动作/情绪状态',
  41. `image_url` varchar(500) NOT NULL COMMENT 'GIF 资源 URL',
  42. `thumbnail_url` varchar(500) DEFAULT NULL COMMENT '缩略图URL',
  43. `metadata` json DEFAULT NULL COMMENT '扩展配置',
  44. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  45. `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  46. PRIMARY KEY (`id`),
  47. UNIQUE KEY `uk_avatar_asset_state` (`avatar_id`,`state`),
  48. KEY `idx_avatar_asset_avatar_id` (`avatar_id`)
  49. ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COMMENT='形象动作资源表';
  50. -- ----------------------------
  51. -- Table structure for avatars
  52. -- ----------------------------
  53. DROP TABLE IF EXISTS `avatars`;
  54. CREATE TABLE `avatars` (
  55. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  56. `avatar_id` varchar(64) NOT NULL COMMENT '形象唯一标识',
  57. `avatar_name` varchar(100) NOT NULL COMMENT '形象名称',
  58. `description` varchar(255) DEFAULT NULL COMMENT '形象描述',
  59. `is_active` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否启用',
  60. `metadata` json DEFAULT NULL COMMENT '扩展配置',
  61. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  62. `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  63. PRIMARY KEY (`id`),
  64. UNIQUE KEY `avatar_id` (`avatar_id`),
  65. KEY `idx_avatar_is_active` (`is_active`),
  66. KEY `idx_avatar_id` (`avatar_id`)
  67. ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COMMENT='形象配置表';
  68. -- ----------------------------
  69. -- Table structure for background_images
  70. -- ----------------------------
  71. DROP TABLE IF EXISTS `background_images`;
  72. CREATE TABLE `background_images` (
  73. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  74. `image_id` varchar(64) NOT NULL COMMENT '背景图片唯一标识',
  75. `image_name` varchar(100) NOT NULL COMMENT '背景图片名称',
  76. `image_url` varchar(500) NOT NULL COMMENT '背景图片URL',
  77. `thumbnail_url` varchar(500) DEFAULT NULL COMMENT '缩略图URL',
  78. `unlock_type` enum('default','level','purchase','mission') NOT NULL DEFAULT 'default' COMMENT '解锁类型',
  79. `unlock_level` int(11) DEFAULT NULL COMMENT '解锁所需等级(unlock_type=level时)',
  80. `unlock_mission_type` varchar(64) DEFAULT NULL COMMENT '解锁所需任务类型(unlock_type=mission时)',
  81. `display_order` int(11) NOT NULL DEFAULT '0' COMMENT '显示顺序',
  82. `is_active` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否启用',
  83. `description` varchar(255) DEFAULT NULL COMMENT '背景图片描述',
  84. `metadata` json DEFAULT NULL COMMENT '扩展配置',
  85. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  86. `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  87. PRIMARY KEY (`id`),
  88. UNIQUE KEY `image_id` (`image_id`),
  89. KEY `idx_image_id` (`image_id`),
  90. KEY `idx_unlock_type` (`unlock_type`),
  91. KEY `idx_display_order` (`display_order`)
  92. ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COMMENT='背景图片配置表';
  93. -- ----------------------------
  94. -- Table structure for chatbot_layout_items
  95. -- ----------------------------
  96. DROP TABLE IF EXISTS `chatbot_layout_items`;
  97. CREATE TABLE `chatbot_layout_items` (
  98. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  99. `layout_id` bigint(20) unsigned NOT NULL COMMENT '/chatbot布局ID(业务字段)',
  100. `user_asset_id` bigint(20) unsigned NOT NULL COMMENT '用户资产ID(业务字段)',
  101. `item_id` bigint(20) unsigned NOT NULL COMMENT '商品ID(冗余便于查询)',
  102. `placement_type` enum('wall','floor') NOT NULL COMMENT '区域类型:墙/地',
  103. `start_row` tinyint(3) unsigned NOT NULL COMMENT '起始行(从1开始)',
  104. `start_col` tinyint(3) unsigned NOT NULL COMMENT '起始列(从1开始)',
  105. `size_rows` tinyint(3) unsigned NOT NULL COMMENT '占用行数',
  106. `size_cols` tinyint(3) unsigned NOT NULL COMMENT '占用列数',
  107. `z_index` int(11) NOT NULL DEFAULT '0' COMMENT '渲染层级(用于排序)',
  108. `image_name_snapshot` varchar(255) NOT NULL COMMENT '图片名称快照',
  109. `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  110. PRIMARY KEY (`id`)
  111. ) ENGINE=InnoDB AUTO_INCREMENT=511 DEFAULT CHARSET=utf8mb4 COMMENT='/chatbot布局明细表';
  112. -- ----------------------------
  113. -- Table structure for chatbot_layouts
  114. -- ----------------------------
  115. DROP TABLE IF EXISTS `chatbot_layouts`;
  116. CREATE TABLE `chatbot_layouts` (
  117. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  118. `user_id` bigint(20) unsigned NOT NULL COMMENT '用户ID',
  119. `grid_rows` tinyint(3) unsigned NOT NULL DEFAULT '5' COMMENT '固定:5行',
  120. `grid_cols` tinyint(3) unsigned NOT NULL DEFAULT '4' COMMENT '固定:4列',
  121. `cell_width` smallint(5) unsigned NOT NULL DEFAULT '96' COMMENT '固定:96',
  122. `cell_height` smallint(5) unsigned NOT NULL DEFAULT '96' COMMENT '固定:96',
  123. `design_width` smallint(5) unsigned NOT NULL DEFAULT '393' COMMENT '设计宽(393)',
  124. `design_height` smallint(5) unsigned NOT NULL DEFAULT '852' COMMENT '设计高(852)',
  125. `decor_area_width` smallint(5) unsigned NOT NULL DEFAULT '393' COMMENT '装饰区宽(393)',
  126. `decor_area_height` smallint(5) unsigned NOT NULL DEFAULT '482' COMMENT '装饰区高(482)',
  127. `version` int(10) unsigned NOT NULL DEFAULT '1' COMMENT '布局版本(可选)',
  128. `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  129. `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  130. PRIMARY KEY (`id`)
  131. ) ENGINE=InnoDB AUTO_INCREMENT=511 DEFAULT CHARSET=utf8mb4 COMMENT='/chatbot布局主表(仅最新)';
  132. -- ----------------------------
  133. -- Table structure for conversation_energy_stones
  134. -- ----------------------------
  135. DROP TABLE IF EXISTS `conversation_energy_stones`;
  136. CREATE TABLE `conversation_energy_stones` (
  137. `id` bigint(20) NOT NULL AUTO_INCREMENT,
  138. `stone_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '能量石ID',
  139. `user_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户ID',
  140. `request_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '触发的请求ID',
  141. `threshold_index` int(11) NOT NULL COMMENT '达成阈值的序号(1=30秒,2=60秒...)',
  142. `total_duration_ms` bigint(20) NOT NULL COMMENT '累计说话时长(毫秒)',
  143. `duration_increment_ms` int(11) NOT NULL COMMENT '本次新增时长(毫秒)',
  144. `appear_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '出现时间',
  145. `clicked_at` timestamp NULL DEFAULT NULL COMMENT '点击时间',
  146. `auto_removed` tinyint(1) DEFAULT '0' COMMENT '是否自动消失',
  147. `metadata` json DEFAULT NULL COMMENT '扩展信息',
  148. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  149. `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  150. PRIMARY KEY (`id`),
  151. UNIQUE KEY `stone_id` (`stone_id`),
  152. UNIQUE KEY `uk_conversation_stone_threshold` (`user_id`,`threshold_index`),
  153. KEY `idx_stone_id` (`stone_id`),
  154. KEY `idx_user_id` (`user_id`),
  155. KEY `idx_conversation_stone_user_threshold` (`user_id`,`threshold_index`),
  156. KEY `idx_appear_at` (`appear_at`)
  157. ) ENGINE=InnoDB AUTO_INCREMENT=346 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='对话能量石表(按时长发放)';
  158. -- ----------------------------
  159. -- Table structure for conversation_summaries
  160. -- ----------------------------
  161. DROP TABLE IF EXISTS `conversation_summaries`;
  162. CREATE TABLE `conversation_summaries` (
  163. `id` bigint(20) NOT NULL AUTO_INCREMENT,
  164. `summary_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '总结ID',
  165. `user_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户ID',
  166. `start_round` int(11) NOT NULL COMMENT '起始轮次',
  167. `end_round` int(11) NOT NULL COMMENT '结束轮次',
  168. `summary_text` text COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '总结内容',
  169. `summary_type` enum('auto','manual') COLLATE utf8mb4_unicode_ci DEFAULT 'auto' COMMENT '总结类型',
  170. `message_count` int(11) DEFAULT NULL COMMENT '总结的消息数量',
  171. `token_count` int(11) DEFAULT NULL COMMENT '总结文本Token数',
  172. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  173. PRIMARY KEY (`id`) USING BTREE,
  174. UNIQUE KEY `summary_id` (`summary_id`) USING BTREE,
  175. UNIQUE KEY `uk_user_round_range` (`user_id`,`start_round`,`end_round`) USING BTREE,
  176. KEY `idx_user_id` (`user_id`) USING BTREE,
  177. KEY `idx_user_end_round` (`user_id`,`end_round`) USING BTREE
  178. ) ENGINE=InnoDB AUTO_INCREMENT=99 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='对话总结表';
  179. -- ----------------------------
  180. -- Table structure for curr_daily
  181. -- ----------------------------
  182. DROP TABLE IF EXISTS `curr_daily`;
  183. CREATE TABLE `curr_daily` (
  184. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  185. `activity_date` date NOT NULL COMMENT '统计日期(当日)',
  186. `prev_day_active_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '昨日活跃用户数',
  187. `retained_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '昨日活跃中今日仍活跃人数',
  188. `curr_rate_pct` decimal(5,2) DEFAULT NULL COMMENT 'CURR百分比(retained/prev*100),昨日无活跃为NULL',
  189. `total_active_today` int(10) unsigned DEFAULT NULL COMMENT '当日DAU(可选)',
  190. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  191. `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  192. PRIMARY KEY (`id`),
  193. UNIQUE KEY `uk_activity_date` (`activity_date`),
  194. KEY `idx_activity_date` (`activity_date`)
  195. ) ENGINE=InnoDB AUTO_INCREMENT=450 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='CURR按日统计表';
  196. -- ----------------------------
  197. -- Table structure for feedbacks
  198. -- ----------------------------
  199. DROP TABLE IF EXISTS `feedbacks`;
  200. CREATE TABLE `feedbacks` (
  201. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  202. `feedback_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '反馈ID',
  203. `user_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户ID',
  204. `content` text COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '反馈内容',
  205. `status` enum('pending','reviewed','resolved','closed') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'pending' COMMENT '反馈状态',
  206. `metadata` json DEFAULT NULL COMMENT '扩展信息',
  207. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  208. `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  209. PRIMARY KEY (`id`),
  210. UNIQUE KEY `feedback_id` (`feedback_id`),
  211. KEY `idx_feedback_id` (`feedback_id`),
  212. KEY `idx_user_id` (`user_id`),
  213. KEY `idx_feedback_user_created` (`user_id`,`created_at`)
  214. ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户反馈表';
  215. -- ----------------------------
  216. -- Table structure for llm_prompts
  217. -- ----------------------------
  218. DROP TABLE IF EXISTS `llm_prompts`;
  219. CREATE TABLE `llm_prompts` (
  220. `id` bigint(20) NOT NULL AUTO_INCREMENT,
  221. `prompt_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '提示词记录ID',
  222. `message_id` bigint(20) NOT NULL COMMENT '关联的消息ID',
  223. `user_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户ID',
  224. `round_number` int(11) NOT NULL COMMENT '对话轮次',
  225. `system_prompt` text COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '系统提示词(完整内容)',
  226. `runtime_context` text COLLATE utf8mb4_unicode_ci COMMENT '运行时上下文',
  227. `messages_json` json NOT NULL COMMENT '完整的messages数组(JSON格式)',
  228. `model_name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '模型名称',
  229. `temperature` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '温度参数',
  230. `max_tokens` int(11) DEFAULT NULL COMMENT '最大Token数',
  231. `stream` tinyint(1) DEFAULT '1' COMMENT '是否流式输出',
  232. `prompt_token_count` int(11) DEFAULT NULL COMMENT '提示词Token数',
  233. `total_token_count` int(11) DEFAULT NULL COMMENT '总Token数(包含响应)',
  234. `metadata_json` json DEFAULT NULL COMMENT '扩展信息(调用耗时、错误信息等)',
  235. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  236. PRIMARY KEY (`id`),
  237. UNIQUE KEY `prompt_id` (`prompt_id`),
  238. KEY `idx_prompt_id` (`prompt_id`),
  239. KEY `idx_llm_prompt_message` (`message_id`),
  240. KEY `idx_llm_prompt_user_round` (`user_id`,`round_number`),
  241. KEY `idx_llm_prompt_created` (`created_at`),
  242. CONSTRAINT `llm_prompts_ibfk_1` FOREIGN KEY (`message_id`) REFERENCES `messages` (`id`) ON DELETE CASCADE
  243. ) ENGINE=InnoDB AUTO_INCREMENT=1214 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='LLM提示词记录表';
  244. -- ----------------------------
  245. -- Table structure for messages
  246. -- ----------------------------
  247. DROP TABLE IF EXISTS `messages`;
  248. CREATE TABLE `messages` (
  249. `id` bigint(20) NOT NULL AUTO_INCREMENT,
  250. `message_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '消息ID',
  251. `user_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户ID',
  252. `role` enum('user','assistant','system') COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '角色',
  253. `content` text COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '消息内容',
  254. `round_number` int(11) NOT NULL COMMENT '对话轮次(从1开始)',
  255. `emotion` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '情感标签',
  256. `message_metadata` json DEFAULT NULL COMMENT '扩展信息(音频路径、识别耗时等)',
  257. `token_count` int(11) DEFAULT NULL COMMENT 'Token数量',
  258. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  259. PRIMARY KEY (`id`) USING BTREE,
  260. UNIQUE KEY `message_id` (`message_id`) USING BTREE,
  261. KEY `idx_user_id` (`user_id`) USING BTREE,
  262. KEY `idx_user_round` (`user_id`,`round_number`) USING BTREE,
  263. KEY `idx_created_at` (`created_at`) USING BTREE
  264. ) ENGINE=InnoDB AUTO_INCREMENT=2436 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='消息表';
  265. -- ----------------------------
  266. -- Table structure for mission_energy_stones
  267. -- ----------------------------
  268. DROP TABLE IF EXISTS `mission_energy_stones`;
  269. CREATE TABLE `mission_energy_stones` (
  270. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增主键',
  271. `stone_id` varchar(64) NOT NULL COMMENT '能量石ID',
  272. `user_id` varchar(64) NOT NULL COMMENT '用户ID',
  273. `request_id` varchar(64) DEFAULT NULL COMMENT '触发请求ID',
  274. `appear_reason` varchar(64) NOT NULL DEFAULT 'first_dialog' COMMENT '触发原因',
  275. `mission_type` varchar(64) NOT NULL DEFAULT 'first_dialog' COMMENT '任务类型',
  276. `appear_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '出现时间',
  277. `clicked_at` timestamp NULL DEFAULT NULL COMMENT '点击时间',
  278. `auto_removed` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否系统自动消失',
  279. `metadata` json DEFAULT NULL COMMENT '扩展信息',
  280. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  281. `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  282. PRIMARY KEY (`id`) USING BTREE,
  283. UNIQUE KEY `uk_mission_stone_id` (`stone_id`) USING BTREE
  284. ) ENGINE=InnoDB AUTO_INCREMENT=70 DEFAULT CHARSET=utf8mb4 COMMENT='任务能量石记录';
  285. -- ----------------------------
  286. -- Table structure for mission_types
  287. -- ----------------------------
  288. DROP TABLE IF EXISTS `mission_types`;
  289. CREATE TABLE `mission_types` (
  290. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增主键',
  291. `type_key` varchar(64) NOT NULL COMMENT '任务类型唯一标识',
  292. `display_name` varchar(100) NOT NULL COMMENT '显示名称',
  293. `description` varchar(255) DEFAULT NULL COMMENT '类型描述',
  294. `is_repeatable` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否允许重复触发',
  295. `is_active` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否启用',
  296. `metadata` json DEFAULT NULL COMMENT '扩展配置',
  297. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  298. `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  299. PRIMARY KEY (`id`) USING BTREE,
  300. UNIQUE KEY `uk_mission_type_key` (`type_key`) USING BTREE
  301. ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='任务类型配置';
  302. -- ----------------------------
  303. -- Table structure for organizations
  304. -- ----------------------------
  305. DROP TABLE IF EXISTS `organizations`;
  306. CREATE TABLE `organizations` (
  307. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  308. `org_id` varchar(64) NOT NULL COMMENT '组织唯一标识',
  309. `org_name` varchar(200) NOT NULL COMMENT '组织名称',
  310. `org_type` varchar(32) DEFAULT NULL COMMENT '组织类型:school/institution/internal等',
  311. `region` varchar(32) DEFAULT NULL COMMENT '组织所在地区',
  312. `metadata` json DEFAULT NULL COMMENT '扩展信息',
  313. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  314. `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  315. PRIMARY KEY (`id`),
  316. UNIQUE KEY `uk_org_id` (`org_id`),
  317. KEY `idx_org_id` (`org_id`),
  318. KEY `idx_org_type` (`org_type`),
  319. KEY `idx_org_region` (`region`)
  320. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='组织表';
  321. -- ----------------------------
  322. -- Table structure for page_visit_logs
  323. -- ----------------------------
  324. DROP TABLE IF EXISTS `page_visit_logs`;
  325. CREATE TABLE `page_visit_logs` (
  326. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  327. `user_id` varchar(64) DEFAULT NULL COMMENT '用户ID(未登录则为空)',
  328. `path` varchar(512) NOT NULL COMMENT '访问路径',
  329. `visited_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '访问时间',
  330. PRIMARY KEY (`id`),
  331. KEY `idx_page_visit_user_id` (`user_id`),
  332. KEY `idx_page_visit_path` (`path`(255)),
  333. KEY `idx_page_visit_visited_at` (`visited_at`)
  334. ) ENGINE=InnoDB AUTO_INCREMENT=2454 DEFAULT CHARSET=utf8mb4 COMMENT='页面访问日志表';
  335. -- ----------------------------
  336. -- Table structure for purchase_order_items
  337. -- ----------------------------
  338. DROP TABLE IF EXISTS `purchase_order_items`;
  339. CREATE TABLE `purchase_order_items` (
  340. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  341. `order_id` bigint(20) unsigned NOT NULL COMMENT '订单ID(业务字段)',
  342. `item_id` bigint(20) unsigned NOT NULL COMMENT '商品ID',
  343. `quantity` int(10) unsigned NOT NULL DEFAULT '1' COMMENT '购买数量',
  344. `unit_price_energy` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '单价快照-能量石(保留2位小数)',
  345. `unit_price_crystal` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '单价快照-水晶石(保留2位小数)',
  346. `cost_energy` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '花费快照-能量石(保留2位小数)',
  347. `cost_crystal` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '花费快照-水晶石(保留2位小数)',
  348. `item_name_snapshot` varchar(100) NOT NULL COMMENT '商品名快照',
  349. `image_name_snapshot` varchar(255) NOT NULL COMMENT '图片名称快照',
  350. `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  351. PRIMARY KEY (`id`)
  352. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='购买订单明细表';
  353. -- ----------------------------
  354. -- Table structure for purchase_orders
  355. -- ----------------------------
  356. DROP TABLE IF EXISTS `purchase_orders`;
  357. CREATE TABLE `purchase_orders` (
  358. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  359. `user_id` bigint(20) unsigned NOT NULL COMMENT '用户ID',
  360. `cart_id` bigint(20) unsigned NOT NULL COMMENT '结算来源购物车ID(业务字段)',
  361. `status` enum('created','completed','failed','cancelled') NOT NULL DEFAULT 'created' COMMENT '订单状态',
  362. `total_quantity` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '订单总数量(便于展示)',
  363. `total_cost_energy` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '能量石总花费(保留2位小数)',
  364. `total_cost_crystal` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '水晶石总花费(保留2位小数)',
  365. `completed_at` datetime DEFAULT NULL COMMENT '完成时间',
  366. `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  367. PRIMARY KEY (`id`)
  368. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='购买订单主表';
  369. -- ----------------------------
  370. -- Table structure for share_images
  371. -- ----------------------------
  372. DROP TABLE IF EXISTS `share_images`;
  373. CREATE TABLE `share_images` (
  374. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  375. `code` varchar(64) NOT NULL,
  376. `url` text NOT NULL,
  377. `title` varchar(128) DEFAULT NULL,
  378. `sort_order` int(11) NOT NULL DEFAULT '0',
  379. `is_active` tinyint(1) NOT NULL DEFAULT '1',
  380. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  381. `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  382. PRIMARY KEY (`id`),
  383. UNIQUE KEY `code` (`code`),
  384. KEY `idx_share_images_sort` (`sort_order`)
  385. ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;
  386. -- ----------------------------
  387. -- Table structure for shop_items
  388. -- ----------------------------
  389. DROP TABLE IF EXISTS `shop_items`;
  390. CREATE TABLE `shop_items` (
  391. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  392. `item_code` varchar(64) NOT NULL COMMENT '商品编码(业务唯一)',
  393. `name` varchar(100) NOT NULL COMMENT '商品名称',
  394. `item_type` enum('furniture','clothing','backdrop') NOT NULL COMMENT '商品类型',
  395. `placement_type` enum('wall','floor','backdrop','clothing') NOT NULL COMMENT '摆放/使用类型',
  396. `image_name` varchar(255) NOT NULL COMMENT '图片名称',
  397. `size_rows` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '占用行数(家具用)',
  398. `size_cols` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '占用列数(家具用)',
  399. `price_energy` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '能量石价格(保留2位小数)',
  400. `price_crystal` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '水晶石价格(保留2位小数)',
  401. `default_z_index` int(11) NOT NULL DEFAULT '0' COMMENT '默认渲染层级',
  402. `scene_anchor_type` enum('none','seat','window') NOT NULL DEFAULT 'none' COMMENT '场景锚点类型(none=非锚点,seat=凳子/沙发,window=窗户)',
  403. `stock_mode` enum('unlimited') NOT NULL DEFAULT 'unlimited' COMMENT '库存模式(当前仅无限)',
  404. `repeat_purchase_mode` enum('single','repeatable') NOT NULL DEFAULT 'single' COMMENT '是否可重复购买',
  405. `max_per_user` int(10) unsigned DEFAULT NULL COMMENT '每用户最多可购数量(NULL=不限制)',
  406. `is_active` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否上架',
  407. `sort_order` int(11) NOT NULL DEFAULT '0' COMMENT '前端展示排序',
  408. `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  409. `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  410. PRIMARY KEY (`id`),
  411. KEY `idx_shop_items_scene_anchor_type` (`scene_anchor_type`)
  412. ) ENGINE=InnoDB AUTO_INCREMENT=39 DEFAULT CHARSET=utf8mb4 COMMENT='系统商品表';
  413. -- ----------------------------
  414. -- Table structure for shop_items_bak_20260324
  415. -- ----------------------------
  416. DROP TABLE IF EXISTS `shop_items_bak_20260324`;
  417. CREATE TABLE `shop_items_bak_20260324` (
  418. `id` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '主键',
  419. `item_code` varchar(64) CHARACTER SET utf8mb4 NOT NULL COMMENT '商品编码(业务唯一)',
  420. `name` varchar(100) CHARACTER SET utf8mb4 NOT NULL COMMENT '商品名称',
  421. `item_type` enum('furniture','clothing','backdrop') CHARACTER SET utf8mb4 NOT NULL COMMENT '商品类型',
  422. `placement_type` enum('wall','floor','backdrop','clothing') CHARACTER SET utf8mb4 NOT NULL COMMENT '摆放/使用类型',
  423. `image_name` varchar(255) CHARACTER SET utf8mb4 NOT NULL COMMENT '图片名称',
  424. `size_rows` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '占用行数(家具用)',
  425. `size_cols` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '占用列数(家具用)',
  426. `price_energy` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '能量石价格(保留2位小数)',
  427. `price_crystal` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '水晶石价格(保留2位小数)',
  428. `default_z_index` int(11) NOT NULL DEFAULT '0' COMMENT '默认渲染层级',
  429. `stock_mode` enum('unlimited') CHARACTER SET utf8mb4 NOT NULL DEFAULT 'unlimited' COMMENT '库存模式(当前仅无限)',
  430. `repeat_purchase_mode` enum('single','repeatable') CHARACTER SET utf8mb4 NOT NULL DEFAULT 'single' COMMENT '是否可重复购买',
  431. `max_per_user` int(10) unsigned DEFAULT NULL COMMENT '每用户最多可购数量(NULL=不限制)',
  432. `is_active` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否上架',
  433. `sort_order` int(11) NOT NULL DEFAULT '0' COMMENT '前端展示排序',
  434. `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  435. `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
  436. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  437. -- ----------------------------
  438. -- Table structure for shopping_cart_items
  439. -- ----------------------------
  440. DROP TABLE IF EXISTS `shopping_cart_items`;
  441. CREATE TABLE `shopping_cart_items` (
  442. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  443. `cart_id` bigint(20) unsigned NOT NULL COMMENT '购物车ID',
  444. `item_id` bigint(20) unsigned NOT NULL COMMENT '商品ID',
  445. `quantity` int(10) unsigned NOT NULL DEFAULT '1' COMMENT '购物车数量(支持部分结算后递减)',
  446. `unit_price_energy` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '加购时能量石单价快照(保留2位小数)',
  447. `unit_price_crystal` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '加购时水晶石单价快照(保留2位小数)',
  448. `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  449. `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  450. PRIMARY KEY (`id`)
  451. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='购物车明细表';
  452. -- ----------------------------
  453. -- Table structure for shopping_carts
  454. -- ----------------------------
  455. DROP TABLE IF EXISTS `shopping_carts`;
  456. CREATE TABLE `shopping_carts` (
  457. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  458. `user_id` bigint(20) unsigned NOT NULL COMMENT '用户ID',
  459. `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  460. `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  461. PRIMARY KEY (`id`)
  462. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='购物车主表';
  463. -- ----------------------------
  464. -- Table structure for user_assets
  465. -- ----------------------------
  466. DROP TABLE IF EXISTS `user_assets`;
  467. CREATE TABLE `user_assets` (
  468. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  469. `user_id` bigint(20) unsigned NOT NULL COMMENT '用户ID',
  470. `item_id` bigint(20) unsigned NOT NULL COMMENT '商品ID',
  471. `owned_qty` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '拥有数量',
  472. `used_qty` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '已使用数量(摆放/穿戴等)',
  473. `last_acquired_at` datetime DEFAULT NULL COMMENT '最近获取时间',
  474. `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  475. `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  476. PRIMARY KEY (`id`)
  477. ) ENGINE=InnoDB AUTO_INCREMENT=784 DEFAULT CHARSET=utf8mb4 COMMENT='用户资产表';
  478. -- ----------------------------
  479. -- Table structure for user_avatars
  480. -- ----------------------------
  481. DROP TABLE IF EXISTS `user_avatars`;
  482. CREATE TABLE `user_avatars` (
  483. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  484. `user_id` varchar(64) NOT NULL COMMENT '用户ID',
  485. `avatar_id` varchar(64) NOT NULL COMMENT '形象ID',
  486. `obtained_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '获得时间',
  487. `obtained_type` enum('default','register','level_up','mission','purchase','gift','event') NOT NULL DEFAULT 'default' COMMENT '获得方式',
  488. `obtained_source` varchar(64) DEFAULT NULL COMMENT '获得来源(等级/任务/订单等)',
  489. `metadata` json DEFAULT NULL COMMENT '扩展信息',
  490. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  491. PRIMARY KEY (`id`),
  492. UNIQUE KEY `uk_user_avatar` (`user_id`,`avatar_id`),
  493. KEY `idx_user_avatar_user_obtained` (`user_id`,`obtained_at`),
  494. KEY `idx_user_avatar_avatar_id` (`avatar_id`)
  495. ) ENGINE=InnoDB AUTO_INCREMENT=302 DEFAULT CHARSET=utf8mb4 COMMENT='用户已拥有的形象';
  496. -- ----------------------------
  497. -- Table structure for user_background_images
  498. -- ----------------------------
  499. DROP TABLE IF EXISTS `user_background_images`;
  500. CREATE TABLE `user_background_images` (
  501. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  502. `user_id` varchar(64) NOT NULL COMMENT '用户ID',
  503. `image_id` varchar(64) NOT NULL COMMENT '背景图片ID',
  504. `obtained_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '获得时间',
  505. `obtained_type` enum('default','level_up','purchase','mission','gift') NOT NULL DEFAULT 'default' COMMENT '获得方式',
  506. `obtained_source` varchar(64) DEFAULT NULL COMMENT '获得来源(任务类型、等级等)',
  507. `metadata` json DEFAULT NULL COMMENT '扩展信息',
  508. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  509. PRIMARY KEY (`id`),
  510. UNIQUE KEY `uk_user_background_image` (`user_id`,`image_id`),
  511. KEY `idx_user_id` (`user_id`),
  512. KEY `idx_image_id` (`image_id`),
  513. KEY `idx_user_obtained` (`user_id`,`obtained_at`)
  514. ) ENGINE=InnoDB AUTO_INCREMENT=234 DEFAULT CHARSET=utf8mb4 COMMENT='用户背景图片关联表';
  515. -- ----------------------------
  516. -- Table structure for user_bonus_energy_stones
  517. -- ----------------------------
  518. DROP TABLE IF EXISTS `user_bonus_energy_stones`;
  519. CREATE TABLE `user_bonus_energy_stones` (
  520. `user_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户ID(关联 users.user_id)',
  521. `bonus_conversation_count` int(11) NOT NULL DEFAULT '0' COMMENT '赠送的对话能量石个数',
  522. `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  523. PRIMARY KEY (`user_id`)
  524. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户赠送对话能量石数量表';
  525. -- ----------------------------
  526. -- Table structure for user_chatbot_backdrops
  527. -- ----------------------------
  528. DROP TABLE IF EXISTS `user_chatbot_backdrops`;
  529. CREATE TABLE `user_chatbot_backdrops` (
  530. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  531. `user_id` bigint(20) unsigned NOT NULL COMMENT '用户ID',
  532. `backdrop_item_id` bigint(20) unsigned NOT NULL COMMENT '幕布商品ID(来源shop_items)',
  533. `z_index` int(11) NOT NULL DEFAULT '0' COMMENT '渲染层级',
  534. `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  535. `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  536. PRIMARY KEY (`id`)
  537. ) ENGINE=InnoDB AUTO_INCREMENT=511 DEFAULT CHARSET=utf8mb4 COMMENT='用户当前/chatbot背景幕布表';
  538. -- ----------------------------
  539. -- Table structure for user_community_choice
  540. -- ----------------------------
  541. DROP TABLE IF EXISTS `user_community_choice`;
  542. CREATE TABLE `user_community_choice` (
  543. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  544. `user_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户ID',
  545. `opted_out` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否选择退出早期共创社区',
  546. `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  547. PRIMARY KEY (`id`),
  548. UNIQUE KEY `user_id` (`user_id`),
  549. KEY `idx_user_id` (`user_id`)
  550. ) ENGINE=InnoDB AUTO_INCREMENT=81 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户是否退出早期共创社区';
  551. -- ----------------------------
  552. -- Table structure for user_daily_activity
  553. -- ----------------------------
  554. DROP TABLE IF EXISTS `user_daily_activity`;
  555. CREATE TABLE `user_daily_activity` (
  556. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  557. `activity_date` date NOT NULL COMMENT '统计日期(UTC日)',
  558. `user_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户ID',
  559. `active_flag` tinyint(1) NOT NULL DEFAULT '0' COMMENT '当天是否有≥1次活跃判定事件:1=是',
  560. `session_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '当天去重session数(基于活跃事件)',
  561. `message_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '当天用户消息条数(role=user)',
  562. `first_seen_date` date DEFAULT NULL COMMENT '用户首次出现日期(来自users.created_at,首次写入后不覆盖)',
  563. `user_segment_snapshot` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'users.user_segment快照',
  564. `org_id_snapshot` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'users.org_id快照',
  565. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  566. `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  567. PRIMARY KEY (`id`),
  568. UNIQUE KEY `uk_activity_date_user` (`activity_date`,`user_id`),
  569. KEY `idx_activity_date` (`activity_date`),
  570. KEY `idx_user_id` (`user_id`),
  571. KEY `idx_first_seen_date` (`first_seen_date`)
  572. ) ENGINE=InnoDB AUTO_INCREMENT=417 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户日活跃聚合表';
  573. -- ----------------------------
  574. -- Table structure for user_early_community
  575. -- ----------------------------
  576. DROP TABLE IF EXISTS `user_early_community`;
  577. CREATE TABLE `user_early_community` (
  578. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  579. `user_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户ID',
  580. `email` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '加入早期共创时留的邮箱',
  581. `popup_shown` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否已展示过弹窗',
  582. `joined_at` timestamp NULL DEFAULT NULL COMMENT '加入时间(留邮箱时)',
  583. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  584. `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  585. PRIMARY KEY (`id`),
  586. UNIQUE KEY `user_id` (`user_id`),
  587. KEY `idx_user_id` (`user_id`)
  588. ) ENGINE=InnoDB AUTO_INCREMENT=39 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户早期共创社区(手机号新用户留邮箱)';
  589. -- ----------------------------
  590. -- Table structure for user_events
  591. -- ----------------------------
  592. DROP TABLE IF EXISTS `user_events`;
  593. CREATE TABLE `user_events` (
  594. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  595. `event_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '事件ID(客户端或服务端生成,唯一)',
  596. `user_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户ID(关联 users.user_id)',
  597. `event_name` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '事件代码,如 page.chatbot__enter(遵循埋点命名规范)',
  598. `event_label` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '事件中文名称/描述(如“进入聊天页”、“欢迎页开始按钮点击”)',
  599. `event_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '事件发生时间(UTC)',
  600. `session_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '会话ID,同一次前台停留共享',
  601. `platform` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '平台:ios/android/web',
  602. `app_version` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '应用版本号,如 v0.1.x',
  603. `timezone_offset_minutes` int(11) DEFAULT NULL COMMENT '用户本地相对UTC的分钟偏移量(分钟)',
  604. `properties` json DEFAULT NULL COMMENT '扩展属性(page、entry、button_id、duration_seconds 等)',
  605. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间',
  606. PRIMARY KEY (`id`),
  607. UNIQUE KEY `uk_event_id` (`event_id`),
  608. KEY `idx_user_id` (`user_id`),
  609. KEY `idx_event_time` (`event_time`),
  610. KEY `idx_event_name` (`event_name`),
  611. KEY `idx_user_event_time` (`user_id`,`event_time`),
  612. KEY `idx_session_id` (`session_id`),
  613. KEY `idx_event_time_name` (`event_time`,`event_name`)
  614. ) ENGINE=InnoDB AUTO_INCREMENT=2261 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户事件表';
  615. -- ----------------------------
  616. -- Table structure for user_intimacy
  617. -- ----------------------------
  618. DROP TABLE IF EXISTS `user_intimacy`;
  619. CREATE TABLE `user_intimacy` (
  620. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  621. `user_id` varchar(64) NOT NULL COMMENT '用户ID',
  622. `heart_count` int(11) NOT NULL DEFAULT '3' COMMENT '亲密度心数 0-3',
  623. `last_visit_date_at_deduction` varchar(10) DEFAULT NULL COMMENT '上次扣心所依据的最后访问日期 YYYY-MM-DD',
  624. `last_light_up_date` varchar(10) DEFAULT NULL COMMENT '上次手动点亮日期 YYYY-MM-DD,控制每天仅点亮一次',
  625. `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  626. PRIMARY KEY (`id`),
  627. UNIQUE KEY `uk_user_intimacy_user_id` (`user_id`),
  628. KEY `idx_user_intimacy_user_id` (`user_id`)
  629. ) ENGINE=InnoDB AUTO_INCREMENT=190 DEFAULT CHARSET=utf8mb4 COMMENT='用户亲密度表';
  630. -- ----------------------------
  631. -- Table structure for user_special_scenario_topic_logs
  632. -- ----------------------------
  633. DROP TABLE IF EXISTS `user_special_scenario_topic_logs`;
  634. CREATE TABLE `user_special_scenario_topic_logs` (
  635. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  636. `user_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户ID(关联 users.user_id)',
  637. `scenario_key` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '场景: window|reading|eating',
  638. `topic_key` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '话题键(如 weather|season|travel 等)',
  639. `conversed_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '该场景该话题下首次对话时间',
  640. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间',
  641. PRIMARY KEY (`id`),
  642. UNIQUE KEY `uk_user_scenario_topic` (`user_id`,`scenario_key`,`topic_key`),
  643. KEY `idx_user_scenario` (`user_id`,`scenario_key`)
  644. ) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户情景话题对话记录(用于概率排除与不再触发)';
  645. -- ----------------------------
  646. -- Table structure for user_ui_states
  647. -- ----------------------------
  648. DROP TABLE IF EXISTS `user_ui_states`;
  649. CREATE TABLE `user_ui_states` (
  650. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  651. `user_id` varchar(64) NOT NULL COMMENT '用户ID(关联 users.user_id)',
  652. `current_page` varchar(64) DEFAULT NULL COMMENT '当前业务流程页面标识',
  653. `visited_routes` json DEFAULT NULL COMMENT '已访问路由列表',
  654. `has_shown_tap_to_chat` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否已展示 TapToChat 提示',
  655. `has_shown_cancel_tooltip` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否已展示取消按钮提示',
  656. `has_shown_send_tooltip` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否已展示发送按钮提示',
  657. `has_shown_progress_bar_tooltip` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否已展示进度条提示',
  658. `avatar_c_unlocked` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否已解锁 Avatar-C',
  659. `has_shared_avatar` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否已分享头像奖励',
  660. `current_avatar_id` varchar(64) DEFAULT NULL COMMENT '当前使用的形象ID(关联 avatars.avatar_id)',
  661. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  662. `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  663. `has_shown_mission_stone_modal` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否已展示过任务能量石弹窗',
  664. `has_shown_conversation_stone_modal` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否已展示过对话能量石弹窗',
  665. `has_clicked_mission_stone` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否已点击过任务能量石(控制光晕显示)',
  666. `has_clicked_conversation_stone` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否已点击过对话能量石(控制光晕显示)',
  667. `subtitle_on` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否开启字幕显示',
  668. PRIMARY KEY (`id`),
  669. UNIQUE KEY `user_id` (`user_id`),
  670. KEY `idx_user_ui_state_user_id` (`user_id`)
  671. ) ENGINE=InnoDB AUTO_INCREMENT=214 DEFAULT CHARSET=utf8mb4 COMMENT='用户前端可视化状态表';
  672. -- ----------------------------
  673. -- Table structure for users
  674. -- ----------------------------
  675. DROP TABLE IF EXISTS `users`;
  676. CREATE TABLE `users` (
  677. `id` bigint(20) NOT NULL AUTO_INCREMENT,
  678. `user_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户唯一标识(UUID)',
  679. `username` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '用户名/昵称',
  680. `user_type` enum('guest','registered') COLLATE utf8mb4_unicode_ci DEFAULT 'guest' COMMENT '用户类型',
  681. `user_segment` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'individual' COMMENT '用户/场景分群:individual/school/internal等',
  682. `org_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '组织ID(关联 organizations.org_id)',
  683. `is_test_user` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否测试账号',
  684. `region` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '国家/地区(如 CN、US)',
  685. `area_code` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '手机区号(如 +86)',
  686. `bot_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '用户给机器人取的名字',
  687. `phone` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '手机号',
  688. `email` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '邮箱',
  689. `wechat_openid` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '微信OpenID',
  690. `qq_openid` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'QQ OpenID',
  691. `qq_unionid` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'QQ UnionID',
  692. `google_email` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Google邮箱',
  693. `is_verified` tinyint(1) DEFAULT '0' COMMENT '是否已认证',
  694. `registered_at` timestamp NULL DEFAULT NULL COMMENT '注册时间',
  695. `total_messages` int(11) DEFAULT '0' COMMENT '总消息数',
  696. `total_rounds` int(11) DEFAULT '0' COMMENT '总对话轮次',
  697. `total_speech_duration_ms` bigint(20) DEFAULT '0' COMMENT '累积说话时长(毫秒)',
  698. `user_level` int(11) NOT NULL DEFAULT '0' COMMENT '用户等级(0-5)',
  699. `preferred_language` varchar(8) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '首选语言(zh/en)',
  700. `last_active_at` timestamp NULL DEFAULT NULL COMMENT '最后活跃时间',
  701. `current_background_image_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '当前使用的背景图片ID',
  702. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  703. `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  704. PRIMARY KEY (`id`) USING BTREE,
  705. UNIQUE KEY `user_id` (`user_id`) USING BTREE,
  706. UNIQUE KEY `phone` (`phone`) USING BTREE,
  707. UNIQUE KEY `wechat_openid` (`wechat_openid`) USING BTREE,
  708. UNIQUE KEY `google_email` (`google_email`) USING BTREE,
  709. UNIQUE KEY `email` (`email`),
  710. UNIQUE KEY `qq_openid` (`qq_openid`),
  711. UNIQUE KEY `qq_unionid` (`qq_unionid`),
  712. KEY `idx_user_id` (`user_id`) USING BTREE,
  713. KEY `idx_phone` (`phone`) USING BTREE,
  714. KEY `idx_wechat_openid` (`wechat_openid`) USING BTREE,
  715. KEY `idx_google_email` (`google_email`) USING BTREE,
  716. KEY `idx_user_type` (`user_type`) USING BTREE,
  717. KEY `idx_email` (`email`),
  718. KEY `idx_qq_openid` (`qq_openid`),
  719. KEY `idx_qq_unionid` (`qq_unionid`),
  720. KEY `idx_user_segment` (`user_segment`),
  721. KEY `idx_org_id` (`org_id`),
  722. KEY `idx_is_test_user` (`is_test_user`),
  723. KEY `idx_region` (`region`)
  724. ) ENGINE=InnoDB AUTO_INCREMENT=214 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';
  725. -- ----------------------------
  726. -- Table structure for users_copy1
  727. -- ----------------------------
  728. DROP TABLE IF EXISTS `users_copy1`;
  729. CREATE TABLE `users_copy1` (
  730. `id` bigint(20) NOT NULL AUTO_INCREMENT,
  731. `user_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户唯一标识(UUID)',
  732. `username` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '用户名/昵称',
  733. `user_type` enum('guest','registered') COLLATE utf8mb4_unicode_ci DEFAULT 'guest' COMMENT '用户类型',
  734. `user_segment` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'individual' COMMENT '用户/场景分群:individual/school/internal等',
  735. `org_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '组织ID(关联 organizations.org_id)',
  736. `is_test_user` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否测试账号',
  737. `region` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '国家/地区(如 CN、US)',
  738. `area_code` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '手机区号(如 +86)',
  739. `bot_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '用户给机器人取的名字',
  740. `phone` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '手机号',
  741. `email` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '邮箱',
  742. `wechat_openid` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '微信OpenID',
  743. `qq_openid` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'QQ OpenID',
  744. `qq_unionid` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'QQ UnionID',
  745. `google_email` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Google邮箱',
  746. `is_verified` tinyint(1) DEFAULT '0' COMMENT '是否已认证',
  747. `registered_at` timestamp NULL DEFAULT NULL COMMENT '注册时间',
  748. `total_messages` int(11) DEFAULT '0' COMMENT '总消息数',
  749. `total_rounds` int(11) DEFAULT '0' COMMENT '总对话轮次',
  750. `total_speech_duration_ms` bigint(20) DEFAULT '0' COMMENT '累积说话时长(毫秒)',
  751. `user_level` int(11) NOT NULL DEFAULT '0' COMMENT '用户等级(0-5)',
  752. `preferred_language` varchar(8) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '首选语言(zh/en)',
  753. `last_active_at` timestamp NULL DEFAULT NULL COMMENT '最后活跃时间',
  754. `current_background_image_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '当前使用的背景图片ID',
  755. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  756. `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  757. PRIMARY KEY (`id`) USING BTREE,
  758. UNIQUE KEY `user_id` (`user_id`) USING BTREE,
  759. UNIQUE KEY `phone` (`phone`) USING BTREE,
  760. UNIQUE KEY `wechat_openid` (`wechat_openid`) USING BTREE,
  761. UNIQUE KEY `google_email` (`google_email`) USING BTREE,
  762. UNIQUE KEY `email` (`email`),
  763. UNIQUE KEY `qq_openid` (`qq_openid`),
  764. UNIQUE KEY `qq_unionid` (`qq_unionid`),
  765. KEY `idx_user_id` (`user_id`) USING BTREE,
  766. KEY `idx_phone` (`phone`) USING BTREE,
  767. KEY `idx_wechat_openid` (`wechat_openid`) USING BTREE,
  768. KEY `idx_google_email` (`google_email`) USING BTREE,
  769. KEY `idx_user_type` (`user_type`) USING BTREE,
  770. KEY `idx_email` (`email`),
  771. KEY `idx_qq_openid` (`qq_openid`),
  772. KEY `idx_qq_unionid` (`qq_unionid`),
  773. KEY `idx_user_segment` (`user_segment`),
  774. KEY `idx_org_id` (`org_id`),
  775. KEY `idx_is_test_user` (`is_test_user`),
  776. KEY `idx_region` (`region`)
  777. ) ENGINE=InnoDB AUTO_INCREMENT=208 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';
  778. -- ----------------------------
  779. -- Table structure for verification_codes
  780. -- ----------------------------
  781. DROP TABLE IF EXISTS `verification_codes`;
  782. CREATE TABLE `verification_codes` (
  783. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  784. `code_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '验证码ID',
  785. `area_code` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '手机区号(如 +86)',
  786. `phone` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '手机号',
  787. `email` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '邮箱',
  788. `code` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '验证码',
  789. `send_type` enum('domestic_sms','international_sms','email') COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '发送类型:国内短信、国外短信、邮箱',
  790. `is_sent` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否已发送',
  791. `is_valid` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否有效',
  792. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  793. `sent_at` timestamp NULL DEFAULT NULL COMMENT '发送时间',
  794. `metadata` json DEFAULT NULL COMMENT '扩展信息(发送结果、错误信息等)',
  795. PRIMARY KEY (`id`),
  796. UNIQUE KEY `code_id` (`code_id`),
  797. KEY `idx_code_id` (`code_id`),
  798. KEY `idx_verification_code_phone` (`phone`,`is_valid`,`created_at`),
  799. KEY `idx_verification_code_email` (`email`,`is_valid`,`created_at`),
  800. KEY `idx_verification_code_send_type` (`send_type`,`is_sent`,`is_valid`)
  801. ) ENGINE=InnoDB AUTO_INCREMENT=310 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='验证码表';
  802. SET FOREIGN_KEY_CHECKS = 1;