我写了个“卡路里自动化看板”,把饮食变成了数字游戏

我写了个“卡路里自动化看板”,把饮食变成了数字游戏。这玩意儿本质上是个数字监狱,但关在里面,我他妈居然感到了自由。

去年团队解散那会儿,体重飙升到85公斤,腰上那圈肉就跟交付项目时欠下的技术债一样,甩都甩不掉。人一胖,脑子就钝,对着屏幕debug都觉得氧气不够用。我意识到一个问题:过去三年我疯狂管理别人,却连自己的基础代谢都管不明白。这不行,得用产品经理的老本行,把自己当个产品来重构。第一步就是数据化,一切没有量化指标的行为优化都是耍流氓。所以我得知道每天到底吃了多少卡,消耗了多少卡,光靠薄荷健康手动记?太原始了,不符合我的身份。我得让它自动化。

核心数据源是外卖。我写了个爬虫专门盯美团和饿了么的订单页,不是爬公开信息,那没意义。我是用Selenium模拟登录,抓取个人历史订单的DOM树,解析菜品名称。这里第一个坑就来了,商家录入的菜名五花八门,“宫保鸡丁饭”可能叫“宫爆鸡丁套餐”,正则匹配根本罩不住。我上了模糊匹配和简单的NLP分词,自己建了个菜品别名库,才把识别率拉到90%以上。识别出菜名只是第一步,关键是要得到它的热量。市面上没有现成的、结构化的外卖菜品热量数据库。我的办法很土但有效:爬取薄荷健康APP的搜索接口。把“宫保鸡丁饭”作为关键词请求它的搜索API,从返回的JSON里提取第一个匹配食物的热量数据。这里要处理频率限制,我加了随机延时和IP代理池,慢点就慢点,数据准确就行。

光有摄入还不够,还得有消耗。我买了个二手小米手环,它的数据能同步到Zepp Life。我逆向了一下它的蓝牙协议和APP通信,写了个脚本定时把步数、心率、睡眠数据扒到本地数据库。静息代谢用Mifflin-St Jeor公式根据我的年龄体重动态算,活动消耗根据手环的心率数据做粗略估算。这样,摄入和消耗两条线就都有了。

数据齐了,看板就好做。我用Flask搭了个简单的本地服务,前端就是ECharts图表。一个dashboard,左边是今日摄入环形图,按蛋白质、碳水、脂肪拆解;中间是实时热量盈亏,一条是摄入曲线,一条是消耗曲线,看它们什么时候交叉;右边是本周趋势和预警,比如连续三天碳水超标就标红。所有数据每半小时自动更新一次,我浏览器开着个标签页常驻,随时能瞟一眼。

这游戏玩上瘾了。点外卖前,我会预估这顿饭的热量,看它会不会让我的日曲线爆掉。晚上如果看到消耗曲线还差300卡才到每日目标,我会下楼去跑两圈,把那条线拉上去,让图表闭合。那种掌控感是病态的,精确到小数点后一位。朋友说我疯了,吃个饭跟做实验一样。但他们不懂,这种对数字的绝对控制,是对抗过去两年那种项目失控、团队涣散、身心俱疲后遗症的唯一解药。当你能用代码和规则把身体管住,你才会觉得,生活里至少有这么一块是确定无疑的。

身体没赘肉,代码才不会有冗余。这话听起来像鸡汤,但对我来说是物理定律。脂肪是身体的冗余数据,无效的代码是项目的熵增。清理它们需要同一种方法论:定义指标,持续监控,建立反馈闭环,然后严格执行。这个看板就是我给自己写的监控系统。它不抒情,不鼓励,只是冰冷地呈现数字。而我要做的,就是让那些数字,停留在我画好的绿色区间里。

有时候深夜盯着那条平稳的消耗曲线,我会想起以前盯服务器监控图的感觉。只不过现在,这台服务器是我自己。出问题了不能重启,只能优化。这种认知,比任何管理课程都来得深刻。

© 版权声明
THE END
喜欢就支持一下吧
点赞67 分享