Skip to content

CPP-GUN/old-man-miniprogram

Repository files navigation

老年陪护机器人-小程序端代码

1. 方向进度概述

本项目小程序端已完成核心业务流程的开发与联调,主要覆盖了用户管理、健康监测、日程提醒、即时通讯及紧急预警五大模块。目前项目处于功能验收与细节优化阶段,核心功能闭环已打通,UI/UX 还原度达到设计稿 95% 以上,关键路径(如登录、WebSocket 连接、摔倒报警)稳定性经过多轮测试。


2. 功能实现与技术细节

2.1 核心架构与基础建设

  • 自定义 TabBar 架构

    • 功能:实现了全局统一的底部导航栏,支持动态选中态切换。
    • 技术实现:采用微信小程序 custom-tab-bar 组件机制,在 app.json 中声明全局组件。通过 getTabBar().setData 在各页面 onShow 生命周期中更新选中状态,解决了原生 TabBar 灵活性不足的问题。
    • 亮点:将全局级组件(如摔倒预警弹窗)集成在 TabBar 中,确保在任意主页面均能响应紧急事件,非Tab页收到信息后也能强制转回首页进行弹窗,无需在每个页面重复引入组件。
  • WebSocket 全局通信机制

    • 功能:维持长连接,实时接收服务器推送(对话消息、摔倒报警)。
    • 技术实现:在 app.js 中封装 connectWebSocketWithAutoRetry 方法,实现了无感自动重连心跳保活机制。
    • 状态管理:使用 globalData 维护 ws 实例,通过回调函数分发消息类型(msgType)。

2.2 关键功能模块

A. 紧急摔倒预警 (Fall Warning)

  • 功能:当后端检测到设备端上报摔倒事件时,小程序端强制弹出全屏红色警报,提供一键呼救功能。
  • 技术实现
    • 组件化:开发 fall-warning 组件,利用 z-index: 10000position: fixed 实现最高层级遮罩,覆盖 Navbar 和 TabBar。
    • 全局触发:在 app.js 的 WebSocket onMessage 中监听 msgType == 1
    • 路由穿透:若用户处于非 Tab 页面(如二级详情页),逻辑强制跳转至首页 (wx.switchTab),随后触发 TabBar 中的弹窗实例,确保警报必达。
    • 计时器逻辑:组件内部维护独立的计时器状态,记录事故发生时长。

B. 智能日程管理 (Schedule)

  • 功能:展示每日服药、运动等任务,支持打卡与状态流转。
  • 技术实现
    • UI 交互:首页采用半屏弹窗 (PageContainer)居中模态框 结合的形式,分别用于展示列表和添加/编辑任务。
    • 逻辑处理:前端根据 nextExecuteTimestatus 字段,动态计算任务状态(未开始、已完成、已过期),并处理跨天任务的逻辑判断。

C. 医疗病史管理 (Medical History)

  • 功能:用户可增删改查慢性病、手术史等信息。
  • 技术实现
    • 动态表单:基于 currentHistoryType 动态渲染不同的表单项(如手术史需要填写时间/医院,而过敏史仅需填写名称)。
    • 数据清洗:针对后端返回的混合数据结构(部分字段为 JSON 字符串,部分为普通字符串),在 onShow 阶段进行 JSON.parse 预处理,确保 WXML 渲染无误。
    • CRUD 闭环:实现了完整的 RESTful API 对接(GET /list, POST /add, POST /update, DELETE /delete)。

D. 智能对话 (Chat)

  • 功能:与 AI 助手进行语音/文字交互。
  • 技术实现
    • 即时通讯:复用全局 WebSocket 通道发送文本消息。
    • 语音合成 (TTS):集成微信同声传译插件或后端 TTS 接口(根据具体实现调整),实现消息的语音播报。

3. 跨方向联动实现

3.1 与后端的联动

  • API 规范对接
    • 严格遵循 RESTful 风格,统一处理 HTTP 400/401/500 错误码。例如在病史编辑中,针对 /add/update 接口参数差异(diseaseType vs id)进行了严格的参数校验适配。
  • 实时信令交互
    • 通过 WebSocket 协议定义了明确的消息类型(msgType),实现了后端主动推送(摔倒报警)到前端被动响应的毫秒级联动。

3.2 与嵌入式、CV端 的联动

  • 数据可视化展示
    • 小程序端通过 ECharts 组件(ec-canvas)接收并渲染由硬件端上报的情绪数据,实现了硬件采集 -> 后端存储 -> 小程序展示的数据链路。
  • 紧急事件响应
    • 硬件端检测到摔倒 -> 上报服务器 -> 服务器推送 WebSocket -> 小程序端弹出警报。这一链路打通了物理世界与数字终端的交互闭环。

About

The wechat miniprogram code for CPP Team Old Man Program

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors