data.sql 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515
  1. -- =============================================================================
  2. -- 智能穴位定位系统 - 数据库重建脚本
  3. -- 说明:DROP 所有旧表,全新创建 17 张表,插入种子数据。
  4. -- ID 策略:应用层使用雪花算法生成,种子数据使用固定小 ID(不会冲突)。
  5. -- =============================================================================
  6. CREATE DATABASE IF NOT EXISTS `aijiuyi_admin`
  7. DEFAULT CHARACTER SET utf8mb4
  8. COLLATE utf8mb4_unicode_ci;
  9. USE `aijiuyi_admin`;
  10. SET NAMES utf8mb4;
  11. SET FOREIGN_KEY_CHECKS = 0;
  12. -- -----------------------------------------------------------------------------
  13. -- DROP 所有旧表
  14. -- -----------------------------------------------------------------------------
  15. DROP TABLE IF EXISTS `scheme_target_user`;
  16. DROP TABLE IF EXISTS `moxa_session_record`;
  17. DROP TABLE IF EXISTS `moxa_process`;
  18. DROP TABLE IF EXISTS `device_hotkey_mapping`;
  19. DROP TABLE IF EXISTS `user_acupoint_item`;
  20. DROP TABLE IF EXISTS `user_acupoint_table`;
  21. DROP TABLE IF EXISTS `user_scheme`;
  22. DROP TABLE IF EXISTS `scheme_step`;
  23. DROP TABLE IF EXISTS `scheme`;
  24. DROP TABLE IF EXISTS `moxa_technique`;
  25. DROP TABLE IF EXISTS `acupoint`;
  26. DROP TABLE IF EXISTS `app_user_device`;
  27. DROP TABLE IF EXISTS `app_device`;
  28. DROP TABLE IF EXISTS `app_user_fingerprint`;
  29. DROP TABLE IF EXISTS `app_user`;
  30. DROP TABLE IF EXISTS `sys_operation_log`;
  31. DROP TABLE IF EXISTS `sys_admin_user`;
  32. -- 旧表清理
  33. DROP TABLE IF EXISTS `admin_user_role`;
  34. DROP TABLE IF EXISTS `admin_user`;
  35. DROP TABLE IF EXISTS `admin_role`;
  36. DROP TABLE IF EXISTS `operation_log`;
  37. DROP TABLE IF EXISTS `end_user`;
  38. DROP TABLE IF EXISTS `user_fingerprint`;
  39. DROP TABLE IF EXISTS `account`;
  40. DROP TABLE IF EXISTS `moxa_session_record`;
  41. DROP TABLE IF EXISTS `algorithm_version_record`;
  42. DROP TABLE IF EXISTS `algorithm_parameter_set`;
  43. DROP TABLE IF EXISTS `device_model`;
  44. DROP TABLE IF EXISTS `technique_combo_rule`;
  45. DROP TABLE IF EXISTS `technique`;
  46. DROP TABLE IF EXISTS `efficacy_version`;
  47. DROP TABLE IF EXISTS `efficacy`;
  48. DROP TABLE IF EXISTS `body_region`;
  49. DROP TABLE IF EXISTS `symptom`;
  50. -- =============================================================================
  51. -- 一、系统管理表
  52. -- =============================================================================
  53. CREATE TABLE `sys_admin_user` (
  54. `id` BIGINT NOT NULL COMMENT '主键(雪花算法)',
  55. `username` VARCHAR(64) NOT NULL COMMENT '登录用户名',
  56. `password_hash` VARCHAR(255) NOT NULL COMMENT 'BCrypt 密码哈希',
  57. `display_name` VARCHAR(128) NULL COMMENT '姓名',
  58. `role` VARCHAR(32) NOT NULL DEFAULT 'OPERATOR' COMMENT '角色:SUPER_ADMIN / OPERATOR / READONLY',
  59. `status` VARCHAR(32) NOT NULL DEFAULT 'ACTIVE' COMMENT '状态:ACTIVE / DISABLED',
  60. `last_login_at` DATETIME NULL COMMENT '最后登录时间',
  61. `deleted` TINYINT NOT NULL DEFAULT 0,
  62. `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  63. `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  64. PRIMARY KEY (`id`),
  65. UNIQUE KEY `uk_username` (`username`)
  66. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='后台管理员表';
  67. CREATE TABLE `sys_operation_log` (
  68. `id` BIGINT NOT NULL COMMENT '主键(雪花算法)',
  69. `operator_id` BIGINT NULL COMMENT '操作人 ID',
  70. `operator_name` VARCHAR(64) NULL COMMENT '操作人姓名',
  71. `action_type` VARCHAR(32) NOT NULL COMMENT '操作类型:CREATE / UPDATE / DELETE / IMPORT / EXPORT',
  72. `module` VARCHAR(64) NOT NULL COMMENT '操作模块:USER / ACUPOINT / SCHEME / DEVICE / SYSTEM',
  73. `content` VARCHAR(512) NULL COMMENT '操作内容',
  74. `ip` VARCHAR(64) NULL COMMENT '客户端 IP',
  75. `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  76. PRIMARY KEY (`id`),
  77. KEY `idx_operator` (`operator_id`),
  78. KEY `idx_time` (`create_time`),
  79. KEY `idx_module` (`module`)
  80. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='操作审计日志表';
  81. -- =============================================================================
  82. -- 二、用户管理表
  83. -- =============================================================================
  84. CREATE TABLE `app_user` (
  85. `id` BIGINT NOT NULL COMMENT '主键(雪花算法)',
  86. `name` VARCHAR(128) NOT NULL COMMENT '用户姓名',
  87. `gender` VARCHAR(16) NOT NULL COMMENT '性别:male / female',
  88. `age` INT NOT NULL COMMENT '年龄',
  89. `phone` VARCHAR(32) NOT NULL COMMENT '手机号(唯一)',
  90. `shoulder_width` DECIMAL(6,2) NOT NULL COMMENT '肩宽(cm)',
  91. `body_length` DECIMAL(6,2) NOT NULL COMMENT '身长/坐高(cm)',
  92. `finger_cun1` DECIMAL(6,2) NULL COMMENT '一寸(cm),选填',
  93. `finger_cun1_5` DECIMAL(6,2) NULL COMMENT '1.5寸(cm),选填',
  94. `finger_cun3` DECIMAL(6,2) NULL COMMENT '三寸(cm),选填',
  95. `acupoint_table_status` VARCHAR(16) NOT NULL DEFAULT 'NOT_GENERATED' COMMENT '穴位表状态:GENERATED / NOT_GENERATED',
  96. `deleted` TINYINT NOT NULL DEFAULT 0,
  97. `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  98. `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  99. PRIMARY KEY (`id`),
  100. UNIQUE KEY `uk_phone` (`phone`)
  101. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='APP 用户表';
  102. CREATE TABLE `app_user_fingerprint` (
  103. `id` BIGINT NOT NULL COMMENT '主键(雪花算法)',
  104. `user_id` BIGINT NOT NULL COMMENT '用户 ID',
  105. `fingerprint_id` VARCHAR(128) NOT NULL COMMENT '设备侧指纹标识',
  106. `deleted` TINYINT NOT NULL DEFAULT 0,
  107. `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  108. `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  109. PRIMARY KEY (`id`),
  110. KEY `idx_user` (`user_id`)
  111. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户指纹表';
  112. -- =============================================================================
  113. -- 三、设备管理表
  114. -- =============================================================================
  115. CREATE TABLE `app_device` (
  116. `id` BIGINT NOT NULL COMMENT '主键(雪花算法)',
  117. `device_code` VARCHAR(64) NOT NULL COMMENT '设备编号(如 AJY001)',
  118. `device_name` VARCHAR(128) NOT NULL COMMENT '设备名称',
  119. `model` VARCHAR(64) NOT NULL COMMENT '设备型号',
  120. `serial_number` VARCHAR(128) NOT NULL COMMENT '设备序列号(唯一标识)',
  121. `firmware_version` VARCHAR(64) NULL COMMENT '固件版本',
  122. `status` VARCHAR(16) NOT NULL DEFAULT 'offline' COMMENT '在线状态:online / offline',
  123. `last_online_at` DATETIME NULL COMMENT '最后在线时间',
  124. `remark` VARCHAR(512) NULL COMMENT '备注',
  125. `deleted` TINYINT NOT NULL DEFAULT 0,
  126. `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  127. `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  128. PRIMARY KEY (`id`),
  129. UNIQUE KEY `uk_device_code` (`device_code`),
  130. UNIQUE KEY `uk_serial_number` (`serial_number`)
  131. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='设备实例表';
  132. CREATE TABLE `app_user_device` (
  133. `id` BIGINT NOT NULL COMMENT '主键(雪花算法)',
  134. `user_id` BIGINT NOT NULL COMMENT '用户 ID',
  135. `device_id` BIGINT NOT NULL COMMENT '设备 ID',
  136. `is_primary` TINYINT NOT NULL DEFAULT 0 COMMENT '是否主设备:1 是 0 否',
  137. `bound_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '绑定时间',
  138. `deleted` TINYINT NOT NULL DEFAULT 0,
  139. `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  140. `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  141. PRIMARY KEY (`id`),
  142. UNIQUE KEY `uk_user_device` (`user_id`, `device_id`),
  143. KEY `idx_device` (`device_id`)
  144. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户-设备绑定关系表(多对多)';
  145. -- =============================================================================
  146. -- 四、穴位管理表
  147. -- =============================================================================
  148. CREATE TABLE `acupoint` (
  149. `id` BIGINT NOT NULL COMMENT '主键(雪花算法)',
  150. `code` VARCHAR(64) NOT NULL COMMENT '穴位编码(如 dazhui)',
  151. `name` VARCHAR(128) NOT NULL COMMENT '穴位名称(如 大椎穴)',
  152. `meridian` VARCHAR(128) NULL COMMENT '所属经络',
  153. `efficacy` VARCHAR(512) NULL COMMENT '功效(逗号分隔)',
  154. `positioning` VARCHAR(16) NOT NULL DEFAULT 'relative' COMMENT '定位方式:relative / absolute',
  155. `offset_cun` DECIMAL(6,2) NULL COMMENT '相对大椎穴纵向偏移(寸数)',
  156. `cun_type` VARCHAR(16) NULL COMMENT '指寸类型:cun1 / cun1_5 / cun3',
  157. `side` VARCHAR(16) NOT NULL DEFAULT 'center' COMMENT '侧别:center / both',
  158. `lateral_offset` DECIMAL(6,2) NULL COMMENT '横向偏移(寸数),双侧穴位使用',
  159. `absolute_x` DECIMAL(12,4) NULL COMMENT '绝对坐标 X(mm)',
  160. `absolute_y` DECIMAL(12,4) NULL COMMENT '绝对坐标 Y(mm)',
  161. `absolute_z` DECIMAL(12,4) NULL COMMENT '绝对坐标 Z(mm)',
  162. `target_gender` VARCHAR(16) NOT NULL DEFAULT 'all' COMMENT '适用性别:all / male / female',
  163. `status` VARCHAR(16) NOT NULL DEFAULT 'active' COMMENT '状态:active / pending',
  164. `source` VARCHAR(16) NOT NULL DEFAULT 'preset' COMMENT '数据来源:preset / expert',
  165. `deleted` TINYINT NOT NULL DEFAULT 0,
  166. `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  167. `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  168. PRIMARY KEY (`id`),
  169. UNIQUE KEY `uk_code` (`code`),
  170. KEY `idx_status` (`status`),
  171. KEY `idx_meridian` (`meridian`)
  172. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='穴位基础库表';
  173. CREATE TABLE `moxa_technique` (
  174. `id` BIGINT NOT NULL COMMENT '主键(雪花算法)',
  175. `code` VARCHAR(64) NOT NULL COMMENT '手法编码(如 gentle)',
  176. `name` VARCHAR(128) NOT NULL COMMENT '手法名称(如 温和灸)',
  177. `is_default` TINYINT NOT NULL DEFAULT 0 COMMENT '是否默认手法:1 是 0 否',
  178. `description` VARCHAR(512) NULL COMMENT '手法描述',
  179. `movement_pattern` VARCHAR(32) NOT NULL COMMENT '运动模式:fixed / vertical / circular / point / oneclick',
  180. `temp_min` DECIMAL(4,1) NOT NULL DEFAULT 35.0 COMMENT '温度范围最小值(°C)',
  181. `temp_max` DECIMAL(4,1) NOT NULL DEFAULT 50.0 COMMENT '温度范围最大值(°C)',
  182. `duration_min` INT NOT NULL DEFAULT 60 COMMENT '时间范围最小值(秒)',
  183. `duration_max` INT NOT NULL DEFAULT 1800 COMMENT '时间范围最大值(秒)',
  184. `movement_amplitude` DECIMAL(6,2) NULL COMMENT '运动幅度(mm)',
  185. `movement_speed` DECIMAL(6,2) NULL COMMENT '运动速度(mm/s)',
  186. `status` VARCHAR(16) NOT NULL DEFAULT 'active' COMMENT '状态:active / disabled',
  187. `remark` VARCHAR(512) NULL COMMENT '备注',
  188. `deleted` TINYINT NOT NULL DEFAULT 0,
  189. `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  190. `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  191. PRIMARY KEY (`id`),
  192. UNIQUE KEY `uk_code` (`code`)
  193. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='艾灸手法表';
  194. -- =============================================================================
  195. -- 五、方案管理表
  196. -- =============================================================================
  197. CREATE TABLE `scheme` (
  198. `id` BIGINT NOT NULL COMMENT '主键(雪花算法)',
  199. `scheme_name` VARCHAR(128) NOT NULL COMMENT '方案名称',
  200. `mode` VARCHAR(32) NOT NULL COMMENT '模式:ONE_CLICK / PROFESSIONAL / CUSTOM / EXPERT',
  201. `efficacy_type` VARCHAR(32) NULL COMMENT '功效类型:驱寒/祛湿/祛风/化瘀/活血/化痰/养颜/扶阳',
  202. `creator_type` VARCHAR(16) NOT NULL COMMENT '创作人类型:admin / user / expert',
  203. `creator_id` VARCHAR(64) NULL COMMENT '创作人 ID',
  204. `creator_name` VARCHAR(128) NULL COMMENT '创作人显示名称',
  205. `symptoms` VARCHAR(512) NULL COMMENT '适用症状(逗号分隔)',
  206. `target_gender` VARCHAR(16) NOT NULL DEFAULT 'all' COMMENT '适用性别:all / male / female',
  207. `age_min` INT NOT NULL DEFAULT 1 COMMENT '适用年龄下限',
  208. `age_max` INT NOT NULL DEFAULT 120 COMMENT '适用年龄上限',
  209. `description` VARCHAR(512) NULL COMMENT '方案描述',
  210. `is_default` TINYINT NOT NULL DEFAULT 0 COMMENT '是否默认方案',
  211. `expert_id` VARCHAR(64) NULL COMMENT '专家 ID(延年圣手模式)',
  212. `expert_name` VARCHAR(128) NULL COMMENT '专家名称(延年圣手模式)',
  213. `publish_type` VARCHAR(16) NULL COMMENT '发布类型:public / private(延年圣手模式)',
  214. `process_id` BIGINT NULL COMMENT '关联工艺语言 ID',
  215. `status` VARCHAR(16) NOT NULL DEFAULT 'draft' COMMENT '状态:draft / published / archived',
  216. `deleted` TINYINT NOT NULL DEFAULT 0,
  217. `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  218. `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  219. PRIMARY KEY (`id`),
  220. KEY `idx_mode` (`mode`),
  221. KEY `idx_status` (`status`),
  222. KEY `idx_efficacy` (`efficacy_type`)
  223. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='艾灸方案表(四种模式统一存储)';
  224. CREATE TABLE `scheme_step` (
  225. `id` BIGINT NOT NULL COMMENT '主键(雪花算法)',
  226. `scheme_id` BIGINT NOT NULL COMMENT '方案 ID',
  227. `step_order` INT NOT NULL COMMENT '步骤序号',
  228. `acupoint_id` BIGINT NOT NULL COMMENT '穴位 ID',
  229. `acupoint_name` VARCHAR(128) NOT NULL COMMENT '穴位名称(冗余)',
  230. `side` VARCHAR(16) NOT NULL DEFAULT 'center' COMMENT '侧别:center / both / left / right',
  231. `temperature` DECIMAL(4,1) NOT NULL COMMENT '温度(°C)',
  232. `duration` INT NOT NULL COMMENT '时间(秒)',
  233. `technique_id` BIGINT NOT NULL COMMENT '手法 ID',
  234. `technique_name` VARCHAR(128) NOT NULL COMMENT '手法名称(冗余)',
  235. `remark` VARCHAR(256) NULL COMMENT '备注',
  236. `deleted` TINYINT NOT NULL DEFAULT 0,
  237. `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  238. `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  239. PRIMARY KEY (`id`),
  240. KEY `idx_scheme` (`scheme_id`)
  241. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='方案治疗步骤表';
  242. CREATE TABLE `user_scheme` (
  243. `id` BIGINT NOT NULL COMMENT '主键(雪花算法)',
  244. `user_id` BIGINT NOT NULL COMMENT '用户 ID',
  245. `scheme_id` BIGINT NOT NULL COMMENT '方案 ID',
  246. `mode` VARCHAR(32) NOT NULL COMMENT '模式',
  247. `selected_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '选择时间',
  248. `deleted` TINYINT NOT NULL DEFAULT 0,
  249. `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  250. `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  251. PRIMARY KEY (`id`),
  252. KEY `idx_user` (`user_id`),
  253. KEY `idx_scheme` (`scheme_id`),
  254. KEY `idx_user_mode` (`user_id`, `mode`)
  255. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户-方案关联表';
  256. CREATE TABLE `scheme_target_user` (
  257. `id` BIGINT NOT NULL COMMENT '主键(雪花算法)',
  258. `scheme_id` BIGINT NOT NULL COMMENT '方案 ID',
  259. `user_id` BIGINT NOT NULL COMMENT '目标用户 ID',
  260. `deleted` TINYINT NOT NULL DEFAULT 0,
  261. `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  262. PRIMARY KEY (`id`),
  263. KEY `idx_scheme` (`scheme_id`),
  264. KEY `idx_user` (`user_id`)
  265. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='方案指定用户表(延年圣手私有发布)';
  266. -- =============================================================================
  267. -- 六、穴位坐标数据表(用户穴位对照表)
  268. -- =============================================================================
  269. CREATE TABLE `user_acupoint_table` (
  270. `id` BIGINT NOT NULL COMMENT '主键(雪花算法)',
  271. `user_id` BIGINT NOT NULL COMMENT '用户 ID',
  272. `shoulder_width` DECIMAL(6,2) NOT NULL COMMENT '生成时肩宽(cm)',
  273. `body_length` DECIMAL(6,2) NOT NULL COMMENT '生成时身长(cm)',
  274. `finger_cun1` DECIMAL(6,2) NOT NULL COMMENT '使用的一寸值(cm)',
  275. `finger_cun1_5` DECIMAL(6,2) NOT NULL COMMENT '使用的 1.5 寸值(cm)',
  276. `finger_cun3` DECIMAL(6,2) NOT NULL COMMENT '使用的三寸值(cm)',
  277. `is_estimated` TINYINT NOT NULL DEFAULT 0 COMMENT '指寸是否为估算:1 是 0 否',
  278. `confidence` DECIMAL(5,2) NULL COMMENT '置信度(%)',
  279. `precision_cm` DECIMAL(4,1) NULL COMMENT '预估精度(±cm)',
  280. `deleted` TINYINT NOT NULL DEFAULT 0,
  281. `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  282. `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  283. PRIMARY KEY (`id`),
  284. KEY `idx_user` (`user_id`)
  285. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户穴位对照表';
  286. CREATE TABLE `user_acupoint_item` (
  287. `id` BIGINT NOT NULL COMMENT '主键(雪花算法)',
  288. `table_id` BIGINT NOT NULL COMMENT '对照表 ID',
  289. `user_id` BIGINT NOT NULL COMMENT '用户 ID',
  290. `acupoint_id` BIGINT NOT NULL COMMENT '穴位 ID',
  291. `acupoint_code` VARCHAR(64) NOT NULL COMMENT '穴位编码',
  292. `acupoint_name` VARCHAR(128) NOT NULL COMMENT '穴位名称',
  293. `side` VARCHAR(16) NOT NULL DEFAULT 'center' COMMENT '侧别:center / left / right',
  294. `offset_x` DECIMAL(8,2) NOT NULL COMMENT '相对大椎穴横向偏移(cm)',
  295. `offset_y` DECIMAL(8,2) NOT NULL COMMENT '相对大椎穴纵向偏移(cm)',
  296. `offset_in_cun` DECIMAL(6,2) NOT NULL COMMENT '偏移寸数',
  297. `cun_type` VARCHAR(16) NOT NULL COMMENT '指寸类型:cun1 / cun1_5 / cun3',
  298. `deleted` TINYINT NOT NULL DEFAULT 0,
  299. `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  300. `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  301. PRIMARY KEY (`id`),
  302. KEY `idx_table` (`table_id`),
  303. KEY `idx_user` (`user_id`)
  304. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户穴位坐标明细表';
  305. -- =============================================================================
  306. -- 七、设备同步表(延年圣手快捷键)
  307. -- =============================================================================
  308. CREATE TABLE `device_hotkey_mapping` (
  309. `id` BIGINT NOT NULL COMMENT '主键(雪花算法)',
  310. `user_id` BIGINT NOT NULL COMMENT '用户 ID',
  311. `device_id` BIGINT NOT NULL COMMENT '设备 ID',
  312. `slot` INT NOT NULL COMMENT '快捷键槽位(1-8)',
  313. `scheme_id` BIGINT NOT NULL COMMENT '方案 ID',
  314. `scheme_name` VARCHAR(128) NOT NULL COMMENT '方案名称(冗余)',
  315. `process_id` BIGINT NULL COMMENT '工艺语言 ID',
  316. `synced_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '同步时间',
  317. `deleted` TINYINT NOT NULL DEFAULT 0,
  318. `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  319. `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  320. PRIMARY KEY (`id`),
  321. UNIQUE KEY `uk_user_device_slot` (`user_id`, `device_id`, `slot`),
  322. KEY `idx_device` (`device_id`)
  323. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='设备快捷键映射表(延年圣手 1-8)';
  324. -- =============================================================================
  325. -- 八、工艺语言表
  326. -- =============================================================================
  327. CREATE TABLE `moxa_process` (
  328. `id` BIGINT NOT NULL COMMENT '主键(雪花算法)',
  329. `scheme_id` BIGINT NOT NULL COMMENT '方案 ID',
  330. `process_data` JSON NOT NULL COMMENT '工艺语言数据(JSON)',
  331. `version` INT NOT NULL DEFAULT 1 COMMENT '版本号',
  332. `deleted` TINYINT NOT NULL DEFAULT 0,
  333. `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  334. `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  335. PRIMARY KEY (`id`),
  336. KEY `idx_scheme` (`scheme_id`)
  337. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='艾灸工艺语言表';
  338. -- =============================================================================
  339. -- 九、艾灸记录表
  340. -- =============================================================================
  341. CREATE TABLE `moxa_session_record` (
  342. `id` BIGINT NOT NULL COMMENT '主键(雪花算法)',
  343. `user_id` BIGINT NOT NULL COMMENT '用户 ID',
  344. `device_id` BIGINT NULL COMMENT '设备 ID',
  345. `scheme_id` BIGINT NULL COMMENT '方案 ID',
  346. `started_at` DATETIME NULL COMMENT '开始时间',
  347. `ended_at` DATETIME NULL COMMENT '结束时间',
  348. `duration` INT NULL COMMENT '时长(秒)',
  349. `rating` INT NULL COMMENT '评分(1-5)',
  350. `remark` VARCHAR(512) NULL COMMENT '备注',
  351. `deleted` TINYINT NOT NULL DEFAULT 0,
  352. `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  353. `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  354. PRIMARY KEY (`id`),
  355. KEY `idx_user` (`user_id`),
  356. KEY `idx_scheme` (`scheme_id`)
  357. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='艾灸会话记录表';
  358. -- =============================================================================
  359. -- 种子数据
  360. -- =============================================================================
  361. -- --------------- 1. 管理员账号 ---------------
  362. -- 默认管理员密码: admin
  363. INSERT INTO `sys_admin_user` (`id`, `username`, `password_hash`, `display_name`, `role`, `status`) VALUES
  364. (1, 'admin', '$2b$10$yW9CwM2u/vqz4CGZsQXPyeiKYtsu4PbAj.vKstKoY4hbFT6I0LiNm', '系统管理员', 'SUPER_ADMIN', 'ACTIVE');
  365. -- --------------- 2. 基础穴位库(12 个) ---------------
  366. INSERT INTO `acupoint` (`id`, `code`, `name`, `meridian`, `efficacy`, `positioning`, `offset_cun`, `cun_type`, `side`, `lateral_offset`, `target_gender`, `status`, `source`) VALUES
  367. (101, 'dazhui', '大椎穴', '督脉', '驱寒,祛湿,解表', 'relative', 0, 'cun1', 'center', NULL, 'all', 'active', 'preset'),
  368. (102, 'shenzhu', '身柱穴', '督脉', '止咳平喘,安神', 'relative', 3, 'cun1', 'center', NULL, 'all', 'active', 'preset'),
  369. (103, 'zhiyang', '至阳穴', '督脉', '宽胸理气', 'relative', 7, 'cun1', 'center', NULL, 'all', 'active', 'preset'),
  370. (104, 'mingmen', '命门穴', '督脉', '补肾壮阳', 'relative', 14, 'cun1', 'center', NULL, 'all', 'active', 'preset'),
  371. (105, 'yaoyangquan', '腰阳关穴', '督脉', '强腰健肾', 'relative', 17, 'cun1', 'center', NULL, 'all', 'active', 'preset'),
  372. (106, 'fengmen', '风门穴', '足太阳膀胱经', '祛风解表', 'relative', 1.5, 'cun1', 'both', 1.5, 'all', 'active', 'preset'),
  373. (107, 'bingfeng', '秉风穴', '手太阳小肠经', '祛风散寒', 'relative', 3, 'cun1', 'both', 3, 'all', 'active', 'preset'),
  374. (108, 'feishu', '肺俞穴', '足太阳膀胱经', '化痰止咳', 'relative', 3, 'cun1', 'both', 1.5, 'all', 'active', 'preset'),
  375. (109, 'geshu', '膈俞穴', '足太阳膀胱经', '活血化瘀', 'relative', 7, 'cun1', 'both', 1.5, 'all', 'active', 'preset'),
  376. (110, 'pishu', '脾俞穴', '足太阳膀胱经', '健脾养血', 'relative', 11, 'cun1', 'both', 1.5, 'all', 'active', 'preset'),
  377. (111, 'shenshu', '肾俞穴', '足太阳膀胱经', '补肾益气', 'relative', 14, 'cun1', 'both', 1.5, 'all', 'active', 'preset'),
  378. (112, 'baliao', '八髎穴', '足太阳膀胱经', '调理下焦', 'relative', 16, 'cun1', 'center', NULL, 'all', 'active', 'preset');
  379. -- --------------- 3. 艾灸手法(5 种) ---------------
  380. INSERT INTO `moxa_technique` (`id`, `code`, `name`, `is_default`, `description`, `movement_pattern`, `temp_min`, `temp_max`, `duration_min`, `duration_max`, `status`) VALUES
  381. (201, 'oneclick', '一键艾灸', 1, '系统默认工艺,督脉5穴温和灸', 'oneclick', 42.0, 45.0, 1800, 1800, 'active'),
  382. (202, 'gentle', '温和灸', 0, '固定不动,常规艾灸,温补', 'fixed', 35.0, 50.0, 60, 1800, 'active'),
  383. (203, 'pecking', '雀啄灸', 0, '上下移动,强刺激,祛邪', 'vertical', 35.0, 50.0, 60, 1800, 'active'),
  384. (204, 'circular', '回旋灸', 0, '圆周运动,温经散寒', 'circular', 35.0, 50.0, 60, 1800, 'active'),
  385. (205, 'sparrow', '麻雀灸', 0, '点状移动,局部强刺激', 'point', 35.0, 50.0, 60, 1800, 'active');
  386. -- --------------- 4. 一键艾灸默认方案 ---------------
  387. INSERT INTO `scheme` (`id`, `scheme_name`, `mode`, `efficacy_type`, `creator_type`, `creator_id`, `creator_name`, `symptoms`, `target_gender`, `age_min`, `age_max`, `description`, `is_default`, `status`) VALUES
  388. (301, '一键艾灸(默认)', 'ONE_CLICK', NULL, 'admin', '1', 'ADMIN', NULL, 'all', 1, 120, '系统默认一键艾灸方案,督脉5穴温和灸,总时长约30分钟', 1, 'published');
  389. INSERT INTO `scheme_step` (`id`, `scheme_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`, `remark`) VALUES
  390. (401, 301, 1, 101, '大椎穴', 'center', 42.0, 300, 202, '温和灸', '基准穴位'),
  391. (402, 301, 2, 102, '身柱穴', 'center', 43.0, 300, 202, '温和灸', NULL),
  392. (403, 301, 3, 103, '至阳穴', 'center', 44.0, 360, 202, '温和灸', NULL),
  393. (404, 301, 4, 104, '命门穴', 'center', 44.0, 420, 202, '温和灸', NULL),
  394. (405, 301, 5, 105, '腰阳关穴', 'center', 45.0, 420, 202, '温和灸', NULL);
  395. -- --------------- 5. 8 种专业模式默认方案 ---------------
  396. -- 5.1 驱寒模式
  397. INSERT INTO `scheme` (`id`, `scheme_name`, `mode`, `efficacy_type`, `creator_type`, `creator_id`, `creator_name`, `symptoms`, `target_gender`, `description`, `is_default`, `status`) VALUES
  398. (302, '驱寒模式', 'PROFESSIONAL', '驱寒', 'admin', '1', 'ADMIN', '怕冷,手脚冰凉', 'all', '温阳散寒方案,针对怕冷、手脚冰凉等寒证', 1, 'published');
  399. INSERT INTO `scheme_step` (`id`, `scheme_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`) VALUES
  400. (411, 302, 1, 101, '大椎穴', 'center', 46.0, 540, 202, '温和灸'),
  401. (412, 302, 2, 104, '命门穴', 'center', 47.0, 600, 202, '温和灸');
  402. -- 5.2 祛湿模式
  403. INSERT INTO `scheme` (`id`, `scheme_name`, `mode`, `efficacy_type`, `creator_type`, `creator_id`, `creator_name`, `symptoms`, `target_gender`, `description`, `is_default`, `status`) VALUES
  404. (303, '祛湿模式', 'PROFESSIONAL', '祛湿', 'admin', '1', 'ADMIN', '身体困重,大便黏腻', 'all', '健脾祛湿方案,针对身体困重、大便黏腻等湿证', 1, 'published');
  405. INSERT INTO `scheme_step` (`id`, `scheme_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`) VALUES
  406. (421, 303, 1, 101, '大椎穴', 'center', 43.0, 360, 202, '温和灸'),
  407. (422, 303, 2, 110, '脾俞穴', 'both', 44.0, 420, 202, '温和灸'),
  408. (423, 303, 3, 111, '肾俞穴', 'both', 44.0, 420, 202, '温和灸');
  409. -- 5.3 祛风模式
  410. INSERT INTO `scheme` (`id`, `scheme_name`, `mode`, `efficacy_type`, `creator_type`, `creator_id`, `creator_name`, `symptoms`, `target_gender`, `description`, `is_default`, `status`) VALUES
  411. (304, '祛风模式', 'PROFESSIONAL', '祛风', 'admin', '1', 'ADMIN', '感冒,头痛', 'all', '祛风解表方案,针对感冒、头痛等风证', 1, 'published');
  412. INSERT INTO `scheme_step` (`id`, `scheme_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`) VALUES
  413. (431, 304, 1, 101, '大椎穴', 'center', 41.0, 330, 203, '雀啄灸'),
  414. (432, 304, 2, 106, '风门穴', 'both', 41.0, 330, 203, '雀啄灸'),
  415. (433, 304, 3, 107, '秉风穴', 'both', 41.0, 330, 203, '雀啄灸');
  416. -- 5.4 化瘀模式
  417. INSERT INTO `scheme` (`id`, `scheme_name`, `mode`, `efficacy_type`, `creator_type`, `creator_id`, `creator_name`, `symptoms`, `target_gender`, `description`, `is_default`, `status`) VALUES
  418. (305, '化瘀模式', 'PROFESSIONAL', '化瘀', 'admin', '1', 'ADMIN', '疼痛,淤青', 'all', '活血化瘀方案,针对疼痛、淤青等血瘀证', 1, 'published');
  419. INSERT INTO `scheme_step` (`id`, `scheme_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`) VALUES
  420. (441, 305, 1, 101, '大椎穴', 'center', 44.0, 420, 204, '回旋灸'),
  421. (442, 305, 2, 109, '膈俞穴', 'both', 44.0, 420, 204, '回旋灸'),
  422. (443, 305, 3, 112, '八髎穴', 'center', 44.0, 420, 204, '回旋灸');
  423. -- 5.5 活血模式
  424. INSERT INTO `scheme` (`id`, `scheme_name`, `mode`, `efficacy_type`, `creator_type`, `creator_id`, `creator_name`, `symptoms`, `target_gender`, `description`, `is_default`, `status`) VALUES
  425. (306, '活血模式', 'PROFESSIONAL', '活血', 'admin', '1', 'ADMIN', '血液循环不畅', 'all', '活血通络方案,针对血液循环不畅', 1, 'published');
  426. INSERT INTO `scheme_step` (`id`, `scheme_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`) VALUES
  427. (451, 306, 1, 101, '大椎穴', 'center', 43.0, 420, 202, '温和灸'),
  428. (452, 306, 2, 109, '膈俞穴', 'both', 44.0, 420, 202, '温和灸'),
  429. (453, 306, 3, 104, '命门穴', 'center', 44.0, 420, 202, '温和灸');
  430. -- 5.6 化痰模式
  431. INSERT INTO `scheme` (`id`, `scheme_name`, `mode`, `efficacy_type`, `creator_type`, `creator_id`, `creator_name`, `symptoms`, `target_gender`, `description`, `is_default`, `status`) VALUES
  432. (307, '化痰模式', 'PROFESSIONAL', '化痰', 'admin', '1', 'ADMIN', '咳嗽,痰多', 'all', '化痰止咳方案,针对咳嗽、痰多', 1, 'published');
  433. INSERT INTO `scheme_step` (`id`, `scheme_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`) VALUES
  434. (461, 307, 1, 101, '大椎穴', 'center', 41.0, 360, 202, '温和灸'),
  435. (462, 307, 2, 108, '肺俞穴', 'both', 42.0, 360, 202, '温和灸'),
  436. (463, 307, 3, 110, '脾俞穴', 'both', 42.0, 360, 202, '温和灸');
  437. -- 5.7 养颜模式
  438. INSERT INTO `scheme` (`id`, `scheme_name`, `mode`, `efficacy_type`, `creator_type`, `creator_id`, `creator_name`, `symptoms`, `target_gender`, `description`, `is_default`, `status`) VALUES
  439. (308, '养颜模式', 'PROFESSIONAL', '养颜', 'admin', '1', 'ADMIN', '皮肤暗沉', 'all', '美容养颜方案,针对皮肤暗沉', 1, 'published');
  440. INSERT INTO `scheme_step` (`id`, `scheme_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`) VALUES
  441. (471, 308, 1, 101, '大椎穴', 'center', 41.0, 330, 202, '温和灸'),
  442. (472, 308, 2, 108, '肺俞穴', 'both', 41.0, 330, 202, '温和灸'),
  443. (473, 308, 3, 110, '脾俞穴', 'both', 41.0, 330, 202, '温和灸'),
  444. (474, 308, 4, 111, '肾俞穴', 'both', 41.0, 330, 202, '温和灸');
  445. -- 5.8 扶阳模式
  446. INSERT INTO `scheme` (`id`, `scheme_name`, `mode`, `efficacy_type`, `creator_type`, `creator_id`, `creator_name`, `symptoms`, `target_gender`, `description`, `is_default`, `status`) VALUES
  447. (309, '扶阳模式', 'PROFESSIONAL', '扶阳', 'admin', '1', 'ADMIN', '腰膝酸软', 'all', '温补肾阳方案,针对腰膝酸软', 1, 'published');
  448. INSERT INTO `scheme_step` (`id`, `scheme_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`) VALUES
  449. (481, 309, 1, 101, '大椎穴', 'center', 46.0, 540, 202, '温和灸'),
  450. (482, 309, 2, 104, '命门穴', 'center', 47.0, 540, 202, '温和灸'),
  451. (483, 309, 3, 103, '至阳穴', 'center', 46.0, 540, 202, '温和灸');
  452. -- --------------- 6. 模拟用户数据 ---------------
  453. INSERT INTO `app_user` (`id`, `name`, `gender`, `age`, `phone`, `shoulder_width`, `body_length`, `finger_cun1`, `finger_cun1_5`, `finger_cun3`, `acupoint_table_status`) VALUES
  454. (501, '张三', 'male', 35, '13800001234', 42.00, 85.00, 2.1, 3.2, 6.3, 'GENERATED'),
  455. (502, '李四', 'female', 33, '13900005678', 36.00, 78.00, NULL, NULL, NULL, 'NOT_GENERATED'),
  456. (503, '王五', 'male', 62, '13700009012', 40.00, 82.00, NULL, NULL, NULL, 'NOT_GENERATED');
  457. -- --------------- 7. 模拟设备数据 ---------------
  458. INSERT INTO `app_device` (`id`, `device_code`, `device_name`, `model`, `serial_number`, `firmware_version`, `status`) VALUES
  459. (601, 'AJY001', '艾灸椅-001', 'AJY-2026', 'SN20260001', 'v1.2.0', 'online'),
  460. (602, 'AJY002', '艾灸椅-002', 'AJY-2026', 'SN20260002', 'v1.1.0', 'offline');
  461. -- --------------- 8. 用户-设备绑定 ---------------
  462. INSERT INTO `app_user_device` (`id`, `user_id`, `device_id`, `is_primary`, `bound_at`) VALUES
  463. (701, 501, 601, 1, '2026-03-15 10:00:00'),
  464. (702, 501, 602, 0, '2026-03-18 14:00:00'),
  465. (703, 502, 601, 0, '2026-03-18 14:00:00');
  466. SET FOREIGN_KEY_CHECKS = 1;