LAOP-admin/PRD-无人机信息开放平台小程序.md
2026-09-18 16:45:38 +08:00

47 KiB
Raw Permalink Blame History

翼云Hub · 产品文档(PRD)

Slogan:全链路低空体系聚合,打破供需两端信息壁垒。

版本 v1.0 · 待开发 主色:#5E46F6(深紫主色)/ #7C6AF8(辅)/ #F2EFFE(底)/ #FFFFFF(卡)/ #F59E0B(金色点缀) 导航:4 个底部一级 Tab(首页 / 任务中心 / 研学与课程 / 个人中心) 参考原型:图2(首页结构)· 图3(个人中心结构)· 图1(功能菜单来源)


0. 修订记录

版本 日期 主要变更
v1.0 待开发 初版产品需求文档,以图 1 功能菜单为蓝本,4 Tab 结构(首页 / 任务中心 / 研学与课程 / 个人中心)

1. 背景与机会

1.1 背景

国内民用无人机产业进入"持证合规 + 商业落地"双驱动的爆发期。CAAC(民用无人驾驶航空器综合管理平台)2024 年起强制要求超 250g 机型实名注册、操控员持证;植保、巡检、航拍、表演四大场景的商业订单快速放量,但供需两端存在明显错配。

  • 需求侧(商家/客户):临时用机、航拍交付、植保作业、应急巡检,缺可信飞手,缺合同/合规保障
  • 供给侧(飞手):持证后无稳定接单渠道,资质难被看见
  • 服务端(培训机构、维修点、保险公司、租赁商):缺精准流量

行业缺少一个"开放聚合 + 资质可信 + 交易闭环"的信息平台。

1.2 目标(北极星指标)

阶段 目标 北极星指标
M3 上线跑通 认证飞手数 ≥ 3,000;认证商家数 ≥ 500
M6 双边活跃 月成交任务数 ≥ 2,000;月活飞手 ≥ 5,000
M12 行业心智 CAAC 报名转化率行业第一;"找飞手"心智占位

1.3 用户角色

角色 占比 核心诉求 关键场景
C1 飞手 50% 接单变现、资质展示、考证指引 任务中心接单、飞手中心、刷题
C2 商家/客户 30% 发布需求、找可信飞手、合规交付 任务中心发单、查附近、CAAC 报名
C3 培训机构 10% 招生、课程展示、品牌曝光 商家认证、题库合作
C4 服务商 10% 流量、订单分发 商家认证

2. 导航与功能架构

2.1 底部 Tab(4 个)

序号 Tab 定位 核心目的
① 首页 流量分发中枢 黄金位 + 9 宫格 + 供需双广场 + 优质任务 1 条
② 任务中心 交易主战场 任务列表 + 多维度筛选 + 抢单
③ 研学与课程 内容/服务留存 课程展示 + 预约
④ 个人中心 身份与认证 我的任务 + 飞手/商家双身份认证 + 推广

2.2 全量功能清单(按图 1 + 业务扩展)

一级 Tab 二级入口 三级 / 页面 价值 优先级
首页 城市定位 定位选择 LBS 入口 P0
顶部轮播 CAAC 报名 / 招商 / 表演 运营位 P0
公告条 最新政策 / 新闻 内容置顶 P0
9 宫格金刚区(详见 2.3) 9 个入口 流量分发 P0
供需双广场(独立菜单) 商家发单 · 飞手接单 核心交易入口 P0
优质任务(仅 1 张) 首页露出 1 张顶部任务 转化错点 P0
任务中心 筛选按钮 推荐 / 附近 / 高价 / 长期 排序入口 P0
⚙ 筛选按钮 7 组 / 55 个筛选项(右侧抽屉) 精准筛选 P0
任务列表(横向大卡) 1 优质 + 多普通任务 抢单入口 P0
任务详情 详情页 + IM + 接单 成交 P0
研学与课程 分类 Tab 全部 / 认知启蒙 / 技能进阶 / 创新应用 / 竞赛辅导 内容导航 P0
课程列表 卡片列表(6门真实案例课程) 内容/服务留存 P0
课程详情 课程信息 + 预约入口 深度了解 P0
研学预约 填写信息提交预约 核心转化 P0
个人中心 我的任务(3 态) 待接单 / 进行中 / 已完成 任务管理 P0
飞手推广 老带新得积分 拉新 P0
认证与工具 飞手认证 / 商家认证 / 我的发布 / 实名认证 身份门槛 P0
飞手中心 / 商家中心 身份聚合 P0

2.3 首页 9 宫格金刚区(9 个入口)

# 入口 跳转 备注
1 CAAC 报名 报名页 强引流,潜在客转化
2 无人机表演 表演列表 高客单
3 实力商家 商家列表 信任锚点
4 本地飞手 飞手列表 信任锚点
5 培训考试 培训模块 留存 + 引流
6 发布任务 发布任务页(需商家认证) 商家侧入口
7 我要接单 任务中心(需飞手认证) 飞手侧入口
8 飞手推广 推广页(带 HOT 角标) 拉新
9 滴滴打无人机 调度页(类打车模式) 新功能·核心亮点

3. 功能关联分析(核心)

3.1 三大 Tab 关联总览

┌──────────────────────────────────────────────────────────┐
│  首页(流量分发中枢)                                     │
│  轮播位 ─→ 强运营:CAAC报名 / 表演 / 招商                 │
│  公告 ─→ 政策更新、行业新闻(点击跳行业动态详情)          │
│  金刚区(9 宫格) ─→ 功能分发                              │
│       ├─ CAAC报名 ──→ 飞手认证 ──→ 训练题库              │
│       ├─ 无人机表演 ──→ 任务中心(高客单任务)            │
│       ├─ 实力商家 ──→ 商家认证入口(个人中心)            │
│       ├─ 本地飞手 ──→ 飞手认证入口(个人中心)            │
│       ├─ 培训考试 ──→ 附近商家 + 题库刷题                │
│       ├─ 发布任务 ──→ 商家认证校验(个人中心)            │
│       └─ 我要接单 ──→ 飞手认证校验(个人中心)            │
└──────────────────────────────────────────────────────────┘
            │                       │
            ▼                       ▼
      研学与课程             个人中心 · 身份
      (内容留存)            飞手 ←─→ 商家
            │                       │
            └──────────┬────────────┘
                       ▼
              ┌─────────────────┐
              │    任务中心      │
              │  商家发单/飞手接单│
              │  (需对应身份认证)│
              └─────────────────┘

3.2 关键功能关联(10 条)

# 触发点 关联点 业务价值
1 CAAC 报名点击 → 飞手认证引导页 流量 → 认证漏斗
2 实力商家 / 本地飞手 → 详情页 + IM + 收藏 信任 → 咨询 → 成交
3 培训考试题库 → 错题 → 课程推荐 学习 → 报名 → 机构
4 商家发单 → 校验商家认证状态 未认证阻断 + 引导
5 飞手接单 → 校验飞手认证 + 保险 风控前置
6 任务中心"优质任务"标签 → 付费订阅 / 会员 GMV 提升
7 飞手推广 → 老带新积分 拉新
8 附近商家 → 定位授权 + 商家详情 LBS 转化
9 研学课程详情 → 相关任务 / 商家挂载 内容 → 交易
11 滴滴打无人机 → 无人机飞手网络 → 配送任务派单 新增核心功能
10 资质中心 → 过期提醒 + 续期 长期留存

3.3 首页信息流(自上而下)

1. 状态栏
2. 城市定位(如:全国 / 上海)+ 消息/设置
3. 轮播图(CAAC 报名 / 招商 / 表演)
4. 公告条(最新政策 / 新闻)
5. 9 宫格金刚区(9 个入口,详见 2.3)
6. 供需双广场(独立菜单 · 仿图 1)
       左卡:📤 商家发单  │  右卡:🛩 飞手接单
7. 滴滴打无人机(同城即时配送)
       地图动画示意(无人机飞手轨迹)
       配送流程 4 步:骑手取货 → 无人机起飞 → 配送中 → 预计到达
       底部快捷下单栏:30 分钟必达 · 支持紧急件
8. 研学体系(首页展示课程 · 2~3 张横向卡)
       ① [两天一晚世园无人机研学课程] ¥1,388/期
       ② [无人机技能进阶营(3-5天)] ¥2,680/期
       ③ [鄂尔多斯雏鹰计划] ¥3,200/期

3.4 任务中心 Tab

顶部筛选按钮栏:
[⚙ 筛选▾]  [📍 附近]   ← 推荐/高价/长期 已合并到筛选面板

点击 [⚙ 筛选] → 右侧抽屉式筛选面板(7 组 / 55 个筛选项):
  · 任务分类(7)     全部 / 植保 / 航拍 / 巡检 / 表演 / 吊运 / 测绘
  · 任务状态(5)     全部 / 待接单 / 已接单 / 执行中 / 已完成
  · 价格预算(5+输入)不限 / 0-3千 / 3-10千 / 1-5万 / 5万以上 + 自定义
  · 所在地区(9)     全国 + 8 省市
  · 人员数量(5)     不限 / 1人 / 2人 / 3-5人 / 5人以上
  · 发布时间(5)     全部 / 今天 / 3天内 / 本周内 / 本月内
  · 其他筛选(5)     优质任务 / 含飞手险 / 长期合作 / 急单 / 团队单

主体任务卡(仿图 1 横向大卡):
  · 头部:标签(分类 + 优质 + 状态)+ 地点
  · 标题:粗体任务名
  · 左图右信息卡:地点 / 人数 / 时间
  · 底部:价格(左侧大字号)+ 操作按钮(查看附近飞手 / 去抢单)
  · 描述:飞手险 + 任务详情(实景文字)

优质任务强化(仅首卡):
  · 金色边框 + 米黄渐变背景 + 金色 ★ 徽标
  · 金色价格 + 金色 CTA 按钮
  · 右上角金色光晕

3.5 滴滴打无人机 Tab(独立 Tab)

核心定位:同城即时配送平台,配送端为无人机(类比美团/闪送,骑手换无人机)

核心业务流程:
  用户下单 → 系统派单给附近无人机 → 无人机取货起飞 → 配送中(实时轨迹)→ 送达

功能清单:
  · 一键下单:填写取货/收货地址 + 物品重量/类型 → 生成订单
  · 配送地图:无人机轨迹实时展示(起飞点→配送中→到达)
  · 配送流程:4 步追踪(骑手取货 / 无人机起飞 / 配送中 / 预计到达)
  · 计价规则:按距离 + 重量 + 时效(普通件/加急件)
  · 配送范围:同城 30 分钟必达,支持紧急件
  · 飞手/商家入驻:认证后接入配送网络

展示 4 步配送流程示例(首页版):
  ① ✓ 骑手取货  09:14
  ② ✓ 无人机起飞  09:16  [T100 起飞]
  ③ 🚁 配送中  09:17  [飞行高度 120m · 时速 60km/h]
  ④ ◎ 预计到达  09:25  [送货上门]

底部下单栏:30 分钟内送达 · 支持紧急件  [立即下单]

3.6 研学与课程 Tab

分类 Tab:全部 / 认知启蒙 / 技能进阶 / 创新应用 / 竞赛辅导

课程卡片字段:
  · 标签(热门/推荐/新开)+ 分类标签 + 对象年龄
  · 课程名 + 地点 + 时长
  · 课程亮点(3项展开)
  · 价格 + [立即预约] 按钮

展示 6 门真实课程案例:
  ① 两天一晚世园无人机研学课程(北京)¥1,388/期  [热门·青少年·认知启蒙]
  ② 无人机技能进阶营(3-5天)¥2,680/期            [技能进阶·初中生]
  ③ 鄂尔多斯科技馆「雏鹰计划」(8天16课)¥3,200   [创新应用·高中生]
  ④ 「越州蒲公英计划」青少年无人机研学(绍兴)¥680 [竞赛辅导·青少年]
  ⑤ 「智趣少年营」无人机兴趣课程(社区)¥380      [趣味科普·零基础]
  ⑥ 「小小农发人」无人机农业研学之旅(简阳)¥280  [农业应用·亲子]

预约交互:[立即预约] → 弹出预约表单(姓名/手机/人数/备注)→ 提交成功提示

3.6 个人中心信息流(自上而下)

1. 顶部渐变区(无右上角图标):
       👤 头像 + 登录/注册按钮
2. 我的任务(3 态):
       [📋 待接单 2]  [🛩 进行中 1]  [✓ 已完成]
3. 飞手推广 Banner:
       📢 邀请飞手认证 · 认证得积分 · 积分可提现   [去推广 ›]
4. 认证与工具:
       上排 4:[飞手认证] [商家认证] [我的发布] [实名认证]
       下排 2:[🏆飞手中心] [🏬商家中心]

❌ 已删除模块:我的服务(优惠券/商家发货/分销绑定/收货地址)、信息完善、飞手资质、商家资质、功能关联导览、个人中心右上角 3 图标(App/消息/设置)。


4. 核心流程

4.1 飞手入驻

注册 / 微信一键登录 → 飞手认证(上传 CAAC 执照 + 身份证 + 机型)→ 审核(1 工作日)→ 通过 → 进入任务中心接单

4.2 商家发单

注册 → 商家认证(营业执照 + 法人身份证 + 经营范围)→ 审核 → 通过 → 任务中心 → 发布任务(类型 / 地点 / 时间 / 预算 / 机型要求)→ 飞手接单 → 双方 IM 确认 → 线下执行 → 平台评价 → 抽佣结算

4.3 任务状态机

待接单 → 已接单(待执行)→ 执行中 → 待验收 → 已完成
                                    ↓
                                异常:取消 / 申诉 / 退款

4.4 认证状态机

未认证 → 资料上传中 → 审核中(≤24h)→ 已认证(有效 1 年)→ 即将过期(30 天)→ 过期
                                                            ↓
                                                        续期申请

4.5 筛选交互流程

点击 [⚙ 筛选] → 右侧抽屉滑入 → 7 组筛选项可点击切换 → 自定义价格输入 → [重置全部] 或 [确认筛选 (12)] → 关闭抽屉 → 列表刷新 + 提示"筛选已应用"


5. 信息架构

5.1 页面清单(28 个)

模块 页面
通用 启动页、登录/注册、消息中心、定位选择
首页 首页、新闻列表、新闻详情、CAAC 报名、无人机表演列表 / 详情
商家 / 飞手 实力商家列表 / 详情、本地飞手列表 / 详情
培训 培训考试首页、附近商家(培训)、题库刷题、错题本
任务中心 任务中心首页、发布任务、我要接单、任务详情、任务管理、筛选面板
研学与课程 列表(全部 / 认知启蒙 / 技能进阶 / 创新应用 / 竞赛辅导)、详情、预约
我的 我的首页(任务 3 态)、飞手推广、飞手认证、商家认证、我的发布、实名认证、飞手中心、商家中心、关于我们

5.2 底部 Tab(4 个 · 按图 1 一级菜单)

  • 首页:流量分发
  • 任务中心:核心交易(独立 Tab · 必到)
  • 行业动态:资讯流
  • 个人中心:身份与认证

与图 1 一级菜单对应关系:图 1 的"首页" = 本文档的首页 + 任务中心(交易功能下沉到 Tab);图 1 的"行业动态" = 研学与课程 Tab;图 1 的"个人中心" = 同名 Tab。


6. UI 规范

6.1 色彩系统

用途 颜色 备注
主色 #5E46F6 = rgb(94,70,246) 品牌色 · 按钮 / Tag / 强调 / Tab 选中 / 阴影
辅助紫 #7C6AF8 次级按钮、渐变起点
浅紫底 #F2EFFE 页面背景、Tab 浅态
卡片白 #FFFFFF 内容卡
文字主 #1A1730 标题
文字次 #5E5870 描述
文字弱 #9D97AE 提示
成功 #22C55E 认证通过
警告 #F59E0B 即将过期
错误 #EF4444 失败
金色点缀 #F59E0B 优质任务标签 / 价格 / CTA / 边框

6.2 字体

  • iOS:PingFang SC
  • Android:系统默认
  • 字号阶梯:11 / 12 / 13 / 14 / 15 / 17 / 20 / 24 / 32

6.3 圆角 / 阴影

  • 卡圆角:12-16 px
  • 按钮圆角:8-14 px
  • 头像圆角:50%
  • 卡阴影:0 2px 12px rgba(94,70,246,0.10) ——--shadow
  • 任务中心卡阴影:0 4px 16px rgba(94,70,246,0.12) ——--shadow-md
  • 大阴影(轮播 / Banner):0 8px 24px rgba(94,70,246,0.18) ——--shadow-lg
  • 优质任务金色阴影:0 6px 20px rgba(245,158,11,0.22)

7. 关键指标

指标 目标(M3) 监控位
CAAC 报名点击 → 提交转化率 ≥ 35% 首页轮播点击
飞手认证完成率 ≥ 60% 引导页漏斗
任务中心点击率 ≥ 50% 首页"供需双广场" + "优质任务"
优质任务点击 → 接单 ≥ 20% 任务中心首卡
任务平均成交时长 ≤ 4h 任务详情
7 日留存 ≥ 30% 启动埋点
研学与课程 Tab PV 首页 PV 的 30% Tab 切换埋点
筛选面板使用率 ≥ 15% 任务中心 Tab

8. 风险与对策

风险 等级 对策
飞手资质造假 高 接入 CAAC 接口核验执照真伪 + 履约保证金
商家拖欠 / 跑单 高 平台担保支付 + 评价 + 黑名单
飞手人身安全 中 保险合作 + 紧急 SOS 按钮 + 行程共享
监管政策变化 中 法务对接民航局,配置审核人力
冷启动供需 中 地推:先与 3-5 家培训机构、2-3 个无人机协会合作
优质任务供给不足 中 平台补贴 + 头部商家 BD
首页任务中心被弱化 中 顶部"优质任务"金色强化 + 供需双广场独立菜单导流
低空配送合规(飞行审批/空域限制) 高 对接 UOM 平台获取飞行许可;设置电子围栏自动拦截禁飞区订单
配送延误/事故(天气/机械故障) 中 无人机状态实时监控;天气预警自动暂停;备用机调度机制

9. 版本规划

版本 时间 内容
v1.0 待开发 首页 + 任务中心 + 研学与课程 + 个人中心,4 Tab 完整功能
v2.0 M3 培训题库 + 保险合作 + 智能匹配
v3.0 M6+ 行业 SaaS + AR 展示 + 地图找飞手

10. 附录:与原图功能对照表

10.1 一级菜单对照

图 1 一级菜单 本文档 Tab 关键二级
首页 首页 + 任务中心 9 宫格 + 供需双广场 + 滴滴打无人机 + 研学体系
行业动态 研学与课程 列表 + 详情 + 预约(6 门课程)
个人中心 个人中心 任务 3 态 + 飞手 / 商家双身份认证 + 推广

10.2 二级菜单对照

图 1 二级菜单 本文档对应 实现位置
新闻咨询 ✓ 首页轮播 + 公告(研学与课程内容)
CAAC 报名 ✓ 首页 9 宫格 #1 + 独立页
无人机表演 ✓ 首页 9 宫格 #2 + 独立板块
实力商家 ✓ 首页 9 宫格 #3 + 商家列表
本地飞手 ✓ 首页 9 宫格 #4 + 飞手列表
培训考试 ✓ 首页 9 宫格 #5 + 培训模块
供需双广场 ✓(独立菜单) 首页 6 区(左:商家发单 / 右:飞手接单)
优质任务 ✓ 首页 7 区(仅 1 张金色强化卡)+ 任务中心首卡
信息完善 ❌(已删除) 个人中心(合并到飞手 / 商家认证流程中)
飞手认证 ✓ 个人中心「认证与工具」上排 #1
飞手资质中心 ❌(已删除) 资质合并到飞手认证页面
商家认证 ✓ 个人中心「认证与工具」上排 #2
商家资质中心 ❌(已删除) 资质合并到商家认证页面
关于我们 ✓ 个人中心底部

11. 数据库设计(DDL)

数据库类型:MySQL 8.0 字符集:utf8mb4 / 排序规则:utf8mb4_unicode_ci 所有表均含 created_at / updated_at 通用字段;主键均使用 BIGINT 自增;软删除用 deleted_at


11.1 公告表 announcement

字段 类型 说明 约束
id BIGINT 主键 PK, AUTO_INCREMENT
title VARCHAR(100) 公告标题 NOT NULL
content TEXT 公告正文
valid_from DATETIME 生效开始时间
valid_to DATETIME 生效结束时间
status TINYINT 状态:0隐藏 1显示 DEFAULT 1
sort_order INT 排序,越小越靠前 DEFAULT 0
publisher_id BIGINT 发布人ID(关联user.id)
created_at DATETIME 创建时间 DEFAULT CURRENT_TIMESTAMP
updated_at DATETIME 更新时间
deleted_at DATETIME 软删除时间
CREATE TABLE announcement (
    id          BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
    title       VARCHAR(100) NOT NULL COMMENT '公告标题',
    content     TEXT COMMENT '公告正文',
    valid_from  DATETIME COMMENT '生效开始时间',
    valid_to    DATETIME COMMENT '生效结束时间',
    status      TINYINT DEFAULT 1 COMMENT '状态:0隐藏 1显示',
    sort_order  INT DEFAULT 0 COMMENT '排序',
    publisher_id BIGINT COMMENT '发布人ID',
    created_at  DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    updated_at  DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    deleted_at  DATETIME DEFAULT NULL COMMENT '软删除时间',
    INDEX idx_status_sort (status, sort_order),
    INDEX idx_valid_period (valid_from, valid_to)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='公告表';

11.2 任务表 task

字段 类型 说明 约束
id BIGINT 主键 PK, AUTO_INCREMENT
task_no VARCHAR(32) 任务编号(全局唯一) UNIQUE
name VARCHAR(100) 任务名称 NOT NULL
type VARCHAR(20) 任务类型:植保/吊运/航拍/巡检/清洗/表演/测绘 NOT NULL
province VARCHAR(20) 省份
city VARCHAR(20) 城市
district VARCHAR(20) 区县
address VARCHAR(200) 详细地址
latitude DECIMAL(10,6) 纬度坐标
longitude DECIMAL(10,6) 经度坐标
scene_images JSON 作业场景图(file_id数组)
required_count INT 需求人数 DEFAULT 1
start_time DATETIME 开始时间 NOT NULL
end_time DATETIME 结束时间
reward DECIMAL(10,2) 报酬(元) NOT NULL
insurance_require JSON 保险要求:三者险/飞手险/机身险
contact_name VARCHAR(50) 联系人姓名
contact_phone VARCHAR(20) 联系电话 NOT NULL
remark TEXT 备注
status TINYINT 状态:0草稿 1待接单 2已接单 3执行中 4已完成 5已取消 DEFAULT 0
is_premium TINYINT 是否优质任务:0否 1是 DEFAULT 0
premium_cost INT 优质任务积分消耗 DEFAULT 0
publisher_id BIGINT 发布人ID(关联user.id) NOT NULL
accepted_pilot_id BIGINT 接单飞手ID(关联pilot.id)
platform_fee DECIMAL(10,2) 平台服务费 DEFAULT 0.00
created_at DATETIME 创建时间 DEFAULT CURRENT_TIMESTAMP
updated_at DATETIME 更新时间
deleted_at DATETIME 软删除时间
CREATE TABLE task (
    id              BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
    task_no         VARCHAR(32) NOT NULL COMMENT '任务编号(全局唯一)',
    name            VARCHAR(100) NOT NULL COMMENT '任务名称',
    type            VARCHAR(20) NOT NULL COMMENT '任务类型:植保/吊运/航拍/巡检/清洗/表演/测绘',
    province        VARCHAR(20) COMMENT '省份',
    city            VARCHAR(20) COMMENT '城市',
    district        VARCHAR(20) COMMENT '区县',
    address         VARCHAR(200) COMMENT '详细地址',
    latitude        DECIMAL(10,6) COMMENT '纬度坐标',
    longitude       DECIMAL(10,6) COMMENT '经度坐标',
    scene_images    JSON COMMENT '作业场景图(file_id数组)',
    required_count  INT DEFAULT 1 COMMENT '需求人数',
    start_time      DATETIME NOT NULL COMMENT '开始时间',
    end_time        DATETIME COMMENT '结束时间',
    reward          DECIMAL(10,2) NOT NULL COMMENT '报酬(元)',
    insurance_require JSON COMMENT '保险要求:三者险/飞手险/机身险',
    contact_name    VARCHAR(50) COMMENT '联系人姓名',
    contact_phone   VARCHAR(20) NOT NULL COMMENT '联系电话',
    remark          TEXT COMMENT '备注',
    status          TINYINT DEFAULT 0 COMMENT '状态:0草稿 1待接单 2已接单 3执行中 4已完成 5已取消',
    is_premium      TINYINT DEFAULT 0 COMMENT '是否优质任务:0否 1是',
    premium_cost    INT DEFAULT 0 COMMENT '优质任务积分消耗',
    publisher_id    BIGINT NOT NULL COMMENT '发布人ID',
    accepted_pilot_id BIGINT COMMENT '接单飞手ID',
    platform_fee    DECIMAL(10,2) DEFAULT 0.00 COMMENT '平台服务费',
    created_at      DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    updated_at      DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    deleted_at      DATETIME DEFAULT NULL COMMENT '软删除时间',
    UNIQUE KEY uk_task_no (task_no),
    INDEX idx_type_status (type, status),
    INDEX idx_city_status (city, status),
    INDEX idx_publisher (publisher_id),
    INDEX idx_pilot (accepted_pilot_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='任务表';

11.3 商家表 merchant

字段 类型 说明 约束
id BIGINT 主键 PK, AUTO_INCREMENT
user_id BIGINT 关联用户ID UNIQUE, NOT NULL
name VARCHAR(100) 商家名称 NOT NULL
address VARCHAR(200) 商家地址
door_image BIGINT 门头照片file_id
license_file_id BIGINT 营业执照file_id
contact_name VARCHAR(50) 联系人
contact_phone VARCHAR(20) 联系电话
latitude DECIMAL(10,6) 纬度
longitude DECIMAL(10,6) 经度
service_types JSON 服务类型数组
description TEXT 商家简介
cert_status TINYINT 认证状态:0未认证 1认证中 2已认证 3认证失败 DEFAULT 0
cert_time DATETIME 认证时间
rating DECIMAL(2,1) 评分(1.0-5.0) DEFAULT 5.0
order_count INT 成交订单数 DEFAULT 0
created_at DATETIME 创建时间 DEFAULT CURRENT_TIMESTAMP
updated_at DATETIME 更新时间
deleted_at DATETIME 软删除时间
CREATE TABLE merchant (
    id              BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
    user_id         BIGINT NOT NULL COMMENT '关联用户ID',
    name            VARCHAR(100) NOT NULL COMMENT '商家名称',
    address         VARCHAR(200) COMMENT '商家地址',
    door_image      BIGINT COMMENT '门头照片file_id',
    license_file_id BIGINT COMMENT '营业执照file_id',
    contact_name    VARCHAR(50) COMMENT '联系人',
    contact_phone   VARCHAR(20) COMMENT '联系电话',
    latitude        DECIMAL(10,6) COMMENT '纬度',
    longitude       DECIMAL(10,6) COMMENT '经度',
    service_types   JSON COMMENT '服务类型数组',
    description     TEXT COMMENT '商家简介',
    cert_status     TINYINT DEFAULT 0 COMMENT '认证状态:0未认证 1认证中 2已认证 3认证失败',
    cert_time       DATETIME COMMENT '认证时间',
    rating          DECIMAL(2,1) DEFAULT 5.0 COMMENT '评分(1.0-5.0)',
    order_count     INT DEFAULT 0 COMMENT '成交订单数',
    created_at      DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    updated_at      DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    deleted_at      DATETIME DEFAULT NULL COMMENT '软删除时间',
    UNIQUE KEY uk_user (user_id),
    INDEX idx_cert_status (cert_status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='商家表';

11.4 飞手表 pilot

字段 类型 说明 约束
id BIGINT 主键 PK, AUTO_INCREMENT
user_id BIGINT 关联用户ID UNIQUE, NOT NULL
name VARCHAR(50) 姓名(实名) NOT NULL
phone VARCHAR(20) 手机号 NOT NULL
birthday DATE 出生年月
age TINYINT 年龄(自动计算)
avatar_file_id BIGINT 头像file_id
cert_status TINYINT 认证状态:0未认证 1认证中 2已认证 3认证失败 DEFAULT 0
cert_time DATETIME 认证时间
license_type VARCHAR(20) CAAC执照类型:AOPA/UTC/ASFC
license_no VARCHAR(50) CAAC执照编号
license_file_id BIGINT 执照图片file_id
drone_models JSON 可操控机型数组
service_cities JSON 服务城市数组
bio VARCHAR(200) 个人简介
rating DECIMAL(2,1) 评分 DEFAULT 5.0
order_count INT 完成任务数 DEFAULT 0
insurance_expire DATE 飞手险到期日
created_at DATETIME 创建时间 DEFAULT CURRENT_TIMESTAMP
updated_at DATETIME 更新时间
deleted_at DATETIME 软删除时间
CREATE TABLE pilot (
    id              BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
    user_id         BIGINT NOT NULL COMMENT '关联用户ID',
    name            VARCHAR(50) NOT NULL COMMENT '姓名(实名)',
    phone           VARCHAR(20) NOT NULL COMMENT '手机号',
    birthday        DATE COMMENT '出生年月',
    age             TINYINT COMMENT '年龄(自动计算)',
    avatar_file_id  BIGINT COMMENT '头像file_id',
    cert_status     TINYINT DEFAULT 0 COMMENT '认证状态:0未认证 1认证中 2已认证 3认证失败',
    cert_time       DATETIME COMMENT '认证时间',
    license_type    VARCHAR(20) COMMENT 'CAAC执照类型:AOPA/UTC/ASFC',
    license_no      VARCHAR(50) COMMENT 'CAAC执照编号',
    license_file_id BIGINT COMMENT '执照图片file_id',
    drone_models    JSON COMMENT '可操控机型数组',
    service_cities  JSON COMMENT '服务城市数组',
    bio             VARCHAR(200) COMMENT '个人简介',
    rating          DECIMAL(2,1) DEFAULT 5.0 COMMENT '评分',
    order_count     INT DEFAULT 0 COMMENT '完成任务数',
    insurance_expire DATE COMMENT '飞手险到期日',
    created_at      DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    updated_at      DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    deleted_at      DATETIME DEFAULT NULL COMMENT '软删除时间',
    UNIQUE KEY uk_user (user_id),
    INDEX idx_cert_status (cert_status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='飞手表';

11.5 题库表 exam_bank

字段 类型 说明 约束
id BIGINT 主键 PK, AUTO_INCREMENT
name VARCHAR(100) 题库名称 NOT NULL
cover_image BIGINT 封面图file_id
description TEXT 题库描述
question_count INT 题目数量 DEFAULT 0
difficulty TINYINT 难度:1简单 2中等 3困难 DEFAULT 1
status TINYINT 状态:0禁用 1启用 DEFAULT 1
created_at DATETIME 创建时间 DEFAULT CURRENT_TIMESTAMP
updated_at DATETIME 更新时间
deleted_at DATETIME 软删除时间
CREATE TABLE exam_bank (
    id              BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
    name            VARCHAR(100) NOT NULL COMMENT '题库名称',
    cover_image    BIGINT COMMENT '封面图file_id',
    description     TEXT COMMENT '题库描述',
    question_count  INT DEFAULT 0 COMMENT '题目数量',
    difficulty      TINYINT DEFAULT 1 COMMENT '难度:1简单 2中等 3困难',
    status          TINYINT DEFAULT 1 COMMENT '状态:0禁用 1启用',
    created_at      DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    updated_at      DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    deleted_at      DATETIME DEFAULT NULL COMMENT '软删除时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='题库表';

11.6 习题表 exam_question

字段 类型 说明 约束
id BIGINT 主键 PK, AUTO_INCREMENT
bank_id BIGINT 所属题库ID NOT NULL
content TEXT 题目内容 NOT NULL
options JSON 选项数组(含ABCD四选项)
question_type TINYINT 题型:1单选 2多选 3判断 NOT NULL
answer VARCHAR(10) 标准答案(如:A 或 AB) NOT NULL
explanation TEXT 答案解析
difficulty TINYINT 难度:1简单 2中等 3困难 DEFAULT 1
score TINYINT 分值(单选/多选) DEFAULT 5
sort_order INT 排序 DEFAULT 0
used_count INT 被使用次数 DEFAULT 0
created_at DATETIME 创建时间 DEFAULT CURRENT_TIMESTAMP
updated_at DATETIME 更新时间
deleted_at DATETIME 软删除时间
CREATE TABLE exam_question (
    id              BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
    bank_id         BIGINT NOT NULL COMMENT '所属题库ID',
    content         TEXT NOT NULL COMMENT '题目内容',
    options         JSON COMMENT '选项数组([{"key":"A","val":"..."},...])',
    question_type   TINYINT NOT NULL COMMENT '题型:1单选 2多选 3判断',
    answer          VARCHAR(10) NOT NULL COMMENT '标准答案(如:A 或 AB)',
    explanation     TEXT COMMENT '答案解析',
    difficulty      TINYINT DEFAULT 1 COMMENT '难度:1简单 2中等 3困难',
    score           TINYINT DEFAULT 5 COMMENT '分值',
    sort_order      INT DEFAULT 0 COMMENT '排序',
    used_count      INT DEFAULT 0 COMMENT '被使用次数',
    created_at      DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    updated_at      DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    deleted_at      DATETIME DEFAULT NULL COMMENT '软删除时间',
    INDEX idx_bank (bank_id),
    INDEX idx_type (question_type)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='习题表';

11.7 课程表 course

字段 类型 说明 约束
id BIGINT 主键 PK, AUTO_INCREMENT
name VARCHAR(100) 课程名称 NOT NULL
tags JSON 标签数组(认知启蒙/技能进阶/创新应用/竞赛辅导)
category VARCHAR(20) 分类
target_age VARCHAR(20) 适合年龄
location VARCHAR(200) 上课地点
latitude DECIMAL(10,6) 纬度
longitude DECIMAL(10,6) 经度
description TEXT 课程描述
highlights JSON 课程亮点(3项)
duration_desc VARCHAR(50) 课时说明
capacity_min INT 最小人数 DEFAULT 1
capacity_max INT 最大人数 DEFAULT 20
images JSON 课程图片file_id数组
price DECIMAL(10,2) 课程价格 NOT NULL
merchant_id BIGINT 所属商家ID
status TINYINT 状态:0下架 1上架 2已满员 DEFAULT 1
view_count INT 浏览次数 DEFAULT 0
book_count INT 已预约人数 DEFAULT 0
rating DECIMAL(2,1) 课程评分 DEFAULT 5.0
created_at DATETIME 创建时间 DEFAULT CURRENT_TIMESTAMP
updated_at DATETIME 更新时间
deleted_at DATETIME 软删除时间
CREATE TABLE course (
    id              BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
    name            VARCHAR(100) NOT NULL COMMENT '课程名称',
    tags            JSON COMMENT '标签数组(认知启蒙/技能进阶/创新应用/竞赛辅导)',
    category        VARCHAR(20) COMMENT '分类',
    target_age      VARCHAR(20) COMMENT '适合年龄',
    location        VARCHAR(200) COMMENT '上课地点',
    latitude        DECIMAL(10,6) COMMENT '纬度',
    longitude       DECIMAL(10,6) COMMENT '经度',
    description     TEXT COMMENT '课程描述',
    highlights      JSON COMMENT '课程亮点(3项)',
    duration_desc   VARCHAR(50) COMMENT '课时说明',
    capacity_min    INT DEFAULT 1 COMMENT '最小人数',
    capacity_max    INT DEFAULT 20 COMMENT '最大人数',
    images          JSON COMMENT '课程图片file_id数组',
    price           DECIMAL(10,2) NOT NULL COMMENT '课程价格',
    merchant_id     BIGINT COMMENT '所属商家ID',
    status          TINYINT DEFAULT 1 COMMENT '状态:0下架 1上架 2已满员',
    view_count      INT DEFAULT 0 COMMENT '浏览次数',
    book_count      INT DEFAULT 0 COMMENT '已预约人数',
    rating          DECIMAL(2,1) DEFAULT 5.0 COMMENT '课程评分',
    created_at      DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    updated_at      DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    deleted_at      DATETIME DEFAULT NULL COMMENT '软删除时间',
    INDEX idx_category (category),
    INDEX idx_status (status),
    INDEX idx_merchant (merchant_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='课程表';

11.8 用户表 user

字段 类型 说明 约束
id BIGINT 主键 PK, AUTO_INCREMENT
openid VARCHAR(64) 微信openId UNIQUE, NOT NULL
nickname VARCHAR(50) 用户昵称
avatar_url VARCHAR(500) 头像URL
phone VARCHAR(20) 手机号
gender TINYINT 性别:0未知 1男 2女 DEFAULT 0
bio VARCHAR(200) 个人简介
role_type TINYINT 角色类型:1普通用户 2飞手 3商家 4机构 DEFAULT 1
points INT 积分余额 DEFAULT 0
is_pilot_bound TINYINT 是否已绑定飞手身份 DEFAULT 0
is_merchant_bound TINYINT 是否已绑定商家身份 DEFAULT 0
pilot_id BIGINT 关联飞手ID
merchant_id BIGINT 关联商家ID
status TINYINT 账号状态:0禁用 1正常 DEFAULT 1
last_login_at DATETIME 最后登录时间
created_at DATETIME 注册时间 DEFAULT CURRENT_TIMESTAMP
updated_at DATETIME 更新时间
deleted_at DATETIME 软删除时间
CREATE TABLE `user` (
    id                BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
    openid            VARCHAR(64) NOT NULL COMMENT '微信openId',
    nickname          VARCHAR(50) COMMENT '用户昵称',
    avatar_url        VARCHAR(500) COMMENT '头像URL',
    phone             VARCHAR(20) COMMENT '手机号',
    gender            TINYINT DEFAULT 0 COMMENT '性别:0未知 1男 2女',
    bio               VARCHAR(200) COMMENT '个人简介',
    role_type         TINYINT DEFAULT 1 COMMENT '角色类型:1普通用户 2飞手 3商家 4机构',
    points            INT DEFAULT 0 COMMENT '积分余额',
    is_pilot_bound    TINYINT DEFAULT 0 COMMENT '是否已绑定飞手身份',
    is_merchant_bound TINYINT DEFAULT 0 COMMENT '是否已绑定商家身份',
    pilot_id          BIGINT COMMENT '关联飞手ID',
    merchant_id       BIGINT COMMENT '关联商家ID',
    status            TINYINT DEFAULT 1 COMMENT '账号状态:0禁用 1正常',
    last_login_at     DATETIME COMMENT '最后登录时间',
    created_at        DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间',
    updated_at        DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    deleted_at        DATETIME DEFAULT NULL COMMENT '软删除时间',
    UNIQUE KEY uk_openid (openid),
    INDEX idx_phone (phone)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';

11.9 任务执行记录表 task_record

字段 类型 说明 约束
id BIGINT 主键 PK, AUTO_INCREMENT
task_id BIGINT 任务ID NOT NULL
user_id BIGINT 关联用户ID NOT NULL
pilot_id BIGINT 接单飞手ID
merchant_id BIGINT 发单商家ID
status TINYINT 状态:1待接单 2已接单 3执行中 4已完成 5已取消 DEFAULT 1
apply_time DATETIME 申请/接单时间
accept_time DATETIME 飞手接单时间
start_time DATETIME 实际开始时间
finish_time DATETIME 完成时间
cancel_time DATETIME 取消时间
cancel_reason VARCHAR(200) 取消原因
insurance_verified TINYINT 保险是否校验:0否 1是 DEFAULT 0
actual_reward DECIMAL(10,2) 实际报酬
platform_fee DECIMAL(10,2) 平台服务费
rating TINYINT 用户评分(1-5)
rating_comment VARCHAR(200) 评价内容
created_at DATETIME 创建时间 DEFAULT CURRENT_TIMESTAMP
updated_at DATETIME 更新时间
deleted_at DATETIME 软删除时间
CREATE TABLE task_record (
    id                  BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
    task_id             BIGINT NOT NULL COMMENT '任务ID',
    user_id             BIGINT NOT NULL COMMENT '关联用户ID',
    pilot_id            BIGINT COMMENT '接单飞手ID',
    merchant_id          BIGINT COMMENT '发单商家ID',
    status              TINYINT DEFAULT 1 COMMENT '状态:1待接单 2已接单 3执行中 4已完成 5已取消',
    apply_time          DATETIME COMMENT '申请/接单时间',
    accept_time         DATETIME COMMENT '飞手接单时间',
    start_time          DATETIME COMMENT '实际开始时间',
    finish_time         DATETIME COMMENT '完成时间',
    cancel_time         DATETIME COMMENT '取消时间',
    cancel_reason       VARCHAR(200) COMMENT '取消原因',
    insurance_verified  TINYINT DEFAULT 0 COMMENT '保险是否校验:0否 1是',
    actual_reward       DECIMAL(10,2) COMMENT '实际报酬',
    platform_fee        DECIMAL(10,2) COMMENT '平台服务费',
    rating              TINYINT COMMENT '用户评分(1-5)',
    rating_comment      VARCHAR(200) COMMENT '评价内容',
    created_at          DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    updated_at          DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    deleted_at          DATETIME DEFAULT NULL COMMENT '软删除时间',
    UNIQUE KEY uk_task_user (task_id, user_id),
    INDEX idx_user_status (user_id, status),
    INDEX idx_pilot_status (pilot_id, status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='任务执行记录表';

11.10 文件表 file

字段 类型 说明 约束
id BIGINT 主键 PK, AUTO_INCREMENT
file_name VARCHAR(200) 原始文件名 NOT NULL
file_key VARCHAR(200) 存储路径/OSS Key NOT NULL
file_suffix VARCHAR(10) 文件后缀
file_url VARCHAR(500) 访问URL
file_size BIGINT 文件大小(字节)
file_type VARCHAR(20) 类型:营业执照/图片/飞手执照/其他
uploader_id BIGINT 上传用户ID
status TINYINT 状态:0禁用 1正常 DEFAULT 1
created_at DATETIME 上传时间 DEFAULT CURRENT_TIMESTAMP
deleted_at DATETIME 软删除时间
CREATE TABLE `file` (
    id          BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
    file_name   VARCHAR(200) NOT NULL COMMENT '原始文件名',
    file_key    VARCHAR(200) NOT NULL COMMENT '存储路径/OSS Key',
    file_suffix VARCHAR(10) COMMENT '文件后缀',
    file_url    VARCHAR(500) COMMENT '访问URL',
    file_size   BIGINT COMMENT '文件大小(字节)',
    file_type   VARCHAR(20) COMMENT '类型:营业执照/图片/飞手执照/其他',
    uploader_id BIGINT COMMENT '上传用户ID',
    status      TINYINT DEFAULT 1 COMMENT '状态:0禁用 1正常',
    created_at  DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '上传时间',
    deleted_at  DATETIME DEFAULT NULL COMMENT '软删除时间',
    INDEX idx_type (file_type),
    INDEX idx_uploader (uploader_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='文件表';

11.11 课程预约表 course_appointment

字段 类型 说明 约束
id BIGINT 主键 PK, AUTO_INCREMENT
user_id BIGINT 用户ID NOT NULL
course_id BIGINT 课程ID NOT NULL
merchant_id BIGINT 商家ID
appointment_date DATETIME 预约时间 NOT NULL
person_count INT 预约人数 DEFAULT 1
contact_name VARCHAR(50) 联系人姓名
contact_phone VARCHAR(20) 联系人电话
remark VARCHAR(200) 备注
status TINYINT 状态:1已预约 2已确认 3已完成 4已取消 DEFAULT 1
confirm_time DATETIME 商家确认时间
cancel_time DATETIME 取消时间
cancel_reason VARCHAR(200) 取消原因
amount DECIMAL(10,2) 支付金额 DEFAULT 0.00
pay_status TINYINT 支付状态:0未支付 1已支付 2已退款 DEFAULT 0
created_at DATETIME 预约时间 DEFAULT CURRENT_TIMESTAMP
updated_at DATETIME 更新时间
deleted_at DATETIME 软删除时间
CREATE TABLE course_appointment (
    id                  BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
    user_id             BIGINT NOT NULL COMMENT '用户ID',
    course_id           BIGINT NOT NULL COMMENT '课程ID',
    merchant_id         BIGINT COMMENT '商家ID',
    appointment_date    DATETIME NOT NULL COMMENT '预约时间',
    person_count        INT DEFAULT 1 COMMENT '预约人数',
    contact_name        VARCHAR(50) COMMENT '联系人姓名',
    contact_phone       VARCHAR(20) COMMENT '联系人电话',
    remark              VARCHAR(200) COMMENT '备注',
    status              TINYINT DEFAULT 1 COMMENT '状态:1已预约 2已确认 3已完成 4已取消',
    confirm_time        DATETIME COMMENT '商家确认时间',
    cancel_time         DATETIME COMMENT '取消时间',
    cancel_reason       VARCHAR(200) COMMENT '取消原因',
    amount              DECIMAL(10,2) DEFAULT 0.00 COMMENT '支付金额',
    pay_status          TINYINT DEFAULT 0 COMMENT '支付状态:0未支付 1已支付 2已退款',
    created_at          DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '预约时间',
    updated_at          DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    deleted_at          DATETIME DEFAULT NULL COMMENT '软删除时间',
    UNIQUE KEY uk_user_course_date (user_id, course_id, appointment_date),
    INDEX idx_course_status (course_id, status),
    INDEX idx_merchant (merchant_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='课程预约表';

11.12 表间关系(ER)

user ─────┬── 1:1 pilot(飞手身份)
           └── 1:1 merchant(商家身份)
           └── 1:N task_record(我的任务)
           └── 1:N course_appointment(课程预约)

pilot ────── N:1 task_record(接单飞手)
merchant ─── N:1 task_record(发单商家)
             N:1 course(商家开课)

task ──────── 1:1 task_record(任务→执行记录)
course ────── 1:N course_appointment(课程→预约)

file ──────── N:1 user(上传者)
             N:1 pilot(执照图片)
             N:1 merchant(营业执照)
             N:1 task(作业场景图)
             N:1 course(课程图片)

exam_bank ── 1:N exam_question(题库→习题)