# elderly-miniapp **Repository Path**: agingai-open/elderly-miniapp ## Basic Information - **Project Name**: elderly-miniapp - **Description**: 老人/家属端 — 微信小程序 + H5 桌面响应式,健康趋势/护理建议,大按钮+语音交互适老化设计(Taro 4 + Vue 3) - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-26 - **Last Updated**: 2026-08-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AgingAI 老人端(elderly-miniapp) > AgingAI 老年人衰老评估系统的**老人/家属端**。基于 Taro 4 + Vue 3 + TypeScript 一套代码编译微信小程序 + H5 桌面响应式(≥1024px 侧边栏布局),对接 medical-portal BFF(`:8000`)。大按钮 + 语音交互,适老化设计(语音优先 / 一次一件事 / 不着急 / 说人话 / 多肯定不否定 / 看得清听得清)。 ## 技术栈 - Taro 4 + Vue 3 + TypeScript(编译微信小程序 weapp + H5 双端) - NutUI(`@nutui/nutui-taro` 组件库) - Pinia + persistedstate(状态管理) - WebSocket 语音采集(`useVoiceWebSocket` + ASR/TTS 全链路) ## 运行模式 | 端 | 说明 | 命令 | |----|------|------| | **weapp(微信小程序)** | `dist/` 产物,微信开发者工具打开 | `npm run dev:weapp`(watch)/ `npm run build:weapp` | | **H5(桌面版)** | `dist-h5/` 产物,≥1024px 侧边栏布局;生产由 medical-portal BFF 同源托管于 `/h5/`(内网自签 HTTPS `aging.example.internal` / 公网 `aging.example.com`,免备案、零 CORS) | `npm run dev:h5`(devServer :10086,proxy `/api` → 本地 BFF :8000)/ `npm run build:h5` | - **BFF 地址**:weapp 经 `__API_BASE_URL__`(`config/dev.ts`/`config/prod.ts` 按环境覆盖);H5 走同源相对路径 `""`(devServer proxy 或 BFF 同源托管)。 ## 功能 - **首页 / 健康趋势**:今日日程 + 健康趋势 + 日常建议(BFF `GET /api/elderly/dashboard`) - **语音评估**:WebSocket 语音采集评估会话(`assessment.vue`),支持唤醒词/字幕/「再说一遍」 - **评估结果 / 报告**:结果页 + 报告详情(`GET /api/elderly/assessment/{session_id}/result`、`/api/elderly/reports/{id}`) - **老人档案 / 设置**:头像、语音校准、权限、隐私政策等 - **JWT 登录鉴权**:微信 code 登录(MVP 占位直接签发)+ 401 全局拦截 reLaunch ## 评估流程(量表选择) - **默认初筛(主路径)**:老人端发起评估**不传 `scale_code`** → 走 CognitiveScreening 初筛,行为与现状一致;后端 LLM 动态路由为主路径(初筛后自动深入量表)。 - **简化量表选择(兜底)**:`startAssessment` 透传可选 `scale_code`,来源两级:URL query `scale_code`(护士端从量表清单选择器跳转 H5 采集页带入)→ storage `aging_scale_code`(简化量表列表兜底)。手动选择仅作辅助/兜底,不阻塞默认初筛。 - 量表清单数据源:BFF `GET /api/elderly/scales`(含 `routable` 标记,`routable=false` 量表标「待补题库」)。 ## 快速开始 ```bash npm install npm run dev:h5 # H5 桌面版开发(devServer :10086,proxy /api → BFF :8000) npm run dev:weapp # 小程序开发(watch),微信开发者工具打开 dist/ npm run typecheck # vue-tsc 类型检查 ``` > 依赖 medical-portal BFF(`:8000`)在线;H5 需在 ≥1024px 桌面浏览器打开以呈现侧边栏布局。 ## 项目结构 ``` elderly-miniapp/ ├── config/ # Taro 配置(index/dev/prod:BFF 地址、H5 publicPath /h5/) ├── src/ │ ├── api/ # API 层(http 封装 + 模块:auth/elderly,含 startAssessment 透传 scale_code) │ ├── composables/ # useVoiceWebSocket / useRecorder(.h5/.weapp) / useTtsPlayer 等 │ ├── pages/ # home / dashboard / assessment / results / report-detail / advice / schedule / settings 等 │ ├── components/ # Sidebar(H5 桌面版)/ TabBar(.h5/.weapp) / ReportDetailPanel 等 │ ├── stores/ # Pinia(auth 等) │ └── app.config.ts # 页面注册 + 自定义 tabBar(首页/评估/我的) ├── dist/ # weapp 产物 ├── dist-h5/ # H5 产物(BFF 同源托管 /h5/) └── package.json ``` ## 桌面版说明 桌面版 = elderly-miniapp 的 **H5 响应式**(非独立前端),≥1024px 显示侧边栏导航(`Sidebar.vue`),<1024px 回退底部导航(`TabBar.h5.vue`)。内网自签 HTTPS + wss(`aging.example.internal`),H5 由 BFF 同源托管,零 CORS。设计还原度见 OpenSpec change `desktop-responsive-layout` / `desktop-design-fidelity-fix`。 ## 与其它模块的接口 ``` elderly-miniapp (weapp / H5) │ HTTPS :8000 ▼ medical-portal BFF — GET /api/elderly/scales · POST /api/elderly/assessment/start · GET /api/elderly/assessment/{id}/result … │ ▼ ai-collection (:8001) — 采集会话(adaptive_plan 多量表编排 / dynamic 路由)/ WS 语音流 ``` ## 许可 本项目代码采用 [Apache License 2.0](LICENSE);许可边界说明见[父仓 NOTICE](../NOTICE.md)。 --- ## 医疗免责声明 本项目为研究用途的老年人健康评估技术探索,**不是医疗器械,未取得任何医疗资质**,输出结果**不得用于临床诊断、治疗决策或任何医疗场景**。所有示例数据均为合成数据。使用者自行承担使用风险。完整声明见[父仓 DISCLAIMER.zh.md](../DISCLAIMER.zh.md)。