《智慧养老与主动健康管理平台 全栈开发总体方案(最终定稿·直接使用版)》
文档定位:本文档是项目的最终开发蓝图,可直接作为 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 核心业务闭环(状态机流转)
- 信息采集:老人扫码登录 / 家属代劳 / 志愿者上门。集成身份证OCR、扫码/公众号登录、自动获取经纬度与海拔。
- 健康初筛:通过5道快速问卷,判断需要进入哪些深度评估。
- 运动准入筛查:当老人/家属/志愿者发起“我想运动/参加体适能测评”时,追加身体状况安全问卷和ACSM运动前筛查。
- 量表评估(按需分发):系统根据初筛结果、老人档案和历史数据有效期,自动判断需要填哪些量表。
- 单量表结论:每张量表填完后立即计分、立即出结论、立即触发后续动作。
- 风险判定:规则引擎按决策树判定“运动风险等级(高/中/低)”。
- 综合评估:所有评估任务完成/标记无需填写/已复用后,单量表结论 + 老人画像 → 生成综合健康报告(专家复核后推送)。
- 处方生成:结合海拔、体适能、专家知识库,生成个性化运动处方。
- 用户决策:老人决定【采纳】或【忽略】。忽略则终止;采纳则进入干预。
- 视频跟练与跌倒预警:跟随专家视频练习,AI实时检测跌倒风险并预警。
- 阶段性复采:干预周期结束后,系统自动推送量表复评。
- 效果分析:对比前后数据(结合量表版本差异),生成效果报告。
- 处方迭代与沉淀:动态调整处方,成功案例沉淀至知识库,不断迭代。
二、 技术栈与架构选型
| 层级 |
选型 |
说明 |
| 后端语言与框架 |
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 扫码登录流程
- 老人打开WebApp(未登录状态)。
- 页面显示登录二维码(含临时Token)。
- 老人用微信扫一扫。
- 微信授权确认。
- 后端校验Token,绑定openid与老人账号。
- WebApp自动登录成功,跳转首页。
4.4 公众号登录流程
- 老人关注公众号。
- 点击菜单栏“我的健康”。
- 公众号跳转WebApp,携带授权code。
- 后端用code换取openid,绑定老人账号。
- 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 派单逻辑
- 优先匹配同县区的志愿者机构。
- 同县区没有机构,向上级(市、省、国家)逐级查找。
- 紧急情况可直接基于GPS距离指定最近志愿者。
六、 老年人信息结构
6.1 核心设计原则
- 隐私合规:身份证号、手机号加密存储,前端脱敏;知情同意状态是采集前置。
- 归档分离:过世老人档案迁入归档表,主表只保留活跃老人。
- 家庭组管理:通过家庭组表支持“多人管一老、一人管多老”。
- 区划联动:籍贯、居住地使用国标区划编码,自动关联海拔、气候数据。
- 数据溯源:记录数据来源(本人/家属/志愿者/机构),为AI评估提供可信度参考。
- 审计留痕:所有关键操作记录操作人和时间。
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其他) |
老人过世级联归档流程:
elder 主表记录标记为“已归档”。
assessment_task 中所有“待填写”任务标记为“已作废”。
exercise_prescription 中“已下发未采纳”标记“已作废”;“已采纳执行中”标记“已终止”。
volunteer_appointment 中所有“待服务/服务中”订单自动取消。
family_group 状态改为“已归档”,停止推送。
qa_log 中未回答的问题标记为“已关闭”。
- 所有关联数据在归档表中保留,用于科研分析。
七、 数据治理与历史数据导入
7.1 核心原则
“有数据”不等于“能用数据”。 已有数据必须先治理,后导入。
7.2 数据治理流程
- 数据盘点。
- 数据质量评估(完整性、准确性、一致性、重复性)。
- 数据清洗与标准化。
- 合规审查(知情同意、匿名化)。
- 分批导入。
- 输出数据质量报告。
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。
系统分发逻辑:
- 老人完成健康初筛问卷(5题)。
- 系统根据初筛结果、老人档案和历史数据有效期,自动计算“需要填哪些量表”。
- 不需要填写的量表,前端标注“您当前无需填写此量表”及原因。
- 需要填写的量表按优先级排序,依次推送。
- 历史数据有效期内的量表,直接复用。
- 当老人发起“我想运动”时,追加运动准入筛查。
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 单量表“填完即出结论”
- 规则引擎精确计分(Java代码)。
- 匹配结论阈值,输出单量表结论。
- 前端弹窗展示结论(通俗语言、大字体、语音播报)。
- 根据结论触发后续动作。
8.7 综合评估触发条件
- 所有
assessment_task 中状态不为“待填写”的任务,全部完成或标记为“无需填写”/“已复用”时,触发综合评估。
- 存在“已跳过”任务时,综合评估仍触发,但报告标注“本报告基于部分量表结论”。
- 存在“待填写”任务时,7天后提醒,14天后自动标记“已跳过”,触发综合评估。
8.8 动态表单引擎六大能力
- 反向计分(GDS-15)
- 一票否决(身体状况安全问卷)
- 教育程度调整分界值(MMSE)
- 动态跳转(营养评估两阶段)
- 不同分值选项(营养评估、生活自主能力)
- 多题型混合(单选、文本输入、口头测试)
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 专家应答质量控制
- 双人复核制:重要问题需两位专家交叉复核。
- 回答留痕。
- 老人反馈机制:点赞/点踩,低分触发复核。
- 免责声明。
- 专家资质审核:持证医生/康复师才能成为应答专家。
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短信 |
语音询问流程(跟练场景,手机前台):
- 手机AI检测到疑似跌倒。
- 立即触发语音询问“您还好吗?需要帮助吗?”。
- 老人回应:说“没事”→记录日志继续;无响应(5-10秒)→升级紧急级;说“救命”→立即升级紧急级。
- 紧急级:通知家庭组 + 拨打第一联系人 + 发送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定位仅作辅助记录,不作为唯一依据。
- 核心凭证 = 老人的确认与评价。
服务流程:
- 志愿者到达老人家附近,点击“开始服务”(记录GPS和时间)。
- 服务过程中,上传照片(带水印:时间+地点)。
- 服务结束后,系统自动向家庭组推送确认通知。
- 老人/家属点击【确认完成】并打分(1-5星)。
- 只有老人确认后,服务才被标记为“已完成”,计入服务时长/积分。
- 24小时内未确认,系统默认“自动确认”,但标记为“未评价”。
13.4 志愿者资质审核
- 注册后需上传:身份证、健康证、无犯罪记录证明。
- 由机构管理员审核,审核通过后才能接单。
- 上岗前必须完成培训(在线课程+考试)。
13.5 服务质量管理
- 服务SOP:签到→问候→服务→记录→签退。
- 双人上门制度:高风险场景建议双人上门。
- 服务保险:为志愿者购买意外险。
- 投诉与仲裁机制。
- 服务评价体系:老人评价+系统自动评分综合计算信用分。
13.6 派单逻辑
- 优先匹配同县区的志愿者机构。
- 同县区没有机构,向上级(市、省、国家)逐级查找。
- 紧急情况可直接基于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❓view |
查看待答问题 |
| expert❓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证书 |
需备案 |
| 微信支付/支付宝 |
二期市场化付费 |
企业资质、商户号 |
二期申请 |
二十五、 最终交付声明
本文档为《智慧养老与主动健康管理平台 全栈开发总体方案》的最终定稿(第五版·直接使用版),已通过:
- 五轮批判性审查:业务闭环、数据生命周期、状态机边界、内容体系、外部依赖、边缘场景、交付规格、API请求方法规范、列表排序规范,全部覆盖。
- 交付规格审查:状态枚举值、API接口清单、页面清单、定时任务、消息模板、权限点、数据字典、交付范围、第三方服务清单、项目里程碑,全部齐备。
- API规范审查:按RESTful语义使用GET/POST/PUT/DELETE,安全靠HTTPS+加密+鉴权+参数校验+日志脱敏。
- 列表排序规范:明确区分“拼音排序”和“业务逻辑排序”,所有字典表增加
sort_order 字段,后端统一排序,前端不自行排序。
- 外部依赖审查:微信、地图、短信均有降级方案,不依赖单一外部服务。
- 边缘场景审查:老人不会用手机、三方不配合、数据膨胀,均有对应策略。
本方案可直接交付开发团队使用。
开发团队拿到本文档后:
- 后端开发可直接依据「数据库设计+API接口清单+状态枚举值+定时任务+权限点」进行编码。
- 前端开发可直接依据「页面清单+路由+状态枚举值+列表排序规范」进行开发。
- 测试团队可直接依据「API接口清单+状态枚举值+消息模板」编写测试用例。
- 项目经理可直接依据「交付范围切分+项目里程碑+第三方服务清单」排期和采购。
祝项目顺利落地,真正为老年人带来福祉。