elder-yudao-pro/docs/spec/elder for AI coding.md

1208 lines
60 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 《智慧养老与主动健康管理平台 全栈开发总体方案(最终定稿·直接使用版)》
> **文档定位**:本文档是项目的最终开发蓝图,可直接作为 AI Coding 工具(Cursor / 通义灵码 / GitHub Copilot)的 System Prompt,也可直接作为开发团队、测试团队、项目经理的执行依据。
> **核心定位**:聚焦老年人群体,老年人端采用 WebApp,登录方式支持扫码/公众号登录,降低老人使用门槛。
> **一期技术策略**:模块化单体架构,不做微服务拆分;知识库优先使用 MySQL 全文索引;大模型仅作过渡兜底,专家应答为核心。
> **逻辑自洽性**:本文档已通过五轮批判性审查,业务闭环、数据生命周期、状态机边界、内容体系、外部依赖、边缘场景、交付规格、API请求方法规范、列表排序规范,全部覆盖。
> **可直接使用**:状态枚举、API清单、页面路由、定时任务、消息模板、权限点、数据字典、交付切分、第三方服务清单、项目里程碑,全部齐备。
## 一、 项目概述与核心定位
### 1.1 项目愿景
构建一个基于 **“评估—干预—反馈—迭代”** 闭环的智慧养老平台。系统以权威医学标准(ACSM、MMSE、GDS-15、CDC跌倒风险等)为基石,深度融合**专家应答体系**、跌倒风险预警以及 LBS 位置服务,为老年人提供个性化、动态可调的运动健康处方与健康教育。
系统致力于打通 **“线上视频跟练”** 与 **“线下志愿者上门”** 的 O2O 服务闭环,解决老年人“不会用、不敢练、无人管”的痛点,实现真正的适老化、智能化、数据可视化与精准健康管理。
### 1.2 核心定位
- **聚焦老年人**:不服务学生或其他年龄段,所有设计围绕老年医学与适老化展开。
- **老年人端采用 WebApp**:老人、家属、志愿者共用 Vue3 + Vant 技术栈,通过角色动态渲染不同界面。
- **扫码/公众号登录**:老年人无需记密码,扫码或公众号一键登录,降低使用门槛,方便系统维护。
- **多登录方式兜底**:微信只是便捷选项之一,保留手机号验证码、账号密码等降级方案。
- **评估驱动**:以权威量表评估为起点,以规则引擎精确计算为核心。
- **专家为主,大模型为辅**:问答系统以专家应答为核心,大模型仅作过渡兜底,专家回答沉淀入知识库。
- **O2O闭环**:线上视频跟练 + 线下志愿者上门,形成完整服务闭环。
- **可运营平台**:支持国家级、省级、市级、县级多层级组织管理与数据权限隔离。
- **双轨服务**:一期公益志愿服务,二期预留市场化付费能力。
- **按需评估**:量表模块化,按需分发,分次填答,每张填完即出结论。
- **数据资产化**:已有数据先治理、后导入,确保数据质量和合规性。
- **逻辑自洽**:状态机边界、数据生命周期、内容体系关系明确。
- **外部依赖可控**:微信、地图、短信均有降级方案,不依赖单一外部服务。
- **边缘场景兜底**:老人不会用手机、三方不配合、数据膨胀,均有对应策略。
- **API规范**:按RESTful语义使用GET/POST/PUT/DELETE,安全靠HTTPS+加密+鉴权,不靠“全用POST”。
- **列表排序规范**:无逻辑顺序的选项按拼音排序,有逻辑顺序的选项按业务逻辑排序,后端统一维护,前端不自行排序。
- **交付规格完整**:状态枚举、API清单、页面路由、定时任务、消息模板、权限点、数据字典、交付切分、第三方服务清单,全部齐备。
### 1.3 核心业务闭环(状态机流转)
1. **信息采集**:老人扫码登录 / 家属代劳 / 志愿者上门。集成身份证OCR、扫码/公众号登录、自动获取经纬度与海拔。
2. **健康初筛**:通过5道快速问卷,判断需要进入哪些深度评估。
3. **运动准入筛查**:当老人/家属/志愿者发起“我想运动/参加体适能测评”时,追加身体状况安全问卷和ACSM运动前筛查。
4. **量表评估(按需分发)**:系统根据初筛结果、老人档案和历史数据有效期,自动判断需要填哪些量表。
5. **单量表结论**:每张量表填完后立即计分、立即出结论、立即触发后续动作。
6. **风险判定**:规则引擎按决策树判定“运动风险等级(高/中/低)”。
7. **综合评估**:所有评估任务完成/标记无需填写/已复用后,单量表结论 + 老人画像 → 生成综合健康报告(专家复核后推送)。
8. **处方生成**:结合海拔、体适能、专家知识库,生成个性化运动处方。
9. **用户决策**:老人决定【采纳】或【忽略】。忽略则终止;采纳则进入干预。
10. **视频跟练与跌倒预警**:跟随专家视频练习,AI实时检测跌倒风险并预警。
11. **阶段性复采**:干预周期结束后,系统自动推送量表复评。
12. **效果分析**:对比前后数据(结合量表版本差异),生成效果报告。
13. **处方迭代与沉淀**:动态调整处方,成功案例沉淀至知识库,不断迭代。
## 二、 技术栈与架构选型
| 层级 | 选型 | 说明 |
|---|---|---|
| 后端语言与框架 | Java + 芋道 (yudao-cloud) | 一期采用模块化单体(yudao-boot),二期再拆微服务 |
| 数据库与缓存 | MySQL + Redis + MongoDB(备选) | MySQL核心业务;Redis缓存Token/验证码/字典;MongoDB存非结构化日志 |
| 知识库检索 | 一期:MySQL全文索引 + 关键词匹配;二期:PgVector/Milvus | 先用简单方案跑通业务 |
| 前端形态(统一WebApp) | Vue3 + Vant + Vite | 老人端、家属端、志愿者端共用一套技术栈 |
| 前端适配 | 响应式布局 + 大字体模式 + 语音辅助 | 一套代码,通过角色配置动态渲染不同界面 |
| 登录方式 | 扫码登录 / 公众号登录 / 手机号验证码 / 账号密码 | 老人端优先扫码,家属/志愿者端可用手机号验证码,管理员端用账号密码 |
| 定位与地图 | 高德/百度地图 Web SDK + API | 需评估配额,缓存地址与海拔数据,预留降级方案 |
| 短信服务 | 阿里云/腾讯云短信 | 模板提前报备;非紧急通知优先用App推送;成本监控 |
| API与协作 | Eolink (API管理) + Gitee (代码托管/CI-CD) | |
| AI与算法 | 大模型(仅过渡兜底)+ 独立Python跌倒风险检测模型 | 优先本地部署;云端调用需数据脱敏 |
| 测试 | Playwright | 端到端自动化测试,需支持模拟定位 |
| 原型设计 | Figma / 即时设计 | 支持多人协作、组件库、AI辅助生成 |
### 2.1 API请求方法规范
采用标准 RESTful 风格,不强行全用 POST:
- **查询列表/详情**:使用 GET,但禁止在 URL 中传递敏感信息。
- **新增/提交**:使用 POST,敏感信息放在 Body 中。
- **修改**:使用 PUT。
- **删除**:使用 DELETE。
- **特殊状态变更**(签到、确认、审核):使用 POST。
### 2.2 安全约束
- 全站强制 HTTPS,禁止 HTTP。
- 身份证号、手机号在 MySQL 中 AES 加密存储,前端展示脱敏。
- 所有接口必须校验 JWT Token 和权限码。
- 短信发送接口必须集成阿里云滑动验证。
- 登录接口增加失败次数限制和异地登录告警。
- 所有参数必须校验,防止 SQL 注入和 XSS。
- 日志脱敏,禁止打印完整的敏感信息。
## 三、 用户角色与权限体系
| 角色 | 说明 | 核心权限 |
|---|---|---|
| 老人 | 核心服务对象 | 查看评估结果、查看处方、视频跟练、SOS、健康问答 |
| 家属 | 代劳录入、查看数据、接收通知 | 通过家庭组关联老人,可代录、确认服务、接收警报 |
| 志愿者 | 上门协助测评、指导跟练 | 接单、导航、签到、拍照上传、服务记录 |
| 专家 | 知识库审核、处方复核、问答应答 | 量表版本管理、知识库审核、问题应答、处方复核 |
| 管理员 | 后台运营、组织管理 | 数据统计、组织管理、系统配置 |
**数据权限设计**:
- 基于组织架构树形结构的 `path` 字段,实现数据权限自动隔离。
- 国家管理员看全国,省级看本省,市级看本市,县级看本县,机构看本机构。
- 志愿者只能看到分配给自己的订单。
- 家属只能看到家庭组内关联老人的数据。
## 四、 登录与认证体系
### 4.1 核心设计原则
- **老年人端优先扫码登录**:老人无需记住账号密码,打开微信扫一扫即可登录。
- **公众号一键登录**:关注公众号后,点击菜单栏入口即可免密登录。
- **家属/志愿者端支持手机号验证码登录**:便于独立使用。
- **一套账号体系**:所有角色共用同一套用户表,通过角色字段区分。
- **多方式兜底**:微信只是便捷选项之一,保留手机号验证码、账号密码等降级方案。
### 4.2 登录方式
| 登录方式 | 适用角色 | 说明 |
|---|---|---|
| 扫码登录 | 老人为主 | 老人打开WebApp,显示二维码,用微信扫码确认后登录 |
| 公众号登录 | 老人为主 | 关注公众号,点击菜单栏“我的健康”,免密登录WebApp |
| 手机号验证码 | 家属/志愿者/无微信老人 | 输入手机号,获取验证码,验证后登录 |
| 账号密码 | 管理员/专家 | 后台管理端使用,支持密码+滑动验证 |
### 4.3 扫码登录流程
1. 老人打开WebApp(未登录状态)。
2. 页面显示登录二维码(含临时Token)。
3. 老人用微信扫一扫。
4. 微信授权确认。
5. 后端校验Token,绑定openid与老人账号。
6. WebApp自动登录成功,跳转首页。
### 4.4 公众号登录流程
1. 老人关注公众号。
2. 点击菜单栏“我的健康”。
3. 公众号跳转WebApp,携带授权code。
4. 后端用code换取openid,绑定老人账号。
5. WebApp自动登录成功。
### 4.5 账号绑定规则
- **首次扫码/公众号登录**:如果openid未绑定任何账号,引导老人/家属完成注册。
- **后续登录**:openid已绑定,直接免密登录。
- **多账号绑定**:一个微信可绑定多个老人账号,登录后选择要管理的老人。
- **解绑**:老人/家属可在个人中心解绑微信。
- **无微信老人**:用手机号+验证码登录,或由家属代为注册后绑定。
### 4.6 安全策略
- **扫码Token有效期**:二维码Token有效期5分钟,过期自动刷新。
- **登录态保持**:JWT Token有效期7天,支持自动续期。
- **多端登录**:同一账号可在多端登录,互不冲突。
- **异常登录告警**:异地登录、频繁登录失败触发告警。
### 4.7 外部依赖降级方案
- **微信扫码失败** → 备选“手机号验证码登录”。
- **微信政策调整** → WebApp同时支持多种登录方式,微信不是唯一入口。
- **老人没有微信** → 家属代为注册,用手机号+密码登录;或志愿者上门时用志愿者端代为操作。
## 五、 多层级组织架构设计
### 5.1 核心设计原则
- **灵活树形结构**:不预设固定层级,志愿者机构可挂在国家、省、市、县任意层级。
- **统一组织节点**:所有组织单元统一用 `sys_org` 表表示。
- **数据权限隔离**:基于 `path` 字段实现,无需递归查询,性能高。
### 5.2 组织架构表设计
| 表名 | 用途 | 关键字段 |
|---|---|---|
| sys_org | 组织架构表(树形) | id, parent_id, org_name, org_type(COUNTRY/PROVINCE/CITY/COUNTY/VOLUNTEER_ORG/EXPERT_ORG), region_code, altitude, level, path, status |
| sys_region | 行政区划表 | code(国标区划码), name, parent_code, level, altitude(平均海拔), climate_type(预留) |
| sys_user_org | 用户与组织关联表 | user_id, org_id, role |
### 5.3 志愿者机构灵活挂载
- 国家层面:中国老年志愿者协会。
- 省级层面:青海省养老服务中心、青海省专家库。
- 市级层面:西宁市社区服务队。
- 县级层面:湟源县本地志愿团、湟源县社区卫生服务中心。
- 各层级机构均可直接挂志愿者。
### 5.4 派单逻辑
1. 优先匹配同县区的志愿者机构。
2. 同县区没有机构,向上级(市、省、国家)逐级查找。
3. 紧急情况可直接基于GPS距离指定最近志愿者。
## 六、 老年人信息结构
### 6.1 核心设计原则
1. 隐私合规:身份证号、手机号加密存储,前端脱敏;知情同意状态是采集前置。
2. 归档分离:过世老人档案迁入归档表,主表只保留活跃老人。
3. 家庭组管理:通过家庭组表支持“多人管一老、一人管多老”。
4. 区划联动:籍贯、居住地使用国标区划编码,自动关联海拔、气候数据。
5. 数据溯源:记录数据来源(本人/家属/志愿者/机构),为AI评估提供可信度参考。
6. 审计留痕:所有关键操作记录操作人和时间。
### 6.2 老人档案主表(elder)
| 字段分类 | 字段名 | 类型 | 说明 |
|---|---|---|---|
| 身份标识 | id | bigint | 主键 |
| | id_card | varchar | 身份证号(AES加密,唯一索引) |
| | name | varchar | 姓名 |
| | gender | tinyint | 性别(0未知/1男/2女) |
| | birth_date | date | 出生日期 |
| | age | int | 年龄(冗余字段,定时更新) |
| | ethnicity | varchar | 民族(字典) |
| | has_wx | boolean | 是否有微信(用于差异化推送策略) |
| 社会属性 | marital_status | tinyint | 婚姻状况(0未婚/1已婚/2离异/3丧偶) |
| | native_place_code | varchar | 籍贯(区划编码) |
| | residence_code | varchar | 现长期居住地(区划编码) |
| | residence_address | varchar | 详细地址 |
| | residence_type | tinyint | 居住地类型(1城市/2农村/3城镇/4牧区/5其他) |
| | living_situation | tinyint | 居住状况(1独居/2与配偶/3与子女/4养老机构/5其他) |
| | is_living_alone | boolean | 是否独居 |
| | hukou_type | tinyint | 户口类型(1城镇/2农村) |
| | education_level | tinyint | 教育程度(1文盲/2小学/3初中/4高中/5大专/6本科及以上)MMSE关键字段 |
| | last_occupation | varchar | 最近职业(字典) |
| | religion | varchar | 宗教信仰(字典,可空) |
| | attended_elder_university | boolean | 是否参加过老年大学 |
| 经济与保障 | social_security_type | tinyint | 社保类型(1职工医保/2居民医保/3新农合/4无) |
| | income_range | tinyint | 收入区间(1无收入/2 1万以下/3 1-3万/4 3-5万/5 5万以上) |
| | medical_insurance_no | varchar | 医保卡号(可空,加密) |
| 健康与照护 | care_level | tinyint | 照护等级(1自理/2半自理/3失能) |
| | disability_type | varchar | 残疾类型(可空) |
| | altitude | decimal | 居住地海拔(从区划自动带入) |
| | primary_doctor | varchar | 家庭医生(可空) |
| 系统管理 | data_source | tinyint | 数据来源(1本人/2家属/3志愿者/4机构导入) |
| | consent_status | tinyint | 知情同意状态(0未签署/1已签署/2已撤回) |
| | status | tinyint | 状态(0正常/1停用) |
| | remark | varchar | 备注 |
| | create_time / update_time | datetime | 时间戳 |
| | create_by / update_by | bigint | 审计字段 |
### 6.3 家庭组表
**家庭组主表(family_group)**:
| 字段 | 类型 | 说明 |
|---|---|---|
| id | bigint | 主键 |
| group_name | varchar | 家庭组名称 |
| elder_id | bigint | 核心老人ID |
| region_code | varchar | 所在区划 |
| status | tinyint | 状态(0正常/1已归档) |
| create_time | datetime | 创建时间 |
| create_by | bigint | 创建人 |
**家庭成员关联表(family_member)**:
| 字段 | 类型 | 说明 |
|---|---|---|
| id | bigint | 主键 |
| group_id | bigint | 关联家庭组ID |
| user_id | bigint | 系统用户ID(可空) |
| member_name | varchar | 成员姓名 |
| member_phone | varchar | 手机号(加密) |
| relation_type | tinyint | 关系(1配偶/2子女/3孙辈/4其他亲属/5社区网格员) |
| role | tinyint | 角色(1主管理员/2普通成员/3只读) |
| is_primary_contact | boolean | 是否第一紧急联系人 |
| join_time | datetime | 加入时间 |
| status | tinyint | 状态(0正常/1退出) |
**业务规则**:
- 一个老人可属于多个家庭组。
- 一个家庭组可包含多个家庭成员。
- SOS触发时,按 `is_primary_contact` 优先级依次拨打。
- 志愿者服务完成后,推送确认通知给主管理员。
- 老人过世后:家庭组状态改为“已归档”。
### 6.4 紧急联系人表(emergency_contact)
| 字段 | 类型 | 说明 |
|---|---|---|
| id | bigint | 主键 |
| elder_id | bigint | 关联老人ID |
| name | varchar | 联系人姓名 |
| relation | varchar | 关系 |
| phone | varchar | 手机号(加密) |
| is_primary | boolean | 是否第一联系人 |
| remark | varchar | 备注 |
### 6.5 老人归档表(elder_archive)
| 字段 | 类型 | 说明 |
|---|---|---|
| id | bigint | 主键(与主表id一致) |
| 所有主表字段 | - | 完整复制主表结构 |
| death_date | date | 过世时间 |
| death_reason | varchar | 过世原因 |
| archive_time | datetime | 归档时间 |
| archive_by | bigint | 归档操作人 |
| archive_reason | tinyint | 归档原因(1过世/2注销/3其他) |
**老人过世级联归档流程**:
1. `elder` 主表记录标记为“已归档”。
2. `assessment_task` 中所有“待填写”任务标记为“已作废”。
3. `exercise_prescription` 中“已下发未采纳”标记“已作废”;“已采纳执行中”标记“已终止”。
4. `volunteer_appointment` 中所有“待服务/服务中”订单自动取消。
5. `family_group` 状态改为“已归档”,停止推送。
6. `qa_log` 中未回答的问题标记为“已关闭”。
7. 所有关联数据在归档表中保留,用于科研分析。
## 七、 数据治理与历史数据导入
### 7.1 核心原则
**“有数据”不等于“能用数据”。** 已有数据必须先治理,后导入。
### 7.2 数据治理流程
1. 数据盘点。
2. 数据质量评估(完整性、准确性、一致性、重复性)。
3. 数据清洗与标准化。
4. 合规审查(知情同意、匿名化)。
5. 分批导入。
6. 输出数据质量报告。
### 7.3 历史数据复用逻辑
- 数据有效期管理:每张量表结论设置有效期(如GDS-15有效期3个月,MMSE有效期6个月)。
- 复用规则:有效期内+版本一致 → 直接复用;版本不一致 → 提示重新评估;过期 → 强制重新评估。
- 历史数据对比:复用时自动对比历史结论,生成“变化趋势”。
### 7.4 数据来源与置信度
- 答卷记录中增加 `operator_type`(1本人/2家属/3志愿者/4医生)和 `confidence_level`(1高/2中/3低)。
- 权重仅用于“综合评估报告的可信度标注”。
- 关键量表强制医生复核:身体状况安全问卷、ACSM运动前筛查、GDS-15(重度抑郁)、MMSE(认知障碍)。
### 7.5 数据膨胀与归档策略
- 冷热数据分离:
- 热数据(近3个月):主表实时查询。
- 温数据(3-12个月):历史表按月分区。
- 冷数据(1年以上):归档到OSS,用于科研分析。
- 定期清理:`qa_log`保留1年;`assessment_task`保留2年;`exercise_log`保留1年;`volunteer_service_log`保留3年。
- 科研数据匿名化后存入独立数据仓库。
## 八、 动态量表与评估引擎(按需分发版)
### 8.1 六大核心量表结构化分析
| 量表名称 | 题型特征 | 计分逻辑 | 结论判定 | 特殊逻辑 |
|---|---|---|---|---|
| GDS-15 | 15道是/否题 | 反向计分 | 0-4无抑郁;5-9中度;10-15重度 | 无 |
| 身体状况安全问卷 | 12道有/无题 | 无分数 | 一票否决制 | 准入门槛量表 |
| MMSE | 多题型 | 每题1分 | 按受教育程度调整分界值 | 计分依赖教育程度 |
| 营养不良评估 | 两阶段 | 选项分值0/0.5/1/2/3分 | 初筛≤11分需继续 | 动态跳转 |
| 生活自主能力评估 | 10项能力 | 每项0/5/10/15分 | 100独立;61-99轻度;40-60中度;≤40重度 | 无 |
| 跌倒风险自评表 | 12道是/否题 | 每题“是”得1或2分 | ≥4分为高风险 | 无 |
### 8.2 量表版本控制机制
- 量表主表:仅存量表唯一标识。
- 量表版本表:存储题目JSON、评分规则JSON、生效日期、状态。
- 答卷记录表:绑定版本ID,确保历史数据可追溯。
- 版本策略:补丁版本仅文案修正不新建;主版本题目/规则变更必须新建;旧版本保留归档不删除。
### 8.3 两阶段筛查与按需分发
**阶段一:健康初筛(5道题)**
| 初筛题目 | 触发量表 |
|---|---|
| 生活能力是否下降 | 生活自主能力评估 |
| 情绪是否低落 | GDS-15抑郁量表 |
| 记忆力是否减退 | MMSE智力状态检查 |
| 食欲是否不振 | 营养不良评估 |
| 是否有肢体障碍/跌倒史 | 跌倒风险自评表 |
**阶段二:运动准入筛查**
| 触发条件 | 触发量表 |
|---|---|
| 老人/家属/志愿者发起“我想运动/参加体适能测评” | 身体状况安全问卷、ACSM运动前筛查 |
两阶段筛查在数据模型中属于不同的 `screening_type`。
**系统分发逻辑**:
1. 老人完成健康初筛问卷(5题)。
2. 系统根据初筛结果、老人档案和历史数据有效期,自动计算“需要填哪些量表”。
3. 不需要填写的量表,前端标注“您当前无需填写此量表”及原因。
4. 需要填写的量表按优先级排序,依次推送。
5. 历史数据有效期内的量表,直接复用。
6. 当老人发起“我想运动”时,追加运动准入筛查。
### 8.4 评估任务表(assessment_task)
| 字段 | 类型 | 说明 |
|---|---|---|
| id | bigint | 主键 |
| elder_id | bigint | 老人ID |
| scale_id | bigint | 量表ID |
| scale_version_id | bigint | 量表版本ID |
| status | tinyint | 状态(0待填写/1已填写/2无需填写/3已跳过/4已复用历史数据/5已作废) |
| skip_reason | varchar | 无需填写的原因 |
| priority | int | 优先级 |
| create_time | datetime | 创建时间 |
| complete_time | datetime | 完成时间(可空) |
### 8.5 分次填答机制
- 每张量表填完后立即保存进度、立即出结论。
- 支持中途退出,下次从未完成的量表继续。
- 答题进度自动保存,超时7天自动作废。
### 8.6 单量表“填完即出结论”
1. 规则引擎精确计分(Java代码)。
2. 匹配结论阈值,输出单量表结论。
3. 前端弹窗展示结论(通俗语言、大字体、语音播报)。
4. 根据结论触发后续动作。
### 8.7 综合评估触发条件
- 所有 `assessment_task` 中状态不为“待填写”的任务,全部完成或标记为“无需填写”/“已复用”时,触发综合评估。
- 存在“已跳过”任务时,综合评估仍触发,但报告标注“本报告基于部分量表结论”。
- 存在“待填写”任务时,7天后提醒,14天后自动标记“已跳过”,触发综合评估。
### 8.8 动态表单引擎六大能力
1. 反向计分(GDS-15)
2. 一票否决(身体状况安全问卷)
3. 教育程度调整分界值(MMSE)
4. 动态跳转(营养评估两阶段)
5. 不同分值选项(营养评估、生活自主能力)
6. 多题型混合(单选、文本输入、口头测试)
### 8.9 风险判定引擎(决策树)
- **高风险**:有已知疾病或出现特定症状(胸闷、晕厥、端坐呼吸、间歇性跛行、不寻常疲倦、脚踝水肿等)。
- **中风险**:无疾病无相关症状,但心血管危险因素≥2。
- **低风险**:危险因素<2。
## 九、 综合评估模型与专家审核
### 9.1 两层架构
- **第一层(规则引擎)**:Java精确算分,输出各量表结构化结论。
- **第二层(专家+大模型)**:单量表结论 + 老人画像作为Context,专家审核后生成综合评估报告。大模型仅作过渡辅助。
### 9.2 综合评估输入输出
**输入**:老人画像(年龄、性别、教育程度、海拔、地区)+ 各量表结论(得分、结论、严重程度)。
**输出**:整体健康等级、关键问题列表、运动建议(能否运动、强度、禁忌、推荐类型、海拔调整)、复评计划。
### 9.3 核心原则
- 大模型只做综合判断和自然语言生成,所有原始得分必须由Java规则引擎精确计算。
- 每条建议必须可解释、可追溯。
- 强制专家复核:报告必须经专家点击【复核通过】后才能推送。
- 免责声明:所有建议标注“本建议仅供健康参考,不能替代医生诊断”。
- 年龄+海拔交叉权重。
- 数据脱敏后调用大模型,优先本地部署。
## 十、 专家应答体系(核心)
### 10.1 三层应答架构
**第一层:本地专家知识库(优先)**
- 一期:MySQL全文索引+关键词匹配;二期:向量检索。
- 命中阈值 >= 0.85 → 直接返回。
**第二层:专家应答(核心)**
- 问题推送给值班专家,专家在后台回答,审核后返回老人,同时沉淀入知识库。
**第三层:大模型兜底(过渡方案)**
- 紧急/夜间/专家不在线时,大模型生成回答,标注“AI生成,仅供参考,专家正在复核”。
- 专家上线后复核并覆盖。
### 10.2 核心原则
- 专家是主力,大模型是替补。
- 大模型回答必须明确标注“待专家复核”。
- 专家复核后的回答自动替换大模型回答,并沉淀入知识库。
### 10.3 专家分级应答机制
| 级别 | 专家类型 | 处理问题 | 响应时间 |
|---|---|---|---|
| 一级 | 社区医生/家庭医生 | 常见问题 | <4小时 |
| 二级 | 专科医生/康复专家 | 复杂问题 | <24小时 |
| 三级 | 三甲医院专家 | 疑难问题 | <48小时 |
### 10.4 专家排班制
- 每天安排1-2位专家值班,确保问题不积压。
- 值班专家在后台处理当日问题,超时未处理自动升级到上一级。
- 夜间/节假日:大模型兜底,次日专家复核。
### 10.5 专家应答质量控制
1. 双人复核制:重要问题需两位专家交叉复核。
2. 回答留痕。
3. 老人反馈机制:点赞/点踩,低分触发复核。
4. 免责声明。
5. 专家资质审核:持证医生/康复师才能成为应答专家。
### 10.6 专家酬劳模式
- 政府购买服务:按应答量结算。
- 平台补贴:初期由项目经费承担。
- 公益积分:与职称评定、评优挂钩。
### 10.7 数据库设计
| 表名 | 用途 | 关键字段 |
|---|---|---|
| knowledge_base | 专家知识库 | 分类、问题、答案、标签JSON、适用海拔区间、来源、审核状态、content_type(1健康教育/2问答知识) |
| qa_log | 问答记录 | 老人ID、问题、命中类型、命中知识ID、答案、置信度 |
| expert_schedule | 专家排班表 | expert_id, date, time_slot, status |
| expert_answer | 专家应答记录 | question_id, expert_id, answer, review_status, review_by |
| knowledge_audit_log | 审核日志 | 审核人、审核结果、审核时间、修改内容 |
### 10.8 外部依赖与兜底机制
- 专家不响应 → 大模型兜底 + 次日专家复核。
- 问题积压超过48小时 → 自动升级到上一级专家。
- 夜间/节假日 → 大模型兜底,次日专家复核。
## 十一、 老年人主动健康教育板块
### 11.1 核心逻辑
数据采集 → 初筛 → 深度评估 → 诊断模块 → 健康教育(千人千面推送)+ 反馈指导(运动处方)。
### 11.2 教育内容分类
慢病管理、高原健康、运动康复、营养膳食、心理健康、跌倒预防、认知训练。
### 11.3 千人千面推送引擎
触发时机:首次评估完成时、处方下发时、阶段性复评后、定时推送。
推送规则:根据量表结论和海拔区间,匹配对应的健康教育内容。
### 11.4 内容载体
短视频、图文长页、音频、交互式问答、直播/录播课、每日打卡任务。
### 11.5 统一内容底座
- 健康教育内容与知识库共用同一张 `knowledge_base` 表,通过 `content_type` 区分。
- 推送逻辑优先走知识库。
- 健康教育内容更新时自动同步知识库。
- 入库去重,相似度>0.9提示合并。
### 11.6 与问答系统联动
- 健康教育是主动推送,问答系统是被动响应。
- 教育文章底部设“我还有疑问”跳转问答。
- 问答高频问题可一键转为健康教育内容。
## 十二、 视频跟练与跌倒风险预警
### 12.1 核心定位
**不是“动作标准度纠偏”,而是“跌倒风险实时预警”。**
### 12.2 检测场景与信号
| 场景 | 检测方式 | 技术实现 | 适用老人 |
|---|---|---|---|
| 跟练时(手机前台) | 手机端本地AI实时检测 | TensorFlow.js | 能独立使用手机的老人 |
| 志愿者上门指导 | 志愿者人工观察 + App辅助记录 | 全程录制,后台离线分析 | 75岁以上高龄老人 |
| 机构/社区集中锻炼 | 边缘设备实时预警 | 摄像头+边缘盒子 | 社区养老场景 |
| 全天候跌倒监测(非跟练) | 智能手环 + 手机App推送 | 手环检测自由落体+撞击 | 跌倒高风险人群 |
| 居家无手机场景 | 毫米波雷达/智能摄像头 | 独立设备 | 高龄独居老人 |
**检测信号**:
- 重心剧烈偏移
- 步态异常(步幅变小、拖步、摇晃加剧)
- 扶靠行为(突然扶墙/扶椅子)
- 长时间静止(超过N秒)
- 蹲起困难
### 12.3 分等级预警机制
| 等级 | 触发条件 | 响应动作 |
|---|---|---|
| 提示级 | 重心偏移、步态轻微异常 | App内文字提示,不通知家属 |
| 警告级 | 长时间静止、扶靠行为、蹲起困难 | 语音询问“您还好吗?需要帮助吗?” |
| 紧急级 | 确认跌倒、语音询问无响应 | 通知家庭组 + 拨打第一联系人 + 发送带定位的SOS短信 |
**语音询问流程(跟练场景,手机前台)**:
1. 手机AI检测到疑似跌倒。
2. 立即触发语音询问“您还好吗?需要帮助吗?”。
3. 老人回应:说“没事”→记录日志继续;无响应(5-10秒)→升级紧急级;说“救命”→立即升级紧急级。
4. 紧急级:通知家庭组 + 拨打第一联系人 + 发送SOS短信。
**多信号融合判定**:手机端AI检测到“疑似跌倒”后,先触发语音询问,等待5-10秒。若老人无响应或发出求助语音,再升级为紧急级通知。若老人佩戴了智能手环,手环检测到“自由落体+撞击”时,才判定为真正跌倒,手机端AI仅作为辅助。
### 12.4 技术约束
- 手机摄像头方案只能前台运行,无法做全天候监测。
- 全天候监测必须依赖可穿戴设备或居家传感器。
- 一期只做“跟练时手机端跌倒预警 + 语音询问”。
- 二期接入智能手环,三期接入居家毫米波雷达。
### 12.5 数据库设计
| 表名 | 用途 | 关键字段 |
|---|---|---|
| fitness_video | 体适能视频库 | 指标名称、视频URL、动作要领文本 |
| exercise_log | 跟练记录 | 老人ID、视频ID、动作标准度、完成度、跌倒预警次数、AI纠偏报告 |
## 十三、 O2O志愿者服务与预约闭环
### 13.1 分期实施策略
- **一期**:社区集中服务,志愿者在固定时间固定地点为老人服务,不需上门。
- **二期**:上线O2O上门预约、导航、打卡。
- **三期**:与现有社区养老服务体系合作,接入其志愿者资源。
### 13.2 预约流程(二期)
WebApp发起预约(协助测评/指导跟练)→ 志愿者接单 → 上门服务 → 老人确认评价。
### 13.3 服务打卡与定位凭证
- GPS定位仅作辅助记录,不作为唯一依据。
- **核心凭证 = 老人的确认与评价**。
**服务流程**:
1. 志愿者到达老人家附近,点击“开始服务”(记录GPS和时间)。
2. 服务过程中,上传照片(带水印:时间+地点)。
3. 服务结束后,系统自动向家庭组推送确认通知。
4. 老人/家属点击【确认完成】并打分(1-5星)。
5. 只有老人确认后,服务才被标记为“已完成”,计入服务时长/积分。
6. 24小时内未确认,系统默认“自动确认”,但标记为“未评价”。
### 13.4 志愿者资质审核
1. 注册后需上传:身份证、健康证、无犯罪记录证明。
2. 由机构管理员审核,审核通过后才能接单。
3. 上岗前必须完成培训(在线课程+考试)。
### 13.5 服务质量管理
1. 服务SOP:签到→问候→服务→记录→签退。
2. 双人上门制度:高风险场景建议双人上门。
3. 服务保险:为志愿者购买意外险。
4. 投诉与仲裁机制。
5. 服务评价体系:老人评价+系统自动评分综合计算信用分。
### 13.6 派单逻辑
1. 优先匹配同县区的志愿者机构。
2. 同县区没有机构,向上级(市、省、国家)逐级查找。
3. 紧急情况可直接基于GPS距离指定最近志愿者。
### 13.7 志愿者激励设计
- 积分/星级/荣誉体系,与政府购买服务、社区评优挂钩。
- 服务时长、老人评价、服务次数综合计算积分。
- 积分可兑换小礼品、服务、荣誉证书等。
### 13.8 费用支付预留设计(一期预留,二期实现)
- 一期:公益志愿服务,无资金流转,仅记录服务时长与积分。
- 二期:接入微信/支付宝服务商分账,实现市场化付费服务。
- `volunteer_service_log` 表预留 `service_type`、`pricing_rule_id`、`service_fee`、`platform_fee`、`volunteer_income`、`settlement_status`、`settlement_time`、`payment_order_id` 字段。
- 二期新增 `pricing_rule`、`payment_order`、`volunteer_wallet`、`withdraw_record` 表。
## 十四、 数据模型总览
| 表名 | 用途 |
|---|---|
| elder | 老人档案主表 |
| elder_archive | 老人归档表 |
| family_group / family_member | 家庭组 |
| emergency_contact | 紧急联系人 |
| sys_org / sys_region / sys_user_org | 组织架构与区划 |
| sys_user | 用户表 |
| scale_master / scale_version | 量表与版本 |
| scale_answer_record | 答卷记录 |
| assessment_task | 评估任务 |
| exercise_prescription | 运动处方 |
| knowledge_base | 专家知识库(含健康教育内容) |
| qa_log | 问答记录 |
| expert_schedule / expert_answer / knowledge_audit_log | 专家应答 |
| health_edu_push_rule / health_edu_push_log | 健康教育推送 |
| fitness_video / exercise_log | 体适能视频与跟练记录 |
| volunteer / volunteer_appointment / volunteer_service_log / volunteer_complaint | 志愿者服务 |
| pricing_rule / payment_order / volunteer_wallet / withdraw_record | 二期支付相关 |
## 十五、 状态枚举值(完整版)
### 15.1 用户与权限
| 字段 | 枚举值 |
|---|---|
| sys_user.status | 0正常 / 1停用 / 2锁定 |
| sys_user.user_type | 1老人 / 2家属 / 3志愿者 / 4专家 / 5管理员 |
| sys_org.org_type | COUNTRY / PROVINCE / CITY / COUNTY / VOLUNTEER_ORG / EXPERT_ORG |
| sys_org.status | 0正常 / 1停用 |
### 15.2 老人与家庭
| 字段 | 枚举值 |
|---|---|
| elder.status | 0正常 / 1停用 |
| elder.consent_status | 0未签署 / 1已签署 / 2已撤回 |
| elder.data_source | 1本人 / 2家属 / 3志愿者 / 4机构导入 |
| family_group.status | 0正常 / 1已归档 |
| family_member.status | 0正常 / 1退出 |
| family_member.role | 1主管理员 / 2普通成员 / 3只读 |
| family_member.relation_type | 1配偶 / 2子女 / 3孙辈 / 4其他亲属 / 5社区网格员 |
### 15.3 量表与评估
| 字段 | 枚举值 |
|---|---|
| scale_version.status | 0草稿 / 1启用 / 2停用 |
| assessment_task.status | 0待填写 / 1已填写 / 2无需填写 / 3已跳过 / 4已复用历史数据 / 5已作废 |
| assessment_task.screening_type | 1健康初筛 / 2运动准入筛查 |
| scale_answer_record.operator_type | 1本人 / 2家属 / 3志愿者 / 4医生 |
| scale_answer_record.confidence_level | 1高 / 2中 / 3低 |
### 15.4 处方与干预
| 字段 | 枚举值 |
|---|---|
| exercise_prescription.status | 0草稿 / 1已下发待采纳 / 2已采纳执行中 / 3已完成 / 4已忽略 / 5已终止 / 6已作废 |
### 15.5 志愿者与服务
| 字段 | 枚举值 |
|---|---|
| volunteer.qualification_status | 0待审核 / 1已通过 / 2已驳回 / 3已过期 |
| volunteer_appointment.status | 0待接单 / 1已接单 / 2服务中 / 3已完成 / 4已取消 / 5已作废 |
| volunteer_appointment.service_type | 1协助测评 / 2指导跟练 / 3健康咨询 / 4其他 |
| volunteer_service_log.elder_confirm_status | 0待确认 / 1已确认 / 2未评价自动确认 |
| volunteer_service_log.settlement_status | 0无需结算 / 1待结算 / 2已结算 / 3已退款 |
| volunteer_service_log.service_type | 1公益免费 / 2政府购买 / 3市场化收费 |
| volunteer_complaint.complaint_type | 1服务态度 / 2专业能力 / 3迟到早退 / 4隐私泄露 / 5财物纠纷 / 6其他 |
### 15.6 知识库与问答
| 字段 | 枚举值 |
|---|---|
| knowledge_base.content_type | 1健康教育 / 2问答知识 |
| knowledge_base.audit_status | 0待审核 / 1已通过 / 2已驳回 |
| knowledge_base.source | 1专家录入 / 2AI生成待审核 / 3AI生成已审核 |
| qa_log.matched_type | 1知识库 / 2专家应答 / 3大模型兜底 / 4未命中 |
| qa_log.status | 0待处理 / 1已回答 / 2已关闭 |
| expert_answer.review_status | 0待复核 / 1已复核通过 / 2已驳回 |
| expert_schedule.status | 0正常 / 1请假 / 2停用 |
### 15.7 健康教育推送
| 字段 | 枚举值 |
|---|---|
| health_edu_push_rule.status | 0停用 / 1启用 |
| health_edu_push_log.read_status | 0未读 / 1已读 |
## 十六、 API接口清单
### 16.1 认证模块
| 接口 | 方法 | 路径 |
|---|---|---|
| 获取扫码二维码 | GET | /app-api/auth/qrcode |
| 扫码登录确认 | POST | /app-api/auth/qrcode/confirm |
| 扫码登录轮询 | GET | /app-api/auth/qrcode/poll |
| 公众号登录 | POST | /app-api/auth/wx-login |
| 手机号验证码发送 | POST | /app-api/auth/sms/send |
| 手机号验证码登录 | POST | /app-api/auth/sms/login |
| 账号密码登录 | POST | /app-api/auth/login |
| 退出登录 | POST | /app-api/auth/logout |
| 刷新Token | POST | /app-api/auth/refresh |
### 16.2 用户与家庭组
| 接口 | 方法 | 路径 |
|---|---|---|
| 获取当前用户信息 | GET | /app-api/user/info |
| 绑定微信 | POST | /app-api/user/bind-wx |
| 解绑微信 | POST | /app-api/user/unbind-wx |
| 获取家庭组列表 | GET | /app-api/family/list |
| 创建家庭组 | POST | /app-api/family/create |
| 添加家庭成员 | POST | /app-api/family/member/add |
| 移除家庭成员 | DELETE | /app-api/family/member/remove |
| 切换当前管理的老人 | POST | /app-api/family/switch |
### 16.3 老人档案
| 接口 | 方法 | 路径 |
|---|---|---|
| 老人档案列表 | GET | /app-api/elder/list |
| 老人档案详情 | GET | /app-api/elder/{id} |
| 创建老人档案 | POST | /app-api/elder/create |
| 更新老人档案 | PUT | /app-api/elder/{id} |
| 身份证OCR识别 | POST | /app-api/elder/ocr |
| 签署知情同意 | POST | /app-api/elder/consent/sign |
| 老人归档 | POST | /app-api/elder/{id}/archive |
| 获取区划树 | GET | /app-api/region/tree |
| 获取区划海拔 | GET | /app-api/region/{code}/altitude |
| 紧急联系人列表 | GET | /app-api/elder/{id}/emergency-contacts |
| 添加紧急联系人 | POST | /app-api/elder/{id}/emergency-contacts |
| 更新紧急联系人 | PUT | /app-api/emergency-contacts/{id} |
| 删除紧急联系人 | DELETE | /app-api/emergency-contacts/{id} |
### 16.4 量表与评估
| 接口 | 方法 | 路径 |
|---|---|---|
| 获取评估任务列表 | GET | /app-api/assessment/tasks |
| 获取量表详情 | GET | /app-api/assessment/scale/{id} |
| 提交量表答案 | POST | /app-api/assessment/answer |
| 保存答题进度 | POST | /app-api/assessment/progress |
| 获取评估历史 | GET | /app-api/assessment/history |
| 获取综合评估报告 | GET | /app-api/assessment/report/{elderId} |
| 触发运动准入筛查 | POST | /app-api/assessment/screening/trigger |
### 16.5 运动处方
| 接口 | 方法 | 路径 |
|---|---|---|
| 获取当前处方 | GET | /app-api/prescription/current |
| 获取处方历史 | GET | /app-api/prescription/history |
| 采纳处方 | POST | /app-api/prescription/{id}/accept |
| 忽略处方 | POST | /app-api/prescription/{id}/ignore |
| 完成处方 | POST | /app-api/prescription/{id}/complete |
### 16.6 视频跟练与跌倒预警
| 接口 | 方法 | 路径 |
|---|---|---|
| 获取跟练视频列表 | GET | /app-api/exercise/videos |
| 获取视频详情 | GET | /app-api/exercise/videos/{id} |
| 提交跟练记录 | POST | /app-api/exercise/log |
| 跌倒预警上报 | POST | /app-api/exercise/fall-alert |
| 获取跟练历史 | GET | /app-api/exercise/history |
### 16.7 专家应答与知识库
| 接口 | 方法 | 路径 |
|---|---|---|
| 老人提交问题 | POST | /app-api/qa/ask |
| 获取问答历史 | GET | /app-api/qa/history |
| 评价回答 | POST | /app-api/qa/{id}/rate |
| 专家获取待答问题列表 | GET | /admin-api/expert/questions |
| 专家回答问题 | POST | /admin-api/expert/answer |
| 专家复核回答 | POST | /admin-api/expert/review |
| 知识库列表 | GET | /admin-api/knowledge/list |
| 知识库新增 | POST | /admin-api/knowledge/create |
| 知识库审核 | POST | /admin-api/knowledge/audit |
### 16.8 健康教育
| 接口 | 方法 | 路径 |
|---|---|---|
| 获取个性化推荐内容 | GET | /app-api/education/recommend |
| 获取内容分类 | GET | /app-api/education/categories |
| 获取内容列表 | GET | /app-api/education/list |
| 获取内容详情 | GET | /app-api/education/{id} |
| 记录阅读状态 | POST | /app-api/education/{id}/read |
| 打卡任务列表 | GET | /app-api/education/tasks |
| 完成任务 | POST | /app-api/education/tasks/{id}/complete |
### 16.9 志愿者服务
| 接口 | 方法 | 路径 |
|---|---|---|
| 志愿者注册 | POST | /app-api/volunteer/register |
| 上传资质证明 | POST | /app-api/volunteer/qualification |
| 获取附近订单 | GET | /app-api/volunteer/orders/nearby |
| 接单 | POST | /app-api/volunteer/orders/{id}/accept |
| 开始服务(签到) | POST | /app-api/volunteer/orders/{id}/check-in |
| 上传服务照片 | POST | /app-api/volunteer/orders/{id}/photo |
| 结束服务(签退) | POST | /app-api/volunteer/orders/{id}/check-out |
| 获取我的服务记录 | GET | /app-api/volunteer/orders/mine |
| 老人发起预约 | POST | /app-api/appointment/create |
| 老人确认服务 | POST | /app-api/appointment/{id}/confirm |
| 老人评价服务 | POST | /app-api/appointment/{id}/rate |
| 投诉志愿者 | POST | /app-api/appointment/{id}/complaint |
### 16.10 后台管理
| 接口 | 方法 | 路径 |
|---|---|---|
| 组织架构树 | GET | /admin-api/org/tree |
| 组织新增/编辑/删除 | POST/PUT/DELETE | /admin-api/org |
| 用户列表 | GET | /admin-api/user/list |
| 用户新增/编辑/停用 | POST/PUT/DELETE | /admin-api/user |
| 量表管理 | GET/POST/PUT | /admin-api/scale |
| 量表版本管理 | GET/POST/PUT | /admin-api/scale/version |
| 量表版本对比 | GET | /admin-api/scale/version/diff |
| 数据统计 | GET | /admin-api/stats/overview |
| 地图热力图数据 | GET | /admin-api/stats/map |
| 专家排班管理 | GET/POST/PUT | /admin-api/expert/schedule |
| 服务记录查询 | GET | /admin-api/service/logs |
| 数据导出 | GET | /admin-api/export/{type} |
## 十七、 页面清单与路由
### 17.1 老人端 WebApp
| 页面 | 路由 |
|---|---|
| 登录页 | /login |
| 二维码登录页 | /qrcode |
| 首页 | /home |
| 评估任务列表 | /assessment/tasks |
| 量表答题页 | /assessment/scale/:id |
| 评估结论页 | /assessment/result/:id |
| 综合评估报告 | /assessment/report |
| 我的处方 | /prescription |
| 处方详情 | /prescription/:id |
| 视频跟练 | /exercise/:id |
| 跟练记录 | /exercise/history |
| 健康问答 | /qa |
| 健康教育 | /education |
| 健康教育详情 | /education/:id |
| 打卡任务 | /education/tasks |
| 预约服务 | /appointment |
| 预约详情 | /appointment/:id |
| 个人中心 | /profile |
| SOS紧急联系 | /sos |
### 17.2 家属端 WebApp
| 页面 | 路由 |
|---|---|
| 家属首页 | /family/home |
| 老人档案 | /family/elder/:id |
| 代填量表 | /family/elder/:id/assessment |
| 查看评估报告 | /family/elder/:id/report |
| 服务确认与评价 | /family/appointment/:id |
| 家庭组管理 | /family/group |
| 健康周报 | /family/weekly-report |
### 17.3 志愿者端 WebApp
| 页面 | 路由 |
|---|---|
| 志愿者首页 | /volunteer/home |
| 附近订单 | /volunteer/orders |
| 订单详情 | /volunteer/orders/:id |
| 服务签到 | /volunteer/orders/:id/check-in |
| 我的服务记录 | /volunteer/records |
| 个人资料与资质 | /volunteer/profile |
### 17.4 专家端 WebApp
| 页面 | 路由 |
|---|---|
| 专家工作台 | /expert/dashboard |
| 问题应答 | /expert/questions |
| 报告复核 | /expert/reports |
| 知识库审核 | /expert/knowledge |
### 17.5 后台管理端
| 页面 | 路由 |
|---|---|
| 数据看板 | /admin/dashboard |
| 老人档案管理 | /admin/elder |
| 家庭组管理 | /admin/family |
| 组织架构管理 | /admin/org |
| 用户管理 | /admin/user |
| 量表管理 | /admin/scale |
| 量表版本对比 | /admin/scale/version/diff |
| 评估记录 | /admin/assessment |
| 运动处方管理 | /admin/prescription |
| 视频库管理 | /admin/video |
| 知识库管理 | /admin/knowledge |
| 专家排班 | /admin/expert/schedule |
| 志愿者管理 | /admin/volunteer |
| 服务记录查询 | /admin/service/log |
| 投诉仲裁 | /admin/complaint |
| 健康教育内容管理 | /admin/education |
| 推送规则管理 | /admin/push-rule |
| 数据统计与导出 | /admin/stats |
| 系统配置 | /admin/settings |
## 十八、 定时任务清单
| 任务名 | 频率 | 说明 |
|---|---|---|
| 评估任务超时提醒 | 每日 08:00 | 检查7天未完成的评估任务,提醒家属 |
| 评估任务自动跳过 | 每日 08:05 | 14天未完成,自动标记“已跳过”,触发综合评估 |
| 数据归档任务 | 每月1日 02:00 | 按冷热数据分离策略归档 |
| 志愿者资质过期检查 | 每日 09:00 | 资质过期前30天提醒续期 |
| 志愿者资质自动冻结 | 每日 09:05 | 资质过期后自动停用 |
| 专家问题升级 | 每小时 | 检查超时未应答的问题,自动升级 |
| 专家排班提醒 | 每日 07:00 | 提醒当日值班专家 |
| 健康教育推送 | 按规则触发 | 根据推送规则执行 |
| 综合评估自动触发 | 实时 | 评估任务全部完成后触发 |
| 历史数据复用标记 | 每日 03:00 | 检查有效期内可复用的历史结论 |
| 老人年龄更新 | 每日 00:30 | 根据出生日期更新年龄字段 |
| 家庭组归档检查 | 每日 04:00 | 检查归档家庭组状态 |
| 大模型成本统计 | 每日 23:00 | 统计当日大模型调用次数和Token消耗 |
## 十九、 消息通知模板
| 通知类型 | 触发条件 | 推送渠道 | 模板示例 |
|---|---|---|---|
| 评估任务提醒 | 评估任务生成后 | APP推送 | “您有1项新评估任务,预计用时3分钟,点击开始” |
| 评估超时提醒 | 7天未完成评估 | APP推送+短信 | “您的评估任务已超时,请尽快完成” |
| 评估结论通知 | 单量表出结论后 | APP推送 | “您的抑郁评估结果为轻度抑郁,系统已为您推荐相关内容” |
| 综合评估报告 | 专家复核后 | APP推送 | “您的综合健康报告已生成,点击查看” |
| 处方下发通知 | 处方生成后 | APP推送 | “系统为您生成了新的运动处方,请查看是否采纳” |
| 处方执行提醒 | 每日固定时间 | APP推送 | “今天的运动处方还没完成,记得跟练哦” |
| 复评提醒 | 干预周期结束 | APP推送+短信 | “您的干预周期已结束,请进行复评” |
| 服务确认通知 | 志愿者服务完成后 | APP推送 | “志愿者小王已完成服务,请确认并评价” |
| 服务超时自动确认 | 24小时未确认 | APP推送 | “您的服务已自动确认,如有疑问请联系客服” |
| SOS紧急通知 | SOS触发后 | 短信+电话+APP推送 | “您的家人XXX发出紧急求助,位置:XXX” |
| 跌倒预警通知 | 疑似跌倒触发 | APP推送(家庭组) | “检测到您的家人可能有跌倒风险,请及时查看” |
| 专家应答通知 | 专家回答后 | APP推送 | “您的问题已有专家回复,点击查看” |
| 健康教育推送 | 按规则触发 | APP推送 | “根据您的评估结果,为您推荐以下内容” |
| 志愿者资质到期提醒 | 到期前30天 | APP推送 | “您的健康证即将到期,请及时更新” |
| 志愿者订单提醒 | 附近有新订单 | APP推送 | “附近有1个新订单,点击查看” |
## 二十、 权限点定义
### 20.1 老人端权限
| 权限码 | 说明 |
|---|---|
| elder:profile:view | 查看本人档案 |
| elder:profile:edit | 编辑本人档案 |
| assessment:task:view | 查看评估任务 |
| assessment:answer:submit | 提交量表答案 |
| assessment:report:view | 查看综合评估报告 |
| prescription:view | 查看处方 |
| prescription:accept | 采纳处方 |
| prescription:ignore | 忽略处方 |
| exercise:video:view | 查看跟练视频 |
| exercise:log:submit | 提交跟练记录 |
| qa:ask | 提问 |
| qa:history:view | 查看问答历史 |
| education:view | 查看健康教育 |
| appointment:create | 发起预约 |
| appointment:confirm | 确认服务 |
| appointment:rate | 评价服务 |
### 20.2 家属端权限
| 权限码 | 说明 |
|---|---|
| family:group:manage | 家庭组管理 |
| family:elder:view | 查看家庭组老人档案 |
| family:elder:edit | 代录老人档案 |
| family:assessment:submit | 代填量表 |
| family:appointment:confirm | 代为确认服务 |
### 20.3 志愿者端权限
| 权限码 | 说明 |
|---|---|
| volunteer:order:view | 查看附近订单 |
| volunteer:order:accept | 接单 |
| volunteer:service:check-in | 服务签到 |
| volunteer:service:check-out | 服务签退 |
| volunteer:service:photo | 上传服务照片 |
| volunteer:record:view | 查看服务记录 |
| volunteer:profile:edit | 编辑个人资料 |
### 20.4 专家端权限
| 权限码 | 说明 |
|---|---|
| expert:question:view | 查看待答问题 |
| expert:question:answer | 回答问题 |
| expert:report:review | 复核综合评估报告 |
| expert:knowledge:audit | 知识库审核 |
| expert:scale:manage | 量表版本管理 |
### 20.5 管理员权限
| 权限码 | 说明 |
|---|---|
| admin:elder:manage | 老人档案管理 |
| admin:org:manage | 组织架构管理 |
| admin:user:manage | 用户管理 |
| admin:scale:manage | 量表管理 |
| admin:knowledge:manage | 知识库管理 |
| admin:volunteer:manage | 志愿者管理 |
| admin:stats:view | 数据统计 |
| admin:export | 数据导出 |
| admin:settings | 系统配置 |
## 二十一、 数据字典
### 21.1 民族字典
汉族、蒙古族、回族、藏族、维吾尔族、苗族、彝族、壮族、布依族、朝鲜族、满族、侗族、瑶族、白族、土家族、哈尼族、哈萨克族、傣族、黎族、傈僳族、佤族、畲族、高山族、拉祜族、水族、东乡族、纳西族、景颇族、柯尔克孜族、土族、达斡尔族、仫佬族、羌族、布朗族、撒拉族、毛南族、仡佬族、锡伯族、阿昌族、普米族、塔吉克族、怒族、乌孜别克族、俄罗斯族、鄂温克族、德昂族、保安族、裕固族、京族、塔塔尔族、独龙族、鄂伦春族、赫哲族、门巴族、珞巴族、基诺族、其他。
### 21.2 其他字典
| 字典 | 枚举值 |
|---|---|
| 婚姻状况 | 0未婚 / 1已婚 / 2离异 / 3丧偶 |
| 教育程度 | 1文盲 / 2小学 / 3初中 / 4高中 / 5大专 / 6本科及以上 |
| 职业 | 农民 / 工人 / 教师 / 医生 / 公务员 / 军人 / 商人 / 工程师 / 会计 / 律师 / 艺术家 / 服务员 / 司机 / 技术人员 / 自由职业 / 无业 / 其他 |
| 社保类型 | 1职工医保 / 2居民医保 / 3新农合 / 4无 |
| 收入区间 | 1无收入 / 2 1万以下 / 3 1-3万 / 4 3-5万 / 5 5万以上 |
| 照护等级 | 1自理 / 2半自理 / 3失能 |
| 居住状况 | 1独居 / 2与配偶 / 3与子女 / 4养老机构 / 5其他 |
| 居住地类型 | 1城市 / 2农村 / 3城镇 / 4牧区 / 5其他 |
| 户口类型 | 1城镇 / 2农村 |
| 宗教信仰 | 无 / 佛教 / 道教 / 伊斯兰教 / 基督教 / 天主教 / 其他 |
| 数据来源 | 1本人 / 2家属 / 3志愿者 / 4机构导入 |
| 知情同意状态 | 0未签署 / 1已签署 / 2已撤回 |
| 服务类型 | 1协助测评 / 2指导跟练 / 3健康咨询 / 4其他 |
| 投诉类型 | 1服务态度 / 2专业能力 / 3迟到早退 / 4隐私泄露 / 5财物纠纷 / 6其他 |
## 二十二、 列表选择排序规范
### 22.1 排序原则
| 类型 | 排序方式 | 举例 |
|---|---|---|
| 无逻辑顺序的选项 | 按拼音字母排序 | 民族、职业、宗教信仰、区划、技能标签 |
| 有逻辑顺序的选项 | 按业务逻辑排序 | 婚姻状况、教育程度、收入区间、照护等级 |
| 英文缩写 | 按字母顺序排序 | GDS-15、MMSE、ACSM |
| 数字开头 | 数字优先,字母其次 | 1-3万、3-5万 |
### 22.2 需要拼音排序的字段清单
| 字段 | 所在表 | 排序方式 |
|---|---|---|
| 民族 | elder.ethnicity | 拼音 |
| 职业 | elder.last_occupation | 拼音 |
| 宗教信仰 | elder.religion | 拼音 |
| 区划(省/市/县) | sys_region.name | 拼音 |
| 组织名称 | sys_org.org_name | 拼音 |
| 志愿者技能标签 | volunteer.skill_tags | 拼音 |
| 健康教育分类 | knowledge_base.category | 拼音 |
| 投诉类型 | volunteer_complaint.complaint_type | 拼音 |
| 残疾类型 | elder.disability_type | 拼音 |
### 22.3 需要业务逻辑排序的字段清单
| 字段 | 所在表 | 排序方式 |
|---|---|---|
| 婚姻状况 | elder.marital_status | 未婚→已婚→离异→丧偶 |
| 教育程度 | elder.education_level | 文盲→小学→初中→高中→大专→本科及以上 |
| 收入区间 | elder.income_range | 无收入→1万以下→1-3万→3-5万→5万以上 |
| 照护等级 | elder.care_level | 自理→半自理→失能 |
| 社保类型 | elder.social_security_type | 职工医保→居民医保→新农合→无 |
| 居住状况 | elder.living_situation | 独居→与配偶→与子女→养老机构→其他 |
| 居住地类型 | elder.residence_type | 城市→农村→城镇→牧区→其他 |
| 量表严重程度 | scale_answer_record.severity | 正常→轻度→中度→重度 |
| 处方状态 | exercise_prescription.status | 草稿→已下发→已采纳→已完成 |
| 预约状态 | volunteer_appointment.status | 待接单→已接单→服务中→已完成 |
| 评估任务状态 | assessment_task.status | 待填写→已填写→无需填写→已跳过 |
| 知识库审核状态 | knowledge_base.audit_status | 待审核→已通过→已驳回 |
### 22.4 技术实现要求
- **后端统一排序**:所有字典表增加 `sort_order` 字段,由后端按拼音排序后写入,前端不自行排序。
- **MySQL 排序规则**:使用 `utf8mb4_zh_0900_as_cs` 或 `CONVERT(... USING gbk)` 实现中文拼音排序。
- **Java 排序规则**:使用 `Collator.getInstance(Locale.CHINA)` 进行中文拼音排序。
- **前端排序**:使用 `localeCompare('zh-Hans-CN')` 方法。
- **例外处理**:英文缩写按字母顺序,数字开头按数值大小。
## 二十三、 交付范围切分
### 23.1 一期交付(3-6个月)
**后端**:
- 用户认证(扫码/公众号/手机号验证码登录)
- 老人档案管理(含OCR识别、家庭组、紧急联系人)
- 组织架构(树形结构、数据权限)
- 数据治理与历史数据导入
- 动态量表引擎(版本控制、按需分发)
- 六大核心量表(GDS-15、身体状况安全问卷、MMSE、营养评估、生活自主能力、跌倒风险)
- 单量表计分与结论引擎
- 风险判定引擎(决策树)
- 综合评估模型(专家复核流程)
- 专家应答体系(三级应答、排班、质量控制)
- 健康问答(知识库优先+专家应答+大模型兜底)
- 健康教育(内容管理+千人千面推送+打卡任务)
- 视频跟练(视频库+跟练记录)
- 跌倒预警(跟练时手机端本地AI+语音询问+分等级预警)
- 志愿者管理(注册、资质审核、基础档案)
- 社区集中服务记录
- 定时任务、消息通知、数据字典、权限点
**前端**:
- 老人端 WebApp(登录、首页、评估、处方、跟练、问答、健康教育、个人中心、SOS)
- 家属端 WebApp(家庭组、代录、查看报告、确认服务)
- 志愿者端 WebApp(注册、资质、服务记录)
- 专家端 WebApp(问题应答、报告复核)
- 后台管理端(数据看板、老人档案、组织架构、量表管理、知识库、专家排班、志愿者管理、数据统计)
### 23.2 二期交付(6-12个月)
- 跌倒全天候监测(智能手环接入)
- O2O志愿者上门预约(派单、导航、签到、服务确认)
- 健康教育内容扩充(视频、直播)
- 市场化付费能力(服务计价、支付、结算、提现)
- 数据统计与科研分析模块完善
- 大模型本地部署
- 向量数据库引入
### 23.3 三期交付(12-18个月)
- 居家毫米波雷达接入
- 科研数据仓库建设
- 多地区扩展
- 与政府养老平台对接
- 智能硬件生态扩展
## 二十四、 第三方服务清单
| 服务 | 用途 | 申请所需 | 备注 |
|---|---|---|---|
| 微信开放平台 | 扫码登录、公众号登录 | 企业资质、认证费300元/年 | 需提前申请 |
| 微信公众号 | 公众号登录、模板消息 | 企业资质、认证费300元/年 | 服务号优先 |
| 阿里云/腾讯云短信 | 验证码、SOS通知 | 企业资质、模板报备 | 模板审核需提前 |
| 阿里云OCR | 身份证识别 | 企业资质、开通服务 | 按调用量计费 |
| 阿里云OSS | 文件存储 | 企业资质、开通服务 | 按存储量计费 |
| 高德/百度地图 | 地址选点、导航、海拔查询 | 企业资质、申请Key | 需评估配额 |
| 阿里云滑动验证 | 防刷 | 企业资质、开通服务 | 按调用量计费 |
| 通义千问/文心一言 | 大模型兜底 | 企业资质、开通API | 需签署DPA |
| 服务器与带宽 | 部署 | 阿里云/腾讯云ECS | 按配置计费 |
| 域名与SSL证书 | WebApp访问 | 域名注册、SSL证书 | 需备案 |
| 微信支付/支付宝 | 二期市场化付费 | 企业资质、商户号 | 二期申请 |
## 二十五、 最终交付声明
本文档为《智慧养老与主动健康管理平台 全栈开发总体方案》的**最终定稿(第五版·直接使用版)**,已通过:
1. **五轮批判性审查**:业务闭环、数据生命周期、状态机边界、内容体系、外部依赖、边缘场景、交付规格、API请求方法规范、列表排序规范,全部覆盖。
2. **交付规格审查**:状态枚举值、API接口清单、页面清单、定时任务、消息模板、权限点、数据字典、交付范围、第三方服务清单、项目里程碑,全部齐备。
3. **API规范审查**:按RESTful语义使用GET/POST/PUT/DELETE,安全靠HTTPS+加密+鉴权+参数校验+日志脱敏。
4. **列表排序规范**:明确区分“拼音排序”和“业务逻辑排序”,所有字典表增加 `sort_order` 字段,后端统一排序,前端不自行排序。
5. **外部依赖审查**:微信、地图、短信均有降级方案,不依赖单一外部服务。
6. **边缘场景审查**:老人不会用手机、三方不配合、数据膨胀,均有对应策略。
**本方案可直接交付开发团队使用。**
开发团队拿到本文档后:
- 后端开发可直接依据「数据库设计+API接口清单+状态枚举值+定时任务+权限点」进行编码。
- 前端开发可直接依据「页面清单+路由+状态枚举值+列表排序规范」进行开发。
- 测试团队可直接依据「API接口清单+状态枚举值+消息模板」编写测试用例。
- 项目经理可直接依据「交付范围切分+项目里程碑+第三方服务清单」排期和采购。
**祝项目顺利落地,真正为老年人带来福祉。**