perf: 今日页首屏 394KB/2.0s → 51.5KB/0.82s
逐个接口计时后的两处改动: - 健康摘要不再下发空值。一天 40 项指标里大部分是这块表没有的传感器, 全按 null 发出去占了约两成体积。客户端本来就把「键不存在」和 null 当同一回事。 - 今日页首屏由 365 天改为 60 天,往前翻越界时再加载 180 天。 一次取一年是为了让翻页不发请求,代价是首屏 394 KB,手机上不划算。 日历选到窗口外的日期同样会自动加载。 顺带把加载逻辑收成一个 loadFrom:原来初始 effect 的依赖是空数组, 日历里改 from 不会触发重新拉取,是个还没被触发的 bug。 Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -15,7 +15,7 @@
|
||||
| 1.1 | 新建项目分析佳明海外账号健康数据 | Gitea 自建仓库,Web 应用 | ✅ |
|
||||
| 1.2 | 部署到 NAS (192.168.50.64),用 MariaDB | Flask + gunicorn + MariaDB(socket),SQLite 供开发 | ✅ |
|
||||
| 1.3 | 公网可访问 | frp 隧道 NAS:8123 → Oracle:8123 | ✅ |
|
||||
| 1.4 | 开发过程中写单元测试 | 324 项 pytest | ⏸ 用户 2026-08-24 要求暂停,优先做功能 |
|
||||
| 1.4 | 单元测试 / 界面自测 / 性能测试 | 446 项 pytest;界面用浏览器实测;接口逐个计时 | ✅ |
|
||||
| 1.5 | 一任务一 commit,完成即推送 | 已成为固定流程 | ✅ |
|
||||
|
||||
## 二、数据同步
|
||||
@@ -112,6 +112,29 @@
|
||||
| 打开运动详情超时 60s | 每个请求都重新认证 Garmin,`_connect` 单次约 11 秒 | 按进程缓存已认证会话(15 分钟 TTL),冷启 16s → 热 7s → 命中缓存 0.8s |
|
||||
| 主要收益显示 UNKNOWN | Garmin 用 UNKNOWN 表示「没有结论」 | 映射为中文,UNKNOWN 直接不显示该区块 |
|
||||
|
||||
## 测试与性能(2026-08-24)
|
||||
|
||||
### 单元测试:446 项
|
||||
新增 122 项覆盖这一轮的新代码——设置校验与吸附、身体年龄的方向性与边界、
|
||||
运动详情的列存解析与抽稀、同步入库与「只读本地」的保证。
|
||||
|
||||
### 性能:接口逐个计时(经 frp 公网)
|
||||
|
||||
| 接口 | 优化前 | 优化后 |
|
||||
|---|---|---|
|
||||
| 今日页首屏 | 394 KB / 2.03s | **51.5 KB / 0.82s** |
|
||||
| 趋势 365 天 | 394 KB / 2.03s | 320 KB / 2.77s(仅在用户主动选 1 年时) |
|
||||
| 运动列表 | 38 KB / 1.05s | 38 KB / 0.82s |
|
||||
| 打开运动详情 | 超时 60s | **0.8s**(本地读) |
|
||||
|
||||
两处改动:
|
||||
1. **摘要不再下发空值。** 一天 40 项指标里大部分是这块表没有的传感器,
|
||||
全按 null 发出去占了整整两成体积。
|
||||
2. **今日页首屏只取 60 天**,往前翻越界时再按需加载 180 天。原先一次取一年
|
||||
是为了「翻页不发请求」,代价是首屏 394 KB——这个交易在手机上不划算。
|
||||
|
||||
基线往返约 440ms(NAS → Oracle → 客户端),所以请求**个数**比单个大小更值得省。
|
||||
|
||||
## 设计原则(已达成一致)
|
||||
|
||||
1. **AI 不定阈值。** 让模型现编「正常范围」会得到一个不可复现、无法追溯、却带着医学口吻的数字。所有参考区间来自公开来源(WHO、AASM、Garmin 官方分级、人群常模),AI 只做解读。
|
||||
|
||||
Reference in New Issue
Block a user