Bladeren bron

feat: 更新智能穴位定位系统设计文档,完善工艺语言生成与专家对接接口

- 新增一键艾灸作为默认艾灸工艺
- 新增用户模式数据存储与同步机制(圣手模式8方案+快捷键1-8)
- 新增专家端对接接口预留(独立项目,本项目仅提供接口规范)
- 新增艾灸工艺生成需求描述(输入/输出/验证规则)
- 更新数据模型:MoxaTechnique、UserModeStorage、ExpertModeStorage、DeviceHotkeyMap
- 更新API接口:设备同步接口、专家端对接接口
caitianqi 5 maanden geleden
bovenliggende
commit
da540d3cd5
2 gewijzigde bestanden met toevoegingen van 1554 en 158 verwijderingen
  1. 249 158
      AGENTS.md
  2. 1305 0
      需求工作区/需求设计文档/智能穴位定位系统设计文档.md

+ 249 - 158
AGENTS.md

@@ -1,105 +1,150 @@
 # Agent Guidelines
 
-## Project Overview
+## 项目概述
 
-**艾灸椅功能管理系统** — 智能艾灸设备的云端管理平台
+**艾灸椅智能穴位定位系统** — 基于用户体型数据,实现精准穴位定位,控制艾灸椅对准穴位进行理疗
 
-需求文档:`需求材料/艾灸椅功能定义-最新.xlsx`
+### 核心文档
+
+| 文档 | 路径 | 说明 |
+|------|------|------|
+| 总需求文档 | `需求工作区/需求材料/艾灸椅功能定义-最新.xlsx` | 艾灸椅硬件+APP完整功能定义 |
+| 接口协议 | `需求工作区/需求材料/艾炙椅接口篇.docx` | APP与设备数据接口协议 |
+| 当前功能 | `需求工作区/需求材料/艾灸取穴智能穴位识别功能列表.xlsx` | 智能穴位识别功能清单 |
+| 设计文档 | `需求工作区/需求材料/design-docs/` | 功能提案、算法设计、用户流程 |
+
+### 项目结构
+
+```
+D:\AI工作台\ajy\
+├── AGENTS.md                    # 本文件 - Agent协作指南
+├── 需求工作区/                   # 需求分析工作区
+│   ├── 需求材料/                # 原始需求文档
+│   │   ├── 艾灸椅功能定义-最新.xlsx
+│   │   ├── 艾炙椅接口篇.docx
+│   │   ├── 艾灸取穴智能穴位识别功能列表.xlsx
+│   │   └── design-docs/        # 设计文档
+│   │       ├── 穴位定位功能提案.md
+│   │       ├── 穴位定位任务清单.md
+│   │       ├── 穴位定位算法设计.md
+│   │       └── 穴位定位用户流程.md
+│   ├── 模版文件/                # 文档模板
+│   └── 需求设计文档/            # 输出设计文档
+└── openspec/                    # 技术实现规范
+    └── aijiyiBackend/          # 后端项目
+```
+
+---
 
 ## AI 角色分工
 
-本项目采用**多角色协作**模式,不同角色负责不同阶段:
+本项目采用**多角色协作**模式,当前AI承担以下角色
 
 ### 角色定义
 
 | 角色 | 职责 | 触发场景 |
 |------|------|----------|
-| **需求工程师**<br>(兼测评工程师) | 需求分析、验收标准、测试用例设计 | 新功能规划、需求澄清 |
-| **系统分析员** | 架构设计、技术方案、接口定义 | 技术选型、系统设计 |
-| **开发人员** | 代码实现、单元测试、代码审查 | 具体编码任务 |
+| **产品经理** | 产品方向定义、优先级排序、业务价值分析 | 产品规划、需求评审 |
+| **需求分析师** | 需求挖掘、用户故事、验收标准定义 | 需求分析、需求澄清 |
+| **系统分析员** | 架构设计、技术方案、接口规范 | 技术选型、系统设计 |
+| **测试工程师** | 测试策略、用例设计、验收测试 | 测试计划、质量保障 |
+
+> **注意**:AI不负责编码实现(开发人员),如需编码请另外安排。
 
 ### 协作流程
 
 ```
-需求阶段          设计阶段          开发阶段          验收阶段
-    │                │                │                │
-    ▼                ▼                ▼                ▼
-┌─────────┐    ┌─────────┐    ┌─────────┐    ┌─────────┐
-│需求工程师│───▶│系统分析员│───▶│开发人员  │───▶│需求工程师│
-│(测评)   │    │         │    │         │    │(测评)   │
-└─────────┘    └─────────┘    └─────────┘    └─────────┘
-    │                                              │
-    │  1. 需求文档                                 │  4. 验收测试
-    │  2. 验收标准                                 │
-    │  3. 测试用例                                 │
-    └──────────────────────────────────────────────┘
+┌─────────────────────────────────────────────────────────────────────┐
+│                        需求开发流程                                  │
+├─────────────────────────────────────────────────────────────────────┤
+│                                                                     │
+│  需求阶段          设计阶段          验证阶段          交付阶段      │
+│      │                │                │                │          │
+│      ▼                ▼                ▼                ▼          │
+│  ┌─────────┐    ┌─────────┐    ┌─────────┐    ┌─────────┐        │
+│  │产品经理  │───▶│系统分析员│───▶│测试工程师│───▶│产品经理  │        │
+│  │需求分析师│    │         │    │         │    │         │        │
+│  └─────────┘    └─────────┘    └─────────┘    └─────────┘        │
+│      │                │                │                │          │
+│      │ 1.需求分析     │ 2.技术方案     │ 3.测试用例     │ 4.验收    │
+│      │ 2.用户故事     │ 3.接口设计     │ 4.测试执行     │ 5.交付    │
+│      │ 3.验收标准     │ 4.数据模型     │                │          │
+│      │                │                │                │          │
+│      └────────────────┴────────────────┴────────────────┘          │
+│                                                                     │
+└─────────────────────────────────────────────────────────────────────┘
 ```
 
 ### 角色职责详解
 
-#### 需求工程师 (兼测评工程师)
-
-**需求职责:**
-- 分析 `需求材料/艾灸椅功能定义-最新.xlsx` 中的功能需求
-- 将业务需求转化为用户故事和验收标准
-- 澄清需求歧义,确认边界条件
-- 输出:`openspec/changes/{feature}/proposal.md`
+#### 产品经理
 
-**测评职责:**
-- 根据验收标准设计测试用例
-- 定义测试场景(正常流、异常流、边界条件)
-- 编写验收测试脚本
-- 执行验收测试并签署通过/不通过
-- 输出:`tests/acceptance/{feature}.test.ts`
+**核心职责**:
+- 定义产品愿景和目标
+- 优先级排序和路线图规划
+- 业务价值分析和ROI评估
+- 用户体验和交互设计指导
+- 市场竞品分析
 
-**工作产出**
+**工作产出**
 ```
-需求阶段:
-├── proposal.md      # 需求提案
-├── acceptance-criteria.md  # 验收标准
-└── test-cases.md    # 测试用例设计
+需求工作区/
+├── 产品愿景.md           # 产品方向和目标
+├── 功能优先级.md         # 功能排序和版本规划
+└── 用户画像.md           # 目标用户分析
+```
+
+#### 需求分析师
+
+**核心职责**:
+- 分析原始需求文档,提取关键信息
+- 将业务需求转化为用户故事
+- 定义验收标准和边界条件
+- 澄清需求歧义,确认假设
+- 输出结构化的需求文档
 
-验收阶段:
-└── {feature}.test.ts  # 验收测试脚本
+**工作产出**:
+```
+需求工作区/需求设计文档/
+├── {feature}-proposal.md         # 功能提案
+├── {feature}-user-stories.md     # 用户故事
+├── {feature}-acceptance.md       # 验收标准
+└── {feature}-edge-cases.md       # 边界条件
 ```
 
 #### 系统分析员
 
-**职责:**
+**核心职责**
 - 技术选型和架构设计
-- 定义 API 接口规范
-- 设计数据模型和数据库 schema
+- 定义API接口规范
+- 设计数据模型和数据库schema
 - 识别技术风险和依赖
-- 输出:`openspec/changes/{feature}/design.md`
+- 输出技术设计方案
 
-**工作产出**
+**工作产出**
 ```
-├── design.md        # 技术设计方案
-├── api-spec.yaml    # API 接口定义
-├── data-model.md    # 数据模型设计
-└── tasks.md         # 开发任务拆解
+需求工作区/需求设计文档/
+├── {feature}-design.md           # 技术设计方案
+├── {feature}-api-spec.yaml       # API接口定义
+├── {feature}-data-model.md       # 数据模型设计
+└── {feature}-tasks.md            # 开发任务拆解
 ```
 
-#### 开发人员
+#### 测试工程师
 
-**职责**
-- 按设计文档实现功能代码
-- 编写单元测试(TDD:先写测试再写代码
-- 代码自审和互审
-- 修复 bug 和技术债务
-- 输出:`apps/{web,api}/src/`
+**核心职责**
+- 根据验收标准设计测试用例
+- 定义测试场景(正常流、异常流、边界条件
+- 编写测试脚本
+- 执行测试并报告结果
+- 质量保障和风险评估
 
-**工作产出**
+**工作产出**
 ```
-apps/
-├── web/src/
-│   ├── components/  # UI 组件
-│   ├── pages/       # 页面
-│   └── hooks/       # 自定义 hooks
-└── api/src/
-    ├── routes/      # API 路由
-    ├── services/    # 业务逻辑
-    └── models/      # 数据模型
+需求工作区/需求设计文档/
+├── {feature}-test-strategy.md    # 测试策略
+├── {feature}-test-cases.md       # 测试用例
+└── {feature}-test-report.md      # 测试报告
 ```
 
 ### 角色切换规则
@@ -107,17 +152,17 @@ apps/
 在对话中通过角色声明切换:
 
 ```
-[需求工程师] 分析用户登录功能需求...
+[产品经理] 定义产品愿景和优先级...
+[需求分析师] 分析用户登录功能需求...
 [系统分析员] 设计用户认证架构方案...
-[开发人员] 实现登录 API 和前端表单...
-[测评工程师] 执行登录功能验收测试...
+[测试工程师] 设计登录功能测试用例...
 ```
 
 **默认角色**:根据任务类型自动识别
-- 需求澄清 → 需求工程师
+- 产品规划 → 产品经理
+- 需求澄清 → 需求分析师
 - 架构讨论 → 系统分析员
-- 代码实现 → 开发人员
-- 测试验收 → 测评工程师(需求工程师兼任)
+- 测试验收 → 测试工程师
 
 ### 质量门禁
 
@@ -125,91 +170,137 @@ apps/
 
 | 阶段 | 进入条件 | 输出物 |
 |------|----------|--------|
-| 需求 → 设计 | 需求文档已确认,验收标准已定义 | proposal.md, acceptance-criteria.md |
+| 需求 → 设计 | 需求文档已确认,验收标准已定义 | proposal.md, acceptance.md |
 | 设计 → 开发 | 技术方案已评审,任务已拆解 | design.md, tasks.md |
-| 开发 → 验收 | 单元测试通过,代码审查完成 | 源代码, 单元测试 |
-| 验收 → 完成 | 验收测试通过,无阻塞性缺陷 | 验收测试报告 |
-
-## Build / Lint / Test Commands
-
-**None configured.** This repo has no `package.json`, `Makefile`, `pyproject.toml`, or any build configuration.
-
-When a project is added, document commands here. Common patterns:
-
-```bash
-# Node.js / npm
-npm install          # install deps
-npm run dev          # dev server
-npm run build        # production build
-npm test             # run all tests
-npm test -- --testPathPattern=filename  # single test
-
-# Python
-pip install -r requirements.txt
-pytest tests/test_file.py::TestClass::test_method  # single test
-pytest -k test_name   # single test by name
-
-# Go
-go build ./...
-go test -run TestName ./...
-
-# Rust
-cargo build
-cargo test test_name
-```
-
-## Code Style Guidelines
-
-**No code exists yet.** When adding code, follow these defaults unless project-specific configs dictate otherwise:
-
-### Imports
-- Group: stdlib → third-party → local
-- Sort alphabetically within groups
-- Use explicit imports, no wildcards
-
-### Formatting
-- Match existing file indentation (2 or 4 spaces)
-- Max line length: 80-120 chars
-- Consistent line endings (CRLF on Windows, LF elsewhere)
-
-### Naming
-- **Files**: kebab-case or PascalCase
-- **Classes**: PascalCase (`UserService`)
-- **Functions/Vars**: camelCase (`getUserById`)
-- **Constants**: SCREAMING_SNAKE_CASE (`MAX_RETRIES`)
-- **Booleans**: `is`/`has`/`should` prefix (`isActive`)
-
-### Error Handling
-- Use specific error types, not generic
-- Include context in error messages
-- Never silently swallow errors
-
-### Types (if TypeScript)
-- Explicit annotations on params and returns
-- Avoid `any` — use `unknown` if truly unknown
-- Enable strict mode
-
-## Working with This Repository
-
-1. **Read first** — Always check existing files before editing
-2. **Understand domain** — Review `需求材料/艾灸椅功能定义-最新.xlsx` before implementing
-3. **Follow conventions** — Match whatever pattern the added project uses
-4. **Test changes** — Run appropriate tests when available
-5. **Commit responsibly** — Atomic, focused commits with clear messages
-
-## Git Conventions
-
-- Feature branches for new work
-- Atomic commits with clear messages
-- Run linters before committing (once configured)
-- Review changes before pushing
-
-## Security
-
-- Never commit secrets, API keys, or credentials
-- Use environment variables for sensitive config
-- Validate and sanitize all user inputs
-
-## Cursor / Copilot Rules
-
-No Cursor rules (`.cursorrules`, `.cursor/rules/`) or Copilot instructions (`.github/copilot-instructions.md`) found.
+| 开发 → 验收 | 代码实现完成,单元测试通过 | 源代码, 单元测试 |
+| 验收 → 完成 | 验收测试通过,无阻塞性缺陷 | 测试报告 |
+
+---
+
+## 当前功能:智能穴位定位
+
+### 功能概述
+
+基于用户体型数据(肩宽、身长、指寸),计算12个常用穴位的相对位置,生成穴位对照表,支持艾灸椅精准定位穴位进行理疗。
+
+### 核心算法
+
+1. **指寸估算**:当用户未提供指寸数据时,根据肩宽和身长估算
+   - 男性:肩宽权重 0.6,身长权重 0.4
+   - 女性:肩宽权重 0.4,身长权重 0.6
+
+2. **穴位计算**:以大椎穴为基准点,计算各穴位相对偏移
+   - 督脉穴位(正中):仅纵向偏移
+   - 膀胱经穴位(双侧):纵向+横向偏移
+
+3. **置信度评分**:根据数据完整度评估定位精度
+   - 仅肩宽+身长:50%置信度,±5cm精度
+   - 完整指寸数据:95%置信度,±2cm精度
+
+### 支持的穴位(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 |
+| 1.5寸 | 2.2-4.0 | 2.0-3.5 | cm |
+| 三寸 | 4.5-8.0 | 4.0-7.0 | cm |
+
+### 验收标准
+
+1. 穴位定位精度 ≤ 2cm(指寸数据完整时)
+2. 经络图支持点击、缩放交互
+3. 症状推荐覆盖率 80%+
+4. API响应时间 < 200ms
+
+---
+
+## 通信协议
+
+### 蓝牙BLE 5.0
+
+| 特征值UUID | 用途 | 方向 |
+|------------|------|------|
+| `0000FFF1-0000-1000-8000-00805F9B34FB` | 命令写入 | APP → 设备 |
+| `0000FFF2-0000-1000-8000-00805F9B34FB` | 数据通知 | 设备 → APP |
+| `0000FFF3-0000-1000-8000-00805F9B34FB` | 用户档案写入 | APP → 设备 |
+| `0000FFF4-0000-1000-8000-00805F9B34FB` | 穴位对照表通知 | 设备 → APP |
+
+### 命令类型
+
+| 命令码 | 名称 | 说明 |
+|--------|------|------|
+| `0x01` | AUTH_REQUEST | 连接认证请求 |
+| `0x02` | AUTH_RESPONSE | 认证响应 |
+| `0x10` | GET_USER_LIST | 获取用户列表 |
+| `0x11` | CREATE_USER | 创建用户 |
+| `0x12` | SELECT_USER | 选择用户 |
+| `0x13` | DELETE_USER | 删除用户 |
+| `0x20` | START_DETECTION | 开始检测 |
+| `0x21` | DAZHUI_POSITION | 大椎穴位置上报 |
+| `0x22` | ACUPOINT_TABLE_SYNC | 穴位对照表同步 |
+| `0x30` | START_TREATMENT | 开始治疗 |
+| `0x31` | PAUSE_TREATMENT | 暂停治疗 |
+| `0x32` | RESUME_TREATMENT | 恢复治疗 |
+| `0x33` | END_TREATMENT | 结束治疗 |
+| `0x40` | DEVICE_STATUS | 设备状态查询 |
+| `0x41` | ERROR_REPORT | 错误上报 |
+
+---
+
+## API接口设计
+
+| 方法 | 路径 | 描述 |
+|------|------|------|
+| POST | `/api/users/:id/acupoint-table` | 生成用户穴位对照表 |
+| POST | `/api/users/:id/acupoint-table/validate` | 验证输入数据 |
+| GET | `/api/users/:id/acupoint-table` | 获取用户穴位对照表 |
+| POST | `/api/treatment-sessions` | 创建治疗会话 |
+| POST | `/api/treatment-sessions/:id/start` | 开始治疗 |
+| GET | `/api/acupoints` | 获取所有穴位基础数据 |
+| GET | `/api/acupoints/:id` | 获取单个穴位详情 |
+
+---
+
+## Git 规范
+
+- 使用功能分支开发
+- 提交信息格式:`type(scope): description`
+  - `feat`: 新功能
+  - `fix`: 修复bug
+  - `docs`: 文档更新
+  - `refactor`: 代码重构
+  - `test`: 测试相关
+- 推送前运行代码检查(配置后)
+
+## 安全规范
+
+- 不提交密钥、API密钥或凭证
+- 使用环境变量存储敏感配置
+- 验证和清理所有用户输入
+
+---
+
+## 参考标准
+
+- **GB/T 12346-2006**《腧穴名称与定位》
+- **GB/T 10000-1988**《中国成年人人体尺寸》
+- 《针灸学》教材(穴位定位方法)

+ 1305 - 0
需求工作区/需求设计文档/智能穴位定位系统设计文档.md

@@ -0,0 +1,1305 @@
+# 智能穴位定位系统设计文档
+
+## 一、项目概述
+
+### 1.1 项目背景
+
+艾灸椅智能穴位定位系统是艾灸椅项目的核心子系统,负责根据用户体型数据计算穴位位置,并通过APP推送给艾灸椅设备,实现精准穴位定位和艾灸理疗。
+
+### 1.2 三方协作架构
+
+```
+┌─────────────────────────────────────────────────────────────────┐
+│                        项目协作架构                              │
+├─────────────────────────────────────────────────────────────────┤
+│                                                                 │
+│   单位A(硬件)          单位B(APP)           我们(算法+后台)│
+│   ┌─────────┐           ┌─────────┐           ┌─────────┐      │
+│   │ 艾灸椅  │           │  APP    │           │ 后台管理│      │
+│   │ 设备    │◀─────────│ 功能    │◀──────────│ 系统    │      │
+│   └─────────┘   推送    └─────────┘   推送    └─────────┘      │
+│       ▲                           │               │            │
+│       │    传感器数据              │    用户数据   │            │
+│       │    设备状态                │    穴位坐标   │            │
+│       │                           │    艾灸工艺   │            │
+│       └───────────────────────────┴───────────────┘            │
+│                                                                 │
+└─────────────────────────────────────────────────────────────────┘
+```
+
+### 1.3 我们的核心职责
+
+| 职责 | 说明 | 交付物 |
+|------|------|--------|
+| **后台管理系统** | 从零搭建,全新开发 | 管理后台 |
+| **穴位坐标算法** | 用户体型数据 → 穴位相对偏移 | 算法服务 |
+| **艾灸工艺生成** | 专家方案 → 设备可执行工艺语言 | 工艺数据 |
+| **后台-APP接口** | RESTful API供APP调用 | API接口 |
+
+### 1.4 数据流向
+
+```
+我们后台 → APP → 艾灸椅设备(单向推送)
+
+推送内容:
+├── 用户信息(用户档案、体型数据)
+├── 艾灸模式(一键艾灸、专业模式、自定义模式、延年圣手模式)
+├── 艾灸工艺(步骤、穴位相对偏移、艾灸手法)
+└── 其他数据
+
+设备存储:
+├── 用户档案
+├── 穴位对照表(相对偏移)
+└── 艾灸方案
+
+设备执行:
+├── 传感器检测大椎穴位置
+├── 计算实际穴位坐标 = 大椎穴位置 + 相对偏移
+└── 控制灸头移动,进行艾灸
+
+数据关系:
+穴位管理(基础表 + 艾灸手法)
+    ↓ 引用
+方案管理(四种模式)
+    ↓ 关联
+用户管理(用户表)
+    ↓ 生成
+用户穴位坐标数据(穴位对照表)
+```
+
+---
+
+## 二、用户角色定义
+
+### 2.1 四大用户角色
+
+| 角色 | 描述 | 核心需求 | 入口方式 |
+|------|------|----------|----------|
+| **家庭用户** | 个人购买艾灸椅在家使用 | 便捷、安全、个性化穴位定位 | APP |
+| **专业理疗师** | 门店/诊所理疗师,服务多个客户 | 效率、准确性、多用户管理 | APP |
+| **系统管理员** | 平台管理,维护系统运营 | 用户管理、设备管理、数据监控 | 后台管理系统 |
+| **专家** | 中医专家,发布专业艾灸方案 | 方案发布、方案管理、效果追踪 | 小程序/公众号 |
+
+### 2.2 专家角色详细说明
+
+**专家工作流程**:
+```
+专家登录(小程序/公众号)
+    ↓
+创建艾灸理疗方案
+    ↓
+输入方案描述:
+- 症状/功效(如:驱寒、祛湿、活血)
+- 穴位组合(如:大椎穴、风门穴、肺俞穴)
+- 治疗步骤(温度、时间、顺序)
+- 适用人群(性别、年龄范围)
+    ↓
+系统解析 → 生成工艺语言
+    ↓
+包含穴位相对偏移(基于标准穴位数据)
+    ↓
+发布方案(指定用户/公开发布)
+    ↓
+用户在APP中看到并选择专家方案
+```
+
+### 2.3 8种专业模式
+
+| 模式 | 功效 | 适用症状 |
+|------|------|----------|
+| 驱寒模式 | 温阳散寒 | 怕冷、手脚冰凉 |
+| 祛湿模式 | 健脾祛湿 | 身体困重、大便黏腻 |
+| 祛风模式 | 祛风解表 | 感冒、头痛 |
+| 化瘀模式 | 活血化瘀 | 疼痛、淤青 |
+| 活血模式 | 活血通络 | 血液循环不畅 |
+| 化痰模式 | 化痰止咳 | 咳嗽、痰多 |
+| 养颜模式 | 美容养颜 | 皮肤暗沉 |
+| 扶阳模式 | 温补肾阳 | 腰膝酸软 |
+
+---
+
+## 三、核心功能模块
+
+### 3.1 功能模块清单
+
+```
+艾灸取穴智能穴位识别功能
+├── 1. 后台管理系统
+│   ├── 用户管理
+│   │   ├── 用户列表
+│   │   ├── 用户档案(基本信息、体型数据)
+│   │   └── 该用户的穴位坐标数据(穴位对照表)
+│   │
+│   ├── 穴位管理(独立表)
+│   │   ├── 基础穴位信息(名称、经络、功效)
+│   │   └── 艾灸手法(一键艾灸[默认]、温和灸、雀啄灸、回旋灸等)
+│   │
+│   ├── 方案管理(每个用户独立存储)
+│   │   ├── 一键艾灸(默认艾灸工艺,系统预置)
+│   │   ├── 专业模式(8种功效选择)
+│   │   ├── 自定义模式(用户自选穴位)
+│   │   └── 延年圣手模式(专家方案,最新8个同步至设备,设备快捷键1-8)
+│   │
+│   ├── 艾灸工艺生成
+│   │   ├── 输入:专家方案(使用系统模板输入)
+│   │   ├── 处理:解析→验证→生成工艺语言
+│   │   └── 输出:系统工艺语言(设备可执行)
+│   │
+│   └── 系统管理
+│       ├── 管理员管理
+│       └── 操作日志
+│
+├── 2. 核心算法模块
+│   ├── 指寸估算算法
+│   ├── 穴位对照表生成算法
+│   ├── 数据验证算法
+│   ├── 置信度计算算法
+│   └── 工艺语言生成算法
+│
+├── 3. 数据接口模块
+│   ├── APP-后台RESTful API
+│   ├── 推送数据格式定义
+│   ├── 四种艾灸模式接口
+│   └── 设备同步接口(圣手模式8方案同步)
+│
+└── 4. 专家端对接(独立项目,预留接口)
+    ├── 专家端接口规范(对外提供)
+    ├── 方案接收接口(接收专家方案数据)
+    └── 方案发布接口(发布至指定用户/公开)
+```
+艾灸取穴智能穴位识别功能
+├── 1. 后台管理系统
+│   ├── 用户管理
+│   │   ├── 用户列表
+│   │   ├── 用户档案(基本信息、体型数据)
+│   │   └── 该用户的穴位坐标数据(穴位对照表)
+│   │
+│   ├── 穴位管理(独立表)
+│   │   ├── 基础穴位信息(名称、经络、功效)
+│   │   └── 艾灸手法(温和灸、雀啄灸、回旋灸等)
+│   │
+│   ├── 方案管理
+│   │   ├── 一键艾灸(默认方案)
+│   │   ├── 专业模式(8种功效选择)
+│   │   ├── 自定义模式(用户自选穴位)
+│   │   └── 延年圣手模式(专家方案)
+│   │
+│   └── 系统管理
+│       ├── 管理员管理
+│       └── 操作日志
+│
+├── 2. 核心算法模块
+│   ├── 指寸估算算法
+│   ├── 穴位对照表生成算法
+│   ├── 数据验证算法
+│   └── 置信度计算算法
+│
+├── 3. 数据接口模块
+│   ├── APP-后台RESTful API
+│   ├── 推送数据格式定义
+│   └── 四种艾灸模式接口
+│
+└── 4. 专家端(小程序/公众号)
+    ├── 专家登录
+    ├── 方案创建(使用系统模板)
+    ├── 工艺语言生成
+    └── 方案发布(指定用户/公开)
+
+### 3.5 专家方案模板设计
+
+**核心原则**:专家必须使用系统提供的模板输入方案,确保数据标准化。
+
+#### 模板类型
+
+| 模板类型 | 适用场景 | 说明 |
+|----------|----------|------|
+| **专业模式模板** | 8种功效方案 | 驱寒、祛湿、祛风、化瘀、活血、化痰、养颜、扶阳 |
+| **自定义模板** | 专家自由组合 | 不限功效,自由选择穴位 |
+| **症状推荐模板** | 按症状推荐 | 系统根据症状推荐穴位组合,专家调整 |
+
+#### 模板结构
+
+**基本信息模板**:
+- 方案名称(必填)
+- 功效类型(必填,8选1)
+- 适用症状(必填,多选)
+- 适用人群(必填,不限/仅男/仅女)
+- 适用年龄(必填,范围)
+- 方案描述(选填,200字以内)
+
+**治疗步骤模板**:
+- 穴位选择(必填,从穴位库选择)
+- 侧别(必填,单侧/双侧/左侧/右侧)
+- 温度设置(必填,35-50°C)
+- 时间设置(必填,1-30分钟)
+- 艾灸手法(必填,4选1)
+- 备注(选填)
+
+#### 8种专业模式预设
+
+| 模式 | 必选穴位 | 可选穴位 | 默认温度 | 默认时间 | 默认手法 |
+|------|----------|----------|----------|----------|----------|
+| **驱寒模式** | 大椎穴、命门穴 | 关元穴、气海穴 | 45-48°C | 8-10分钟 | 温和灸 |
+| **祛湿模式** | 大椎穴、脾俞穴(双)、肾俞穴(双) | 足三里(双)、阴陵泉(双) | 42-45°C | 5-8分钟 | 温和灸 |
+| **祛风模式** | 大椎穴、风门穴(双)、秉风穴(双) | 肺俞穴(双) | 40-42°C | 5-6分钟 | 雀啄灸 |
+| **化瘀模式** | 大椎穴、膈俞穴(双)、八髎穴 | 血海穴(双) | 43-45°C | 6-8分钟 | 回旋灸 |
+| **活血模式** | 大椎穴、膈俞穴(双)、命门穴 | 足三里(双) | 42-45°C | 6-8分钟 | 温和灸 |
+| **化痰模式** | 大椎穴、肺俞穴(双)、脾俞穴(双) | 丰隆穴(双) | 40-43°C | 5-7分钟 | 温和灸 |
+| **养颜模式** | 大椎穴、肺俞穴(双)、脾俞穴(双)、肾俞穴(双) | 血海穴(双) | 40-42°C | 5-6分钟 | 温和灸 |
+| **扶阳模式** | 大椎穴、命门穴、至阳穴 | 关元穴、气海穴 | 45-48°C | 8-10分钟 | 温和灸 |
+
+#### 模板验证规则
+
+```typescript
+interface TemplateValidation {
+  // 基本信息验证
+  name: { required: true; maxLength: 50 };
+  efficacyType: { required: true; options: ['驱寒','祛湿','祛风','化瘀','活血','化痰','养颜','扶阳'] };
+  symptoms: { required: true; minSelect: 1 };
+  targetGender: { required: true; options: ['all','male','female'] };
+  ageRange: { required: true; min: 1; max: 120 };
+  
+  // 步骤验证
+  minSteps: 1;
+  maxSteps: 10;
+  temperature: { min: 35; max: 50; unit: '°C' };
+  duration: { min: 1; max: 30; unit: '分钟' };
+  totalDurationLimit: 60;  // 总时长限制(分钟)
+}
+```
+
+#### 模板使用流程
+
+```
+专家登录
+    ↓
+选择模板类型(专业模式/自定义/症状推荐)
+    ↓
+填写方案基本信息
+    ↓
+配置治疗步骤(从模板预设或穴位库选择)
+    ↓
+系统验证(必填项、参数范围、总时长)
+    ↓
+预览方案
+    ↓
+发布方案
+```
+
+---
+
+### 3.6 用户模式数据存储与同步机制
+
+**核心原则**:每个用户拥有独立的四种模式数据存储,设备端同步最新方案。
+
+#### 3.6.1 四种模式存储
+
+| 模式 | 存储位置 | 说明 |
+|------|----------|------|
+| **一键艾灸** | 用户级存储 | 默认艾灸工艺,系统预置,每个用户独立存储 |
+| **专业模式** | 用户级存储 | 8种功效方案,每个用户独立存储 |
+| **自定义模式** | 用户级存储 | 用户自选穴位组合,个人方案 |
+| **延年圣手模式** | 用户级存储 | 专家方案,最新8个同步至设备 |
+
+#### 3.6.2 延年圣手模式同步机制
+
+**关键需求**:用户接收的圣手模式方案,每次要有最新的8个方案同步到设备里,设备有快捷键1-8分别对应圣手模式的艾灸方案。
+
+**同步数据结构**:
+
+```typescript
+// 延年圣手模式 - 用户级存储
+interface ExpertModeStorage {
+  userId: string;
+  schemes: ExpertScheme[];        // 用户接收的专家方案列表(可超过8个)
+  syncedSchemes: SyncedScheme[];  // 同步到设备的最新8个方案
+  updatedAt: Date;
+}
+
+// 同步到设备的方案(最新8个)
+interface SyncedScheme {
+  slot: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;  // 快捷键槽位(1-8)
+  schemeId: string;
+  schemeName: string;
+  processId: string;             // 对应工艺语言ID
+  syncedAt: Date;
+}
+
+// 设备快捷键映射
+interface DeviceHotkeyMap {
+  userId: string;
+  deviceId: string;
+  hotkeys: {
+    '1': { schemeId: string; schemeName: string };  // 快捷键1
+    '2': { schemeId: string; schemeName: string };  // 快捷键2
+    '3': { schemeId: string; schemeName: string };  // 快捷键3
+    '4': { schemeId: string; schemeName: string };  // 快捷键4
+    '5': { schemeId: string; schemeName: string };  // 快捷键5
+    '6': { schemeId: string; schemeName: string };  // 快捷键6
+    '7': { schemeId: string; schemeName: string };  // 快捷键7
+    '8': { schemeId: string; schemeName: string };  // 快捷键8
+  };
+  updatedAt: Date;
+}
+```
+
+**同步流程**:
+
+```
+专家发布方案 → 用户接收方案
+    ↓
+系统检查用户已接收的专家方案数量
+    ↓
+按发布时间排序,取最新8个方案
+    ↓
+生成同步数据(slot 1-8对应最新8个方案)
+    ↓
+推送至APP → 推送至设备存储
+    ↓
+设备更新快捷键映射(1-8对应方案)
+    ↓
+用户按下快捷键1-8 → 执行对应圣手方案
+```
+
+---
+
+### 3.7 艾灸工艺生成需求描述
+
+**功能定位**:将专家描述的艾灸步骤转化为系统工艺语言,使设备可执行。
+
+#### 3.7.1 输入要求
+
+| 输入项 | 来源 | 说明 |
+|--------|------|------|
+| 专家方案 | 专家端(模板输入) | 方案名称、症状、穴位组合、参数 |
+| 模板类型 | 系统预设 | 专业模式/自定义/症状推荐 |
+| 用户体型数据 | 用户档案 | 肩宽、身长、指寸 |
+| 穴位坐标数据 | 穴位对照表 | 用户专属的穴位相对偏移 |
+
+#### 3.7.2 输出要求
+
+**输出内容**:系统工艺语言(MoxaProcess),包含:
+- 方案元数据(名称、症状、适用人群、总时长)
+- 治疗步骤列表(穴位、温度、时间、手法、侧别)
+- 设备可执行指令(移动指令、加热指令、手法指令)
+
+**输出格式**:
+```json
+{
+  "processId": "工艺ID",
+  "schemeId": "方案ID",
+  "metadata": {
+    "name": "方案名称",
+    "symptoms": ["症状列表"],
+    "totalDuration": 1560
+  },
+  "steps": [
+    {
+      "stepOrder": 1,
+      "acupointId": "dazhui",
+      "acupointName": "大椎穴",
+      "temperature": 45,
+      "duration": 480,
+      "techniqueId": "oneclick",
+      "techniqueName": "一键艾灸",
+      "deviceInstruction": {
+        "command": "HEAT",
+        "target": { "acupointId": "dazhui", "offsetX": 0, "offsetY": 0 },
+        "heat": { "mode": "constant", "targetTemp": 45, "duration": 480 }
+      }
+    }
+  ]
+}
+```
+
+#### 3.7.3 验证规则
+
+| 验证项 | 规则 | 处理 |
+|--------|------|------|
+| 穴位有效性 | 穴位必须存在于穴位库 | 自动新增或报错 |
+| 温度范围 | 35-50°C | 超出范围拒绝 |
+| 时间范围 | 1-30分钟/穴位 | 超出范围拒绝 |
+| 总时长 | 不超过60分钟 | 超出警告 |
+| 手法兼容 | 穴位支持该手法 | 验证通过 |
+
+#### 3.7.4 一键艾灸(默认工艺)
+
+**定义**:一键艾灸是系统预置的默认艾灸工艺,每个用户独立存储。
+
+**工艺参数**:
+| 参数 | 默认值 | 说明 |
+|------|--------|------|
+| 穴位组合 | 大椎穴、身柱穴、至阳穴、命门穴、腰阳关穴 | 督脉5穴 |
+| 温度 | 42-45°C | 由低到高渐进 |
+| 时间 | 每穴5-8分钟 | 总时长约30分钟 |
+| 手法 | 温和灸 | 固定不动 |
+
+---
+
+### 3.8 专家端对接接口预留
+
+**重要说明**:专家端是另外一个独立项目,本次项目不做研发,只预留对接接口。
+
+#### 3.8.1 对接接口清单
+
+| 接口 | 方法 | 路径 | 说明 | 状态 |
+|------|------|------|------|------|
+| 方案接收 | POST | `/api/expert/schemes/receive` | 接收专家端创建的方案 | 预留 |
+| 方案更新 | PUT | `/api/expert/schemes/{schemeId}` | 接收专家端更新的方案 | 预留 |
+| 方案列表 | GET | `/api/expert/schemes` | 获取已接收的专家方案 | 预留 |
+| 模板获取 | GET | `/api/expert/templates` | 提供系统模板给专家端 | 预留 |
+| 穴位库获取 | GET | `/api/expert/acupoints` | 提供穴位库给专家端 | 预留 |
+| 手法库获取 | GET | `/api/expert/techniques` | 提供手法库给专家端 | 预留 |
+
+#### 3.8.2 对接数据格式
+
+```typescript
+// 专家端方案推送格式
+interface ExpertSchemePush {
+  expertId: string;              // 专家ID(由专家端系统分配)
+  expertName: string;            // 专家名称
+  schemeName: string;            // 方案名称
+  efficacyType: string;          // 功效类型
+  symptoms: string[];            // 适用症状
+  targetGender: 'male' | 'female' | 'all';
+  ageRange: { min: number; max: number };
+  steps: ExpertStep[];           // 治疗步骤
+  publishType: 'public' | 'private';
+  targetUserIds?: string[];      // 指定用户(私有发布时)
+}
+
+// 专家端治疗步骤
+interface ExpertStep {
+  stepOrder: number;
+  acupointName: string;          // 穴位名称
+  temperature: number;           // 温度
+  duration: number;              // 时间(分钟)
+  techniqueName: string;         // 手法名称
+  side: 'single' | 'both' | 'left' | 'right';
+}
+```
+
+#### 3.8.3 对接说明
+
+- 本项目不开发专家端应用(小程序/公众号)
+- 本项目只提供上述接口规范,供专家端项目对接
+- 专家端项目完成后,通过上述接口推送方案数据
+- 本项目接收方案后,自动生成工艺语言并存储
+
+---
+
+### 3.2 支持的穴位(基础库12个)
+
+| 序号 | 穴位名称 | 所属经络 | 相对大椎穴位置 | 功效 |
+|------|----------|----------|----------------|------|
+| 1 | 大椎穴 | 督脉 | 基准点 (0, 0) | 驱寒、祛湿、解表 |
+| 2 | 身柱穴 | 督脉 | 下3寸 | 止咳平喘、安神 |
+| 3 | 至阳穴 | 督脉 | 下7寸 | 宽胸理气 |
+| 4 | 命门穴 | 督脉 | 下14寸 | 补肾壮阳 |
+| 5 | 腰阳关穴 | 督脉 | 下17寸 | 强腰健肾 |
+| 6 | 风门穴(双) | 足太阳膀胱经 | 下1.5寸,旁开1.5寸 | 祛风解表 |
+| 7 | 秉风穴(双) | 手太阳小肠经 | 下3寸,旁开3寸 | 祛风散寒 |
+| 8 | 肺俞穴(双) | 足太阳膀胱经 | 下3寸,旁开1.5寸 | 化痰止咳 |
+| 9 | 膈俞穴(双) | 足太阳膀胱经 | 下7寸,旁开1.5寸 | 活血化瘀 |
+| 10 | 脾俞穴(双) | 足太阳膀胱经 | 下11寸,旁开1.5寸 | 健脾养血 |
+| 11 | 肾俞穴(双) | 足太阳膀胱经 | 下14寸,旁开1.5寸 | 补肾益气 |
+| 12 | 八髎穴 | 足太阳膀胱经 | 下16寸 | 调理下焦 |
+
+### 3.3 艾灸手法(独立表)
+
+| 手法ID | 手法名称 | 运动模式 | 适用场景 |
+|--------|----------|----------|----------|
+| gentle | 温和灸 | 固定不动 | 常规艾灸,温补 |
+| pecking | 雀啄灸 | 上下移动 | 强刺激,祛邪 |
+| circular | 回旋灸 | 圆周运动 | 温经散寒 |
+| sparrow | 麻雀灸 | 点状移动 | 局部强刺激 |
+
+### 3.4 穴位库动态扩展机制
+
+**两种方式**:
+| 方式 | 触发场景 | 说明 |
+|------|----------|------|
+| **预置维护** | 管理员主动录入 | 提前维护完整穴位库 |
+| **自动新增** | 专家发布方案时 | 方案中出现新穴位,系统自动创建 |
+
+**自动新增流程**:
+```
+专家创建方案 → 输入穴位名称(如:委中穴)
+    ↓
+系统检查穴位库
+    ├─ 已存在 → 直接引用
+    └─ 不存在 → 触发自动新增流程
+        ↓
+        系统自动处理:
+        1. 创建穴位记录(名称、经络待补全)
+        2. 标记为"待完善"状态
+        3. 提示专家补充穴位信息(功效、定位方式等)
+        ↓
+        穴位入库,方案可正常发布
+        ↓
+        管理员可在后台完善穴位详情
+```
+
+---
+
+## 四、核心算法设计
+
+### 4.1 指寸估算算法
+
+当用户未提供指寸数据时,根据肩宽和身长估算:
+- **男性**:肩宽权重 0.6,身长权重 0.4
+- **女性**:肩宽权重 0.4,身长权重 0.6
+
+```typescript
+function estimateFingerWidth(
+  shoulderWidth: number,
+  bodyLength: number,
+  gender: 'male' | 'female'
+): FingerWidth {
+  const STANDARD = {
+    male: {
+      shoulderWidth: 42,      // 男性平均肩宽(厘米)
+      bodyLength: 85,         // 男性平均坐高(厘米)
+      cun1: 2.2,              // 男性一寸约2.2cm
+      cun1_5: 3.3,            // 男性1.5寸约3.3cm
+      cun3: 6.5,              // 男性三寸约6.5cm
+      shoulderWeight: 0.6,    // 肩宽权重
+      lengthWeight: 0.4       // 身长权重
+    },
+    female: {
+      shoulderWidth: 36,      // 女性平均肩宽(厘米)
+      bodyLength: 78,         // 女性平均坐高(厘米)
+      cun1: 1.9,              // 女性一寸约1.9cm
+      cun1_5: 2.8,            // 女性1.5寸约2.8cm
+      cun3: 5.6,              // 女性三寸约5.6cm
+      shoulderWeight: 0.4,    // 肩宽权重
+      lengthWeight: 0.6       // 身长权重
+    }
+  };
+
+  const ref = STANDARD[gender];
+  const widthScale = shoulderWidth / ref.shoulderWidth;
+  const lengthScale = bodyLength / ref.bodyLength;
+  
+  const weightedScale = 
+    widthScale * ref.shoulderWeight + 
+    lengthScale * ref.lengthWeight;
+
+  const estimatedCun1 = ref.cun1 * weightedScale;
+  
+  return {
+    cun1: estimatedCun1,
+    cun1_5: estimatedCun1 * 1.5,
+    cun3: estimatedCun1 * 3
+  };
+}
+```
+
+### 4.2 穴位对照表生成算法
+
+```typescript
+function generateAcupointReferenceTable(
+  bodyData: UserBodyData,
+  gender: 'male' | 'female'
+): AcupointReferenceTable {
+  const { shoulderWidth, bodyLength, fingerWidth } = bodyData;
+
+  // 获取或估算指寸
+  const cun: FingerWidth = fingerWidth 
+    ? fingerWidth 
+    : estimateFingerWidth(shoulderWidth, bodyLength, gender);
+
+  // 计算各穴位位置
+  const acupoints: CalculatedAcupoint[] = ACUPOINT_OFFSETS.map(ap => {
+    // Y方向偏移:指寸数 × 对应指寸值
+    const distanceY = ap.cun * cun[ap.cunType];
+
+    // X方向偏移:横向指寸 × 一寸值
+    const distanceX = ap.side === 'center' 
+      ? 0 
+      : (ap.side === 'left' ? -1 : 1) * (ap.lateralOffset || 0) * cun.cun1;
+
+    return {
+      id: ap.id + (ap.side !== 'center' ? '_' + ap.side : ''),
+      name: ap.name,
+      side: ap.side,
+      offsetFromDazhui: {
+        x: distanceX,
+        y: -distanceY  // 负值表示向下
+      },
+      offsetInCun: ap.cun,
+      cunType: ap.cunType
+    };
+  });
+
+  return {
+    bodyData,
+    fingerWidthUsed: cun,
+    acupoints,
+    createdAt: new Date()
+  };
+}
+```
+
+### 4.3 数据验证算法
+
+**输入验证范围**:
+| 字段 | 男性范围 | 女性范围 | 单位 |
+|------|---------|---------|------|
+| 肩宽 | 36-52 | 32-46 | cm |
+| 身长(坐高) | 75-95 | 70-88 | cm |
+| 一寸 | 1.5-2.8 | 1.3-2.4 | cm |
+| 1.5寸 | 2.2-4.0 | 2.0-3.5 | cm |
+| 三寸 | 4.5-8.0 | 4.0-7.0 | cm |
+
+### 4.4 置信度计算
+
+| 数据完整度 | 综合置信度 | 预估精度 |
+|-----------|-----------|---------|
+| 仅肩宽+身长 | 50% | ±5cm |
+| + 一寸数据 | 65% | ±4cm |
+| + 一寸+1.5寸 | 80% | ±3cm |
+| + 完整指寸 | 95% | ±2cm |
+
+### 4.5 坐标转换算法
+
+**核心问题**:将穴位相对偏移(相对大椎穴)转换为艾灸椅设备坐标系。
+
+**数据流向**:
+```
+用户穴位坐标数据(相对偏移,存储在后台)
+    ↓
+推送到APP
+    ↓
+推送到设备存储
+    ↓
+设备传感器检测大椎穴位置(设备坐标系)
+    ↓
+设备计算:穴位实际坐标 = 大椎穴位置 + 相对偏移
+    ↓
+设备执行:灸头移动到实际坐标
+```
+
+**坐标转换公式**:
+```typescript
+/**
+ * 设备坐标系定义(假设):
+ * X轴:横向(左负右正),单位mm
+ * Y轴:纵向(上正下负),单位mm
+ * Z轴:深度(前正后负),单位mm
+ */
+
+interface DeviceCoordinate {
+  x: number;  // 横向偏移(mm)
+  y: number;  // 纵向偏移(mm)
+  z: number;  // 深度偏移(mm)
+}
+
+interface AcupointOffset {
+  x: number;  // 相对大椎穴横向偏移(cm)
+  y: number;  // 相对大椎穴纵向偏移(cm)
+}
+
+/**
+ * 将穴位相对偏移转换为设备坐标
+ * 注意:此算法在设备端执行
+ * 
+ * @param dazhuiPosition 设备传感器检测的大椎穴位置(设备坐标系,mm)
+ * @param acupointOffset 穴位相对偏移(相对大椎穴,cm)
+ * @param userBodyData 用户体型数据(用于精度修正)
+ * @returns 穴位在设备坐标系中的位置(mm)
+ */
+function convertToDeviceCoordinate(
+  dazhuiPosition: DeviceCoordinate,
+  acupointOffset: AcupointOffset,
+  userBodyData: UserBodyData
+): DeviceCoordinate {
+  // 将厘米转换为毫米
+  const offsetXmm = acupointOffset.x * 10;
+  const offsetYmm = acupointOffset.y * 10;
+  
+  // 坐标转换
+  // 注意:人体坐标系Y轴向下为负,设备坐标系Y轴向下为正
+  return {
+    x: dazhuiPosition.x + offsetXmm,
+    y: dazhuiPosition.y - offsetYmm,  // 转换方向
+    z: dazhuiPosition.z  // 深度通常不变
+  };
+}
+
+/**
+ * 批量转换所有穴位坐标
+ * 
+ * @param dazhuiPosition 设备传感器检测的大椎穴位置
+ * @param acupointTable 用户穴位对照表(相对偏移)
+ * @returns 所有穴位在设备坐标系中的位置
+ */
+function convertAllAcupoints(
+  dazhuiPosition: DeviceCoordinate,
+  acupointTable: AcupointReferenceTable
+): Map<string, DeviceCoordinate> {
+  const positions = new Map<string, DeviceCoordinate>();
+  
+  for (const acupoint of acupointTable.acupoints) {
+    const deviceCoord = convertToDeviceCoordinate(
+      dazhuiPosition,
+      acupoint.offsetFromDazhui,
+      acupointTable.bodyData
+    );
+    positions.set(acupoint.id, deviceCoord);
+  }
+  
+  return positions;
+}
+```
+
+**坐标转换示例**:
+```
+假设:
+- 大椎穴检测位置:{ x: 0, y: 150mm, z: 50mm }
+- 身柱穴相对偏移:{ x: 0cm, y: -6.3cm }
+
+转换:
+- X坐标:0 + 0*10 = 0mm
+- Y坐标:150 - (-6.3)*10 = 150 + 63 = 213mm
+- Z坐标:50mm
+
+结果:身柱穴设备坐标 = { x: 0, y: 213mm, z: 50mm }
+```
+
+**推送给设备的数据格式**:
+```json
+{
+  "userId": "user_001",
+  "dazhuiPosition": {
+    "x": 0,
+    "y": 150,
+    "z": 50
+  },
+  "acupointTable": [
+    {
+      "id": "dazhui",
+      "name": "大椎穴",
+      "offsetX": 0,
+      "offsetY": 0
+    },
+    {
+      "id": "shenzhu",
+      "name": "身柱穴",
+      "offsetX": 0,
+      "offsetY": -63
+    },
+    {
+      "id": "fengmen_left",
+      "name": "风门穴",
+      "offsetX": -31.5,
+      "offsetY": -48
+    }
+  ]
+}
+```
+
+---
+
+## 五、数据模型设计
+
+### 5.1 用户档案
+
+```typescript
+interface UserProfile {
+  id: string;
+  name: string;
+  gender: 'male' | 'female';
+  age: number;
+  phone: string;
+  bodyData: {
+    shoulderWidth: number;     // 肩宽(厘米)
+    bodyLength: number;        // 身长(厘米)
+    fingerWidth?: {
+      cun1: number;            // 一寸
+      cun1_5: number;          // 1.5寸
+      cun3: number;            // 三寸
+    };
+  };
+  fingerprints: string[];      // 指纹ID列表
+  createdAt: Date;
+  updatedAt: Date;
+}
+```
+
+### 5.2 穴位数据(独立表)
+
+```typescript
+// 穴位基础信息
+interface Acupoint {
+  id: string;
+  name: string;
+  meridian: string;            // 所属经络
+  efficacy: string[];          // 功效列表
+  positioning: 'relative' | 'absolute';  // 定位方式
+  offset?: {                   // 相对定位偏移
+    cun: number;
+    cunType: 'cun1' | 'cun1_5' | 'cun3';
+    side: 'center' | 'left' | 'right';
+    lateralOffset?: number;
+  };
+  absolutePosition?: {         // 绝对定位坐标
+    x: number;
+    y: number;
+    z: number;
+  };
+  status: 'active' | 'pending';  // 状态
+  source: 'preset' | 'expert';   // 数据来源
+  createdAt: Date;
+  updatedAt: Date;
+}
+
+// 艾灸手法
+interface MoxaTechnique {
+  id: string;
+  name: string;                // 手法名称(一键艾灸[默认]、温和灸、雀啄灸、回旋灸)
+  isDefault: boolean;          // 是否为默认手法(一键艾灸为默认)
+  description: string;         // 手法描述
+  parameters: {
+    temperatureRange: { min: number; max: number };  // 温度范围
+    durationRange: { min: number; max: number };     // 时间范围(秒)
+    movementPattern: 'fixed' | 'vertical' | 'circular' | 'oneclick';  // 运动模式
+  };
+  createdAt: Date;
+  updatedAt: Date;
+}
+```
+
+### 5.3 穴位对照表(相对偏移)
+
+```typescript
+interface AcupointReferenceTable {
+  userId: string;
+  bodyData: UserBodyData;
+  fingerWidthUsed: FingerWidth;
+  acupoints: CalculatedAcupoint[];
+  createdAt: Date;
+}
+
+interface CalculatedAcupoint {
+  id: string;
+  name: string;
+  side: 'center' | 'left' | 'right';
+  offsetFromDazhui: {
+    x: number;          // 相对大椎穴的横向偏移(厘米)
+    y: number;          // 相对大椎穴的纵向偏移(厘米)
+  };
+  offsetInCun: number;
+  cunType: 'cun1' | 'cun1_5' | 'cun3';
+}
+```
+
+### 5.4 方案管理(四种模式)
+
+```typescript
+// 方案模式枚举
+enum SchemeMode {
+  ONE_CLICK = '一键艾灸',
+  PROFESSIONAL = '专业模式',
+  CUSTOM = '自定义模式',
+  EXPERT = '延年圣手模式'
+}
+
+// 用户模式存储(每个用户独立存储四种模式数据)
+interface UserModeStorage {
+  userId: string;
+  oneClickMode: OneClickScheme;          // 一键艾灸(默认工艺)
+  professionalMode: ProfessionalScheme[]; // 专业模式(8种功效)
+  customMode: CustomScheme[];            // 自定义模式
+  expertMode: ExpertModeStorage;         // 延年圣手模式(含8个同步方案)
+  updatedAt: Date;
+}
+
+// 方案基础结构
+interface Scheme {
+  id: string;
+  schemeName: string;
+  mode: SchemeMode;
+  symptoms: string[];          // 适用症状
+  targetGender: 'male' | 'female' | 'all';
+  ageRange: { min: number; max: number };
+  steps: SchemeStep[];
+  status: 'draft' | 'published' | 'archived';
+  createdAt: Date;
+  updatedAt: Date;
+}
+
+// 一键艾灸方案(默认艾灸工艺)
+interface OneClickScheme extends Scheme {
+  mode: SchemeMode.ONE_CLICK;
+  isDefault: true;             // 始终为true,是默认工艺
+  processId: string;           // 关联的工艺语言ID
+}
+
+// 专业模式方案
+interface ProfessionalScheme extends Scheme {
+  mode: SchemeMode.PROFESSIONAL;
+  efficacyType: '驱寒' | '祛湿' | '祛风' | '化瘀' | '活血' | '化痰' | '养颜' | '扶阳';
+}
+
+// 自定义模式方案
+interface CustomScheme extends Scheme {
+  mode: SchemeMode.CUSTOM;
+  userId: string;              // 用户ID
+  isPersonal: boolean;         // 是否个人方案
+}
+
+// 延年圣手模式方案(专家)
+interface ExpertScheme extends Scheme {
+  mode: SchemeMode.EXPERT;
+  expertId: string;            // 专家ID(来自专家端系统)
+  expertName: string;          // 专家名称
+  publishType: 'public' | 'private';  // 公开/指定
+  targetUsers?: string[];      // 指定用户ID列表
+}
+
+// 延年圣手模式存储(含8个同步方案到设备)
+interface ExpertModeStorage {
+  userId: string;
+  schemes: ExpertScheme[];                // 用户接收的所有专家方案
+  syncedSchemes: SyncedScheme[];          // 同步到设备的最新8个方案
+  updatedAt: Date;
+}
+
+// 同步到设备的方案(最新8个,对应设备快捷键1-8)
+interface SyncedScheme {
+  slot: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;  // 快捷键槽位(1-8)
+  schemeId: string;                        // 方案ID
+  schemeName: string;                      // 方案名称
+  processId: string;                       // 关联工艺语言ID
+  syncedAt: Date;                          // 同步时间
+}
+
+// 设备快捷键映射(推送到设备的数据结构)
+interface DeviceHotkeyMap {
+  userId: string;
+  deviceId: string;
+  hotkeys: {
+    '1': { schemeId: string; schemeName: string; processId: string };
+    '2': { schemeId: string; schemeName: string; processId: string };
+    '3': { schemeId: string; schemeName: string; processId: string };
+    '4': { schemeId: string; schemeName: string; processId: string };
+    '5': { schemeId: string; schemeName: string; processId: string };
+    '6': { schemeId: string; schemeName: string; processId: string };
+    '7': { schemeId: string; schemeName: string; processId: string };
+    '8': { schemeId: string; schemeName: string; processId: string };
+  };
+  updatedAt: Date;
+}
+
+// 方案步骤
+interface SchemeStep {
+  stepOrder: number;
+  acupointId: string;
+  acupointName: string;
+  sides?: ('left' | 'right')[];  // 双侧穴位
+  temperature: number;
+  duration: number;            // 秒
+  techniqueId: string;         // 艾灸手法ID(含 oneclick)
+  techniqueName: string;       // 手法名称(一键艾灸、温和灸、雀啄灸、回旋灸)
+}
+```
+
+---
+
+## 六、API接口设计
+
+### 6.1 用户管理接口
+
+| 接口 | 方法 | 路径 | 说明 |
+|------|------|------|------|
+| 用户登录 | POST | `/api/auth/login` | 手机号+验证码 |
+| 获取用户列表 | GET | `/api/users` | 返回用户列表 |
+| 获取用户详情 | GET | `/api/users/{userId}` | 返回用户信息和体型数据 |
+| 更新用户档案 | PUT | `/api/users/{userId}` | 更新体型数据 |
+| 获取用户穴位坐标 | GET | `/api/users/{userId}/acupoint-coordinates` | 返回该用户的穴位坐标数据 |
+| 生成穴位坐标 | POST | `/api/users/{userId}/acupoint-coordinates` | 根据体型数据生成穴位坐标 |
+
+### 6.2 方案管理接口(四种模式)
+
+| 接口 | 方法 | 路径 | 说明 |
+|------|------|------|------|
+| 获取方案列表 | GET | `/api/schemes` | 获取所有方案(支持按模式筛选) |
+| 获取方案详情 | GET | `/api/schemes/{schemeId}` | 返回方案步骤和工艺 |
+| 创建方案 | POST | `/api/schemes` | 创建方案(需指定模式) |
+| 更新方案 | PUT | `/api/schemes/{schemeId}` | 编辑方案 |
+| 发布方案 | POST | `/api/schemes/{schemeId}/publish` | 发布方案 |
+| 选择方案 | POST | `/api/users/{userId}/schemes/{schemeId}` | 用户选择方案 |
+| 获取一键艾灸 | GET | `/api/schemes/one-click` | 获取一键艾灸默认方案 |
+| 获取专业模式 | GET | `/api/schemes/professional` | 获取专业模式方案列表 |
+| 获取自定义模式 | GET | `/api/users/{userId}/custom-schemes` | 获取用户自定义方案 |
+| 获取专家方案 | GET | `/api/schemes/expert` | 获取专家方案列表 |
+| 获取用户模式存储 | GET | `/api/users/{userId}/mode-storage` | 获取用户四种模式完整数据 |
+| 同步圣手方案到设备 | POST | `/api/users/{userId}/devices/{deviceId}/expert-sync` | 同步最新8个圣手方案到设备(快捷键1-8) |
+
+### 6.3 设备同步接口(延年圣手模式)
+
+| 接口 | 方法 | 路径 | 说明 |
+|------|------|------|------|
+| 获取快捷键映射 | GET | `/api/users/{userId}/devices/{deviceId}/hotkeys` | 获取设备快捷键1-8映射 |
+| 更新快捷键映射 | PUT | `/api/users/{userId}/devices/{deviceId}/hotkeys` | 更新设备快捷键映射 |
+| 触发快捷键方案 | POST | `/api/users/{userId}/devices/{deviceId}/hotkeys/{slot}/trigger` | 触发快捷键1-8对应方案 |
+
+### 6.4 专家端对接接口(预留)
+
+**说明**:专家端是独立项目,本次不研发,只预留对接接口。
+
+| 接口 | 方法 | 路径 | 说明 | 状态 |
+|------|------|------|------|------|
+| 方案接收 | POST | `/api/expert/schemes/receive` | 接收专家端创建的方案 | 预留 |
+| 方案更新 | PUT | `/api/expert/schemes/{schemeId}` | 接收专家端更新的方案 | 预留 |
+| 方案列表 | GET | `/api/expert/schemes` | 获取已接收的专家方案 | 预留 |
+| 模板获取 | GET | `/api/expert/templates` | 提供系统模板给专家端 | 预留 |
+| 穴位库获取 | GET | `/api/expert/acupoints` | 提供穴位库给专家端 | 预留 |
+| 手法库获取 | GET | `/api/expert/techniques` | 提供手法库给专家端 | 预留 |
+
+### 6.5 推送给设备的数据格式
+
+### 6.3 穴位管理接口(独立表)
+
+| 接口 | 方法 | 路径 | 说明 |
+|------|------|------|------|
+| 获取穴位列表 | GET | `/api/acupoints` | 返回穴位库(基础穴位信息) |
+| 获取穴位详情 | GET | `/api/acupoints/{acupointId}` | 返回穴位详情 |
+| 新增穴位 | POST | `/api/acupoints` | 新增穴位 |
+| 更新穴位 | PUT | `/api/acupoints/{acupointId}` | 更新穴位信息 |
+| 获取艾灸手法 | GET | `/api/moxa-techniques` | 返回艾灸手法列表 |
+| 获取手法详情 | GET | `/api/moxa-techniques/{techniqueId}` | 返回手法详情 |
+
+### 6.4 推送给设备的数据格式
+
+```json
+{
+  "userId": "user_001",
+  "userName": "张三",
+  "bodyData": {
+    "shoulderWidth": 42,
+    "bodyLength": 85,
+    "fingerWidth": {
+      "cun1": 2.1,
+      "cun1_5": 3.2,
+      "cun3": 6.3
+    }
+  },
+  "mode": "专业模式",
+  "scheme": {
+    "schemeId": "expert_001",
+    "schemeName": "春季祛湿方案",
+    "steps": [
+      {
+        "stepOrder": 1,
+        "acupointId": "dazhui",
+        "acupointName": "大椎穴",
+        "offsetX": 0,
+        "offsetY": 0,
+        "temperature": 45,
+        "duration": 480,
+        "techniqueId": "gentle",
+        "techniqueName": "温和灸"
+      },
+      {
+        "stepOrder": 2,
+        "acupointId": "fengmen_left",
+        "acupointName": "风门穴",
+        "offsetX": -31.5,
+        "offsetY": -48,
+        "temperature": 42,
+        "duration": 360,
+        "techniqueId": "pecking",
+        "techniqueName": "雀啄灸"
+      }
+    ]
+  }
+}
+```
+
+---
+
+## 七、后台管理系统
+
+### 7.1 功能模块结构
+
+```
+后台管理系统
+├── 用户管理
+│   ├── 用户列表(搜索、筛选、分页)
+│   ├── 用户档案(基本信息、体型数据)
+│   └── 该用户的穴位坐标数据(穴位对照表)
+│       ├── 穴位ID
+│       ├── 穴位名称
+│       ├── 相对偏移(X, Y)
+│       └── 置信度
+│
+├── 穴位管理(独立表)
+│   ├── 基础穴位信息
+│   │   ├── 穴位ID
+│   │   ├── 穴位名称
+│   │   ├── 所属经络
+│   │   ├── 功效描述
+│   │   └── 定位方式(相对/绝对)
+│   └── 艾灸手法
+│       ├── 温和灸(固定温度,持续施灸)
+│       ├── 雀啄灸(上下移动,模拟鸟啄)
+│       ├── 回旋灸(圆周运动)
+│       └── 其他手法...
+│
+├── 方案管理
+│   ├── 一键艾灸(默认方案)
+│   │   ├── 预设穴位组合
+│   │   ├── 默认参数(温度、时间)
+│   │   └── 适用人群
+│   ├── 专业模式(8种功效选择)
+│   │   ├── 驱寒模式
+│   │   ├── 祛湿模式
+│   │   ├── 祛风模式
+│   │   ├── 化瘀模式
+│   │   ├── 活血模式
+│   │   ├── 化痰模式
+│   │   ├── 养颜模式
+│   │   └── 扶阳模式
+│   ├── 自定义模式(用户自选穴位)
+│   │   ├── 用户自选穴位
+│   │   ├── 自定义参数
+│   │   └── 保存为个人方案
+│   └── 延年圣手模式(专家方案)
+│       ├── 专家创建方案
+│       ├── 方案发布(指定/公开)
+│       └── 用户选择专家方案
+│
+└── 系统管理
+    ├── 管理员管理
+    └── 操作日志
+```
+
+### 7.2 界面设计
+
+#### 7.2.1 用户管理页面
+
+```
+┌─────────────────────────────────────────────────────────────────┐
+│ 用户管理                                        [+ 新增用户]    │
+├─────────────────────────────────────────────────────────────────┤
+│ 搜索: [________________] 性别: [全部 ▼] 状态: [全部 ▼] [搜索]  │
+├─────────────────────────────────────────────────────────────────┤
+│ 用户ID  │ 姓名  │ 性别 │ 年龄 │ 肩宽  │ 身长  │ 穴位表 │ 操作  │
+├─────────┼───────┼──────┼──────┼───────┼───────┼────────┼───────┤
+│ 001     │ 张三  │ 男   │ 35   │ 42cm  │ 85cm  │ ✓      │ 编辑  │
+│ 002     │ 李四  │ 女   │ 33   │ 36cm  │ 78cm  │ ✓      │ 编辑  │
+│ 003     │ 王五  │ 男   │ 62   │ 40cm  │ 82cm  │ ✓      │ 编辑  │
+└─────────┴───────┴──────┴──────┴───────┴───────┴────────┴───────┘
+```
+
+#### 7.2.2 穴位管理页面
+
+```
+┌─────────────────────────────────────────────────────────────────┐
+│ 穴位管理                                        [+ 新增穴位]    │
+├─────────────────────────────────────────────────────────────────┤
+│ 搜索: [________________] 经络: [全部 ▼] 状态: [全部 ▼] [搜索]  │
+├─────────────────────────────────────────────────────────────────┤
+│ 穴位ID    │ 名称    │ 经络      │ 定位方式 │ 状态  │ 操作      │
+├───────────┼─────────┼───────────┼──────────┼───────┼───────────┤
+│ dazhui    │ 大椎穴  │ 督脉      │ 相对定位 │ 活跃  │ 编辑      │
+│ shenzhu   │ 身柱穴  │ 督脉      │ 相对定位 │ 活跃  │ 编辑      │
+│ fengmen   │ 风门穴  │ 膀胱经    │ 相对定位 │ 活跃  │ 编辑      │
+│ weizhong  │ 委中穴  │ 待完善    │ 待完善   │ 待完善│ 完善      │
+└───────────┴─────────┴───────────┴──────────┴───────┴───────────┘
+```
+
+#### 7.2.3 方案管理页面
+
+```
+┌─────────────────────────────────────────────────────────────────┐
+│ 方案管理                                        [+ 新增方案]    │
+├─────────────────────────────────────────────────────────────────┤
+│ 搜索: [________________] 状态: [全部 ▼] 发布类型: [全部 ▼]      │
+├─────────────────────────────────────────────────────────────────┤
+│ 方案ID    │ 名称          │ 专家    │ 症状    │ 状态  │ 操作  │
+├───────────┼───────────────┼─────────┼─────────┼───────┼───────┤
+│ 001       │ 春季祛湿方案  │ 张专家  │ 祛湿    │ 已发布│ 编辑  │
+│ 002       │ 冬季驱寒方案  │ 李专家  │ 驱寒    │ 已发布│ 编辑  │
+│ 003       │ 活血化瘀方案  │ 王专家  │ 化瘀    │ 草稿  │ 编辑  │
+└───────────┴───────────────┴─────────┴─────────┴───────┴───────┘
+```
+
+---
+
+## 八、验收标准
+
+### 8.1 功能验收
+
+| 功能 | 验收标准 | 优先级 |
+|------|----------|--------|
+| 穴位定位精度 | ≤ 2cm(指寸数据完整时) | 🔴 高 |
+| 穴位库扩展 | 支持动态新增穴位 | 🔴 高 |
+| 专家方案 | 支持创建、发布8种专业模式 | 🔴 高 |
+| 工艺生成 | 系统自动生成工艺语言 | 🔴 高 |
+| 数据接口 | API响应时间 < 200ms | 🔴 高 |
+| 经络图 | 支持点击、缩放交互 | 🟡 中 |
+| 症状推荐 | 覆盖率 80%+ | 🟡 中 |
+
+### 8.2 数据验证
+
+| 验证项 | 验证规则 |
+|--------|----------|
+| 肩宽 | 男性 36-52cm,女性 32-46cm |
+| 身长 | 男性 75-95cm,女性 70-88cm |
+| 一寸 | 男性 1.5-2.8cm,女性 1.3-2.4cm |
+| 1.5寸 | 男性 2.2-4.0cm,女性 2.0-3.5cm |
+| 三寸 | 男性 4.5-8.0cm,女性 4.0-7.0cm |
+
+---
+
+## 九、技术选型
+
+| 层级 | 技术 | 理由 |
+|------|------|------|
+| 后端框架 | Spring Boot | 与现有后端项目一致 |
+| 数据库 | MySQL | 与现有数据库一致 |
+| API风格 | RESTful | 标准化、易维护 |
+| 前端管理 | Vue.js + Element UI | 快速开发管理后台 |
+| 专家端 | 微信小程序 | 用户基数大、易推广 |
+
+---
+
+## 十、实施阶段
+
+### Phase 1: 基础功能(2周)
+- 用户管理模块
+- 穴位管理模块
+- 核心算法实现
+- 数据验证算法
+
+### Phase 2: 方案管理(2周)
+- 专家方案模块
+- 工艺语言生成
+- 8种专业模式
+
+### Phase 3: 接口对接(1周)
+- APP-后台接口
+- 推送数据格式
+- 四种艾灸模式接口
+
+### Phase 4: 后台管理(2周)
+- 管理后台开发
+- 用户管理界面
+- 穴位管理界面
+- 方案管理界面
+
+### Phase 5: 测试验收(1周)
+- 功能测试
+- 性能测试
+- 验收测试
+
+---
+
+## 十一、参考标准
+
+- **GB/T 12346-2006**《腧穴名称与定位》
+- **GB/T 10000-1988**《中国成年人人体尺寸》
+- 《针灸学》教材(穴位定位方法)