Lyrria.sql 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488
  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: 02/03/2026 16:00:47
  12. */
  13. SET NAMES utf8mb4;
  14. SET FOREIGN_KEY_CHECKS = 0;
  15. -- ----------------------------
  16. -- Table structure for avatar_assets
  17. -- ----------------------------
  18. DROP TABLE IF EXISTS `avatar_assets`;
  19. CREATE TABLE `avatar_assets` (
  20. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  21. `avatar_id` varchar(64) NOT NULL COMMENT '形象ID',
  22. `state` enum('default','positive','negative','talking','idle','sleep') NOT NULL DEFAULT 'default' COMMENT '动作/情绪状态',
  23. `image_url` varchar(500) NOT NULL COMMENT 'GIF 资源 URL',
  24. `thumbnail_url` varchar(500) DEFAULT NULL COMMENT '缩略图URL',
  25. `metadata` json DEFAULT NULL COMMENT '扩展配置',
  26. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  27. `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  28. PRIMARY KEY (`id`),
  29. UNIQUE KEY `uk_avatar_asset_state` (`avatar_id`,`state`),
  30. KEY `idx_avatar_asset_avatar_id` (`avatar_id`)
  31. ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COMMENT='形象动作资源表';
  32. -- ----------------------------
  33. -- Table structure for avatars
  34. -- ----------------------------
  35. DROP TABLE IF EXISTS `avatars`;
  36. CREATE TABLE `avatars` (
  37. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  38. `avatar_id` varchar(64) NOT NULL COMMENT '形象唯一标识',
  39. `avatar_name` varchar(100) NOT NULL COMMENT '形象名称',
  40. `description` varchar(255) DEFAULT NULL COMMENT '形象描述',
  41. `is_active` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否启用',
  42. `metadata` json DEFAULT NULL COMMENT '扩展配置',
  43. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  44. `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  45. PRIMARY KEY (`id`),
  46. UNIQUE KEY `avatar_id` (`avatar_id`),
  47. KEY `idx_avatar_is_active` (`is_active`),
  48. KEY `idx_avatar_id` (`avatar_id`)
  49. ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COMMENT='形象配置表';
  50. -- ----------------------------
  51. -- Table structure for background_images
  52. -- ----------------------------
  53. DROP TABLE IF EXISTS `background_images`;
  54. CREATE TABLE `background_images` (
  55. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  56. `image_id` varchar(64) NOT NULL COMMENT '背景图片唯一标识',
  57. `image_name` varchar(100) NOT NULL COMMENT '背景图片名称',
  58. `image_url` varchar(500) NOT NULL COMMENT '背景图片URL',
  59. `thumbnail_url` varchar(500) DEFAULT NULL COMMENT '缩略图URL',
  60. `unlock_type` enum('default','level','purchase','mission') NOT NULL DEFAULT 'default' COMMENT '解锁类型',
  61. `unlock_level` int(11) DEFAULT NULL COMMENT '解锁所需等级(unlock_type=level时)',
  62. `unlock_mission_type` varchar(64) DEFAULT NULL COMMENT '解锁所需任务类型(unlock_type=mission时)',
  63. `display_order` int(11) NOT NULL DEFAULT '0' COMMENT '显示顺序',
  64. `is_active` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否启用',
  65. `description` varchar(255) DEFAULT NULL COMMENT '背景图片描述',
  66. `metadata` json DEFAULT NULL COMMENT '扩展配置',
  67. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  68. `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  69. PRIMARY KEY (`id`),
  70. UNIQUE KEY `image_id` (`image_id`),
  71. KEY `idx_image_id` (`image_id`),
  72. KEY `idx_unlock_type` (`unlock_type`),
  73. KEY `idx_display_order` (`display_order`)
  74. ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COMMENT='背景图片配置表';
  75. -- ----------------------------
  76. -- Table structure for conversation_energy_stones
  77. -- ----------------------------
  78. DROP TABLE IF EXISTS `conversation_energy_stones`;
  79. CREATE TABLE `conversation_energy_stones` (
  80. `id` bigint(20) NOT NULL AUTO_INCREMENT,
  81. `stone_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '能量石ID',
  82. `user_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户ID',
  83. `request_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '触发的请求ID',
  84. `threshold_index` int(11) NOT NULL COMMENT '达成阈值的序号(1=30秒,2=60秒...)',
  85. `total_duration_ms` bigint(20) NOT NULL COMMENT '累计说话时长(毫秒)',
  86. `duration_increment_ms` int(11) NOT NULL COMMENT '本次新增时长(毫秒)',
  87. `appear_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '出现时间',
  88. `clicked_at` timestamp NULL DEFAULT NULL COMMENT '点击时间',
  89. `auto_removed` tinyint(1) DEFAULT '0' COMMENT '是否自动消失',
  90. `metadata` json DEFAULT NULL COMMENT '扩展信息',
  91. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  92. `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  93. PRIMARY KEY (`id`),
  94. UNIQUE KEY `stone_id` (`stone_id`),
  95. UNIQUE KEY `uk_conversation_stone_threshold` (`user_id`,`threshold_index`),
  96. KEY `idx_stone_id` (`stone_id`),
  97. KEY `idx_user_id` (`user_id`),
  98. KEY `idx_conversation_stone_user_threshold` (`user_id`,`threshold_index`),
  99. KEY `idx_appear_at` (`appear_at`)
  100. ) ENGINE=InnoDB AUTO_INCREMENT=275 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='对话能量石表(按时长发放)';
  101. -- ----------------------------
  102. -- Table structure for conversation_summaries
  103. -- ----------------------------
  104. DROP TABLE IF EXISTS `conversation_summaries`;
  105. CREATE TABLE `conversation_summaries` (
  106. `id` bigint(20) NOT NULL AUTO_INCREMENT,
  107. `summary_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '总结ID',
  108. `user_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户ID',
  109. `start_round` int(11) NOT NULL COMMENT '起始轮次',
  110. `end_round` int(11) NOT NULL COMMENT '结束轮次',
  111. `summary_text` text COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '总结内容',
  112. `summary_type` enum('auto','manual') COLLATE utf8mb4_unicode_ci DEFAULT 'auto' COMMENT '总结类型',
  113. `message_count` int(11) DEFAULT NULL COMMENT '总结的消息数量',
  114. `token_count` int(11) DEFAULT NULL COMMENT '总结文本Token数',
  115. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  116. PRIMARY KEY (`id`) USING BTREE,
  117. UNIQUE KEY `summary_id` (`summary_id`) USING BTREE,
  118. UNIQUE KEY `uk_user_round_range` (`user_id`,`start_round`,`end_round`) USING BTREE,
  119. KEY `idx_user_id` (`user_id`) USING BTREE,
  120. KEY `idx_user_end_round` (`user_id`,`end_round`) USING BTREE
  121. ) ENGINE=InnoDB AUTO_INCREMENT=69 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='对话总结表';
  122. -- ----------------------------
  123. -- Table structure for feedbacks
  124. -- ----------------------------
  125. DROP TABLE IF EXISTS `feedbacks`;
  126. CREATE TABLE `feedbacks` (
  127. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  128. `feedback_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '反馈ID',
  129. `user_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户ID',
  130. `content` text COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '反馈内容',
  131. `status` enum('pending','reviewed','resolved','closed') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'pending' COMMENT '反馈状态',
  132. `metadata` json DEFAULT NULL COMMENT '扩展信息',
  133. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  134. `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  135. PRIMARY KEY (`id`),
  136. UNIQUE KEY `feedback_id` (`feedback_id`),
  137. KEY `idx_feedback_id` (`feedback_id`),
  138. KEY `idx_user_id` (`user_id`),
  139. KEY `idx_feedback_user_created` (`user_id`,`created_at`)
  140. ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户反馈表';
  141. -- ----------------------------
  142. -- Table structure for llm_prompts
  143. -- ----------------------------
  144. DROP TABLE IF EXISTS `llm_prompts`;
  145. CREATE TABLE `llm_prompts` (
  146. `id` bigint(20) NOT NULL AUTO_INCREMENT,
  147. `prompt_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '提示词记录ID',
  148. `message_id` bigint(20) NOT NULL COMMENT '关联的消息ID',
  149. `user_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户ID',
  150. `round_number` int(11) NOT NULL COMMENT '对话轮次',
  151. `system_prompt` text COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '系统提示词(完整内容)',
  152. `runtime_context` text COLLATE utf8mb4_unicode_ci COMMENT '运行时上下文',
  153. `messages_json` json NOT NULL COMMENT '完整的messages数组(JSON格式)',
  154. `model_name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '模型名称',
  155. `temperature` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '温度参数',
  156. `max_tokens` int(11) DEFAULT NULL COMMENT '最大Token数',
  157. `stream` tinyint(1) DEFAULT '1' COMMENT '是否流式输出',
  158. `prompt_token_count` int(11) DEFAULT NULL COMMENT '提示词Token数',
  159. `total_token_count` int(11) DEFAULT NULL COMMENT '总Token数(包含响应)',
  160. `metadata_json` json DEFAULT NULL COMMENT '扩展信息(调用耗时、错误信息等)',
  161. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  162. PRIMARY KEY (`id`),
  163. UNIQUE KEY `prompt_id` (`prompt_id`),
  164. KEY `idx_prompt_id` (`prompt_id`),
  165. KEY `idx_llm_prompt_message` (`message_id`),
  166. KEY `idx_llm_prompt_user_round` (`user_id`,`round_number`),
  167. KEY `idx_llm_prompt_created` (`created_at`),
  168. CONSTRAINT `llm_prompts_ibfk_1` FOREIGN KEY (`message_id`) REFERENCES `messages` (`id`) ON DELETE CASCADE
  169. ) ENGINE=InnoDB AUTO_INCREMENT=991 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='LLM提示词记录表';
  170. -- ----------------------------
  171. -- Table structure for messages
  172. -- ----------------------------
  173. DROP TABLE IF EXISTS `messages`;
  174. CREATE TABLE `messages` (
  175. `id` bigint(20) NOT NULL AUTO_INCREMENT,
  176. `message_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '消息ID',
  177. `user_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户ID',
  178. `role` enum('user','assistant','system') COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '角色',
  179. `content` text COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '消息内容',
  180. `round_number` int(11) NOT NULL COMMENT '对话轮次(从1开始)',
  181. `emotion` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '情感标签',
  182. `message_metadata` json DEFAULT NULL COMMENT '扩展信息(音频路径、识别耗时等)',
  183. `token_count` int(11) DEFAULT NULL COMMENT 'Token数量',
  184. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  185. PRIMARY KEY (`id`) USING BTREE,
  186. UNIQUE KEY `message_id` (`message_id`) USING BTREE,
  187. KEY `idx_user_id` (`user_id`) USING BTREE,
  188. KEY `idx_user_round` (`user_id`,`round_number`) USING BTREE,
  189. KEY `idx_created_at` (`created_at`) USING BTREE
  190. ) ENGINE=InnoDB AUTO_INCREMENT=1988 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='消息表';
  191. -- ----------------------------
  192. -- Table structure for mission_energy_stones
  193. -- ----------------------------
  194. DROP TABLE IF EXISTS `mission_energy_stones`;
  195. CREATE TABLE `mission_energy_stones` (
  196. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增主键',
  197. `stone_id` varchar(64) NOT NULL COMMENT '能量石ID',
  198. `user_id` varchar(64) NOT NULL COMMENT '用户ID',
  199. `request_id` varchar(64) DEFAULT NULL COMMENT '触发请求ID',
  200. `appear_reason` varchar(64) NOT NULL DEFAULT 'first_dialog' COMMENT '触发原因',
  201. `mission_type` varchar(64) NOT NULL DEFAULT 'first_dialog' COMMENT '任务类型',
  202. `appear_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '出现时间',
  203. `clicked_at` timestamp NULL DEFAULT NULL COMMENT '点击时间',
  204. `auto_removed` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否系统自动消失',
  205. `metadata` json DEFAULT NULL COMMENT '扩展信息',
  206. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  207. `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  208. PRIMARY KEY (`id`) USING BTREE,
  209. UNIQUE KEY `uk_mission_stone_id` (`stone_id`) USING BTREE
  210. ) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=utf8mb4 COMMENT='任务能量石记录';
  211. -- ----------------------------
  212. -- Table structure for mission_types
  213. -- ----------------------------
  214. DROP TABLE IF EXISTS `mission_types`;
  215. CREATE TABLE `mission_types` (
  216. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增主键',
  217. `type_key` varchar(64) NOT NULL COMMENT '任务类型唯一标识',
  218. `display_name` varchar(100) NOT NULL COMMENT '显示名称',
  219. `description` varchar(255) DEFAULT NULL COMMENT '类型描述',
  220. `is_repeatable` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否允许重复触发',
  221. `is_active` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否启用',
  222. `metadata` json DEFAULT NULL COMMENT '扩展配置',
  223. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  224. `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  225. PRIMARY KEY (`id`) USING BTREE,
  226. UNIQUE KEY `uk_mission_type_key` (`type_key`) USING BTREE
  227. ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='任务类型配置';
  228. -- ----------------------------
  229. -- Table structure for page_visit_logs
  230. -- ----------------------------
  231. DROP TABLE IF EXISTS `page_visit_logs`;
  232. CREATE TABLE `page_visit_logs` (
  233. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  234. `user_id` varchar(64) DEFAULT NULL COMMENT '用户ID(未登录则为空)',
  235. `path` varchar(512) NOT NULL COMMENT '访问路径',
  236. `visited_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '访问时间',
  237. PRIMARY KEY (`id`),
  238. KEY `idx_page_visit_user_id` (`user_id`),
  239. KEY `idx_page_visit_path` (`path`(255)),
  240. KEY `idx_page_visit_visited_at` (`visited_at`)
  241. ) ENGINE=InnoDB AUTO_INCREMENT=2238 DEFAULT CHARSET=utf8mb4 COMMENT='页面访问日志表';
  242. -- ----------------------------
  243. -- Table structure for share_images
  244. -- ----------------------------
  245. DROP TABLE IF EXISTS `share_images`;
  246. CREATE TABLE `share_images` (
  247. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  248. `code` varchar(64) NOT NULL,
  249. `url` text NOT NULL,
  250. `title` varchar(128) DEFAULT NULL,
  251. `sort_order` int(11) NOT NULL DEFAULT '0',
  252. `is_active` tinyint(1) NOT NULL DEFAULT '1',
  253. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  254. `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  255. PRIMARY KEY (`id`),
  256. UNIQUE KEY `code` (`code`),
  257. KEY `idx_share_images_sort` (`sort_order`)
  258. ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;
  259. -- ----------------------------
  260. -- Table structure for user_avatars
  261. -- ----------------------------
  262. DROP TABLE IF EXISTS `user_avatars`;
  263. CREATE TABLE `user_avatars` (
  264. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  265. `user_id` varchar(64) NOT NULL COMMENT '用户ID',
  266. `avatar_id` varchar(64) NOT NULL COMMENT '形象ID',
  267. `obtained_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '获得时间',
  268. `obtained_type` enum('default','register','level_up','mission','purchase','gift','event') NOT NULL DEFAULT 'default' COMMENT '获得方式',
  269. `obtained_source` varchar(64) DEFAULT NULL COMMENT '获得来源(等级/任务/订单等)',
  270. `metadata` json DEFAULT NULL COMMENT '扩展信息',
  271. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  272. PRIMARY KEY (`id`),
  273. UNIQUE KEY `uk_user_avatar` (`user_id`,`avatar_id`),
  274. KEY `idx_user_avatar_user_obtained` (`user_id`,`obtained_at`),
  275. KEY `idx_user_avatar_avatar_id` (`avatar_id`)
  276. ) ENGINE=InnoDB AUTO_INCREMENT=258 DEFAULT CHARSET=utf8mb4 COMMENT='用户已拥有的形象';
  277. -- ----------------------------
  278. -- Table structure for user_background_images
  279. -- ----------------------------
  280. DROP TABLE IF EXISTS `user_background_images`;
  281. CREATE TABLE `user_background_images` (
  282. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  283. `user_id` varchar(64) NOT NULL COMMENT '用户ID',
  284. `image_id` varchar(64) NOT NULL COMMENT '背景图片ID',
  285. `obtained_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '获得时间',
  286. `obtained_type` enum('default','level_up','purchase','mission','gift') NOT NULL DEFAULT 'default' COMMENT '获得方式',
  287. `obtained_source` varchar(64) DEFAULT NULL COMMENT '获得来源(任务类型、等级等)',
  288. `metadata` json DEFAULT NULL COMMENT '扩展信息',
  289. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  290. PRIMARY KEY (`id`),
  291. UNIQUE KEY `uk_user_background_image` (`user_id`,`image_id`),
  292. KEY `idx_user_id` (`user_id`),
  293. KEY `idx_image_id` (`image_id`),
  294. KEY `idx_user_obtained` (`user_id`,`obtained_at`)
  295. ) ENGINE=InnoDB AUTO_INCREMENT=211 DEFAULT CHARSET=utf8mb4 COMMENT='用户背景图片关联表';
  296. -- ----------------------------
  297. -- Table structure for user_bonus_energy_stones
  298. -- ----------------------------
  299. DROP TABLE IF EXISTS `user_bonus_energy_stones`;
  300. CREATE TABLE `user_bonus_energy_stones` (
  301. `user_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户ID(关联 users.user_id)',
  302. `bonus_conversation_count` int(11) NOT NULL DEFAULT '0' COMMENT '赠送的对话能量石个数',
  303. `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  304. PRIMARY KEY (`user_id`)
  305. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户赠送对话能量石数量表';
  306. -- ----------------------------
  307. -- Table structure for user_community_choice
  308. -- ----------------------------
  309. DROP TABLE IF EXISTS `user_community_choice`;
  310. CREATE TABLE `user_community_choice` (
  311. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  312. `user_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户ID',
  313. `opted_out` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否选择退出早期共创社区',
  314. `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  315. PRIMARY KEY (`id`),
  316. UNIQUE KEY `user_id` (`user_id`),
  317. KEY `idx_user_id` (`user_id`)
  318. ) ENGINE=InnoDB AUTO_INCREMENT=60 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户是否退出早期共创社区';
  319. -- ----------------------------
  320. -- Table structure for user_early_community
  321. -- ----------------------------
  322. DROP TABLE IF EXISTS `user_early_community`;
  323. CREATE TABLE `user_early_community` (
  324. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  325. `user_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户ID',
  326. `email` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '加入早期共创时留的邮箱',
  327. `popup_shown` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否已展示过弹窗',
  328. `joined_at` timestamp NULL DEFAULT NULL COMMENT '加入时间(留邮箱时)',
  329. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  330. `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  331. PRIMARY KEY (`id`),
  332. UNIQUE KEY `user_id` (`user_id`),
  333. KEY `idx_user_id` (`user_id`)
  334. ) ENGINE=InnoDB AUTO_INCREMENT=35 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户早期共创社区(手机号新用户留邮箱)';
  335. -- ----------------------------
  336. -- Table structure for user_intimacy
  337. -- ----------------------------
  338. DROP TABLE IF EXISTS `user_intimacy`;
  339. CREATE TABLE `user_intimacy` (
  340. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  341. `user_id` varchar(64) NOT NULL COMMENT '用户ID',
  342. `heart_count` int(11) NOT NULL DEFAULT '3' COMMENT '亲密度心数 0-3',
  343. `last_visit_date_at_deduction` varchar(10) DEFAULT NULL COMMENT '上次扣心所依据的最后访问日期 YYYY-MM-DD',
  344. `last_light_up_date` varchar(10) DEFAULT NULL COMMENT '上次手动点亮日期 YYYY-MM-DD,控制每天仅点亮一次',
  345. `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  346. PRIMARY KEY (`id`),
  347. UNIQUE KEY `uk_user_intimacy_user_id` (`user_id`),
  348. KEY `idx_user_intimacy_user_id` (`user_id`)
  349. ) ENGINE=InnoDB AUTO_INCREMENT=169 DEFAULT CHARSET=utf8mb4 COMMENT='用户亲密度表';
  350. -- ----------------------------
  351. -- Table structure for user_special_scenario_topic_logs
  352. -- ----------------------------
  353. DROP TABLE IF EXISTS `user_special_scenario_topic_logs`;
  354. CREATE TABLE `user_special_scenario_topic_logs` (
  355. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  356. `user_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户ID(关联 users.user_id)',
  357. `scenario_key` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '场景: window|reading|eating',
  358. `topic_key` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '话题键(如 weather|season|travel 等)',
  359. `conversed_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '该场景该话题下首次对话时间',
  360. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间',
  361. PRIMARY KEY (`id`),
  362. UNIQUE KEY `uk_user_scenario_topic` (`user_id`,`scenario_key`,`topic_key`),
  363. KEY `idx_user_scenario` (`user_id`,`scenario_key`)
  364. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户情景话题对话记录(用于概率排除与不再触发)';
  365. -- ----------------------------
  366. -- Table structure for user_ui_states
  367. -- ----------------------------
  368. DROP TABLE IF EXISTS `user_ui_states`;
  369. CREATE TABLE `user_ui_states` (
  370. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  371. `user_id` varchar(64) NOT NULL COMMENT '用户ID(关联 users.user_id)',
  372. `current_page` varchar(64) DEFAULT NULL COMMENT '当前业务流程页面标识',
  373. `visited_routes` json DEFAULT NULL COMMENT '已访问路由列表',
  374. `has_shown_tap_to_chat` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否已展示 TapToChat 提示',
  375. `has_shown_cancel_tooltip` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否已展示取消按钮提示',
  376. `has_shown_send_tooltip` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否已展示发送按钮提示',
  377. `has_shown_progress_bar_tooltip` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否已展示进度条提示',
  378. `avatar_c_unlocked` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否已解锁 Avatar-C',
  379. `has_shared_avatar` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否已分享头像奖励',
  380. `current_avatar_id` varchar(64) DEFAULT NULL COMMENT '当前使用的形象ID(关联 avatars.avatar_id)',
  381. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  382. `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  383. `has_shown_mission_stone_modal` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否已展示过任务能量石弹窗',
  384. `has_shown_conversation_stone_modal` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否已展示过对话能量石弹窗',
  385. `has_clicked_mission_stone` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否已点击过任务能量石(控制光晕显示)',
  386. `has_clicked_conversation_stone` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否已点击过对话能量石(控制光晕显示)',
  387. `subtitle_on` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否开启字幕显示',
  388. PRIMARY KEY (`id`),
  389. UNIQUE KEY `user_id` (`user_id`),
  390. KEY `idx_user_ui_state_user_id` (`user_id`)
  391. ) ENGINE=InnoDB AUTO_INCREMENT=191 DEFAULT CHARSET=utf8mb4 COMMENT='用户前端可视化状态表';
  392. -- ----------------------------
  393. -- Table structure for users
  394. -- ----------------------------
  395. DROP TABLE IF EXISTS `users`;
  396. CREATE TABLE `users` (
  397. `id` bigint(20) NOT NULL AUTO_INCREMENT,
  398. `user_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户唯一标识(UUID)',
  399. `username` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '用户名/昵称',
  400. `user_type` enum('guest','registered') COLLATE utf8mb4_unicode_ci DEFAULT 'guest' COMMENT '用户类型',
  401. `area_code` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '手机区号(如 +86)',
  402. `bot_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '用户给机器人取的名字',
  403. `phone` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '手机号',
  404. `email` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '邮箱',
  405. `wechat_openid` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '微信OpenID',
  406. `qq_openid` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'QQ OpenID',
  407. `qq_unionid` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'QQ UnionID',
  408. `google_email` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Google邮箱',
  409. `is_verified` tinyint(1) DEFAULT '0' COMMENT '是否已认证',
  410. `registered_at` timestamp NULL DEFAULT NULL COMMENT '注册时间',
  411. `total_messages` int(11) DEFAULT '0' COMMENT '总消息数',
  412. `total_rounds` int(11) DEFAULT '0' COMMENT '总对话轮次',
  413. `total_speech_duration_ms` bigint(20) DEFAULT '0' COMMENT '累积说话时长(毫秒)',
  414. `user_level` int(11) NOT NULL DEFAULT '0' COMMENT '用户等级(0-5)',
  415. `preferred_language` varchar(8) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '首选语言(zh/en)',
  416. `last_active_at` timestamp NULL DEFAULT NULL COMMENT '最后活跃时间',
  417. `current_background_image_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '当前使用的背景图片ID',
  418. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  419. `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  420. PRIMARY KEY (`id`) USING BTREE,
  421. UNIQUE KEY `user_id` (`user_id`) USING BTREE,
  422. UNIQUE KEY `phone` (`phone`) USING BTREE,
  423. UNIQUE KEY `wechat_openid` (`wechat_openid`) USING BTREE,
  424. UNIQUE KEY `google_email` (`google_email`) USING BTREE,
  425. UNIQUE KEY `email` (`email`),
  426. UNIQUE KEY `qq_openid` (`qq_openid`),
  427. UNIQUE KEY `qq_unionid` (`qq_unionid`),
  428. KEY `idx_user_id` (`user_id`) USING BTREE,
  429. KEY `idx_phone` (`phone`) USING BTREE,
  430. KEY `idx_wechat_openid` (`wechat_openid`) USING BTREE,
  431. KEY `idx_google_email` (`google_email`) USING BTREE,
  432. KEY `idx_user_type` (`user_type`) USING BTREE,
  433. KEY `idx_email` (`email`),
  434. KEY `idx_qq_openid` (`qq_openid`),
  435. KEY `idx_qq_unionid` (`qq_unionid`)
  436. ) ENGINE=InnoDB AUTO_INCREMENT=191 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';
  437. -- ----------------------------
  438. -- Table structure for verification_codes
  439. -- ----------------------------
  440. DROP TABLE IF EXISTS `verification_codes`;
  441. CREATE TABLE `verification_codes` (
  442. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  443. `code_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '验证码ID',
  444. `area_code` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '手机区号(如 +86)',
  445. `phone` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '手机号',
  446. `email` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '邮箱',
  447. `code` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '验证码',
  448. `send_type` enum('domestic_sms','international_sms','email') COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '发送类型:国内短信、国外短信、邮箱',
  449. `is_sent` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否已发送',
  450. `is_valid` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否有效',
  451. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  452. `sent_at` timestamp NULL DEFAULT NULL COMMENT '发送时间',
  453. `metadata` json DEFAULT NULL COMMENT '扩展信息(发送结果、错误信息等)',
  454. PRIMARY KEY (`id`),
  455. UNIQUE KEY `code_id` (`code_id`),
  456. KEY `idx_code_id` (`code_id`),
  457. KEY `idx_verification_code_phone` (`phone`,`is_valid`,`created_at`),
  458. KEY `idx_verification_code_email` (`email`,`is_valid`,`created_at`),
  459. KEY `idx_verification_code_send_type` (`send_type`,`is_sent`,`is_valid`)
  460. ) ENGINE=InnoDB AUTO_INCREMENT=229 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='验证码表';
  461. SET FOREIGN_KEY_CHECKS = 1;