本项目面向慢病管理领域,聚焦糖尿病患者及高血压人群的日常健康数据监测需求。目标是通过微信小程序提供零门槛的健康数据录入体验,结合后端数据聚合与趋势分析能力,让患者和医生直观掌握健康指标变化趋势,实现从"被动治疗"到"主动管理"的转变。
### 核心功能模块
| 模块 | 功能说明 |
|------|----------|
| **首页仪表盘** | 展示基础代谢率(BMR)、血糖/血压/体重/腰围最新值、最近10条混合记录流 |
| **血糖管理** | 血糖值录入(支持空腹/餐后等5种测量状态)、历史列表、删除记录 |
| **血压管理** | 收缩压/舒张压/脉搏录入、历史列表、删除记录 |
| **体重管理** | 体重录入(自动计算BMI)、历史列表、删除记录 |
| **腰围管理** | 腰围值录入、历史列表、删除记录 |
| **健康统计** | 按指标类型+时间周期(7/30/90天)的趋势折线图、平均值/最高值/最低值/记录次数统计 |
| **健康档案** | 性别、出生日期、身高维护,为BMR和BMI计算提供基础数据 |
| **个人中心** | 微信头像昵称展示、快捷入口导航 |
| **后台管理** | 客户管理、RBAC权限、菜单管理、系统配置、SQL日志 |
### 业务流程
1. 用户通过微信授权登录小程序 → 自动创建/关联客户档案
2. 在首页查看各指标最新值和BMR → 点击卡片进入对应指标详情页
3. 在指标页录入测量数据 → 保存后实时刷新列表
4. 在统计页选择指标和周期 → 查看趋势图和统计摘要
5. 在健康档案页完善个人信息 → 系统自动更新BMI和BMR计算
前后端分离B/S架构,后端遵循 **Controller → Service → Model** 三层划分。
**前端(UniApp + Vue 3 + Vite)**:9个页面,封装统一 `api.js`,POST+JSON通信,Token认证。
**后端(Webman + PHP 8.2)**:
- **API层**:`HealthController` 提供17个接口,中间件统一处理参数解析/Token校验/响应封装/SQL日志
- **Service层**:`HealthService`(BMR/BMI计算、混合记录排序、周期统计)、`TokenService`(Redis Token生成/验证/续期)、`AppletService`(微信登录)
- **后台**:EasyAdmin8-webman + Layui + Blade,注解路由自动生成权限节点
- **MCP**:php-mcp/server,17工具+3资源,支持AI辅助开发
**存储(MySQL + Redis)**:ThinkORM连接池(max=5)+断线重连;Redis缓存Token(24h自动续期)
### 我的负责模块和成果
- 独立全栈开发,API接口 **17个**,小程序页面 **9个**,后台控制器 **6个**
- BMR自动计算(Mifflin-St Jeor公式)、BMI自动计算、Canvas趋势图绘制
- 集成MCP AI服务(17工具+3资源)
### 难点和解决方案
1. **Canvas图表**:小程序Canvas与H5差异大 → 原生Canvas API手绘折线图,兼容性100%
2. **BMI依赖身高**:用户可能未填档案 → 查Profile,身高为0则BMI返回0,前端展示"--"
3. **Token过期**:频繁重新登录 → `verifyToken`验证成功后自动续期24h
4. **混合记录排序**:4种指标需按时间混合展示 → 各查5条合并,`usort`降序取前10
5. **常驻内存断连**:MySQL wait_timeout断开 → 连接池(max=5)+断线重连+心跳50s