逐浪 · 第十四篇 用 TraeWork 把 个人健康记录装进一个工作台:个人健康舱开发实录

68 阅读7分钟

用 TraeWork 把健康记录装进一个工作台:个人健康舱开发实录

一段从 PRD 到上线仅耗时一杯咖啡的私人健康管理系统开发之旅。

一、为什么需要这个系统

过去两年,我积累了一摞零散的健康数据:血压从 157/111 一路降到 101/81,LDL-C 在 4.97→3.93→4.15 之间反复横跳。

这些数据散落在体检报告、微信对话、备忘录和脑子里。每次复诊,医生问"最近血压怎么样",我都得翻半天聊天记录。我需要的是一个集中、可视化、能预警的私人健康仪表盘——不是又一个通用个人系统,而是为我而建的生命仪表盘。

01traework开发.png

▲ 图 1:在 TraeWork 中启动开发,PRD 直接喂给工作台

二、TraeWork:把 PRD 直接变成可运行系统

2.1 为什么选 TraeWork

TraeWork 是 TRAE 旗下的 AI 原生工作空间,支持 Work 和 Code 双模式。对这次需求来说,它的关键优势是:

  • Work 模式直接消化我的 PRD 文档(一份 Markdown),理解上下文
  • Code 模式承接工程化落地,按蓝图生成项目骨架、路由、模板、数据库
  • 全程在一个工作台内闭环:需求理解 → 代码生成 → 启动验证 → 数据导入 → 效果预览

2.2 开发过程:分钟级从 0 到 1

我把 PRD(01个人健康管理系统.md)丢给 TraeWork,它按以下顺序自主推进:

  1. 项目骨架:Flask + SQLite + Bootstrap 5 + Chart.js
  2. 数据库层:9 张表(users / blood_pressure / lipids / blood_glucose / weight / medications / reports / fertility / settings),幂等初始化
  3. 工具层:BMI 计算、目标对比、趋势查询、复查提醒、阶段性总结
  4. 路由层:5 个 Blueprint(index / data_entry / trends / summary / settings),13 个端点
  5. 模板层:10 个 Jinja2 模板,覆盖仪表盘、6 类录入、趋势、摘要、设置
  6. 静态资源:自定义 CSS 主题 + Chart.js 图表辅助函数 + 目标线插件

02分钟级完成.png

▲ 图 2:从 PRD 到完整项目骨架,分钟级交付

整个过程最让我意外的是速度。传统手写这套代码至少要一两个工作日,而 TraeWork 在分钟级就完成了全部代码生成,并且:

  • 自动遵循 PEP 8、类型注解、docstring
  • 自动抽取魔法数字为配置常量(如 90 天复查周期)
  • 自动用参数化 SQL 防注入
  • 自动按单一职责拆分函数

这不是堆代码,是按工程规范在交付。

三、把两年历史装进去:数据初始化

3.1 第二份素材:历史数据脚本

光有空壳系统没用,我得把 2024-09 到 2026-09 的真实数据灌进去。我准备了第二份素材——一份 Python 初始化脚本,覆盖:

类型时间跨度记录数
血压2025-02 ~ 2026-097 条
血脂2025-02 ~ 2026-083 条
血糖2025-02 ~ 2026-082 条
体重2024-09 ~ 2026-083 条
用药2025-02 ~ 2026-094 条
检查报告2025-02 ~ 2026-084 条
备孕2024-04 ~ 2026-084 条

03初始化数据.png

▲ 图 3:历史数据初始化脚本,覆盖 7 类健康记录

3.2 秒级导入 + 自动修复

TraeWork 没有机械照搬原脚本,而是做了三件聪明事:

  1. 复用项目 db 模块:保证与运行时一致,不重新发明轮子
  2. 幂等设计:导入前清空业务表,可重复执行不脏数据
  3. 关键修正:发现 PRD 默认身高 *cm 与实际 *cm 不符,自动更新 settings;发现健康摘要取 AMH 时被日常排卵监测条目覆盖,自动改写为"取最近一次有 AMH 值的记录"

04初始化数据秒级.png

▲ 图 4:数据导入 + 验证在秒级完成

导入 + 验证同样在秒级完成。验证脚本一次性确认:

  • 仪表盘显示最新血压 101/81、LDL 4.15(红色 warn 标识)
  • 血压趋势 API 返回 7 条,157/111 → 101/81 下降曲线完整
  • LDL 趋势:[4.97, 3.93, 4.15],自动生成阶段性总结
  • 健康摘要含用户名、降压药、LDL 全部关键字段

四、最终效果:一页纸看见自己

4.1 仪表盘:四个卡片一眼掌握状态

05页面效果.png

▲ 图 5:首页仪表盘,关键指标 + 趋势图 + 复查提醒

打开首页,四张指标卡横向铺开:

  • 血压:101/81 mmHg,目标 <130/80,绿色 good
  • LDL-C:4.15 mmol/L,目标 <1.8,红色 warn
  • 体重:66.0 kg,BMI 24.0,刚好达标
  • 糖化:待录入

下方两张趋势图:近 7 天血压折线、LDL-C 全历史曲线(自动绘制 1.8 目标虚线)。再往下是复查提醒(血脂距上次已超 90 天周期,红色标记)和最近用药列表。

4.2 趋势分析:多指标切换 + 目标线

06页面效果2.png

▲ 图 6:趋势分析页,支持血压/LDL/体重切换,自动绘制目标线

趋势页支持血压 / LDL / 体重三键切换。最让我受用的是 LDL 图上那条红色虚线——它让"我离 1.8 还有多远"变成一个一眼可见的几何距离,而不是抽象数字。

4.3 健康摘要:一键复制给医生

摘要页是这次开发里我最满意的设计。点"复制全文",一段纯文本就进了剪贴板:

健康摘要(2026-09-01)
--------------------------------
血压:101/81 mmHg(目标<130/80),心率 66,测于 2026-09-01 07:30:00
血脂 LDL-C:4.15 mmol/L(目标<1.8),TC 6.27,TG 2.01,HDL 1.04,Lp(a) 未测,测于 2026-08-20
血糖:4.09 mmol/L(空腹),糖化 5.46%(目标<6.0%),测于 2026-08-20 08:00:00
体重:6*.0 kg(BMI 2*.0,目标<66.0 kg),测于 2026-08-20
用药:降压药 A 30mg 每日一次,晨起;β受体阻滞剂 B 5mg 每日一次,睡前
--------------------------------
注:本摘要由个人健康舱自动生成,仅供医生参考。

直接粘贴到微信发给心内科医生,比口述半小时还清楚。

五、复盘:TraeWork 改变了什么

5.1 三个关键时刻

时刻传统方式TraeWork
PRD → 可运行代码1-2 个工作日手写分钟级生成 + 自主验证
历史数据导入手写脚本 + 手动调试秒级导入 + 自动修 bug
效果验收手动逐页点自动脚本批量验证 13 路由

5.2 它不是"代写代码",是"代做工程"

TraeWork 让我印象最深的不是速度,而是工程素养

  • 它会主动遵循我的 user_rules(PEP 8、类型注解、docstring、单一职责)
  • 它会在导入数据时发现 PRD 与现实的偏差并主动修正
  • 它会在摘要 bug 出现时不等人指出就改写查询逻辑
  • 它会用参数化 SQL、白名单校验这类细节兜底安全

5.3 适合谁

  • 有明确 PRD 但缺时间落地的个人开发者
  • 想快速验证想法的工程师
  • 需要把分散数据整合成可视化工具的任何人

六、下一步

个人健康舱的 P0/P1 已全部交付,P2(CSV 导入)部分实现,P3(PDF 报告)留作扩展。接下来我打算:

  1. 接入大模型,根据历史数据生成个性化建议("本月该复查血脂了"+"下午血压偏高,建议加测一次")
  2. 移动端适配(Bootstrap 已就绪,手机浏览器即可访问)
  3. 数据同步:对接华为健康 / Apple Health API

一句话总结:TraeWork 让我把"想做一个健康管理系统"这件事,从"等周末有空再说"压缩成了"等咖啡凉之前搞定"。它不是一个更快的打字员,而是一个懂工程的搭档。

项目位置~/health_cabin/ 启动命令python app.py → 访问 http:*****/ TraeWork 体验www.trae.cn/work


素材图索引

图号文件说明
图 101traework开发.png在 TraeWork 中启动开发
图 202分钟级完成.png分钟级完成项目骨架
图 303初始化数据.png历史数据初始化脚本
图 404初始化数据秒级.png数据秒级导入与验证
图 505页面效果.png首页仪表盘效果
图 606页面效果2.png趋势分析页效果