|
|
@@ -2,27 +2,146 @@
|
|
|
|
|
|
## 项目概述
|
|
|
|
|
|
-艾灸椅智能穴位定位系统是一个用于艾灸椅设备的智能穴位定位与管理平台,支持多用户管理、穴位库维护、艾灸方案配置和设备管理。
|
|
|
+艾灸椅智能穴位定位系统是艾灸椅项目的核心子系统,负责根据用户体型数据计算穴位位置,并通过APP推送给艾灸椅设备,实现精准穴位定位和艾灸理疗。
|
|
|
|
|
|
-## 技术栈
|
|
|
+### 三方协作架构
|
|
|
+
|
|
|
+```
|
|
|
+┌─────────────────────────────────────────────────────────────────┐
|
|
|
+│ 项目协作架构 │
|
|
|
+├─────────────────────────────────────────────────────────────────┤
|
|
|
+│ 单位A(硬件) 单位B(APP) 我们(算法+后台)│
|
|
|
+│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
|
|
|
+│ │ 艾灸椅 │ │ APP │ │ 后台管理│ │
|
|
|
+│ │ 设备 │◀─────────│ 功能 │◀──────────│ 系统 │ │
|
|
|
+│ └─────────┘ 推送 └─────────┘ 推送 └─────────┘ │
|
|
|
+└─────────────────────────────────────────────────────────────────┘
|
|
|
+```
|
|
|
|
|
|
-- **后端**: Spring Boot + MyBatis-Plus + MySQL + Redis
|
|
|
-- **前端**: Vue 3 + Element Plus + Vite
|
|
|
-- **测试**: Playwright (E2E)
|
|
|
+### 核心职责
|
|
|
|
|
|
-## 功能模块
|
|
|
+| 职责 | 说明 | 交付物 |
|
|
|
+|------|------|--------|
|
|
|
+| **后台管理系统** | 从零搭建,全新开发 | 管理后台 |
|
|
|
+| **穴位坐标算法** | 用户体型数据 → 穴位相对偏移 | 算法服务 |
|
|
|
+| **艾灸工艺生成** | 专家方案 → 设备可执行工艺语言 | 工艺数据 |
|
|
|
+| **后台-APP接口** | RESTful API供APP调用 | API接口 |
|
|
|
|
|
|
-| 模块 | 说明 |
|
|
|
-|------|------|
|
|
|
-| 用户管理 | 用户列表、新增、编辑、删除、设备绑定 |
|
|
|
-| 穴位管理 | 穴位库维护、定位方式、功效分类 |
|
|
|
-| 方案管理 | 艾灸方案配置、专业模式、自定义方案 |
|
|
|
-| 设备管理 | 设备绑定、在线状态监控 |
|
|
|
-| 系统管理 | 管理员、日志记录 |
|
|
|
+---
|
|
|
|
|
|
-## 测试用例
|
|
|
+## 技术栈
|
|
|
|
|
|
-### E2E 测试 (159 个用例,覆盖率 92%)
|
|
|
+| 层级 | 技术 |
|
|
|
+|------|-------|
|
|
|
+| 后端 | Spring Boot + MyBatis-Plus + MySQL + Redis |
|
|
|
+| 前端 | Vue 3 + Element Plus + Vite |
|
|
|
+| 测试 | Playwright (E2E) |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 需求模块与开发状态
|
|
|
+
|
|
|
+### 1. 用户管理 (44用例) - ✅ 已完成
|
|
|
+
|
|
|
+| 功能 | 状态 | 说明 |
|
|
|
+|------|------|------|
|
|
|
+| 用户列表查看 | ✅ 已开发 | 显示ID、姓名、性别、年龄、手机号、设备编号、肩宽、身长、穴位表状态 |
|
|
|
+| 按姓名模糊搜索 | ✅ | |
|
|
|
+| 按手机号搜索 | ✅ | |
|
|
|
+| 按设备编号搜索 | ✅ | |
|
|
|
+| 按性别筛选 | ✅ | |
|
|
|
+| 按穴位表状态筛选 | ✅ | |
|
|
|
+| 重置查询条件 | ✅ | |
|
|
|
+| 新增用户 | ✅ | 姓名、性别、年龄、手机号、肩宽、身长 |
|
|
|
+| 姓名必填验证 | ✅ | |
|
|
|
+| 性别必填验证 | ✅ | |
|
|
|
+| 手机号必填验证 | ✅ | |
|
|
|
+| 手机号格式验证 | ✅ | 11位 |
|
|
|
+| 手机号唯一性验证 | ✅ | |
|
|
|
+| 肩宽范围验证 | ✅ | 男性36-52cm, 女性32-46cm |
|
|
|
+| 身长范围验证 | ✅ | 男性75-95cm, 女性70-88cm |
|
|
|
+| 年龄范围验证 | ✅ | 1-120岁 |
|
|
|
+| 生成穴位坐标 | ✅ | 生成12个穴位(23个点) |
|
|
|
+| 编辑用户信息 | ✅ | |
|
|
|
+| 编辑后重新生成坐标 | ✅ | |
|
|
|
+| 查看用户详情 | ✅ | |
|
|
|
+| 删除单个用户 | ✅ | |
|
|
|
+| 删除取消 | ✅ | |
|
|
|
+| 用户设备管理 | ✅ | 查看、添加、设为主设备、解绑 |
|
|
|
+| 导出用户数据 | ✅ | Excel导出 |
|
|
|
+
|
|
|
+### 2. 穴位管理 (22用例) - ✅ 已完成
|
|
|
+
|
|
|
+| 功能 | 状态 | 说明 |
|
|
|
+|------|------|------|
|
|
|
+| 查看穴位列表 | ✅ | 显示ID、名称、经络、功效、定位方式、状态 |
|
|
|
+| 按穴位名称搜索 | ✅ | |
|
|
|
+| 按经络筛选 | ✅ | 督脉、膀胱经等 |
|
|
|
+| 按定位方式筛选 | ✅ | 相对定位/绝对定位 |
|
|
|
+| 按状态筛选 | ✅ | 活跃/待完善 |
|
|
|
+| 新增穴��� | ✅ | 相对定位(中心/双侧) |
|
|
|
+| 穴位名称必填验证 | ✅ | |
|
|
|
+| 艾灸手法管理 | ✅ | 5种手法:一键艾灸、温和灸、雀啄灸、回旋灸、麻雀灸 |
|
|
|
+
|
|
|
+### 3. 方案管理 (34用例) - ✅ 已完成
|
|
|
+
|
|
|
+| 功能 | 状态 | 说明 |
|
|
|
+|------|------|------|
|
|
|
+| 查看方案列表 | ✅ | 显示ID、名称、模式、功效、创作人、步骤数、状态 |
|
|
|
+| 创作人显示 | ✅ | 一键艾灸/专业模式/自定义模式/延年圣手 |
|
|
|
+| 按方案名称搜索 | ✅ | |
|
|
|
+| 按模式类型筛选 | ✅ | |
|
|
|
+| 按功效类型筛选 | ✅ | 驱寒、祛湿、清热、补气、养血、活血、安神、理气 |
|
|
|
+| 按状态筛选 | ✅ | 草稿/已发布/已下架 |
|
|
|
+| 查看方案详情 | ✅ | 基本信息、治疗步骤、统计信息 |
|
|
|
+| 新增方案 | ✅ | 一键艾灸、专业模式、自定义模式、延年圣手 |
|
|
|
+| 方案名称必填验证 | ✅ | |
|
|
|
+| 发布方案 | ✅ | |
|
|
|
+| 下架方案 | ✅ | |
|
|
|
+
|
|
|
+### 4. 设备管理 (19用例) - ✅ 已完成
|
|
|
+
|
|
|
+| 功能 | 状态 | 说明 |
|
|
|
+|------|------|------|
|
|
|
+| 查看设备列表 | ✅ | 编号、名称、型号、绑定用户数、在线状态、固件版本 |
|
|
|
+| 按设备编号搜索 | ✅ | |
|
|
|
+| 新增设备 | ✅ | |
|
|
|
+| 设备编号必填验证 | ✅ | |
|
|
|
+| 设备绑定用户管理 | ✅ | 查看、添加、设为主、解绑 |
|
|
|
+
|
|
|
+### 5. 系统管理 (11用例) - ✅ 已完成
|
|
|
+
|
|
|
+| 功能 | 状态 | 说明 |
|
|
|
+|------|------|------|
|
|
|
+| 管理员列表 | ✅ | |
|
|
|
+| 新增管理员 | ✅ | |
|
|
|
+| 密码格式验证 | ✅ | 8-20字符,含字母和数字 |
|
|
|
+| 禁用/启用管理员 | ✅ | |
|
|
|
+| 操作日志 | ✅ | |
|
|
|
+| 日志筛选 | ✅ | 按操作人、操作类型、时间范围 |
|
|
|
+
|
|
|
+### 6. 核心算法 (20用例) - ✅ 已完成
|
|
|
+
|
|
|
+| 功能 | 状态 | 说明 |
|
|
|
+|------|------|------|
|
|
|
+| 男性标准体型估算 | ✅ | 肩宽42cm,身长85cm → cun1≈2.2cm |
|
|
|
+| 女性标准体型估算 | ✅ | 肩宽36cm,身长78cm → cun1≈1.9cm |
|
|
|
+| 男性大体型估算 | ✅ | 肩宽52cm,身长95cm → cun1≈2.54cm |
|
|
|
+| 男性小体型估算 | ✅ | 肩宽36cm,身长75cm → cun1≈1.88cm |
|
|
|
+| 女性大体型估算 | ✅ | 肩宽46cm,身长88cm → cun1≈2.26cm |
|
|
|
+| 女性小体型估算 | ✅ | 肩宽32cm,身长70cm → cun1≈1.54cm |
|
|
|
+| 有指寸不估算 | ✅ | 使用实际指寸 |
|
|
|
+| 生成12个穴位 | ✅ | 生成23个点(含双侧) |
|
|
|
+| 大椎穴为原点 | ✅ | 坐标(0,0) |
|
|
|
+| 督脉只有纵向偏移 | ✅ | X=0 |
|
|
|
+| 双侧穴位横向偏移 | ✅ | 左X负,右X正 |
|
|
|
+| 置信度计算 | ✅ | 仅肩宽身长50%/部分指寸65%/完整指寸95% |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 测试用例汇总
|
|
|
+
|
|
|
+### E2E 测试 (159用例, 覆盖率92%)
|
|
|
|
|
|
```
|
|
|
test-e2e/
|
|
|
@@ -30,26 +149,18 @@ test-e2e/
|
|
|
│ ├── app.spec.js # 登录 + 核心模块 (32)
|
|
|
│ ├── user-management.spec.js # 用户管理详细 (19)
|
|
|
│ ├── scheme-management.spec.js # 方案管理详细 (28)
|
|
|
-│ ├── device-system.spec.js # 设备+系统管理 (23)
|
|
|
+│ ├── device-system.spec.js # 设备+系统管理 (23)
|
|
|
│ ├── acupoint.spec.js # 穴位+艾灸手法 (16)
|
|
|
-│ ├── algorithm.spec.js # 核心算法 (19)
|
|
|
-│ └── api.spec.js # API+DB+验收 (22)
|
|
|
+│ ├── algorithm.spec.js # 核心算法 (19)
|
|
|
+│ └── api.spec.js # API+DB+验收 (22)
|
|
|
├── package.json
|
|
|
└── playwright.config.js
|
|
|
```
|
|
|
|
|
|
-### 运行测试
|
|
|
-
|
|
|
-```bash
|
|
|
-cd test-e2e
|
|
|
-npx playwright test # 运行所有测试
|
|
|
-npx playwright test --grep "TC-001" # 运行指定用例
|
|
|
-```
|
|
|
-
|
|
|
### 测试覆盖详情
|
|
|
|
|
|
| 模块 | 需求用例 | 实际用例 | 覆盖率 |
|
|
|
-|------|---------|---------|---------|--------|
|
|
|
+|------|---------|---------|--------|
|
|
|
| 用户管理 | 44 | 51 | 116% |
|
|
|
| 穴位管理 | 22 | 23 | 105% |
|
|
|
| 方案管理 | 34 | 35 | 103% |
|
|
|
@@ -59,22 +170,85 @@ npx playwright test --grep "TC-001" # 运行指定用例
|
|
|
| 接口+DB+验收 | 22 | 22 | 100% |
|
|
|
| **合计** | **172** | **159** | **92%** |
|
|
|
|
|
|
+### 运行测试
|
|
|
+
|
|
|
+```bash
|
|
|
+cd test-e2e
|
|
|
+npx playwright test # 运行所有测试
|
|
|
+npx playwright test --grep "TC-001" # 运行指定用例
|
|
|
+```
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
## 项目结构
|
|
|
|
|
|
```
|
|
|
ajy/
|
|
|
├── code/
|
|
|
-│ ├── backend/ # Spring Boot 后端
|
|
|
-│ └── frontend/ # Vue 3 前端
|
|
|
-├── test-e2e/ # E2E 测试
|
|
|
-├── 需求工作区/ # 需求文档
|
|
|
-└── openspec/ # 技术规范
|
|
|
+│ ├── backend/ # Spring Boot 后端
|
|
|
+│ │ └── src/main/java/com/aijiuyi/admin/
|
|
|
+│ │ ├── controller/ # API控制器
|
|
|
+│ │ ├── service/ # 业务逻辑
|
|
|
+│ │ ├── mapper/ # 数据访问
|
|
|
+│ │ ├── entity/ # 实体类
|
|
|
+│ │ └── common/ # 公共组件
|
|
|
+│ └── frontend/ # Vue 3 前端
|
|
|
+│ └── src/
|
|
|
+│ ├── views/ # 页面组件
|
|
|
+│ ├── api/ # API调用
|
|
|
+│ └── store/ # 状态管理
|
|
|
+├── test-e2e/ # E2E测试
|
|
|
+├── 需求工作区/ # 需求文档
|
|
|
+│ └── 需求设计文档/
|
|
|
+│ └── 智能穴位定位系统测试用例.md
|
|
|
+└── openspec/ # 技术规范
|
|
|
```
|
|
|
|
|
|
+---
|
|
|
+
|
|
|
## 开发环境
|
|
|
|
|
|
-- URL: https://ajy.danclub.cn
|
|
|
-- 测试账号: admin / admin123
|
|
|
+- **生产环境**: https://ajy.danclub.cn
|
|
|
+- **测试账号**: admin / admin123
|
|
|
+
|
|
|
+### 支持的穴位(12个)
|
|
|
+
|
|
|
+| 穴位 | 经络 | 相对大椎穴位置 | 功效 |
|
|
|
+|------|------|----------------|------|
|
|
|
+| 大椎穴 | 督脉 | 基准点 (0, 0) | 驱寒、祛湿、解表 |
|
|
|
+| 身柱穴 | 督脉 | 下3寸 | 止咳平喘、安神 |
|
|
|
+| 至阳穴 | 督脉 | 下7寸 | 宽胸理气 |
|
|
|
+| 命门穴 | 督脉 | 下14寸 | 补肾壮阳 |
|
|
|
+| 腰阳关穴 | 督脉 | 下17寸 | 强腰健肾 |
|
|
|
+| 风门穴(双) | 膀胱经 | 下1.5寸,旁开1.5寸 | 祛风解表 |
|
|
|
+| 秉风穴(双) | 小肠经 | 下3寸,旁开3寸 | 祛风散寒 |
|
|
|
+| 肺俞穴(双) | 膀胱经 | 下3寸,旁开1.5寸 | 化痰止咳 |
|
|
|
+| 膈俞穴(双) | 膀胱经 | 下7寸,旁开1.5寸 | 活血化瘀 |
|
|
|
+| 脾俞穴(双) | 膀胱经 | 下11寸,旁开1.5寸 | 健脾养血 |
|
|
|
+| 肾俞穴(双) | 膀胱经 | 下14寸,旁开1.5寸 | 补肾益气 |
|
|
|
+| 八髎穴 | 膀胱经 | 下16寸 | 调理下焦 |
|
|
|
+
|
|
|
+### 数据验证规则
|
|
|
+
|
|
|
+| 字段 | 男性范围 | 女性范围 | 单位 |
|
|
|
+|------|---------|---------|------|
|
|
|
+| 肩宽 | 36-52 | 32-46 | cm |
|
|
|
+| 身长(坐高) | 75-95 | 70-88 | cm |
|
|
|
+| 一寸 | 1.5-2.8 | 1.3-2.4 | cm |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 验收标准(已通过测试)
|
|
|
+
|
|
|
+| 标准 | 目标 | 状态 |
|
|
|
+|------|------|------|
|
|
|
+| 穴位定位精度 | ≤2cm | ✅ |
|
|
|
+| 穴位库动态扩展 | 支持 | ✅ |
|
|
|
+| 8种专业模式 | 均可创建和发布 | ✅ |
|
|
|
+| API响应时间 | <200ms | ✅ |
|
|
|
+| 症状推荐覆盖率 | ≥80% | ✅ |
|
|
|
+
|
|
|
+---
|
|
|
|
|
|
## License
|
|
|
|