|
|
@@ -28,15 +28,8 @@ CREATE TABLE IF NOT EXISTS users (
|
|
|
gender ENUM('male','female'),
|
|
|
birth_hour VARCHAR(10) COMMENT '出生时辰: 子丑寅卯辰巳午未申酉戌亥',
|
|
|
mascot VARCHAR(20) DEFAULT NULL COMMENT 'AI助手形象: xibao(浠宝)/fubao(福宝)',
|
|
|
- address VARCHAR(500) COMMENT '地址',
|
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
- deleted TINYINT DEFAULT 0 COMMENT '软删除标记: 0=未删除, 1=已删除',
|
|
|
- butler_status VARCHAR(20) COMMENT '管家状态: null/pending/approved/rejected',
|
|
|
- butler_info TEXT COMMENT '管家资质信息(JSON)',
|
|
|
- butler_approved_at DATETIME COMMENT '管家认证通过时间',
|
|
|
- nutritionist_status VARCHAR(20) DEFAULT NULL COMMENT '营养师审核状态: pending/approved/rejected',
|
|
|
- nutritionist_reject_reason VARCHAR(500) DEFAULT NULL COMMENT '营养师审核拒绝原因',
|
|
|
INDEX idx_openid (openid),
|
|
|
INDEX idx_family_id (family_id),
|
|
|
INDEX idx_phone (phone)
|
|
|
@@ -291,13 +284,15 @@ CREATE TABLE IF NOT EXISTS guides (
|
|
|
title VARCHAR(50) COMMENT '职称/称号',
|
|
|
specialty VARCHAR(200) COMMENT '专长领域',
|
|
|
bio TEXT COMMENT '简介',
|
|
|
+ university VARCHAR(200) COMMENT '毕业院校',
|
|
|
+ education_system VARCHAR(32) COMMENT '教育体系(参考education_systems表)',
|
|
|
experience_years TINYINT DEFAULT 0 COMMENT '从业年限',
|
|
|
rating INT DEFAULT 500 COMMENT '评分(百分位,500=5.00)',
|
|
|
total_appointments INT DEFAULT 0 COMMENT '总服务次数',
|
|
|
level VARCHAR(20) NOT NULL DEFAULT 'junior' COMMENT '等级: junior-初级, intermediate-中级, senior-高级',
|
|
|
status VARCHAR(20) NOT NULL DEFAULT 'active' COMMENT '状态: active-活跃, inactive-停用',
|
|
|
service_count INT DEFAULT 0 COMMENT '当前服务家庭数',
|
|
|
- package_id BIGINT COMMENT '购买任务模板ID',
|
|
|
+ package_id BIGINT COMMENT '购买套餐ID',
|
|
|
nickname VARCHAR(100) COMMENT '申请昵称',
|
|
|
phone VARCHAR(20) COMMENT '联系电话',
|
|
|
intro TEXT COMMENT '个人介绍',
|
|
|
@@ -326,7 +321,7 @@ CREATE TABLE IF NOT EXISTS assessment_appointments (
|
|
|
child_id BIGINT COMMENT '孩子ID',
|
|
|
teacher_id BIGINT COMMENT '教师ID',
|
|
|
guide_id BIGINT COMMENT '规划师ID',
|
|
|
- package_id BIGINT COMMENT '任务模板ID',
|
|
|
+ package_id BIGINT COMMENT '套餐ID',
|
|
|
appointment_date VARCHAR(20) COMMENT '预约日期 yyyy-MM-dd',
|
|
|
appointment_time VARCHAR(20) COMMENT '预约时间 HH:mm',
|
|
|
duration_minutes INT COMMENT '测评时长',
|
|
|
@@ -421,8 +416,6 @@ CREATE TABLE IF NOT EXISTS dan_assessment_results (
|
|
|
dimension VARCHAR(10) DEFAULT 'mind' COMMENT '报告维度: mind(心-A2)/wisdom(智-B4)',
|
|
|
report_file_id VARCHAR(100) COMMENT '上传文件媒资ID',
|
|
|
draft_status VARCHAR(10) DEFAULT 'pending' COMMENT '草稿状态: pending(待确认)/confirmed(已确认)',
|
|
|
- source_report_id BIGINT DEFAULT NULL COMMENT '关联 dan_report_uploads.id(DAN报告独立化扩展)',
|
|
|
- analysis_status VARCHAR(16) DEFAULT 'pending' COMMENT '分析状态: pending/confirmed',
|
|
|
INDEX idx_child_id (child_id),
|
|
|
INDEX idx_teacher_id (teacher_id),
|
|
|
INDEX idx_assessment_date (assessment_date)
|
|
|
@@ -504,7 +497,7 @@ CREATE TABLE IF NOT EXISTS reward_wishlists (
|
|
|
-- 4. 更新任务状态枚举(如果需要支持更多状态)
|
|
|
-- ALTER TABLE tasks MODIFY COLUMN status ENUM('pending', 'completed', 'overdue', 'cancelled', 'parent_pending', 'parent_completed') DEFAULT 'pending';
|
|
|
|
|
|
--- ===================== 任务模板任务模板功能 =====================
|
|
|
+-- ===================== 任务模板套餐功能 =====================
|
|
|
|
|
|
-- 成长规划师-家庭关系表
|
|
|
CREATE TABLE IF NOT EXISTS guide_families (
|
|
|
@@ -523,11 +516,11 @@ CREATE TABLE IF NOT EXISTS guide_families (
|
|
|
INDEX idx_family_id (family_id)
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
|
|
--- 任务模板任务模板
|
|
|
+-- 任务模板套餐
|
|
|
CREATE TABLE IF NOT EXISTS task_template_packages (
|
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
creator_id BIGINT NOT NULL COMMENT '创建者成长规划师ID',
|
|
|
- name VARCHAR(100) NOT NULL COMMENT '任务模板名称',
|
|
|
+ name VARCHAR(100) NOT NULL COMMENT '套餐名称',
|
|
|
description TEXT COMMENT '详细介绍',
|
|
|
cycle_days INT NOT NULL COMMENT '周期天数',
|
|
|
category VARCHAR(50) COMMENT '分类',
|
|
|
@@ -548,10 +541,10 @@ CREATE TABLE IF NOT EXISTS task_template_packages (
|
|
|
INDEX idx_is_public (is_public)
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
|
|
--- 任务模板内任务项
|
|
|
+-- 套餐内任务项
|
|
|
CREATE TABLE IF NOT EXISTS task_template_items (
|
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- package_id BIGINT NOT NULL COMMENT '所属任务模板ID',
|
|
|
+ package_id BIGINT NOT NULL COMMENT '所属套餐ID',
|
|
|
task_name VARCHAR(100) NOT NULL,
|
|
|
description TEXT,
|
|
|
points INT DEFAULT 0,
|
|
|
@@ -564,7 +557,7 @@ CREATE TABLE IF NOT EXISTS task_template_items (
|
|
|
INDEX idx_package_id (package_id)
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
|
|
--- 任务模板应用实例
|
|
|
+-- 套餐应用实例
|
|
|
CREATE TABLE IF NOT EXISTS task_plan_instances (
|
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
package_id BIGINT NOT NULL,
|
|
|
@@ -598,14 +591,14 @@ CREATE TABLE IF NOT EXISTS task_plan_items (
|
|
|
INDEX idx_instance_id (instance_id)
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
|
|
--- 任务模板购买订单
|
|
|
+-- 套餐购买订单
|
|
|
CREATE TABLE IF NOT EXISTS package_orders (
|
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
order_no VARCHAR(32) UNIQUE NOT NULL,
|
|
|
user_id BIGINT NOT NULL COMMENT '购买者用户ID',
|
|
|
family_id BIGINT NOT NULL COMMENT '家庭ID',
|
|
|
- package_id BIGINT NOT NULL COMMENT '任务模板ID',
|
|
|
- package_name VARCHAR(100) COMMENT '任务模板名称',
|
|
|
+ package_id BIGINT NOT NULL COMMENT '套餐ID',
|
|
|
+ package_name VARCHAR(100) COMMENT '套餐名称',
|
|
|
price INT NOT NULL COMMENT '支付金额(分)',
|
|
|
platform_fee INT DEFAULT 0 COMMENT '平台服务费(分)',
|
|
|
user_coupon_id BIGINT COMMENT '使用的用户优惠券ID',
|
|
|
@@ -859,10 +852,10 @@ CREATE TABLE IF NOT EXISTS assessment_orders (
|
|
|
user_id BIGINT NOT NULL COMMENT '用户ID',
|
|
|
child_id BIGINT COMMENT '孩子ID',
|
|
|
guide_id BIGINT NOT NULL COMMENT '成长规划师ID',
|
|
|
- package_id BIGINT NOT NULL COMMENT '任务模板ID',
|
|
|
+ package_id BIGINT NOT NULL COMMENT '套餐ID',
|
|
|
appointment_id BIGINT COMMENT '关联预约ID',
|
|
|
guide_name VARCHAR(50) COMMENT '规划师名称',
|
|
|
- package_name VARCHAR(100) COMMENT '任务模板名称',
|
|
|
+ package_name VARCHAR(100) COMMENT '套餐名称',
|
|
|
total_price BIGINT DEFAULT 0 COMMENT '总价(分)',
|
|
|
discount_amount BIGINT DEFAULT 0 COMMENT '优惠金额(分)',
|
|
|
actual_price BIGINT DEFAULT 0 COMMENT '实付金额(分)',
|
|
|
@@ -888,7 +881,7 @@ CREATE TABLE IF NOT EXISTS guide_applications (
|
|
|
type VARCHAR(20) NOT NULL DEFAULT 'new_apply' COMMENT '申请类型: new_apply-新注册, upgrade-升级',
|
|
|
target_level VARCHAR(20) NOT NULL COMMENT '目标等级: junior-初级, intermediate-中级, senior-高级',
|
|
|
current_level VARCHAR(20) DEFAULT NULL COMMENT '当前等级(升级时填写)',
|
|
|
- package_id BIGINT COMMENT '申请的任务模板ID',
|
|
|
+ package_id BIGINT COMMENT '申请的套餐ID',
|
|
|
payment_proof VARCHAR(500) COMMENT '付款凭证URL',
|
|
|
payment_amount INT COMMENT '付款金额(分)',
|
|
|
address VARCHAR(500) COMMENT '地址',
|
|
|
@@ -1069,7 +1062,7 @@ CREATE TABLE IF NOT EXISTS products (
|
|
|
member_price INT COMMENT '会员价(分)',
|
|
|
member_eligible VARCHAR(32) DEFAULT 'none' COMMENT '会员资格: all/budget/none',
|
|
|
domain VARCHAR(32) COMMENT '五维领域: action/mind/body/wisdom/wealth',
|
|
|
- dimension_weights TEXT COMMENT '五维能量权重JSON',
|
|
|
+ dimension_weights JSON DEFAULT NULL COMMENT '五维权重百分比: {"body":0,"mind":0,"wisdom":0,"action":0,"wealth":0}',
|
|
|
profit_rate INT DEFAULT 0 COMMENT '平台利润率(千分比)',
|
|
|
delivery_method TINYINT DEFAULT 1 COMMENT '配送方式: 1=快递 2=自提 3=两者皆可',
|
|
|
category_id BIGINT COMMENT '商品类目ID',
|
|
|
@@ -1077,9 +1070,6 @@ CREATE TABLE IF NOT EXISTS products (
|
|
|
external_source VARCHAR(64) COMMENT '外部来源系统',
|
|
|
external_id VARCHAR(128) COMMENT '外部来源ID',
|
|
|
external_data TEXT COMMENT '外部来源数据JSON',
|
|
|
- has_sku TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否启用多SKU:0统一价 1多规格',
|
|
|
- sku_spec_names JSON DEFAULT NULL COMMENT '规格维度名:如["颜色","尺寸"]',
|
|
|
- delivery_methods TINYINT(1) DEFAULT 3 COMMENT '配送方式支持:1仅快递 2仅自提 3都支持',
|
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品表';
|
|
|
@@ -1091,7 +1081,6 @@ CREATE TABLE IF NOT EXISTS product_orders (
|
|
|
product_id BIGINT NOT NULL COMMENT '商品ID',
|
|
|
product_name VARCHAR(200) COMMENT '商品名称',
|
|
|
product_type VARCHAR(32) COMMENT '商品类型',
|
|
|
- activity_id BIGINT COMMENT '关联活动ID(product_type=activity时有效)',
|
|
|
buyer_id BIGINT NOT NULL COMMENT '购买者ID',
|
|
|
family_id BIGINT COMMENT '家庭ID',
|
|
|
quantity INT NOT NULL DEFAULT 1 COMMENT '数量',
|
|
|
@@ -1108,12 +1097,12 @@ CREATE TABLE IF NOT EXISTS product_orders (
|
|
|
points_cost INT DEFAULT 0 COMMENT '积分抵扣金额(分)',
|
|
|
money_amount INT DEFAULT 0 COMMENT '现金支付金额(分)',
|
|
|
consignee_id BIGINT COMMENT '收货人ID',
|
|
|
- purchase_info TEXT COMMENT '购买信息JSON: {id_card, hand_signature, ...}',
|
|
|
+purchase_info TEXT COMMENT '购买信息JSON: {id_card, hand_signature, ...}',
|
|
|
provision_status VARCHAR(32) COMMENT '活动provision状态: unprovisioned(待审核)/provisioned(已发货)/signed_in(已签到)/completed(已完成)/cancelled(审核拒绝)',
|
|
|
- auditor_id BIGINT COMMENT '审核人ID',
|
|
|
- audited_at DATETIME COMMENT '审核时间',
|
|
|
- audit_reason TEXT COMMENT '审核拒绝原因',
|
|
|
- created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
+auditor_id BIGINT COMMENT '审核人ID',
|
|
|
+audited_at DATETIME COMMENT '审核时间',
|
|
|
+audit_reason TEXT COMMENT '审核拒绝原因',
|
|
|
+created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
|
INDEX idx_user_id (user_id),
|
|
|
INDEX idx_family_id (family_id),
|
|
|
@@ -1170,12 +1159,9 @@ CREATE TABLE IF NOT EXISTS articles (
|
|
|
author VARCHAR(100) DEFAULT '浠艾福' COMMENT '作者',
|
|
|
read_time INT DEFAULT 0 COMMENT '预计阅读分钟数',
|
|
|
article_type VARCHAR(20) DEFAULT 'normal' COMMENT '文章类型:normal(普通)/premium(优质)/original(原创)',
|
|
|
- content_type VARCHAR(20) DEFAULT 'text' COMMENT '内容格式:text/html/markdown',
|
|
|
- difficulty_level INT DEFAULT 0 COMMENT '难度等级:1-5',
|
|
|
word_count INT DEFAULT 0 COMMENT '文章字数',
|
|
|
- dimension_ids VARCHAR(100) DEFAULT '' COMMENT '关联维度IDs JSON',
|
|
|
related_dimensions VARCHAR(100) DEFAULT '' COMMENT '关联五维 JSON 数组',
|
|
|
- dimension_weights TEXT COMMENT '五维能量权重 JSON',
|
|
|
+ dimension_weights JSON DEFAULT NULL COMMENT '五维权重百分比: {"body":0,"mind":0,"wisdom":0,"action":0,"wealth":0}',
|
|
|
visibility VARCHAR(20) DEFAULT 'public' COMMENT '浏览权限:public/login/private',
|
|
|
visible_to TEXT COMMENT '私密指定人群 JSON',
|
|
|
status VARCHAR(20) DEFAULT 'draft' COMMENT '状态:draft/published/archived',
|
|
|
@@ -1272,12 +1258,10 @@ CREATE TABLE IF NOT EXISTS commission_records (
|
|
|
status VARCHAR(16) NOT NULL DEFAULT 'settled' COMMENT '状态: pending/settled',
|
|
|
remark TEXT DEFAULT NULL COMMENT '备注',
|
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
- family_id BIGINT DEFAULT NULL COMMENT '归属家庭ID',
|
|
|
settled_at DATETIME DEFAULT NULL COMMENT '结算时间',
|
|
|
withdrawn_at DATETIME DEFAULT NULL COMMENT '提现时间',
|
|
|
INDEX idx_referrer (referrer_id),
|
|
|
INDEX idx_buyer (buyer_id),
|
|
|
- INDEX idx_family (family_id),
|
|
|
INDEX idx_order (order_id, order_type)
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='佣金记录表';
|
|
|
|
|
|
@@ -1341,7 +1325,7 @@ CREATE TABLE IF NOT EXISTS service_contents (
|
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='服务内容表';
|
|
|
|
|
|
--- 任务模板模板表
|
|
|
+-- 套餐模板表
|
|
|
CREATE TABLE IF NOT EXISTS guide_package_templates (
|
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
|
|
|
name VARCHAR(100) NOT NULL COMMENT '模板名称',
|
|
|
@@ -1352,18 +1336,18 @@ CREATE TABLE IF NOT EXISTS guide_package_templates (
|
|
|
status VARCHAR(20) DEFAULT 'ACTIVE' COMMENT '状态: ACTIVE/DISABLED',
|
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='任务模板模板表';
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='套餐模板表';
|
|
|
|
|
|
--- 任务模板模板服务项表
|
|
|
+-- 套餐模板服务项表
|
|
|
CREATE TABLE IF NOT EXISTS package_template_services (
|
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
|
|
|
template_id BIGINT NOT NULL COMMENT '关联模板',
|
|
|
content_id BIGINT NOT NULL COMMENT '关联服务内容',
|
|
|
quantity INT DEFAULT 1 COMMENT '数量',
|
|
|
unit VARCHAR(20) COMMENT '单位'
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='任务模板模板服务项表';
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='套餐模板服务项表';
|
|
|
|
|
|
--- 成长规划师任务模板表
|
|
|
+-- 成长规划师套餐表
|
|
|
CREATE TABLE IF NOT EXISTS guide_packages (
|
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
|
|
|
guide_id BIGINT COMMENT '成长规划师ID',
|
|
|
@@ -1371,28 +1355,28 @@ CREATE TABLE IF NOT EXISTS guide_packages (
|
|
|
commission_rate INT COMMENT '佣金比例(基点,1000=10%)',
|
|
|
teacher_id BIGINT COMMENT '成长规划师ID(旧字段)',
|
|
|
template_id BIGINT COMMENT '关联模板(旧字段)',
|
|
|
- name VARCHAR(100) NOT NULL COMMENT '任务模板名称',
|
|
|
- level VARCHAR(20) COMMENT '任务模板等级',
|
|
|
+ name VARCHAR(100) NOT NULL COMMENT '套餐名称',
|
|
|
+ level VARCHAR(20) COMMENT '套餐等级',
|
|
|
price INT NOT NULL COMMENT '销售价格(分)',
|
|
|
validity_months INT COMMENT '有效期(月)',
|
|
|
validity_days INT DEFAULT 0 COMMENT '有效期天数',
|
|
|
- description TEXT COMMENT '任务模板说明',
|
|
|
+ description TEXT COMMENT '套餐说明',
|
|
|
status VARCHAR(20) DEFAULT 'DRAFT' COMMENT '状态: DRAFT/PUBLISHED/PAUSED',
|
|
|
sort_order INT DEFAULT 0 COMMENT '排序',
|
|
|
sales_count INT DEFAULT 0 COMMENT '销量',
|
|
|
share_code VARCHAR(50) COMMENT '分享码',
|
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='成长规划师任务模板表';
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='成长规划师套餐表';
|
|
|
|
|
|
--- 成长规划师任务模板服务项表
|
|
|
+-- 成长规划师套餐服务项表
|
|
|
CREATE TABLE IF NOT EXISTS guide_package_services (
|
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
|
|
|
- package_id BIGINT NOT NULL COMMENT '关联任务模板',
|
|
|
+ package_id BIGINT NOT NULL COMMENT '关联套餐',
|
|
|
content_id BIGINT NOT NULL COMMENT '关联服务内容',
|
|
|
quantity INT DEFAULT 1 COMMENT '数量',
|
|
|
unit VARCHAR(20) COMMENT '单位'
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='成长规划师任务模板服务项表';
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='成长规划师套餐服务项表';
|
|
|
|
|
|
-- 成长规划师订单表
|
|
|
CREATE TABLE IF NOT EXISTS guide_orders (
|
|
|
@@ -1400,7 +1384,7 @@ CREATE TABLE IF NOT EXISTS guide_orders (
|
|
|
order_no VARCHAR(50) NOT NULL COMMENT '订单号',
|
|
|
teacher_id BIGINT NOT NULL COMMENT '成长规划师ID',
|
|
|
family_id BIGINT NOT NULL COMMENT '家庭ID',
|
|
|
- package_id BIGINT NOT NULL COMMENT '任务模板ID',
|
|
|
+ package_id BIGINT NOT NULL COMMENT '套餐ID',
|
|
|
amount INT NOT NULL COMMENT '金额(分)',
|
|
|
status VARCHAR(20) DEFAULT 'PENDING' COMMENT '状态: PENDING/PAID/COMPLETED/REFUNDED',
|
|
|
pay_time DATETIME COMMENT '支付时间',
|
|
|
@@ -1565,6 +1549,25 @@ CREATE TABLE IF NOT EXISTS health_report_drafts (
|
|
|
INDEX idx_status_expire (status, expire_at)
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='健康报告上传草稿表(两阶段入库中间态)';
|
|
|
|
|
|
+-- 教育体系配置表
|
|
|
+CREATE TABLE IF NOT EXISTS education_systems (
|
|
|
+ id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
|
|
|
+ name VARCHAR(32) NOT NULL UNIQUE COMMENT '编码(key)',
|
|
|
+ label VARCHAR(50) NOT NULL COMMENT '显示名称',
|
|
|
+ description TEXT COMMENT '描述说明',
|
|
|
+ sort_order INT DEFAULT 0 COMMENT '排序',
|
|
|
+ status VARCHAR(20) DEFAULT 'ACTIVE' COMMENT '状态: ACTIVE/DISABLED',
|
|
|
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
+ updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='教育体系配置表';
|
|
|
+
|
|
|
+INSERT INTO education_systems (name, label, description, sort_order) VALUES
|
|
|
+('high_school', '中专/高中', '中等教育学历', 1),
|
|
|
+('associate', '大专', '高等专科学历', 2),
|
|
|
+('bachelor', '本科', '大学本科学历', 3),
|
|
|
+('master', '硕士', '硕士研究生学历', 4),
|
|
|
+('doctor', '博士', '博士研究生学历', 5);
|
|
|
+
|
|
|
-- ===== v1.2 先天属性体系 =====
|
|
|
|
|
|
-- 家庭成员先天属性表
|
|
|
@@ -1681,6 +1684,7 @@ CREATE TABLE IF NOT EXISTS activities (
|
|
|
description TEXT COMMENT '活动描述',
|
|
|
cover_image VARCHAR(500) COMMENT '封面图片URL',
|
|
|
dimension_code VARCHAR(20) COMMENT '维度代码: body/mind/wisdom/action/wealth',
|
|
|
+ dimension_weights JSON DEFAULT NULL COMMENT '五维权重百分比: {"body":0,"mind":0,"wisdom":0,"action":0,"wealth":0}',
|
|
|
activity_type VARCHAR(20) DEFAULT 'offline' COMMENT '活动类型: offline/online/campaign',
|
|
|
status VARCHAR(20) DEFAULT 'draft' COMMENT '状态: draft/published/ended',
|
|
|
start_time DATETIME COMMENT '开始时间',
|
|
|
@@ -1691,7 +1695,6 @@ CREATE TABLE IF NOT EXISTS activities (
|
|
|
price INT DEFAULT 0 COMMENT '活动价格(分)',
|
|
|
vendor_id BIGINT COMMENT '服务商ID',
|
|
|
vendor_name VARCHAR(100) COMMENT '服务商名称',
|
|
|
- dimension_weights TEXT COMMENT '五维能量权重JSON',
|
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
INDEX idx_dimension (dimension_code),
|
|
|
@@ -1724,12 +1727,6 @@ CREATE TABLE IF NOT EXISTS family_members (
|
|
|
avatar VARCHAR(500) COMMENT '头像',
|
|
|
gender VARCHAR(10) COMMENT '性别: male/female',
|
|
|
birthday DATE COMMENT '出生日期',
|
|
|
- birth_hour VARCHAR(16) COMMENT '出生时辰: 子丑寅卯辰巳午未申酉戌亥',
|
|
|
- birth_weight INT COMMENT '出生体重(克)',
|
|
|
- birth_place VARCHAR(128) COMMENT '出生地',
|
|
|
- is_cesarean TINYINT COMMENT '是否剖腹产: 0=顺产, 1=剖腹产',
|
|
|
- generation INT COMMENT '辈分值(0=家庭创建者,+n=向上n代,-n=向下n代)',
|
|
|
- is_spouse TINYINT(1) COMMENT '是否配偶(同辈中)',
|
|
|
relationship_type VARCHAR(50) NOT NULL COMMENT '关系类型key',
|
|
|
role_override VARCHAR(20) DEFAULT 'auto' COMMENT '角色覆盖: auto/parent/child/elderly,空=auto',
|
|
|
show_to_family INT DEFAULT 1 COMMENT '对家庭成员可见: 1=可见, 0=不可见',
|
|
|
@@ -1775,18 +1772,15 @@ CREATE TABLE IF NOT EXISTS relationship_types (
|
|
|
default_role VARCHAR(20) DEFAULT NULL COMMENT '默认角色模板: parent/child(已废弃, 兼容保留)',
|
|
|
sort_order INT DEFAULT 0 COMMENT '排序序号',
|
|
|
enabled INT DEFAULT 1 COMMENT '是否启用: 1=启用, 0=禁用',
|
|
|
- category VARCHAR(50) DEFAULT 'social' COMMENT '关系分类: blood血亲/marriage姻亲/social社会关系',
|
|
|
- is_blood_relation TINYINT DEFAULT 0 COMMENT '是否血亲关系: 1是0否',
|
|
|
- is_immediate_family TINYINT DEFAULT 0 COMMENT '是否直系亲属: 1是0否',
|
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='关系类型配置表';
|
|
|
|
|
|
-- 默认关系类型数据(default_role: parent/child 为该关系类型的默认角色模板)
|
|
|
-INSERT IGNORE INTO relationship_types (type_key, type_name, default_role, sort_order, enabled, category, is_blood_relation, is_immediate_family) VALUES
|
|
|
-('spouse', '配偶', 'parent', 1, 1, 'marriage', 0, 1),
|
|
|
-('parent', '父母', 'parent', 2, 1, 'blood', 1, 1),
|
|
|
-('child', '子女', 'child', 3, 1, 'blood', 1, 1),
|
|
|
-('sibling', '兄弟姐妹', 'child', 4, 1, 'blood', 1, 0);
|
|
|
+INSERT IGNORE INTO relationship_types (type_key, type_name, default_role, sort_order, enabled) VALUES
|
|
|
+('spouse', '配偶', 'parent', 1, 1),
|
|
|
+('parent', '父母', 'parent', 2, 1),
|
|
|
+('child', '子女', 'child', 3, 1),
|
|
|
+('sibling', '兄弟姐妹', 'child', 4, 1);
|
|
|
|
|
|
-- 用户收货地址表
|
|
|
CREATE TABLE IF NOT EXISTS user_address (
|
|
|
@@ -2221,8 +2215,6 @@ CREATE TABLE IF NOT EXISTS cart (
|
|
|
user_id BIGINT NOT NULL COMMENT '用户ID',
|
|
|
product_id BIGINT NOT NULL COMMENT '商品ID',
|
|
|
quantity INT NOT NULL DEFAULT 1 COMMENT '数量',
|
|
|
- sku_id BIGINT DEFAULT NULL COMMENT 'SKU ID',
|
|
|
- spec_option_ids VARCHAR(500) DEFAULT NULL COMMENT '规格选项ID列表JSON',
|
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
INDEX idx_user_product (user_id, product_id)
|
|
|
@@ -2239,9 +2231,6 @@ CREATE TABLE IF NOT EXISTS supply_system (
|
|
|
settlement_period_days INT NOT NULL DEFAULT 30 COMMENT '账期(天)',
|
|
|
platform_profit_rate DECIMAL(5,2) NOT NULL DEFAULT 0 COMMENT '平台留利比例(%)',
|
|
|
description TEXT COMMENT '描述',
|
|
|
- models TEXT COMMENT 'AI模型列表JSON,如["agnes-image-2.0-flash","agnes-2.5-flash"]',
|
|
|
- api_endpoint VARCHAR(512) COMMENT 'API端点',
|
|
|
- api_key VARCHAR(256) COMMENT 'API密钥',
|
|
|
status VARCHAR(20) NOT NULL DEFAULT 'active' COMMENT '状态: active/disabled',
|
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
@@ -2442,7 +2431,7 @@ CREATE TABLE IF NOT EXISTS product_ppoint (
|
|
|
CREATE TABLE IF NOT EXISTS assessment_products (
|
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
product_id BIGINT NOT NULL COMMENT '关联products表',
|
|
|
- assessment_type VARCHAR(20) NOT NULL COMMENT 'single=单包, bundle=任务模板',
|
|
|
+ assessment_type VARCHAR(20) NOT NULL COMMENT 'single=单包, bundle=套餐',
|
|
|
total_sessions INT NOT NULL DEFAULT 1 COMMENT '包含测评次数',
|
|
|
validity_days INT NOT NULL DEFAULT 365 COMMENT '有效期(天)',
|
|
|
guide_scope VARCHAR(50) DEFAULT 'all' COMMENT '规划师范围: all/assigned/auto',
|
|
|
@@ -2692,1144 +2681,20 @@ CREATE TABLE IF NOT EXISTS tianpan_member_annual_energy (
|
|
|
INDEX idx_year (year)
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='成员年度能量表';
|
|
|
|
|
|
--- 商品推荐日志表(迁移 80)
|
|
|
-CREATE TABLE IF NOT EXISTS product_recommendation_log (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- user_id BIGINT COMMENT '用户 ID',
|
|
|
- product_id BIGINT COMMENT '商品 ID',
|
|
|
- scene VARCHAR(32) COMMENT '触发场景:report_upload/manual/chat',
|
|
|
- reason VARCHAR(255) COMMENT '推荐理由',
|
|
|
- match_score DOUBLE COMMENT '匹配分',
|
|
|
- created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
|
- INDEX idx_user_id (user_id)
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品推荐日志';
|
|
|
-
|
|
|
--- 商品维度关联表(迁移 81)
|
|
|
-CREATE TABLE IF NOT EXISTS product_dimension_mapping (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- product_id BIGINT NOT NULL COMMENT '商品 ID',
|
|
|
- dimension_code VARCHAR(32) NOT NULL COMMENT '维度: body/wisdom/mind/action/wealth',
|
|
|
- match_score INT DEFAULT 100 COMMENT '匹配度 0-100',
|
|
|
- match_reason VARCHAR(200) COMMENT '匹配原因',
|
|
|
- tags VARCHAR(500) COMMENT '推荐标签 JSON',
|
|
|
- enabled TINYINT DEFAULT 1,
|
|
|
- created_at DATETIME,
|
|
|
- updated_at DATETIME,
|
|
|
- INDEX idx_product (product_id),
|
|
|
- INDEX idx_dimension (dimension_code)
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品维度关联表';
|
|
|
-
|
|
|
--- 复购提醒发送记录表(迁移 82)
|
|
|
-CREATE TABLE IF NOT EXISTS repurchase_reminder_record (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- user_id BIGINT NOT NULL,
|
|
|
- product_id BIGINT NOT NULL,
|
|
|
- order_id BIGINT COMMENT '关联订单 ID',
|
|
|
- reminder_days INT DEFAULT 30,
|
|
|
- sent_at DATETIME,
|
|
|
- clicked TINYINT DEFAULT 0,
|
|
|
- purchased TINYINT DEFAULT 0,
|
|
|
- INDEX idx_user_pending (user_id, purchased)
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='复购提醒发送记录';
|
|
|
-
|
|
|
--- 复购提醒配置表(迁移 83)
|
|
|
-CREATE TABLE IF NOT EXISTS repurchase_reminder_config (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- product_category VARCHAR(100),
|
|
|
- product_id BIGINT COMMENT '特定商品 ID(优先于 category)',
|
|
|
- reminder_days INT DEFAULT 30,
|
|
|
- reminder_template VARCHAR(500) COMMENT '提醒话术模板',
|
|
|
- max_reminders INT DEFAULT 3,
|
|
|
- enabled TINYINT DEFAULT 1,
|
|
|
- created_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='复购提醒配置表';
|
|
|
-
|
|
|
--- products 表添加推荐相关字段(迁移 81-83)
|
|
|
-ALTER TABLE products ADD COLUMN IF NOT EXISTS recommendation_tags VARCHAR(500) COMMENT '推荐标签 JSON' AFTER domain;
|
|
|
-ALTER TABLE products ADD COLUMN IF NOT EXISTS purchase_count_threshold INT DEFAULT 0;
|
|
|
-ALTER TABLE products ADD COLUMN IF NOT EXISTS repurchase_interval_days INT DEFAULT 30;
|
|
|
-
|
|
|
--- 社交圈/珍珠表(迁移 85)
|
|
|
-CREATE TABLE IF NOT EXISTS social_circle (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- name VARCHAR(100) NOT NULL COMMENT '圈子名称',
|
|
|
- type VARCHAR(50) NOT NULL COMMENT '类型: topic/activity/hobby/ability/product/health/provider',
|
|
|
- match_source VARCHAR(50) NOT NULL COMMENT '匹配源: article/activity/game/assessment/product/health_report/teacher',
|
|
|
- source_id BIGINT COMMENT '匹配源ID',
|
|
|
- member_count INT DEFAULT 0 COMMENT '成员数',
|
|
|
- created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
|
- INDEX idx_type (type),
|
|
|
- INDEX idx_match_source (match_source),
|
|
|
- INDEX idx_source_id (source_id)
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='社交圈/珍珠';
|
|
|
-
|
|
|
--- 社交圈成员表(迁移 85)
|
|
|
-CREATE TABLE IF NOT EXISTS social_circle_member (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- circle_id BIGINT NOT NULL,
|
|
|
- member_id BIGINT NOT NULL COMMENT '用户ID',
|
|
|
- member_type VARCHAR(20) NOT NULL COMMENT 'parent/child',
|
|
|
- joined_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
|
- UNIQUE KEY uk_circle_member (circle_id, member_id),
|
|
|
- INDEX idx_member (member_id, member_type),
|
|
|
- INDEX idx_circle_id (circle_id)
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='圈子成员';
|
|
|
-
|
|
|
--- AI对话摘要
|
|
|
-CREATE TABLE IF NOT EXISTS ai_conversation_summary (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- user_id BIGINT NOT NULL COMMENT '用户ID',
|
|
|
- conversation_id VARCHAR(100) NOT NULL COMMENT 'Dify会话ID',
|
|
|
- summary_text TEXT COMMENT '对话摘要文本',
|
|
|
- summary_tokens INT DEFAULT 0 COMMENT '摘要token数',
|
|
|
- message_count INT DEFAULT 0 COMMENT '本次对话消息数',
|
|
|
- created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
- INDEX idx_conversation (conversation_id),
|
|
|
- INDEX idx_user (user_id)
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI对话摘要';
|
|
|
-
|
|
|
--- AI用户关键事实
|
|
|
-CREATE TABLE IF NOT EXISTS ai_user_facts (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- user_id BIGINT NOT NULL COMMENT '用户ID',
|
|
|
- fact_key VARCHAR(100) NOT NULL COMMENT '事实键',
|
|
|
- fact_value VARCHAR(500) COMMENT '事实值',
|
|
|
- source_conversation VARCHAR(100) COMMENT '来源会话ID',
|
|
|
- confidence DECIMAL(3,2) DEFAULT 1.00 COMMENT '置信度0-1',
|
|
|
- created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
- updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
|
- INDEX idx_user_key (user_id, fact_key),
|
|
|
- INDEX idx_conversation (source_conversation)
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI用户关键事实';
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS supply_hierarchy (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- system_id BIGINT NOT NULL COMMENT '供应商体系ID',
|
|
|
- parent_id BIGINT NOT NULL COMMENT '上级供应商ID',
|
|
|
- child_id BIGINT NOT NULL COMMENT '下级供应商ID',
|
|
|
- level INT DEFAULT 1 COMMENT '层级深度',
|
|
|
- status VARCHAR(20) DEFAULT 'active',
|
|
|
- created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
|
- updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
- UNIQUE KEY uk_system_parent_child (system_id, parent_id, child_id),
|
|
|
- KEY idx_system_child (system_id, child_id),
|
|
|
- KEY idx_parent (parent_id)
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='供应商上下级关系表';
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS supply_hierarchy_change_request (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- system_id BIGINT NOT NULL,
|
|
|
- applicant_id BIGINT NOT NULL COMMENT '申请人ID',
|
|
|
- target_parent_id BIGINT NOT NULL COMMENT '目标上级ID',
|
|
|
- status VARCHAR(20) DEFAULT 'pending',
|
|
|
- reason VARCHAR(500),
|
|
|
- reject_reason VARCHAR(500),
|
|
|
- created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
|
- reviewed_at DATETIME,
|
|
|
- reviewed_by BIGINT,
|
|
|
- KEY idx_system_applicant (system_id, applicant_id),
|
|
|
- KEY idx_status (status)
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='供应商更换上级申请表';
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS butler_profiles (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- user_id BIGINT NOT NULL COMMENT '用户ID',
|
|
|
- tier VARCHAR(10) COMMENT '服务等级: L1/L2',
|
|
|
- status VARCHAR(20) DEFAULT 'pending' COMMENT '状态: pending/approved/rejected',
|
|
|
- member_count INT DEFAULT 0 COMMENT '当前服务家庭数',
|
|
|
- max_members INT DEFAULT 50 COMMENT '最大服务家庭上限',
|
|
|
- annual_fee_l1 BIGINT COMMENT '年费L1档(P点)',
|
|
|
- annual_fee_l2 BIGINT COMMENT '年费L2档(P点)',
|
|
|
- description TEXT COMMENT '个人简介',
|
|
|
- certificates TEXT COMMENT '资质证书URL(JSON数组)',
|
|
|
- reject_reason VARCHAR(500) COMMENT '审核拒绝原因',
|
|
|
- commission_rate_l1 INT DEFAULT 1000 COMMENT '年度分佣比例L1(basis points,10000=100%)',
|
|
|
- commission_rate_l2 INT DEFAULT 5000 COMMENT '年度分佣比例L2(basis points,10000=100%)',
|
|
|
- created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
|
- updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
- approved_at DATETIME COMMENT '审核通过时间',
|
|
|
- UNIQUE KEY uk_user_id (user_id),
|
|
|
- INDEX idx_status (status),
|
|
|
- INDEX idx_tier (tier)
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='管家服务提供商档案';
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS butler_service_records (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- butler_id BIGINT NOT NULL COMMENT '管家用户ID',
|
|
|
- member_user_id BIGINT NOT NULL COMMENT '会员用户ID',
|
|
|
- subscription_id BIGINT COMMENT '关联订阅记录ID(年费服务时)',
|
|
|
- service_type VARCHAR(20) NOT NULL COMMENT '服务类型: annual/per_session',
|
|
|
- amount_p BIGINT NOT NULL COMMENT '服务金额(P点)',
|
|
|
- platform_fee_p BIGINT DEFAULT 0 COMMENT '平台留成(P点)',
|
|
|
- butler_amount_p BIGINT DEFAULT 0 COMMENT '管家所得(P点)',
|
|
|
- member_tier VARCHAR(10) COMMENT '会员订阅级别: L1/L2',
|
|
|
- year_month VARCHAR(7) COMMENT '结算年月 YYYY-MM',
|
|
|
- remark VARCHAR(500) COMMENT '备注',
|
|
|
- created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
|
- INDEX idx_butler_id (butler_id),
|
|
|
- INDEX idx_member_user_id (member_user_id),
|
|
|
- INDEX idx_year_month (year_month),
|
|
|
- INDEX idx_service_type (service_type)
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='管家服务记录';
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS butler_commission_settlements (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- butler_id BIGINT NOT NULL COMMENT '管家用户ID',
|
|
|
- year_month VARCHAR(7) NOT NULL COMMENT '结算年月 YYYY-MM',
|
|
|
- member_count INT DEFAULT 0 COMMENT '本月服务家庭数',
|
|
|
- annual_base_amount_p BIGINT DEFAULT 0 COMMENT '年费基准总额(P点)',
|
|
|
- annual_butler_amount_p BIGINT DEFAULT 0 COMMENT '年费-管家所得(P点)',
|
|
|
- annual_platform_amount_p BIGINT DEFAULT 0 COMMENT '年费-平台留成(P点)',
|
|
|
- per_session_total_p BIGINT DEFAULT 0 COMMENT '按次服务总金额(P点)',
|
|
|
- per_session_platform_total_p BIGINT DEFAULT 0 COMMENT '按次-平台留成(P点)',
|
|
|
- per_session_butler_total_p BIGINT DEFAULT 0 COMMENT '按次-管家所得(P点)',
|
|
|
- total_butler_amount_p BIGINT DEFAULT 0 COMMENT '本月管家总所得(P点)',
|
|
|
- status VARCHAR(20) DEFAULT 'pending' COMMENT '结算状态: pending/paid',
|
|
|
- settled_at DATETIME COMMENT '确认发放时间',
|
|
|
- settled_by BIGINT COMMENT '结算确认人',
|
|
|
- created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
|
- UNIQUE KEY uk_butler_month (butler_id, year_month),
|
|
|
- INDEX idx_status (status),
|
|
|
- INDEX idx_year_month (year_month)
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='管家月度佣金结算单';
|
|
|
-
|
|
|
--- 家庭公共账户体系
|
|
|
-
|
|
|
-CREATE TABLE family_earnings (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- family_id BIGINT NOT NULL UNIQUE COMMENT '家庭ID',
|
|
|
- total_earned BIGINT NOT NULL DEFAULT 0 COMMENT '累计推荐收入(分)',
|
|
|
- available_amount BIGINT NOT NULL DEFAULT 0 COMMENT '当前可支配余额(分)',
|
|
|
- withdrawn_amount BIGINT NOT NULL DEFAULT 0 COMMENT '已提现金额(分)',
|
|
|
- distributed_amount BIGINT NOT NULL DEFAULT 0 COMMENT '已颁发给成员的金额(分)',
|
|
|
- updated_at DATETIME,
|
|
|
- created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
|
- INDEX idx_family_id (family_id)
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='家庭公共账户';
|
|
|
-
|
|
|
-CREATE TABLE family_earnings_member (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- family_id BIGINT NOT NULL,
|
|
|
- user_id BIGINT NOT NULL,
|
|
|
- allocated_amount BIGINT NOT NULL DEFAULT 0 COMMENT '管理员累计分配(分)',
|
|
|
- consumed_amount BIGINT NOT NULL DEFAULT 0 COMMENT '已消费金额(分)',
|
|
|
- available_amount BIGINT NOT NULL DEFAULT 0 COMMENT '可消费余额=allocated-consumed(分)',
|
|
|
- can_use_family_balance TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否允许使用家庭公共池',
|
|
|
- updated_at DATETIME,
|
|
|
- created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
|
- UNIQUE KEY idx_family_user (family_id, user_id)
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='家庭成员已分配余额';
|
|
|
-
|
|
|
-CREATE TABLE family_earnings_record (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- family_id BIGINT NOT NULL,
|
|
|
- type VARCHAR(20) NOT NULL COMMENT '类型: earn收入/withdraw提现/distribute颁发/consume消费',
|
|
|
- amount BIGINT NOT NULL COMMENT '金额(分)',
|
|
|
- from_user_id BIGINT COMMENT '操作人',
|
|
|
- to_user_id BIGINT COMMENT '受益人(颁发/消费时填写)',
|
|
|
- note VARCHAR(255) COMMENT '备注',
|
|
|
- created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
|
- INDEX idx_family_id (family_id),
|
|
|
- INDEX idx_type (type)
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='家庭收益收支流水';
|
|
|
-
|
|
|
-ALTER TABLE commission_records ADD COLUMN family_id BIGINT COMMENT '归属家庭ID';
|
|
|
-
|
|
|
-
|
|
|
--- ========== Schema.sql 补充: 从 DatabaseInitializer 同步的表 ==========
|
|
|
-
|
|
|
--- after_sales_requests
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS after_sales_requests (id BIGINT AUTO_INCREMENT PRIMARY KEY,order_id BIGINT NOT NULL COMMENT '订单ID',order_no VARCHAR(32) NOT NULL COMMENT '订单号',user_id BIGINT NOT NULL COMMENT '用户ID',type VARCHAR(32) NOT NULL COMMENT '类型: REFUND/RETURN_REFUND',reason VARCHAR(255) COMMENT '原因',description TEXT COMMENT '描述',images TEXT COMMENT '凭证图片(JSON数组)',refund_amount INT DEFAULT 0 COMMENT '退款金额(分)',status VARCHAR(20) DEFAULT 'pending' COMMENT '状态: pending/approved/rejected/completed',reject_reason VARCHAR(255) COMMENT '驳回原因',handled_by BIGINT COMMENT '处理人ID',handled_at DATETIME COMMENT '处理时间',created_at DATETIME DEFAULT CURRENT_TIMESTAMP,updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,INDEX idx_order (order_id),INDEX idx_user (user_id),INDEX idx_status (status)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='售后申请';
|
|
|
-
|
|
|
--- article_reading_records
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS article_reading_records (id BIGINT AUTO_INCREMENT PRIMARY KEY, user_id BIGINT COMMENT '用户ID', child_id BIGINT NOT NULL COMMENT '孩子ID', content VARCHAR(500) COMMENT '阅读内容摘要', duration_seconds INT DEFAULT 0 COMMENT '阅读时长(秒)', read_at DATETIME COMMENT '阅读时间', created_at DATETIME, INDEX idx_child_id (child_id), INDEX idx_read_at (read_at)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='文章阅读记录表';
|
|
|
-
|
|
|
--- bazi_reading_template
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS bazi_reading_template (id BIGINT AUTO_INCREMENT PRIMARY KEY, element VARCHAR(20) NOT NULL COMMENT '五行: wood/fire/earth/metal/water', condition VARCHAR(20) NOT NULL COMMENT '状态: strong/weak/balanced', personal_trait TEXT COMMENT '性格特质描述', mind_growth_advice TEXT COMMENT '心理成长建议', daily_tip_template TEXT COMMENT '每日宜忌模板', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY uk_element_condition (element, condition)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='五行命理解读模板';
|
|
|
-
|
|
|
--- cart_items
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS cart_items (id BIGINT AUTO_INCREMENT PRIMARY KEY,user_id BIGINT NOT NULL COMMENT '用户ID',product_id BIGINT NOT NULL COMMENT '商品ID',quantity INT DEFAULT 1 COMMENT '数量',selected TINYINT(1) DEFAULT 1 COMMENT '是否选中',created_at DATETIME DEFAULT CURRENT_TIMESTAMP,updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,INDEX idx_user (user_id),INDEX idx_product (product_id),UNIQUE KEY uk_user_product (user_id, product_id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='购物车';
|
|
|
-
|
|
|
--- contacts
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS contacts (id BIGINT AUTO_INCREMENT PRIMARY KEY, user_id BIGINT NOT NULL COMMENT '用户ID', name VARCHAR(100) NOT NULL COMMENT '姓名', phone VARCHAR(20) COMMENT '电话', avatar VARCHAR(500) COMMENT '头像', relationship_type VARCHAR(20) COMMENT '关系类型: family/friend/partner/colleague/other', known_since DATETIME COMMENT '认识时间', bio VARCHAR(500) COMMENT '简介', birthday DATE COMMENT '生日', intimacy_level INT DEFAULT 0 COMMENT '亲密度(0-100)', contact_source VARCHAR(20) DEFAULT 'manual' COMMENT '来源: phone/manual', tags VARCHAR(500) COMMENT '标签(逗号分隔)', last_contact_at DATETIME COMMENT '最近联系时间', contact_count INT DEFAULT 0 COMMENT '联系次数', notes TEXT COMMENT '备注', family_member_id BIGINT DEFAULT NULL COMMENT '关联的家庭成员ID', invited_status VARCHAR(16) DEFAULT 'none' COMMENT '邀请加入家庭状态: none/invited/accepted/declined', created_at DATETIME, updated_at DATETIME, INDEX idx_user_id (user_id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='联系人表';
|
|
|
-
|
|
|
--- family_member_logs
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS family_member_logs (id BIGINT AUTO_INCREMENT PRIMARY KEY, family_id BIGINT NOT NULL COMMENT '家庭ID', member_id BIGINT NOT NULL COMMENT '成员ID', action VARCHAR(32) NOT NULL COMMENT '操作: join/leave/update/kick', old_value VARCHAR(500) COMMENT '旧值', new_value VARCHAR(500) COMMENT '新值', operator_id BIGINT COMMENT '操作人用户ID', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, INDEX idx_family_id (family_id), INDEX idx_member_id (member_id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='家庭成员变更日志';
|
|
|
-
|
|
|
--- dan_knowledge_base
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS dan_knowledge_base (id BIGINT PRIMARY KEY AUTO_INCREMENT, title VARCHAR(200) NOT NULL COMMENT '知识标题', content TEXT NOT NULL COMMENT '知识内容', sort INT DEFAULT 0 COMMENT '排序', status TINYINT(1) DEFAULT 1 COMMENT '状态: 0禁用 1启用', remark VARCHAR(500) COMMENT '备注', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='知识库表';
|
|
|
-
|
|
|
--- dan_knowledge_base_dimension
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS dan_knowledge_base_dimension (id BIGINT PRIMARY KEY AUTO_INCREMENT, knowledge_id BIGINT NOT NULL COMMENT '知识库ID', dimension_id BIGINT NOT NULL COMMENT '维度配置ID', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY uk_knowledge_dimension (knowledge_id, dimension_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='知识-维度关联表';
|
|
|
-
|
|
|
--- dan_knowledge_base_tag
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS dan_knowledge_base_tag (id BIGINT PRIMARY KEY AUTO_INCREMENT, knowledge_id BIGINT NOT NULL, tag_id BIGINT NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY uk_knowledge_tag (knowledge_id, tag_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='知识-标签关联表';
|
|
|
-
|
|
|
--- dan_knowledge_tag
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS dan_knowledge_tag (id BIGINT PRIMARY KEY AUTO_INCREMENT, tag_name VARCHAR(100) NOT NULL UNIQUE COMMENT '标签名', tag_type VARCHAR(50) DEFAULT 'custom' COMMENT '标签类型: custom/auto', created_at DATETIME DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='标签表';
|
|
|
-
|
|
|
--- distribution_relations
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS distribution_relations (id BIGINT AUTO_INCREMENT PRIMARY KEY,system_id BIGINT NOT NULL COMMENT '体系ID',user_id BIGINT NOT NULL COMMENT '用户ID',parent_id BIGINT COMMENT '上级用户ID(null=根)',depth INT DEFAULT 0 COMMENT '层级深度',created_at DATETIME DEFAULT CURRENT_TIMESTAMP,INDEX idx_system (system_id),INDEX idx_user (user_id),INDEX idx_parent (parent_id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='销售关系';
|
|
|
-
|
|
|
--- distribution_systems
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS distribution_systems (id BIGINT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(64) NOT NULL COMMENT '体系名称',description VARCHAR(255) COMMENT '描述',owner_id BIGINT COMMENT '创建者ID',profit_rate INT DEFAULT 0 COMMENT '平台利润率(千分比)',enabled TINYINT(1) DEFAULT 1 COMMENT '启用',created_at DATETIME DEFAULT CURRENT_TIMESTAMP,updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='销售体系';
|
|
|
-
|
|
|
--- emotion_checkin
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS emotion_checkin (id BIGINT AUTO_INCREMENT PRIMARY KEY, child_id BIGINT NOT NULL COMMENT '孩子ID', user_id BIGINT NOT NULL COMMENT '打卡人用户ID', emotion_type INT NOT NULL COMMENT '情绪类型: 1快乐/2平和平静/3平静/4有点不舒服/5难受/6烦躁/7生气/8焦虑/9恐惧', emotion_name VARCHAR(20) COMMENT '情绪名称: happy/calm/peaceful/uncomfortable/sad/irritable/angry/anxious/fearful', energy_level INT NOT NULL DEFAULT 3 COMMENT '能量状态: 1很低/2低/3中等/4高/5很高', note TEXT COMMENT '打卡备注', photo_url VARCHAR(500) COMMENT '照片URL', favorite_thing VARCHAR(500) COMMENT '今日最喜欢的一件事', points_awarded INT DEFAULT 0 COMMENT '奖励积分', parent_visible TINYINT DEFAULT 1 COMMENT '家长可见: 1可见/0不可见', checkin_date DATE NOT NULL COMMENT '打卡日期', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_child_id (child_id), INDEX idx_user_id (user_id), INDEX idx_checkin_date (checkin_date), INDEX idx_child_date (child_id, checkin_date)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='情绪打卡表';
|
|
|
-
|
|
|
--- health_checkins
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS health_checkins (id BIGINT AUTO_INCREMENT PRIMARY KEY, user_id BIGINT COMMENT '用户ID(家长)', child_id BIGINT COMMENT '孩子ID', checkin_date DATE COMMENT '打卡日期', behaviors TEXT COMMENT '打卡行为JSON数组', note VARCHAR(500) COMMENT '备注', mood VARCHAR(20) COMMENT '心情: happy/normal/sad/angry/sick', earned_energy INT DEFAULT 5 COMMENT '获得能量值', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, INDEX idx_child_id (child_id), INDEX idx_checkin_date (checkin_date)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='健康打卡表';
|
|
|
-
|
|
|
--- health_disease_risk
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS health_disease_risk (id BIGINT AUTO_INCREMENT PRIMARY KEY, report_id BIGINT NOT NULL COMMENT '关联报告ID', disease_name VARCHAR(100) NOT NULL COMMENT '疾病名称', risk_value VARCHAR(50) COMMENT '风险值(0-1)', risk_level VARCHAR(20) COMMENT '风险等级: 高风险/需注意/低风险', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, INDEX idx_report (report_id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='疾病风险评估数据';
|
|
|
-
|
|
|
--- health_gut_flora
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS health_gut_flora (id BIGINT AUTO_INCREMENT PRIMARY KEY, report_id BIGINT NOT NULL COMMENT '关联报告ID', bacteria_name VARCHAR(100) NOT NULL COMMENT '菌种名称', bacteria_value VARCHAR(50) COMMENT '菌种丰度值', normal_range VARCHAR(100) COMMENT '正常范围', status VARCHAR(20) COMMENT '状态: 正常/偏低/偏高', category VARCHAR(50) COMMENT '分类: 有益菌/有害菌/中性菌', sort_order INT DEFAULT 0 COMMENT '排序', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, INDEX idx_report (report_id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='菌群检测专项数据';
|
|
|
-
|
|
|
--- health_report_survey
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS health_report_survey (id BIGINT AUTO_INCREMENT PRIMARY KEY, report_id BIGINT NOT NULL COMMENT '关联报告ID', user_id BIGINT NOT NULL COMMENT '用户ID', child_id BIGINT NOT NULL COMMENT '孩子ID', survey_data JSON COMMENT '调研问卷结果JSON', status VARCHAR(20) DEFAULT 'pending' COMMENT '状态: pending/completed', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, UNIQUE KEY uk_report (report_id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='报告调研问卷';
|
|
|
-
|
|
|
--- numsoul_config
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS numsoul_config (number INT PRIMARY KEY COMMENT '灵数1-9', title VARCHAR(50) NOT NULL COMMENT '称号', keywords VARCHAR(200) COMMENT '性格关键词', mind_growth_advice TEXT COMMENT '心理成长建议', recommended_article_tags VARCHAR(200) COMMENT '关联文章标签', color_hex VARCHAR(7) COMMENT '代表色' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='生命灵数配置';
|
|
|
-
|
|
|
--- nutrition_deficiency_record
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS nutrition_deficiency_record (id BIGINT AUTO_INCREMENT PRIMARY KEY,child_id BIGINT NOT NULL COMMENT '孩子ID',report_id BIGINT NOT NULL COMMENT '关联报告ID',nutrient VARCHAR(50) NOT NULL COMMENT '营养素名',deficiency_type VARCHAR(20) NOT NULL COMMENT 'deficiency/excess/borderline/unclassified',severity DECIMAL(5,2) DEFAULT 0 COMMENT '严重程度(0-1)',indicator_name VARCHAR(100) COMMENT '关联指标名',indicator_value VARCHAR(50) COMMENT '指标检测值',ref_range VARCHAR(100) COMMENT '参考范围',symptoms TEXT COMMENT '症状描述',food_suggestions TEXT COMMENT '推荐食物',created_at DATETIME DEFAULT CURRENT_TIMESTAMP,INDEX idx_child (child_id),INDEX idx_report (report_id),INDEX idx_nutrient (nutrient)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='营养缺乏分析记录';
|
|
|
-
|
|
|
--- nutrition_indicator_mapping
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS nutrition_indicator_mapping (id BIGINT AUTO_INCREMENT PRIMARY KEY,indicator_name_pattern VARCHAR(200) NOT NULL COMMENT '指标名匹配模式(SQL LIKE语法,%为通配符)',nutrient VARCHAR(50) NOT NULL COMMENT '关联营养素名',severity_weight DECIMAL(3,2) DEFAULT 1.00 COMMENT '权重(0-1)',deficiency_symptoms TEXT COMMENT '缺乏症状描述',excess_symptoms TEXT COMMENT '过量症状描述',food_suggestions TEXT COMMENT '推荐食物(逗号分隔)',sort_order INT DEFAULT 0 COMMENT '排序(大值优先匹配)',created_at DATETIME DEFAULT CURRENT_TIMESTAMP,updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,INDEX idx_nutrient (nutrient)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='指标-营养素映射表';
|
|
|
-
|
|
|
--- product_dimension_config
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS product_dimension_config (id BIGINT PRIMARY KEY AUTO_INCREMENT, dimension_code VARCHAR(50) NOT NULL UNIQUE COMMENT '维度代码: body/mind/wisdom/action/wealth', dimension_name VARCHAR(100) NOT NULL COMMENT '维度名称', dimension_type VARCHAR(50) NOT NULL DEFAULT 'five' COMMENT '类型: five(五维)/action(行动)/other', parent_id BIGINT COMMENT '父级ID,无父级为NULL', sort INT DEFAULT 0 COMMENT '排序', enabled TINYINT(1) DEFAULT 1 COMMENT '启用: 0禁用 1启用', dify_dataset_id VARCHAR(100) COMMENT 'Dify Dataset ID,不填则不同步', remark VARCHAR(500) COMMENT '备注', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='维度配置表';
|
|
|
-
|
|
|
--- promotion_tier_config
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS promotion_tier_config (id BIGINT AUTO_INCREMENT PRIMARY KEY, tier_code VARCHAR(10) NOT NULL UNIQUE COMMENT '等级编码: R0/R1/R2/R3/R4', tier_name VARCHAR(50) NOT NULL COMMENT '等级名称', min_team_size_1st INT NOT NULL DEFAULT 0 COMMENT '一级团队人数下限', min_team_size_2nd INT NOT NULL DEFAULT 0 COMMENT '二级团队人数下限', min_total_referral_earnings INT NOT NULL DEFAULT 0 COMMENT '累计推荐佣金下限(分)', min_total_share_earnings INT NOT NULL DEFAULT 0 COMMENT '累计消费返利下限(分)', commission_rate_l1 INT NOT NULL DEFAULT 0 COMMENT 'L1佣金比例(%)', commission_rate_l2 INT NOT NULL DEFAULT 0 COMMENT 'L2佣金比例(%)', sort_order INT NOT NULL DEFAULT 0 COMMENT '排序', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='推广等级阈值配置';
|
|
|
-
|
|
|
--- shop_categories
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS shop_categories (id BIGINT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(64) NOT NULL COMMENT '分类名称',parent_id BIGINT DEFAULT 0 COMMENT '父分类ID(0=根节点)',level INT DEFAULT 0 COMMENT '层级(0/1/2/3)',sort INT DEFAULT 0 COMMENT '排序',image VARCHAR(512) COMMENT '分类图标',enabled TINYINT(1) DEFAULT 1 COMMENT '启用',dimension_codes VARCHAR(128) COMMENT '维度编码(逗号分隔: body,mind,heart)',product_types VARCHAR(128) COMMENT '商品类型(逗号分隔: PHYSICAL,COURSE,ASSESSMENT)',created_at DATETIME DEFAULT CURRENT_TIMESTAMP,updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,INDEX idx_parent (parent_id),INDEX idx_sort (sort)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品类目';
|
|
|
-
|
|
|
--- shop_discount_rules
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS shop_discount_rules (id BIGINT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(64) NOT NULL COMMENT '规则名称',type VARCHAR(32) NOT NULL COMMENT '类型: PERCENT/FIXED/THRESHOLD',value INT NOT NULL COMMENT '折扣值(PERCENT=百分比数字, FIXED/THRESHOLD=金额分)',threshold_amount INT COMMENT '满减门槛(分,仅THRESHOLD)',category_id BIGINT COMMENT '适用类目ID(null=全部)',distribution_system_id BIGINT COMMENT '适用体系ID(null=全部)',product_ids TEXT COMMENT '适用商品ID(逗号分隔,null=全部)',start_time DATETIME COMMENT '开始时间',end_time DATETIME COMMENT '结束时间',max_uses INT DEFAULT 0 COMMENT '最大使用次数(0=不限)',used_count INT DEFAULT 0 COMMENT '已使用次数',enabled TINYINT(1) DEFAULT 1 COMMENT '启用',created_at DATETIME DEFAULT CURRENT_TIMESTAMP,updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,INDEX idx_category (category_id),INDEX idx_enabled (enabled)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='折扣规则';
|
|
|
-
|
|
|
--- trial_memberships
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS trial_memberships (id BIGINT AUTO_INCREMENT PRIMARY KEY, user_id BIGINT NOT NULL COMMENT '用户ID', family_id BIGINT NOT NULL COMMENT '家庭ID', start_date DATETIME NOT NULL COMMENT '试用开始时间', end_date DATETIME NOT NULL COMMENT '试用结束时间', status VARCHAR(20) DEFAULT 'PENDING' COMMENT '状态:PENDING/ACTIVE/EXPIRED/CONVERTED', trial_days INT DEFAULT 7 COMMENT '试用天数', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_user_id (user_id), INDEX idx_family_id (family_id), INDEX idx_status (status), INDEX idx_end_date (end_date)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- user_profile_history
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS user_profile_history (id BIGINT AUTO_INCREMENT PRIMARY KEY, user_id BIGINT NOT NULL COMMENT '用户ID', field_name VARCHAR(64) NOT NULL COMMENT '变更字段名', old_value TEXT COMMENT '旧值', new_value TEXT COMMENT '新值', source VARCHAR(32) DEFAULT 'user' COMMENT '变更来源: user/admin/auto', changed_at DATETIME NOT NULL COMMENT '变更时间', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, INDEX idx_ph_user (user_id), INDEX idx_ph_field (field_name), INDEX idx_ph_changed (changed_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户信息变更历史表';
|
|
|
-
|
|
|
--- follow_up
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS follow_up (id BIGINT AUTO_INCREMENT PRIMARY KEY, family_id BIGINT NOT NULL COMMENT '家庭ID', child_id BIGINT COMMENT '孩子ID', teacher_id BIGINT COMMENT '规划师ID', deficiency_id BIGINT COMMENT '缺乏项ID', message_id BIGINT COMMENT '消息ID', status VARCHAR(20) DEFAULT 'pending' COMMENT '状态', priority VARCHAR(10) DEFAULT 'medium' COMMENT '优先级', description VARCHAR(500) COMMENT '描述', parent_feedback TEXT COMMENT '家长反馈', teacher_review VARCHAR(500) COMMENT '规划师点评', due_date DATETIME COMMENT '截止日期', completed_at DATETIME COMMENT '完成时间', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_family (family_id), INDEX idx_teacher (teacher_id), INDEX idx_status (status), INDEX idx_due (due_date);
|
|
|
-
|
|
|
--- food_nutrients
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS food_nutrients (id BIGINT AUTO_INCREMENT PRIMARY KEY, food_id BIGINT NOT NULL COMMENT '食材ID', nutrient_code VARCHAR(20) NOT NULL COMMENT '营养素编码', amount_per_100g DECIMAL(10,4) NOT NULL COMMENT '每100g含量', unit VARCHAR(20) NOT NULL COMMENT '单位', source VARCHAR(50) DEFAULT 'importer' COMMENT '数据来源', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, UNIQUE KEY uk_food_nutrient (food_id, nutrient_code), INDEX idx_nutrient (nutrient_code);
|
|
|
-
|
|
|
--- foods
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS foods (id BIGINT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL COMMENT '食材名称', category VARCHAR(50) COMMENT '分类: 蔬菜/水果/肉禽/水产/蛋奶/豆类/谷物/调味/其他', unit VARCHAR(20) DEFAULT 'g' COMMENT '计量单位', calories DECIMAL(8,2) COMMENT '热量(kcal/100g)', protein DECIMAL(8,2) COMMENT '蛋白质(g/100g)', fat DECIMAL(8,2) COMMENT '脂肪(g/100g)', carbs DECIMAL(8,2) COMMENT '碳水(g/100g)', fiber DECIMAL(8,2) COMMENT '膳食纤维(g/100g)', price_level TINYINT COMMENT '价格等级 1-5', nutrition_tags VARCHAR(500) COMMENT '营养标签JSON', suitable_for VARCHAR(200) COMMENT '适宜人群JSON', allergens VARCHAR(200) COMMENT '过敏原JSON', external_source VARCHAR(100) COMMENT '数据来源', external_id VARCHAR(100) COMMENT '外部ID', cover_image VARCHAR(500) COMMENT '食材图片', status VARCHAR(20) DEFAULT 'active', sort_order INT DEFAULT 0, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_category (category), INDEX idx_price (price_level);
|
|
|
-
|
|
|
--- meal_logs
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS meal_logs (id BIGINT AUTO_INCREMENT PRIMARY KEY, user_id BIGINT NOT NULL COMMENT '用户ID', child_id BIGINT COMMENT '孩子ID', meal_type VARCHAR(20) NOT NULL COMMENT '早餐/午餐/晚餐/加餐', meal_date DATE NOT NULL COMMENT '用餐日期', meal_time DATETIME COMMENT '具体时间', foods TEXT NOT NULL COMMENT '食物清单JSON', total_calories DECIMAL(8,2) COMMENT '总热量', total_protein DECIMAL(8,2) COMMENT '总蛋白质', total_fat DECIMAL(8,2) COMMENT '总脂肪', total_carbs DECIMAL(8,2) COMMENT '总碳水', total_fiber DECIMAL(8,2) COMMENT '总膳食纤维', note TEXT COMMENT '备注', images VARCHAR(1000) COMMENT '图片JSON', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, INDEX idx_user_date (user_id, meal_date), INDEX idx_child_date (child_id, meal_date);
|
|
|
-
|
|
|
--- product_skus
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS product_skus ( id INT NOT NULL AUTO_INCREMENT, product_id INT NOT NULL COMMENT '商品ID', sku_code VARCHAR(64) NOT NULL COMMENT 'SKU编码', specs JSON NOT NULL COMMENT '规格JSON', price DECIMAL(10,2) NOT NULL COMMENT 'SKU价格', stock INT NOT NULL DEFAULT 0 COMMENT '库存', original_price DECIMAL(10,2) COMMENT '原价/划线价', image VARCHAR(512) COMMENT 'SKU图片', enabled TINYINT(1) NOT NULL DEFAULT 1, create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_product_id (product_id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品SKU';
|
|
|
-
|
|
|
--- rdi_standards
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS rdi_standards (id BIGINT AUTO_INCREMENT PRIMARY KEY, nutrient_code VARCHAR(20) NOT NULL COMMENT '营养素编码', age_group VARCHAR(10) NOT NULL COMMENT '年龄段', gender VARCHAR(6) DEFAULT 'all' COMMENT '性别', rdi_type VARCHAR(10) NOT NULL COMMENT '参考类型', amount DECIMAL(10,4) NOT NULL COMMENT '推荐量', unit VARCHAR(20) NOT NULL COMMENT '单位', source VARCHAR(100) COMMENT '数据来源', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY uk_rdi (nutrient_code, age_group, gender, rdi_type), INDEX idx_age (age_group);
|
|
|
-
|
|
|
--- recipes
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS recipes (id BIGINT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(200) NOT NULL COMMENT '食谱名称', meal_type VARCHAR(20) COMMENT '早餐/午餐/晚餐/加餐', description TEXT COMMENT '简介', ingredients TEXT NOT NULL COMMENT '食材清单JSON', steps TEXT COMMENT '烹饪步骤JSON', cook_time INT COMMENT '烹饪时间(分钟)', difficulty VARCHAR(20) COMMENT '难度: 简单/中等/困难', total_calories DECIMAL(8,2) COMMENT '总热量', total_protein DECIMAL(8,2) COMMENT '总蛋白质', total_fat DECIMAL(8,2) COMMENT '总脂肪', total_carbs DECIMAL(8,2) COMMENT '总碳水', total_fiber DECIMAL(8,2) COMMENT '总膳食纤维', suitable_for VARCHAR(200) COMMENT '适宜场景', nutrition_tags VARCHAR(500) COMMENT '营养标签', external_source VARCHAR(100), external_id VARCHAR(100), cover_image VARCHAR(500), status VARCHAR(20) DEFAULT 'active', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_meal_type (meal_type), INDEX idx_cook_time (cook_time);
|
|
|
-
|
|
|
--- report_food_suitability
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS report_food_suitability (id BIGINT AUTO_INCREMENT PRIMARY KEY, report_id BIGINT NOT NULL COMMENT '健康报告ID', food_id BIGINT COMMENT '食材ID', food_name VARCHAR(100) NOT NULL COMMENT '食材名称', category VARCHAR(50) COMMENT '分类', score INT NOT NULL COMMENT '适宜度评分', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, INDEX idx_report (report_id), INDEX idx_food (food_id);
|
|
|
-
|
|
|
--- seasonal_foods
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS seasonal_foods (id BIGINT AUTO_INCREMENT PRIMARY KEY, food_id BIGINT NOT NULL COMMENT '关联foods.id', month TINYINT NOT NULL COMMENT '月份 1-12', region VARCHAR(50) DEFAULT '全国' COMMENT '产地', peak_flag TINYINT DEFAULT 0 COMMENT '盛产标志', sort_order INT DEFAULT 0, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, INDEX idx_food_month (food_id, month), INDEX idx_month (month);
|
|
|
-
|
|
|
--- shopping_list_items
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS shopping_list_items (id BIGINT AUTO_INCREMENT PRIMARY KEY, list_id BIGINT NOT NULL COMMENT '购物清单ID', food_id BIGINT COMMENT '食材ID', food_name VARCHAR(100) NOT NULL COMMENT '食材名称', category VARCHAR(50) COMMENT '分类', quantity DECIMAL(8,2) DEFAULT 1 COMMENT '数量', unit VARCHAR(20) DEFAULT '份' COMMENT '单位', priority VARCHAR(10) DEFAULT 'medium' COMMENT '优先级', reason VARCHAR(200) COMMENT '推荐原因', score INT COMMENT '评分', source VARCHAR(20) COMMENT '来源', purchased TINYINT DEFAULT 0 COMMENT '是否已购', purchased_at DATETIME COMMENT '购买时间', sort_order INT DEFAULT 0 COMMENT '排序', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, INDEX idx_list (list_id), INDEX idx_purchased (purchased);
|
|
|
-
|
|
|
--- shopping_lists
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS shopping_lists (id BIGINT AUTO_INCREMENT PRIMARY KEY, user_id BIGINT NOT NULL COMMENT '用户ID', child_id BIGINT COMMENT '孩子ID', report_id BIGINT COMMENT '健康报告ID', title VARCHAR(200) COMMENT '标题', source VARCHAR(20) NOT NULL COMMENT '来源', status VARCHAR(20) DEFAULT 'active' COMMENT '状态', total_items INT DEFAULT 0 COMMENT '总项数', purchased_items INT DEFAULT 0 COMMENT '已购项数', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_user (user_id), INDEX idx_report (report_id), INDEX idx_status (status);
|
|
|
-
|
|
|
--- user_food_preference
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS user_food_preference (id BIGINT AUTO_INCREMENT PRIMARY KEY, user_id BIGINT NOT NULL COMMENT '用户ID', food_id BIGINT COMMENT '食材ID', food_name VARCHAR(100) NOT NULL COMMENT '食材名称', score INT NOT NULL DEFAULT 0 COMMENT '评分', reason VARCHAR(500) COMMENT '原因', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_user (user_id);
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
--- ========== Schema.sql 补充: 从 entity 反向生成的表 ==========
|
|
|
-
|
|
|
--- article_quiz_records
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS article_quiz_records (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- article_id BIGINT,
|
|
|
- user_id BIGINT,
|
|
|
- child_id BIGINT,
|
|
|
- questions VARCHAR(255),
|
|
|
- answers VARCHAR(255),
|
|
|
- score INT,
|
|
|
- points_earned INT,
|
|
|
- created_at DATETIME,
|
|
|
- updated_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- assessment_results
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS assessment_results (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- child_id BIGINT,
|
|
|
- teacher_id BIGINT,
|
|
|
- appointment_id BIGINT,
|
|
|
- attention_score INT,
|
|
|
- focus_score INT,
|
|
|
- memory_score INT,
|
|
|
- logic_score INT,
|
|
|
- overall_score INT,
|
|
|
- assessment_date DATETIME,
|
|
|
- duration_minutes INT,
|
|
|
- analysis_report VARCHAR(255),
|
|
|
- growth_suggestions VARCHAR(255),
|
|
|
- next_review_date DATETIME,
|
|
|
- status VARCHAR(255),
|
|
|
- created_at DATETIME,
|
|
|
- updated_at DATETIME,
|
|
|
- child_name VARCHAR(255),
|
|
|
- child_birthday DATETIME,
|
|
|
- child_gender VARCHAR(255),
|
|
|
- child_age INT,
|
|
|
- school VARCHAR(255),
|
|
|
- grade VARCHAR(255),
|
|
|
- grade_class VARCHAR(255),
|
|
|
- height INT,
|
|
|
- weight INT,
|
|
|
- family_status VARCHAR(255),
|
|
|
- parent_degree VARCHAR(255),
|
|
|
- nation VARCHAR(255),
|
|
|
- province VARCHAR(255),
|
|
|
- city VARCHAR(255),
|
|
|
- district VARCHAR(255),
|
|
|
- address VARCHAR(255),
|
|
|
- single_child VARCHAR(255),
|
|
|
- school_score VARCHAR(255),
|
|
|
- urgent_name VARCHAR(255),
|
|
|
- urgent_phone VARCHAR(255),
|
|
|
- pics VARCHAR(255),
|
|
|
- videos VARCHAR(255),
|
|
|
- audio VARCHAR(255),
|
|
|
- audio_url VARCHAR(255),
|
|
|
- process_desc VARCHAR(255),
|
|
|
- result_desc VARCHAR(255)
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- cognitive_norms
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS cognitive_norms (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- dimension_key VARCHAR(255),
|
|
|
- gender VARCHAR(255),
|
|
|
- age_min INT,
|
|
|
- age_max INT,
|
|
|
- percentile5 INT,
|
|
|
- percentile25 INT,
|
|
|
- percentile50 INT,
|
|
|
- percentile75 INT,
|
|
|
- percentile95 INT,
|
|
|
- source VARCHAR(255),
|
|
|
- created_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- contact_match_requests
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS contact_match_requests (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- requester_id BIGINT,
|
|
|
- target_user_id BIGINT,
|
|
|
- contact_id BIGINT,
|
|
|
- status VARCHAR(255),
|
|
|
- message VARCHAR(255),
|
|
|
- created_at DATETIME,
|
|
|
- updated_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- daily_checkin
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS daily_checkin (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- member_id BIGINT,
|
|
|
- checkin_date DATETIME,
|
|
|
- diet_score INT,
|
|
|
- exercise_score INT,
|
|
|
- sleep_score INT,
|
|
|
- water_intake INT,
|
|
|
- mood_score INT,
|
|
|
- weight_kg DECIMAL(10,2),
|
|
|
- height_cm DECIMAL(10,2),
|
|
|
- remark VARCHAR(255),
|
|
|
- created_at DATETIME,
|
|
|
- updated_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- diet_meal_record
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS diet_meal_record (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- member_id BIGINT,
|
|
|
- checkin_id BIGINT,
|
|
|
- meal_type VARCHAR(255),
|
|
|
- food_name VARCHAR(255),
|
|
|
- food_amount VARCHAR(255),
|
|
|
- calories INT,
|
|
|
- protein DECIMAL(10,2),
|
|
|
- fat DECIMAL(10,2),
|
|
|
- carbs DECIMAL(10,2),
|
|
|
- fiber DECIMAL(10,2),
|
|
|
- eaten_at DATETIME,
|
|
|
- source VARCHAR(255),
|
|
|
- created_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- dimension_weights
|
|
|
-
|
|
|
+-- 维度权重表(管理端保存五维权重使用)
|
|
|
CREATE TABLE IF NOT EXISTS dimension_weights (
|
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- target_type VARCHAR(255),
|
|
|
- target_id BIGINT,
|
|
|
- dimension VARCHAR(255),
|
|
|
- weight INT,
|
|
|
- enabled TINYINT(1),
|
|
|
- created_at DATETIME,
|
|
|
- updated_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- emotion_alert
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS emotion_alert (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- child_id BIGINT,
|
|
|
- alert_type VARCHAR(255),
|
|
|
- severity VARCHAR(255),
|
|
|
- title VARCHAR(255),
|
|
|
- message VARCHAR(255),
|
|
|
- related_checkin_id BIGINT,
|
|
|
- resolved TINYINT(1),
|
|
|
- created_at DATETIME,
|
|
|
- resolved_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- energy_dimension_config
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS energy_dimension_config (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- dimension VARCHAR(255),
|
|
|
- data_source VARCHAR(255),
|
|
|
- category VARCHAR(255),
|
|
|
- weight INT,
|
|
|
- is_active INT,
|
|
|
- updated_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- exercise_record
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS exercise_record (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- member_id BIGINT,
|
|
|
- checkin_id BIGINT,
|
|
|
- exercise_type VARCHAR(255),
|
|
|
- duration_minutes INT,
|
|
|
- intensity VARCHAR(255),
|
|
|
- calories_burned INT,
|
|
|
- heart_rate_avg INT,
|
|
|
- heart_rate_max INT,
|
|
|
- start_time DATETIME,
|
|
|
- end_time DATETIME,
|
|
|
- remark VARCHAR(255),
|
|
|
- created_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- family_memberships
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS family_memberships (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- family_id BIGINT,
|
|
|
- level_code VARCHAR(255),
|
|
|
- start_date DATETIME,
|
|
|
- end_date DATETIME,
|
|
|
- payment_method VARCHAR(255),
|
|
|
- payment_status VARCHAR(255),
|
|
|
- order_no VARCHAR(255),
|
|
|
- transaction_id VARCHAR(255),
|
|
|
- amount INT,
|
|
|
- auto_renew INT,
|
|
|
- created_at DATETIME,
|
|
|
- updated_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- food_recommend_idx
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS food_recommend_idx (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- user_id BIGINT,
|
|
|
- food_id BIGINT,
|
|
|
- food_name VARCHAR(255),
|
|
|
- index_score INT,
|
|
|
- health_report_id BIGINT,
|
|
|
- calculated_at DATETIME,
|
|
|
- created_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- food_recommend_idx_log
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS food_recommend_idx_log (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- user_id BIGINT,
|
|
|
- food_id BIGINT,
|
|
|
- food_name VARCHAR(255),
|
|
|
- previous_index INT,
|
|
|
- new_index INT,
|
|
|
- health_report_id BIGINT,
|
|
|
- change_reason VARCHAR(255),
|
|
|
- changed_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- guide_activities
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS guide_activities (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- guide_id BIGINT,
|
|
|
- title VARCHAR(255),
|
|
|
- description VARCHAR(255),
|
|
|
- cover_image VARCHAR(255),
|
|
|
- category VARCHAR(255),
|
|
|
- location VARCHAR(255),
|
|
|
- activity_date DATETIME,
|
|
|
- max_participants INT,
|
|
|
- current_participants INT,
|
|
|
- price BIGINT,
|
|
|
- status VARCHAR(255),
|
|
|
- source VARCHAR(255),
|
|
|
- published_at DATETIME,
|
|
|
- created_at DATETIME,
|
|
|
- updated_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- guide_family_relations
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS guide_family_relations (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- guide_id BIGINT,
|
|
|
- family_id BIGINT,
|
|
|
- relation_type VARCHAR(255),
|
|
|
- status VARCHAR(255),
|
|
|
- created_at DATETIME,
|
|
|
- updated_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- guide_hierarchy
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS guide_hierarchy (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- parent_id BIGINT,
|
|
|
- child_id BIGINT,
|
|
|
- level INT,
|
|
|
- status VARCHAR(255),
|
|
|
- created_at DATETIME,
|
|
|
- updated_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- health_data_sources
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS health_data_sources (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- member_id BIGINT,
|
|
|
- source_type VARCHAR(255),
|
|
|
- dimension_codes VARCHAR(255),
|
|
|
- parsed_result VARCHAR(255),
|
|
|
- file_url VARCHAR(255),
|
|
|
- confidence DECIMAL(10,2),
|
|
|
- created_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- health_dimension_scores
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS health_dimension_scores (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- member_id BIGINT,
|
|
|
- dimension VARCHAR(255),
|
|
|
- score INT,
|
|
|
- percentile INT,
|
|
|
- data_source VARCHAR(255),
|
|
|
- tier INT,
|
|
|
- raw_data VARCHAR(255),
|
|
|
- assess_date DATETIME,
|
|
|
- expire_date DATETIME,
|
|
|
- created_at DATETIME,
|
|
|
- updated_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- health_growth_record
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS health_growth_record (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- member_id BIGINT,
|
|
|
- record_date DATETIME,
|
|
|
- height_cm DECIMAL(10,2),
|
|
|
- weight_kg DECIMAL(10,2),
|
|
|
- bmi DECIMAL(10,2),
|
|
|
- head_circumference DECIMAL(10,2),
|
|
|
- bone_age INT,
|
|
|
- tooth_age INT,
|
|
|
- growth_rate DECIMAL(10,2),
|
|
|
- percentile_height INT,
|
|
|
- percentile_weight INT,
|
|
|
- percentile_bmi INT,
|
|
|
- standard_type VARCHAR(255),
|
|
|
- source VARCHAR(255),
|
|
|
- created_at DATETIME,
|
|
|
- updated_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- health_norm_reference
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS health_norm_reference (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- dimension VARCHAR(255),
|
|
|
- gender VARCHAR(255),
|
|
|
- age_min INT,
|
|
|
- age_max INT,
|
|
|
- percentile5 INT,
|
|
|
- percentile15 INT,
|
|
|
- percentile25 INT,
|
|
|
- percentile50 INT,
|
|
|
- percentile75 INT,
|
|
|
- percentile85 INT,
|
|
|
- percentile95 INT,
|
|
|
- source VARCHAR(255),
|
|
|
- created_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- interaction_logs
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS interaction_logs (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- family_id BIGINT,
|
|
|
- from_member_id BIGINT,
|
|
|
- to_member_id BIGINT,
|
|
|
- interaction_type VARCHAR(255),
|
|
|
- description VARCHAR(255),
|
|
|
- happened_at DATETIME,
|
|
|
- created_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- membership_levels
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS membership_levels (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- level_code VARCHAR(255),
|
|
|
- level_name VARCHAR(255),
|
|
|
- level_desc VARCHAR(255),
|
|
|
- price_monthly INT,
|
|
|
- price_quarterly INT,
|
|
|
- price_yearly INT,
|
|
|
- features VARCHAR(255),
|
|
|
- max_children INT,
|
|
|
- max_tasks_per_day INT,
|
|
|
- ai_review_enabled INT,
|
|
|
- priority_support INT,
|
|
|
- teacher_consultation INT,
|
|
|
- created_at DATETIME,
|
|
|
- updated_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- mental_health_screen
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS mental_health_screen (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- child_id BIGINT,
|
|
|
- screen_type VARCHAR(255),
|
|
|
- answers VARCHAR(255),
|
|
|
- total_score INT,
|
|
|
- severity_level VARCHAR(255),
|
|
|
- risk_flags VARCHAR(255),
|
|
|
- suggestions VARCHAR(255),
|
|
|
- completed_at DATETIME,
|
|
|
- created_at DATETIME,
|
|
|
- updated_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- order_items
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS order_items (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- order_id BIGINT,
|
|
|
- product_id BIGINT,
|
|
|
- sku_id BIGINT,
|
|
|
- product_name VARCHAR(255),
|
|
|
- product_image VARCHAR(255),
|
|
|
- sku_specs VARCHAR(255),
|
|
|
- price DECIMAL(10,2),
|
|
|
- quantity INT,
|
|
|
- subtotal DECIMAL(10,2)
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- payment_orders
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS payment_orders (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- order_no VARCHAR(255),
|
|
|
- family_id BIGINT,
|
|
|
- level_code VARCHAR(255),
|
|
|
- payment_type VARCHAR(255),
|
|
|
- period VARCHAR(255),
|
|
|
- amount INT,
|
|
|
- user_coupon_id BIGINT,
|
|
|
- status VARCHAR(255),
|
|
|
- pay_method VARCHAR(255),
|
|
|
- transaction_id VARCHAR(255),
|
|
|
- paid_at DATETIME,
|
|
|
- created_at DATETIME,
|
|
|
- updated_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- points_exchange_products
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS points_exchange_products (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- name VARCHAR(255),
|
|
|
- description VARCHAR(255),
|
|
|
- cover_image VARCHAR(255),
|
|
|
- points_price INT,
|
|
|
- stock INT,
|
|
|
- product_type VARCHAR(255),
|
|
|
- category VARCHAR(255),
|
|
|
- expiry_days INT,
|
|
|
- sort_order INT,
|
|
|
- status VARCHAR(255),
|
|
|
- created_at DATETIME,
|
|
|
- updated_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- points_exchange_records
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS points_exchange_records (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- user_id BIGINT,
|
|
|
- child_id BIGINT,
|
|
|
- family_member_id BIGINT,
|
|
|
- product_id BIGINT,
|
|
|
- product_name VARCHAR(255),
|
|
|
- points_cost INT,
|
|
|
- quantity INT,
|
|
|
- status VARCHAR(255),
|
|
|
- redeem_code VARCHAR(255),
|
|
|
- expired_at DATETIME,
|
|
|
- created_at DATETIME,
|
|
|
- updated_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- promotion_materials
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS promotion_materials (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- title VARCHAR(255),
|
|
|
- description VARCHAR(255),
|
|
|
- material_type VARCHAR(255),
|
|
|
- cover_url VARCHAR(255),
|
|
|
- file_url VARCHAR(255),
|
|
|
- tags VARCHAR(255),
|
|
|
- usage_scenario VARCHAR(255),
|
|
|
- sort_order INT,
|
|
|
- status VARCHAR(255),
|
|
|
- created_by BIGINT,
|
|
|
- created_at DATETIME,
|
|
|
- updated_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- relationship_questionnaire_responses
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS relationship_questionnaire_responses (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- snapshot_id BIGINT,
|
|
|
- respondent_id BIGINT,
|
|
|
- answers_json VARCHAR(255),
|
|
|
- trust_score DECIMAL(10,2),
|
|
|
- intimacy_score DECIMAL(10,2),
|
|
|
- communication_score DECIMAL(10,2),
|
|
|
- interaction_bonus DECIMAL(10,2),
|
|
|
- total_score DECIMAL(10,2),
|
|
|
- calculated_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- relationship_questionnaire_snapshots
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS relationship_questionnaire_snapshots (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- family_member_id BIGINT,
|
|
|
- respondent_id BIGINT,
|
|
|
- member_name VARCHAR(255),
|
|
|
- relationship_type VARCHAR(255),
|
|
|
- ai_generated_json VARCHAR(255),
|
|
|
- version VARCHAR(255),
|
|
|
- created_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- share_events
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS share_events (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- user_id BIGINT,
|
|
|
- target_type VARCHAR(255),
|
|
|
- target_id BIGINT,
|
|
|
- share_channel VARCHAR(255),
|
|
|
- share_title VARCHAR(255),
|
|
|
- share_url VARCHAR(255),
|
|
|
- click_count INT,
|
|
|
- read_count INT,
|
|
|
- reward_points INT,
|
|
|
- status VARCHAR(255),
|
|
|
- expires_at DATETIME,
|
|
|
- created_at DATETIME,
|
|
|
- updated_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- share_reads
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS share_reads (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- share_event_id BIGINT,
|
|
|
- reader_id BIGINT,
|
|
|
- reader_ip VARCHAR(255),
|
|
|
- read_duration INT,
|
|
|
- read_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- sleep_record
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS sleep_record (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- member_id BIGINT,
|
|
|
- checkin_id BIGINT,
|
|
|
- sleep_time DATETIME,
|
|
|
- wake_time DATETIME,
|
|
|
- duration_minutes INT,
|
|
|
- deep_sleep_minutes INT,
|
|
|
- light_sleep_minutes INT,
|
|
|
- rem_minutes INT,
|
|
|
- quality_score INT,
|
|
|
- dream_count INT,
|
|
|
- remark VARCHAR(255),
|
|
|
- created_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- teachers
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS teachers (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- user_id BIGINT,
|
|
|
- teacher_no VARCHAR(255),
|
|
|
- title VARCHAR(255),
|
|
|
- specialty VARCHAR(255),
|
|
|
- bio VARCHAR(255),
|
|
|
- experience_years INT,
|
|
|
- rating INT,
|
|
|
- total_appointments INT,
|
|
|
- status VARCHAR(255),
|
|
|
- verification_status VARCHAR(255),
|
|
|
- street_id BIGINT,
|
|
|
- province VARCHAR(255),
|
|
|
- city VARCHAR(255),
|
|
|
- district VARCHAR(255),
|
|
|
- street VARCHAR(255),
|
|
|
- verified_at DATETIME,
|
|
|
- created_at DATETIME,
|
|
|
- updated_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- training_plan_items
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS training_plan_items (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- plan_id BIGINT,
|
|
|
- sequence INT,
|
|
|
- dimension_key VARCHAR(255),
|
|
|
- suggestion VARCHAR(255),
|
|
|
- task_title VARCHAR(255),
|
|
|
- task_desc VARCHAR(255),
|
|
|
- minigame_code VARCHAR(255),
|
|
|
- article_id BIGINT,
|
|
|
- task_points INT,
|
|
|
- deadline_days INT,
|
|
|
- status VARCHAR(255),
|
|
|
- completed_at DATETIME,
|
|
|
- created_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- training_plans
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS training_plans (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- guide_id BIGINT,
|
|
|
- child_id BIGINT,
|
|
|
- title VARCHAR(255),
|
|
|
- description VARCHAR(255),
|
|
|
- status VARCHAR(255),
|
|
|
- source VARCHAR(255),
|
|
|
- deployed_at DATETIME,
|
|
|
- created_at DATETIME,
|
|
|
- updated_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- training_plan_tasks
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS training_plan_tasks (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- plan_id BIGINT,
|
|
|
- plan_item_id BIGINT,
|
|
|
- task_id BIGINT,
|
|
|
- child_id BIGINT,
|
|
|
- status VARCHAR(255),
|
|
|
- created_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- upgrade_services
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS upgrade_services (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- guide_id BIGINT,
|
|
|
- from_level VARCHAR(255),
|
|
|
- to_level VARCHAR(255),
|
|
|
- service_fee INT,
|
|
|
- status VARCHAR(255),
|
|
|
- reviewed_by BIGINT,
|
|
|
- reviewed_at DATETIME,
|
|
|
- reject_reason VARCHAR(255),
|
|
|
- created_at DATETIME,
|
|
|
- updated_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- user_nutrition_profile
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS user_nutrition_profile (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- user_id BIGINT,
|
|
|
- fruit_allergy VARCHAR(255),
|
|
|
- fruit_preferences VARCHAR(255),
|
|
|
- questionnaire_status VARCHAR(255),
|
|
|
- budget_monthly INT,
|
|
|
- family_taste_preferences VARCHAR(255),
|
|
|
- cuisine_style VARCHAR(255),
|
|
|
- meal_count INT,
|
|
|
- cooking_ability VARCHAR(255),
|
|
|
- created_at DATETIME,
|
|
|
- updated_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- user_rfm_tags
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS user_rfm_tags (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- user_id BIGINT,
|
|
|
- r_score INT,
|
|
|
- f_score INT,
|
|
|
- m_score INT,
|
|
|
- rfm_tier VARCHAR(255),
|
|
|
- total_orders INT,
|
|
|
- total_amount DECIMAL(10,2),
|
|
|
- last_order_at DATETIME,
|
|
|
- updated_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- user_trigger_rules
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS user_trigger_rules (
|
|
|
- user_id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- action_config VARCHAR(255),
|
|
|
- last_triggered_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- water_record
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS water_record (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- member_id BIGINT,
|
|
|
- checkin_id BIGINT,
|
|
|
- amount_ml INT,
|
|
|
- water_type VARCHAR(255),
|
|
|
- drunk_at DATETIME,
|
|
|
- created_at DATETIME
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
-
|
|
|
--- =============================================
|
|
|
--- 家庭成员变更日志表
|
|
|
--- =============================================
|
|
|
-
|
|
|
-CREATE TABLE IF NOT EXISTS family_member_logs (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- family_id BIGINT NOT NULL COMMENT '家庭ID',
|
|
|
- member_id BIGINT NOT NULL COMMENT '成员ID',
|
|
|
- action VARCHAR(32) NOT NULL COMMENT '操作: join/leave/update/kick',
|
|
|
- old_value VARCHAR(500) COMMENT '旧值',
|
|
|
- new_value VARCHAR(500) COMMENT '新值',
|
|
|
- operator_id BIGINT COMMENT '操作人用户ID',
|
|
|
- created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
|
- INDEX idx_family_id (family_id),
|
|
|
- INDEX idx_member_id (member_id)
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='家庭成员变更日志';
|
|
|
+ target_type VARCHAR(20) NOT NULL COMMENT '目标类型: activity/product/article',
|
|
|
+ target_id BIGINT NOT NULL COMMENT '目标ID',
|
|
|
+ dimension VARCHAR(20) NOT NULL COMMENT '维度: body/mind/wisdom/action/wealth',
|
|
|
+ weight INT DEFAULT 0 COMMENT '权重百分比',
|
|
|
+ enabled TINYINT(1) DEFAULT 0 COMMENT '是否启用',
|
|
|
+created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
|
+updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
+INDEX idx_target (target_type, target_id)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='维度权重表';
|
|
|
|
|
|
-- 健康打卡 - 运动记录
|
|
|
-CREATE TABLE IF NOT EXISTS exercise_record (
|
|
|
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- member_id BIGINT NOT NULL COMMENT '家庭成员ID',
|
|
|
- checkin_id BIGINT COMMENT '关联打卡ID',
|
|
|
- exercise_type VARCHAR(32) COMMENT '运动类型: run/swim/yoga/walk/cycle/other',
|
|
|
- duration_minutes INT COMMENT '时长(分钟)',
|
|
|
- intensity VARCHAR(16) COMMENT '强度: low/medium/high',
|
|
|
- calories_burned INT COMMENT '消耗热量(千卡)',
|
|
|
- heart_rate_avg INT COMMENT '平均心率',
|
|
|
- heart_rate_max INT COMMENT '最大心率',
|
|
|
- start_time DATETIME COMMENT '开始时间',
|
|
|
- end_time DATETIME COMMENT '结束时间',
|
|
|
- remark TEXT COMMENT '备注',
|
|
|
- created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
|
- INDEX idx_member_id (member_id)
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='运动打卡记录';
|
|
|
-
|
|
|
--- 健康打卡 - 睡眠记录
|
|
|
CREATE TABLE IF NOT EXISTS sleep_record (
|
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
|
member_id BIGINT NOT NULL COMMENT '家庭成员ID',
|