目录
- [1. 业务目标](#1. 业务目标)
- [2. 角色定义](#2. 角色定义)
- [3. 核心业务流程](#3. 核心业务流程)
- [4. 用户故事](#4. 用户故事)
- [5. 功能描述](#5. 功能描述)
-
- [5.1 用户端(微信小程序)](#5.1 用户端(微信小程序))
-
- [5.1.1 工作台/首页](#5.1.1 工作台/首页)
- [5.1.2 预约排课](#5.1.2 预约排课)
- [5.1.3 上课履约](#5.1.3 上课履约)
- [5.1.4 用户中心](#5.1.4 用户中心)
- [5.2 管理端(Web 管理后台)](#5.2 管理端(Web 管理后台))
-
- [5.2.1 数据大盘](#5.2.1 数据大盘)
- [5.2.2 课程管理](#5.2.2 课程管理)
- [5.2.3 教练管理](#5.2.3 教练管理)
- [5.2.4 排课管理](#5.2.4 排课管理)
- [5.2.5 学员管理](#5.2.5 学员管理)
- [5.2.6 订单管理](#5.2.6 订单管理)
- [5.2.7 支出管理](#5.2.7 支出管理)
- [5.2.8 财务报表](#5.2.8 财务报表)
- [5.2.9 评价管理](#5.2.9 评价管理)
- [5.2.10 优惠券管理](#5.2.10 优惠券管理)
- [5.2.11 提成管理](#5.2.11 提成管理)
- [5.2.12 教练排班](#5.2.12 教练排班)
- [6. 核心数据表结构](#6. 核心数据表结构)
1. 业务目标
- 线上化拓客与转化:通过小程序实现私教课程(1v1、1v2)的在线展示与售卖,缩短交易链路,沉淀用户到"课时卡"资产。
- 履约流程自动化:将传统的"微信群约课"转化为系统化排课与预约,降低沟通成本,避免撞单和漏签。
- 闭环评价体系:通过学员评分和评价机制,量化教练服务质量。
- 数据驱动运营:为管理层提供全景数据仪表盘(财务收入、课时消耗、教练绩效),辅助精细化门店运营决策。
2. 角色定义
- 学员 (Student):小程序端的核心用户,购买课程、预约教练、上课签到、课后评价。
- 教练 (Trainer):小程序端/管理端的执行者,设置排课计划、接收预约通知、确认上课、核销课时。
- 老板/管理员 (Admin/Owner):管理后台的使用者,统筹人员配置、课程上架、查看全局业务数据和财务报表。
3. 核心业务流程
- 商品转化流:学员浏览课程详情 -> 下单支付 -> 转化生成学员个人的"课时卡"(含总课时与剩余课时)。
- 预约履约流:教练发布可用时间段 (Schedule) -> 学员选择可用时间预约 (Booking) -> 扣减冻结单次课时 -> 系统通知教练。
- 上课核销流:到达上课时间 -> 教练端点击"开始上课" -> 学员端进行"在线签到" -> 课时正式扣除(核销完成)。
- 评价反馈流:课程状态变更为已完成 -> 学员收到评价推送 -> 提交星级评分与评语 -> 沉淀至教练考核数据。
4. 用户故事
- 作为学员,我希望能在小程序上看到自己还剩多少节私教课,以便及时安排接下来的锻炼计划。
- 作为学员,我希望能直观地看到我的教练本周哪些时间段有空,只需点击几下就能锁定上课时间。
- 作为教练,我希望在学员预约成功后能收到自动通知,并且能在日历视图中看到我每天的排期,以免遗漏课程。
- 作为老板,我希望在管理后台能看到每个教练本月的上课总数和平均评分,以便于计算绩效和薪资。
- 作为老板,我希望每天能看到系统的总收入和课时消耗情况,以掌握健身房的真实运营健康度。
5. 功能描述
5.1 用户端(微信小程序)
5.1.1 工作台/首页

课程商城
- 展示 1v1、1v2 私教课程列表、价格、教练介绍
- 点击课程卡片进入详情页,可查看课程详细介绍、教练信息、包含课时数、价格等

立即购买
- 课程详情页提供"立即购买"按钮
- 进入订单确认页面,可选择优惠方式(新用户优惠、满减优惠等)
- 确认后进入支付流程

支付功能
- 支持微信支付、支付宝等多种支付方式
- 支付成功后生成订单并跳转到支付成功页面

我的课时卡
- 展示已购买的课时卡,包含:总课时、剩余课时、有效期
- 在"课时记录"页面可查看充值记录(购买课程)和课消记录(上课签到)

消息通知
- 系统通知中心,显示约课情况、上课提醒、订单状态变更等消息
5.1.2 预约排课

健身教练列表
- 展示所有健身教练的基本信息,包括头像、姓名、职称、评分、专长、认证等
- 支持按专长筛选和搜索

教练详情
- 查看教练详细信息,包括个人简介、从业年限、擅长领域、学员评价等
教练课表浏览
- 按日期展示所选教练的"可用"时间段列表
- 显示课程名称、时间、地点、剩余名额

发起预约
- 选定时间段并发起预约,系统进行课时余额校验
- 预约成功后跳转到预约成功页面

预约列表管理
- 在"我的课程"页面以日历视图查看自己的约课信息
- 点击课程在下方显示约课列表
- 支持取消预约(课前规定时间内)和上课签到
5.1.3 上课履约

签到功能
- 到达上课时间后,学员可在"我的课程"页面点击"签到"按钮完成上课签到
- 系统自动扣除课时
预约成功提示
- 预约成功后显示预约详情,包括课程名称、教练、时间、地点、签到码等信息
5.1.4 用户中心


用户注册/登录
- 未注册用户显示注册引导页面
- 点击注册进入注册页面,填写姓名、手机号、验证码、密码等信息完成注册
- 已登录用户显示个人信息和会员等级
个人资料编辑
- 支持修改头像、姓名、手机号等个人信息


我的订单
- 查看所有订单记录,按状态筛选(全部、待支付、已支付、已取消)
- 显示订单详情
客服与联系我们
- 提供客服入口和联系我们功能(预留接口)
底部导航
- 首页、预约、消息、我的四个主要入口
5.2 管理端(Web 管理后台)
5.2.1 数据大盘

核心指标看板
- 实时展示:今日营收、累计营收、本月课时消耗总数、今日预约数、活跃学员数、总课时数
营收趋势图
- 近7日营收趋势柱状图,显示每日营收金额
出勤趋势图
- 近7日出勤趋势折线图,显示每日预约和签到人数
销售排行
- 课程销量排行榜(热销课程Top5)
5.2.2 课程管理

课程商品管理
- 新建/编辑课程信息(名称、类型1v1/1v2、售价、包含课时数、图文详情)
- 支持上架/下架操作
课程列表
- 展示所有课程,包括状态、价格、课时数、已售数量等信息
5.2.3 教练管理

教练档案维护
- 添加/编辑教练信息,包括姓名、职称、手机号、邮箱、从业年限、专长、认证、个人简介、工作地点等
教练状态管理
- 设置教练在职/离职状态,控制是否在前端展示
教练列表
- 展示所有教练的基本信息、评分、学员数、课程数等统计
5.2.4 排课管理

课程排课
- 为课程安排具体的时间段,选择日期、时间、教练、地点、最大容量
排课日历
- 按日期查看当天的所有排课,显示时间、课程、教练、地点、预约情况
预约管理
- 查看每个排课的预约学员名单,包括学员信息、预约时间、签到状态
- 支持手动签到
排课状态
- 排课状态包括:待开始、进行中、已结束、已取消
5.2.5 学员管理

学员档案
- 查看所有学员的基本信息,包括姓名、手机号、会员等级、会员号、注册时间、状态
课时管理
- 查看学员的课时卡信息,包括总课时、已用课时、剩余课时、累计消费
预约记录
- 查看学员的预约历史,包括课程名称、教练、时间、状态
订单记录
- 查看学员的购买记录,包括课程名称、金额、支付状态
课时记录
- 查看学员的充值记录(购买课程)和课消记录(上课签到)
5.2.6 订单管理

订单列表
- 展示所有订单,包括订单号、学员信息、课程信息、金额、状态、支付方式、下单时间
订单筛选
- 按状态筛选(全部、待支付、已支付、已取消、已退款)
订单操作
- 查看订单详情、确认收款、取消订单
订单统计
- 统计订单总数、总营收、待支付订单数、今日订单数
5.2.7 支出管理

支出记录
- 记录健身房各项支出,包括类别、金额、日期、描述、收款方、支付方式、状态
支出分类
- 支出类别包括:教练工资、场地租金、水电费、设备维护、办公用品、其他支出
分类统计
- 按类别统计支出金额,显示每个类别的总支出
支出操作
- 新增支出、编辑支出、删除支出、标记为已支付
5.2.8 财务报表

收支概览
- 统计总收入、总支出、净利润、利润率、本月营收及增长率
月度收支趋势
- 过去12个月的收入和支出对比柱状图
净利润趋势
- 月度净利润变化折线图
收入构成
- 收入来源占比饼图(私教课程、团课、会员卡、其他)
支出构成
- 支出占比饼图(教练工资、场地租金、设备维护、水电费、其他)
交易明细
- 近期交易记录列表,显示收入/支出类型、金额、分类、日期
报表导出
- 支持导出财务报表(预留功能)
5.2.9 评价管理

评价列表
- 展示所有学员评价,包括学员信息、教练信息、课程名称、评分、评价内容
评价筛选
- 按评分筛选(1-5星)、按状态筛选(显示中/已隐藏/被举报)
评价操作
- 查看详情、回复评价、隐藏/显示评价、删除评价
评价统计
- 统计总评价数、平均评分、五星好评数、待处理举报数
举报处理
- 查看被举报的评价及举报原因,支持处理举报
5.2.10 优惠券管理

优惠券列表
- 展示所有优惠券活动,包括优惠码、名称、类型、金额/折扣、有效期、使用进度
优惠券筛选
- 按状态筛选(进行中/已暂停/已过期)、按类型筛选(固定金额/百分比折扣)
新建优惠券
- 创建优惠券,设置优惠码、名称、描述、类型、金额/比例、使用门槛、发放总量、每人限领、有效期、适用范围
编辑优惠券
- 修改优惠券信息
优惠券操作
- 暂停/恢复发放、删除优惠券、复制优惠码
优惠券统计
- 统计优惠券总数、进行中数量、已发放数量、已使用数量
5.2.11 提成管理

提成记录
- 展示所有教练提成记录,包括教练信息、订单信息、提成金额、状态
提成筛选
- 按状态筛选(待确认/已确认/已结算/已取消)、按类型筛选(课程/会员卡/商品)
提成确认
- 确认待处理的提成记录
提成结算
- 对已确认的提成进行结算支付
提成规则
- 管理提成规则,包括规则名称、适用类型、提成比例、固定金额、最低/最高提成限制
提成统计
- 统计提成总额、待确认金额、已结算金额、提成记录数
5.2.12 教练排班

排班看板
- 全局日历视图,老板可纵览所有教练的排班情况
6. 核心数据表结构
User (用户表 - 包含学员、教练、管理员)
统一鉴权与身份管理。
| 字段名 | 类型 | 说明 |
|---|---|---|
id |
UUID (PK) | 主键 |
role |
Enum | 角色:STUDENT / TRAINER / ADMIN |
name |
String | 姓名 |
phone |
String | 手机号,唯一 |
email |
String | 邮箱 |
avatar |
String | 头像URL |
password |
String | 密码哈希 |
member_level |
String | 会员等级:普通会员/黄金会员/钻石会员 |
member_no |
String | 会员号,唯一 |
status |
Enum | 状态:ACTIVE / INACTIVE / SUSPENDED |
created_at |
DateTime | 创建时间 |
updated_at |
DateTime | 更新时间 |
Course (课程商品表)
老板在后台上架的商品SKU。
| 字段名 | 类型 | 说明 |
|---|---|---|
id |
UUID (PK) | 主键 |
title |
String | 课程名称,如"增肌塑形 1v1 季卡" |
type |
Enum | 课程类型:1_ON_1 / 1_ON_2 / GROUP |
price |
Decimal | 售卖价格 |
original_price |
Decimal | 原价,用于显示优惠 |
total_sessions |
Int | 包含的总课时数 |
duration |
Int | 单次课程时长(分钟) |
description |
Text | 课程描述 |
image |
String | 课程图片URL |
coach_id |
FK | 关联教练ID(可选) |
status |
Enum | 状态:ACTIVE / INACTIVE |
sales_count |
Int | 已售数量 |
created_at |
DateTime | 创建时间 |
updated_at |
DateTime | 更新时间 |
CourseCard (学员课时卡表)
订单转化后的资产表。
| 字段名 | 类型 | 说明 |
|---|---|---|
id |
UUID (PK) | 主键 |
student_id |
FK | 学员ID |
course_id |
FK | 课程ID |
order_id |
FK | 关联订单ID |
total_sessions |
Int | 初始总课时 |
used_sessions |
Int | 已使用课时 |
remaining_sessions |
Int | 当前剩余有效课时 |
valid_start |
Date | 有效期开始 |
valid_end |
Date | 有效期结束 |
status |
Enum | 状态:VALID / EXPIRED / EXHAUSTED / REFUNDED |
created_at |
DateTime | 创建时间 |
updated_at |
DateTime | 更新时间 |
Order (订单表)
| 字段名 | 类型 | 说明 |
|---|---|---|
id |
UUID (PK) | 主键 |
order_no |
String | 订单号,唯一 |
student_id |
FK | 学员ID |
course_id |
FK | 课程ID |
course_name |
String | 课程名称(冗余) |
original_price |
Decimal | 原价 |
discount_amount |
Decimal | 优惠金额 |
final_price |
Decimal | 实付金额 |
sessions |
Int | 购买课时数 |
status |
Enum | 状态:PENDING / PAID / CANCELLED / REFUNDED |
payment_method |
String | 支付方式 |
pay_time |
DateTime | 支付时间 |
remark |
String | 备注 |
created_at |
DateTime | 创建时间 |
updated_at |
DateTime | 更新时间 |
TrainerSchedule (教练排班表)
教练放出自己可被预约的"坑位"。
| 字段名 | 类型 | 说明 |
|---|---|---|
id |
UUID (PK) | 主键 |
trainer_id |
FK | 教练ID |
course_id |
FK | 课程ID |
date |
Date | 排班日期 |
start_time |
Time | 开始时间 |
end_time |
Time | 结束时间 |
location |
String | 上课地点 |
capacity_total |
Int | 总容量:1v1为1,1v2为2,团课为N |
capacity_booked |
Int | 已预约人数 |
status |
Enum | 状态:SCHEDULED / IN_PROGRESS / COMPLETED / CANCELLED |
created_at |
DateTime | 创建时间 |
updated_at |
DateTime | 更新时间 |
Booking (预约履约表)
承载单次上课的生命周期,是系统的核心枢纽表。
| 字段名 | 类型 | 说明 |
|---|---|---|
id |
UUID (PK) | 主键 |
booking_no |
String | 预约号,唯一 |
student_id |
FK | 学员ID |
course_card_id |
FK | 课时卡ID |
schedule_id |
FK | 排班ID |
course_name |
String | 课程名称(冗余) |
coach_name |
String | 教练名称(冗余) |
date |
Date | 上课日期 |
start_time |
Time | 开始时间 |
end_time |
Time | 结束时间 |
location |
String | 上课地点 |
status |
Enum | 状态:UPCOMING / COMPLETED / CANCELLED / NO_SHOW |
check_in_time |
DateTime | 签到时间 |
is_deducted |
Boolean | 是否已扣除课时 |
created_at |
DateTime | 创建时间 |
updated_at |
DateTime | 更新时间 |
SessionRecord (课时记录表)
记录课时的充值和消耗流水。
| 字段名 | 类型 | 说明 |
|---|---|---|
id |
UUID (PK) | 主键 |
student_id |
FK | 学员ID |
course_card_id |
FK | 课时卡ID |
type |
Enum | 类型:RECHARGE(充值)/ CONSUME(消费) |
sessions |
Int | 课时数量,正数为充值,负数为消费 |
course_name |
String | 关联课程名称 |
booking_id |
FK | 关联预约ID(消费时) |
order_id |
FK | 关联订单ID(充值时) |
remark |
String | 备注 |
created_at |
DateTime | 创建时间 |
Expense (支出表)
记录健身房各项支出。
| 字段名 | 类型 | 说明 |
|---|---|---|
id |
UUID (PK) | 主键 |
expense_no |
String | 支出单号,唯一 |
category |
Enum | 类别:SALARY / RENT / UTILITIES / MAINTENANCE / SUPPLIES / OTHER |
amount |
Decimal | 金额 |
date |
Date | 支出日期 |
description |
String | 支出描述 |
payee |
String | 收款方 |
payment_method |
String | 支付方式 |
status |
Enum | 状态:PAID / PENDING / CANCELLED |
receipt_no |
String | 收据/凭证号 |
remark |
String | 备注 |
created_by |
FK | 创建人ID |
created_at |
DateTime | 创建时间 |
updated_at |
DateTime | 更新时间 |
Review (课程评价表)
| 字段名 | 类型 | 说明 |
|---|---|---|
id |
UUID (PK) | 主键 |
booking_id |
FK | 预约ID,唯一 |
student_id |
FK | 学员ID |
trainer_id |
FK | 教练ID |
course_id |
FK | 课程ID |
rating |
Int | 1-5 星级评分 |
comment |
Text | 文字评语 |
is_visible |
Boolean | 是否显示 |
is_reported |
Boolean | 是否被举报 |
report_reason |
String | 举报原因 |
helpful_count |
Int | 觉得有用的人数 |
reply_content |
Text | 教练回复内容 |
reply_at |
DateTime | 回复时间 |
created_at |
DateTime | 创建时间 |
Coupon (优惠券表)
| 字段名 | 类型 | 说明 |
|---|---|---|
id |
UUID (PK) | 主键 |
code |
String | 优惠码,唯一 |
name |
String | 优惠券名称 |
description |
String | 优惠券描述 |
type |
Enum | 类型:AMOUNT(固定金额)/ PERCENT(百分比折扣) |
value |
Decimal | 优惠金额或折扣比例 |
min_order_amount |
Decimal | 最低订单金额 |
max_discount_amount |
Decimal | 最高优惠金额(百分比类型) |
total_quantity |
Int | 发放总量 |
used_quantity |
Int | 已使用数量 |
valid_start |
Date | 有效期开始 |
valid_end |
Date | 有效期结束 |
status |
Enum | 状态:ACTIVE / INACTIVE / EXPIRED |
scope |
Enum | 适用范围:ALL / COURSE / MEMBERSHIP |
applicable_courses |
JSON | 适用课程ID列表(可选) |
per_user_limit |
Int | 每人限领数量 |
created_by |
FK | 创建人ID |
created_at |
DateTime | 创建时间 |
updated_at |
DateTime | 更新时间 |
UserCoupon (用户优惠券表)
| 字段名 | 类型 | 说明 |
|---|---|---|
id |
UUID (PK) | 主键 |
user_id |
FK | 用户ID |
coupon_id |
FK | 优惠券ID |
status |
Enum | 状态:UNUSED / USED / EXPIRED |
used_at |
DateTime | 使用时间 |
order_id |
FK | 关联订单ID(使用时) |
created_at |
DateTime | 领取时间 |
CommissionRule (提成规则表)
| 字段名 | 类型 | 说明 |
|---|---|---|
id |
UUID (PK) | 主键 |
name |
String | 规则名称 |
type |
Enum | 适用类型:COURSE / MEMBERSHIP / PRODUCT |
rate |
Decimal | 提成比例(%) |
fixed_amount |
Decimal | 固定提成金额(可选) |
min_amount |
Decimal | 最低提成金额 |
max_amount |
Decimal | 最高提成金额 |
applicable_to |
JSON | 适用范围:ALL 或 具体ID列表 |
status |
Enum | 状态:ACTIVE / INACTIVE |
created_at |
DateTime | 创建时间 |
updated_at |
DateTime | 更新时间 |
CommissionRecord (提成记录表)
| 字段名 | 类型 | 说明 |
|---|---|---|
id |
UUID (PK) | 主键 |
commission_no |
String | 提成单号,唯一 |
trainer_id |
FK | 教练ID |
order_id |
FK | 关联订单ID |
order_type |
Enum | 订单类型:COURSE / MEMBERSHIP / PRODUCT |
order_amount |
Decimal | 订单金额 |
commission_rate |
Decimal | 提成比例 |
commission_amount |
Decimal | 提成金额 |
status |
Enum | 状态:PENDING / CONFIRMED / PAID / CANCELLED |
created_at |
DateTime | 创建时间 |
confirmed_at |
DateTime | 确认时间 |
paid_at |
DateTime | 结算时间 |
confirmed_by |
FK | 确认人ID |
paid_by |
FK | 结算人ID |
Message (消息通知表)
| 字段名 | 类型 | 说明 |
|---|---|---|
id |
UUID (PK) | 主键 |
user_id |
FK | 接收人ID |
type |
Enum | 类型:SYSTEM / BOOKING / ORDER / REMINDER |
title |
String | 消息标题 |
content |
String | 消息内容 |
is_read |
Boolean | 是否已读 |
related_id |
String | 关联业务ID |
created_at |
DateTime | 创建时间 |