用 TraeWork 把健康记录装进一个工作台:个人健康舱开发实录
一段从 PRD 到上线仅耗时一杯咖啡的私人健康管理系统开发之旅。
一、为什么需要这个系统
过去两年,我积累了一摞零散的健康数据:血压从 157/111 一路降到 101/81,LDL-C 在 4.97→3.93→4.15 之间反复横跳。
这些数据散落在体检报告、微信对话、备忘录和脑子里。每次复诊,医生问"最近血压怎么样",我都得翻半天聊天记录。我需要的是一个集中、可视化、能预警的私人健康仪表盘——不是又一个通用个人系统,而是为我而建的生命仪表盘。
▲ 图 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,它按以下顺序自主推进:
- 项目骨架:Flask + SQLite + Bootstrap 5 + Chart.js
- 数据库层:9 张表(users / blood_pressure / lipids / blood_glucose / weight / medications / reports / fertility / settings),幂等初始化
- 工具层:BMI 计算、目标对比、趋势查询、复查提醒、阶段性总结
- 路由层:5 个 Blueprint(index / data_entry / trends / summary / settings),13 个端点
- 模板层:10 个 Jinja2 模板,覆盖仪表盘、6 类录入、趋势、摘要、设置
- 静态资源:自定义 CSS 主题 + Chart.js 图表辅助函数 + 目标线插件
▲ 图 2:从 PRD 到完整项目骨架,分钟级交付
整个过程最让我意外的是速度。传统手写这套代码至少要一两个工作日,而 TraeWork 在分钟级就完成了全部代码生成,并且:
- 自动遵循 PEP 8、类型注解、docstring
- 自动抽取魔法数字为配置常量(如 90 天复查周期)
- 自动用参数化 SQL 防注入
- 自动按单一职责拆分函数
这不是堆代码,是按工程规范在交付。
三、把两年历史装进去:数据初始化
3.1 第二份素材:历史数据脚本
光有空壳系统没用,我得把 2024-09 到 2026-09 的真实数据灌进去。我准备了第二份素材——一份 Python 初始化脚本,覆盖:
| 类型 | 时间跨度 | 记录数 |
|---|---|---|
| 血压 | 2025-02 ~ 2026-09 | 7 条 |
| 血脂 | 2025-02 ~ 2026-08 | 3 条 |
| 血糖 | 2025-02 ~ 2026-08 | 2 条 |
| 体重 | 2024-09 ~ 2026-08 | 3 条 |
| 用药 | 2025-02 ~ 2026-09 | 4 条 |
| 检查报告 | 2025-02 ~ 2026-08 | 4 条 |
| 备孕 | 2024-04 ~ 2026-08 | 4 条 |
▲ 图 3:历史数据初始化脚本,覆盖 7 类健康记录
3.2 秒级导入 + 自动修复
TraeWork 没有机械照搬原脚本,而是做了三件聪明事:
- 复用项目 db 模块:保证与运行时一致,不重新发明轮子
- 幂等设计:导入前清空业务表,可重复执行不脏数据
- 关键修正:发现 PRD 默认身高 *cm 与实际 *cm 不符,自动更新 settings;发现健康摘要取 AMH 时被日常排卵监测条目覆盖,自动改写为"取最近一次有 AMH 值的记录"
▲ 图 4:数据导入 + 验证在秒级完成
导入 + 验证同样在秒级完成。验证脚本一次性确认:
- 仪表盘显示最新血压 101/81、LDL 4.15(红色 warn 标识)
- 血压趋势 API 返回 7 条,157/111 → 101/81 下降曲线完整
- LDL 趋势:[4.97, 3.93, 4.15],自动生成阶段性总结
- 健康摘要含用户名、降压药、LDL 全部关键字段
四、最终效果:一页纸看见自己
4.1 仪表盘:四个卡片一眼掌握状态
▲ 图 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 趋势分析:多指标切换 + 目标线
▲ 图 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 报告)留作扩展。接下来我打算:
- 接入大模型,根据历史数据生成个性化建议("本月该复查血脂了"+"下午血压偏高,建议加测一次")
- 移动端适配(Bootstrap 已就绪,手机浏览器即可访问)
- 数据同步:对接华为健康 / Apple Health API
一句话总结:TraeWork 让我把"想做一个健康管理系统"这件事,从"等周末有空再说"压缩成了"等咖啡凉之前搞定"。它不是一个更快的打字员,而是一个懂工程的搭档。
项目位置:
~/health_cabin/启动命令:python app.py→ 访问http:*****/TraeWork 体验:www.trae.cn/work
素材图索引
| 图号 | 文件 | 说明 |
|---|---|---|
| 图 1 | 01traework开发.png | 在 TraeWork 中启动开发 |
| 图 2 | 02分钟级完成.png | 分钟级完成项目骨架 |
| 图 3 | 03初始化数据.png | 历史数据初始化脚本 |
| 图 4 | 04初始化数据秒级.png | 数据秒级导入与验证 |
| 图 5 | 05页面效果.png | 首页仪表盘效果 |
| 图 6 | 06页面效果2.png | 趋势分析页效果 |