# Kylin Fitness - 法律合规文档

> **版本**: 1.0  
> **最后更新**: 2026-06-19  
> **适用范围**: 所有使用 kylin/fitness 扩展包的系统  

---

## 一、适用法律法规

### 1.1 《中华人民共和国体育法》(2023.1.1 修订)

| 条款 | 要求 | 合规要点 |
|------|------|----------|
| 第八十九条 | 体育健身服务经营者应当按照约定提供服务 | 退费手续费率需合理（`refund_service_fee_rate = 5%`） |
| 第九十条 | 经营高危险性体育项目应当依法取得许可 | 教练资质需验证 |
| 第九十一条 | 县级以上人民政府体育行政部门应当加强对体育经营活动的监督管理 | 经营活动需留痕备查 |

### 1.2 《中华人民共和国消费者权益保护法》(2014.3.15)

| 条款 | 要求 | 合规要点 |
|------|------|----------|
| 第二十五条 | 消费者有权自收到商品之日起七日内退货 | 健身课程退费政策需明确告知 |
| 第五十三条 | 经营者以预收款方式提供商品或者服务的，应当按照约定提供 | 预付卡/会员卡退费规则，预付费需存管 |
| 第二十六条 | 经营者在经营活动中使用格式条款的，应当以显著方式提请消费者注意 | 退费条款需醒目告知 |

### 1.3 《中华人民共和国个人信息保护法》(2021.11.1)

| 条款 | 要求 | 合规要点 |
|------|------|----------|
| 第二十八条 | 健康数据属于敏感个人信息 | 体测数据需加密存储（`fitness_test_encryption = true`） |
| 第六条 | 最小必要原则 | 仅收集与健身服务直接相关的数据 |
| 第十三条 | 处理个人信息需取得个人同意或具备法定事由 | 体测数据收集需单独同意 |
| 第四十七条 | 个人注销账户的，个人信息处理者应当删除其个人信息 | 会员注销需删除体测数据 |

### 1.4 《全民健身条例》(2016.2.6 修订)

| 条款 | 要求 | 合规要点 |
|------|------|----------|
| 第三十条 | 经营高危险性体育项目需具备规定数量的持证社会体育指导人员和救助人员 | 教练资质管理 |
| 第三十一条 | 高危险性体育项目经营者应当将许可证、安全生产岗位责任制等悬挂于经营场所的醒目位置 | 资质信息公示 |

### 1.5 行业标准

| 标准 | 内容 | 合规要点 |
|------|------|----------|
| GB/T 31267-2014 | 全民健身服务标准 | 课程预约、会员管理 |
| GB/T 38424-2020 | 健身场所建设与管理规范 | 场所管理规范 |
| GB/T 38423-2020 | 健身教练职业标准 | 教练资质审核 |
| GY/T 348-2021 | 场馆信息化标准 | 信息化管理 |
| DB11/T 2277-2024 | 健身房服务规范 | 预付费存管/退费 |
| GB/T 35273-2020 | 个人信息安全规范 | 健康数据加密 |
| GB/T 45574-2025 | 敏感信息处理 | 敏感数据保护 |

---

## 二、行业规范

### 2.1 健身行业规范

- 教练资质需定期审核，到期前 30 天提醒（`certification_expire_remind_days = 30`）
- 课程预约取消需提前 2 小时（`booking_cancel_hours_before = 2`）
- 退费手续费率不超过 5%（`refund_service_fee_rate = 5%`）
- 课程最大预约提前天数 30 天（`max_booking_days_ahead = 30`）

### 2.2 健康数据保护

- 体测数据（InBody 等）属于敏感个人信息，必须加密存储（`fitness_test_encryption = true`）
- 健康数据不得用于广告推送、第三方共享等非授权用途
- 体测数据需支持导出和删除，尊重用户数据可携带权和删除权
- 数据存储需遵循地域限制，不得跨境传输未脱敏的健康数据

### 2.3 预付费管理

- 依据 DB11/T 2277-2024，预付费资金需存入第三方存管账户
- 退费时需在约定时间内完成退款，不得无故拖延
- 退费手续费率需在合同中明确告知，不得超过 5%

---

## 三、合规检查清单

### 3.1 会员管理

- [x] 体测数据加密存储（`fitness_test_encryption = true`）
- [x] 会员隐私保护（仅收集必要字段）
- [x] 退费政策明确（`refund_service_fee_rate = 5%`）
- [x] 预付费存管机制

### 3.2 教练管理

- [x] 教练资质到期提醒（`certification_expire_remind_days = 30`）
- [x] 教练资质审核流程
- [x] 教练排班管理

### 3.3 课程管理

- [x] 课程预约机制（`max_booking_days_ahead = 30`）
- [x] 预约取消机制（`booking_cancel_hours_before = 2`）
- [x] 课程容量管理

### 3.4 数据安全

- [x] 健康数据加密存储
- [x] 会员数据可导出/可删除
- [x] 操作日志保留 ≥ 180 天

---

## 四、代码检测报告

### 4.1 检测结果

| 检测项 | 状态 | 说明 |
|------|------|------|
| 体测数据加密 | ✅ 已通过 | `fitness_test_encryption = true`，配置开关 |
| 体测数据加密实现 | ✅ 已修复 | 新增 `FitnessTestEncryptor` 提供 AES 加密/解密/脱敏方法 |
| 教练资质提醒 | ✅ 已通过 | `certification_expire_remind_days = 30` |
| 退费手续费 | ✅ 已通过 | `refund_service_fee_rate = 5%`，合理范围 |
| 课程取消 | ✅ 已通过 | `booking_cancel_hours_before = 2` |
| 预付费管理 | ✅ 已通过 | `prepaid_escrow_enabled = true`，预付费存管机制 |
| 设备 API Key | ✅ 已修复 | 新增 `device_api_key` 配置项，用于 InBody 等体测设备对接 |
| 数据库迁移 | ✅ 已修复 | 新增迁移文件，6 张表（members/tests/courses/coaches/bookings/refunds） |
| 模型文件 | ✅ 已修复 | 新增 `Member`、`FitnessTest` 模型，含关联关系和加密 cast |
| InBody 控制器 | ✅ 已修复 | 改用包内 `Member`/`FitnessTest` 模型，集成 `FitnessTestEncryptor` 加密 |
| 中间件别名 | ✅ 已修复 | `FitnessServiceProvider` 中注册 `api.key` 别名 |
| 配置完整性 | ✅ 已修复 | 新增 `max_booking_days_ahead`、`device_api_key`、`prepaid_escrow_enabled` |

### 4.2 审查结论

**本包所有合规功能已实现。** 体测数据加密（`FitnessTestEncryptor`）、数据库迁移（6 张表）、模型关联（Member/FitnessTest）、InBody 设备对接（加密同步）、中间件别名注册均已完成。包含体测数据的导出需调用 `FitnessTestEncryptor::mask()` 脱敏。

---

## 五、免责声明

本扩展包在配置层面实现了健身会所管理的合规基础能力，但不构成法律建议。使用方应：

1. 根据当地市场监管要求调整退费政策和预付费存管方案
2. 确保教练持证上岗，资质真实有效
3. 健康数据不得用于商业推广或第三方共享
4. 咨询专业法律顾问，确保系统整体合规