Commit Graph

  • e911a7c1f0 feat(garmin): 绑定表单也能强制重试了,之前只有同步页有 main ericwyuan 2026-09-13 07:31:43 +08:00
  • db7f182030 fix(garmin): 退出账号会把邮箱和令牌一起永久删掉,SSO 账号无处补救 ericwyuan 2026-09-13 07:20:52 +08:00
  • 4331a07462 docs: docs/ 目录同步甲骨文部署事实(上一提交漏加) ericwyuan 2026-09-12 23:53:26 +08:00
  • 9d6ebbe422 ops: 生产从 NAS 整体迁移到甲骨文云主机 ericwyuan 2026-09-12 23:53:15 +08:00
  • 74f2721401 fix(deploy): S99garmin.sh 丢了可执行位,重启两天没人发现服务已经死了 ericwyuan 2026-09-08 07:27:22 +08:00
  • 12f8928d88 docs(CLAUDE): 沉淀 Garmin 限流的真相——出在登录端点,且窗口内每试一次延长一次 ericwyuan 2026-09-04 06:21:41 +08:00
  • 1c80b16325 fix(garmin): 重新绑定走的是同一个被封的登录接口,也得拦住 ericwyuan 2026-09-04 06:20:05 +08:00
  • fd5e3363fd fix(garmin): 登录端点的 429 在封锁期内再试会延长封锁,唯独这一处要停手 ericwyuan 2026-09-04 06:13:52 +08:00
  • 682936b0b6 fix(garmin): 刷新出来的令牌从来没写回库,于是每次连接都重换一次 ericwyuan 2026-09-03 23:24:48 +08:00
  • 57c236ba16 fix: 连接阶段真实 429 以 rate_limited 状态呈现,而非泛化 error ericwyuan 2026-09-03 07:18:14 +08:00
  • e0e7b3cf53 fix: 本地限流估算不再拦截同步——一律真实请求 Garmin,仅真实 429 记录冷却并退避 ericwyuan 2026-09-03 07:06:12 +08:00
  • 7e8e376a6c docs: sync_history 文档一致性——CLAUDE.md 沉淀 MariaDB trigger 保留字坑,ARCHITECTURE.md 表清单 20→21 张并补数据流 ericwyuan 2026-09-02 20:45:34 +08:00
  • 5e6fc01f76 feat(sync-history): 新增同步结果查询(每次自动/手动/立即同步的记录) ericwyuan 2026-09-02 20:38:48 +08:00
  • 26ff853f0b docs(CLAUDE): refill_backlog 1064 已修(617c832),移除已知问题并沉淀 MariaDB CAST TEXT 坑 ericwyuan 2026-09-02 20:20:08 +08:00
  • 617c8325a6 fix(analysis): refill_backlog 活动查询去掉 CAST(... AS TEXT) ericwyuan 2026-09-02 20:18:40 +08:00
  • 224144915c fix(sync): 限流拦截不再把'上次同步'刷成现在 + 设置页新增立即同步按钮 ericwyuan 2026-09-02 20:14:11 +08:00
  • 2d9a2be185 docs: 文档/配置/测试同步 NAS :8124 生产现状,清除 Node.js 与甲骨文残留 ericwyuan 2026-09-02 19:34:32 +08:00
  • 68363957ec fix(ui): Copilot 浮窗按钮被 F7 全局 width:100% 撑满,显式覆盖为 width:auto ericwyuan 2026-09-02 19:34:24 +08:00
  • bc91f328c9 docs: 记录 deploy.sh 修复前端构建复制 ericwyuan 2026-09-01 19:00:58 +08:00
  • 317cb4996d fix(deploy): 构建前端后复制到 backend/static/,避免部署旧版 ericwyuan 2026-09-01 19:00:42 +08:00
  • dd4105eb36 docs: 更新进度,记录每日/运动详情持续后台排队功能 ericwyuan 2026-09-01 18:15:59 +08:00
  • 7fd4106b0a feat(ai): 每日和运动详情在后台持续排队生成,不限量 ericwyuan 2026-09-01 18:15:26 +08:00
  • 05f55e695b feat(ai): 设置里加「AI 生成队列」,看得见后台在算什么 ericwyuan 2026-09-01 16:02:05 +08:00
  • a2d6a5c57f fix(ai): 队列会把共用的网关打到 502,加并发上限和间隔 ericwyuan 2026-09-01 15:46:42 +08:00
  • 2488956f36 fix(ai): 折叠态只显示一句话,那句话得说清是哪个指标 ericwyuan 2026-09-01 15:41:28 +08:00
  • 6dd070ec9b fix(ai): subject 里塞了行数,每轮询一次就新建一个任务 ericwyuan 2026-09-01 15:33:49 +08:00
  • 241ae0d6a3 feat(ai): 每个数据页面都有 AI 解读,靠一条带优先级的生产者/消费者队列 ericwyuan 2026-09-01 15:17:17 +08:00
  • 984a06a098 fix(deploy): deploy/ 自己没跟着上机,改它等于没改 ericwyuan 2026-09-01 14:34:59 +08:00
  • 14b6bbecb4 fix(deploy): 群晖没有 pgrep,那三处「守卫」一直是空转 ericwyuan 2026-09-01 14:34:27 +08:00
  • 570d1590eb fix(router): 深链接全被塞进「今日」,点底部标签页显示的是别人的内容 ericwyuan 2026-09-01 14:31:34 +08:00
  • f6687d2b5d fix(deploy): push.sh 报「部署成功」,但跑的还是旧代码 ericwyuan 2026-09-01 14:11:17 +08:00
  • c57c930949 feat(ai): AI 教练 —— 晨间简报、运动处方、趋势归因与 Copilot ericwyuan 2026-09-01 13:57:35 +08:00
  • a746327560 fix(ui): 奖励卡片被 Framework7 的 .badge 压成灰色小药丸 ericwyuan 2026-09-01 09:34:53 +08:00
  • 92ea33b800 feat(sync): 全部历史真的是全部,不再截断在两年 ericwyuan 2026-09-01 09:30:03 +08:00
  • 526ece7d14 refactor(sync): 手动同步与自动同步彻底分开 ericwyuan 2026-09-01 09:20:52 +08:00
  • 4d55fb4776 chore(deploy): 别把 macOS 的 xattr 塞进 tar,群晖读不懂只会刷警告 ericwyuan 2026-09-01 09:09:21 +08:00
  • 1c48435b9d chore(deploy): NAS 的 ssh 端口是 2222 ericwyuan 2026-09-01 09:05:35 +08:00
  • 41b7ae82e4 fix(sync): 「全部历史」真的拉全部历史,自动同步不再每次静默失败 ericwyuan 2026-09-01 08:11:24 +08:00
  • 15fba8c25c feat: NAS 部署 + auth-hub 认证 + 同步逻辑修复 ericwyuan 2026-09-01 07:39:09 +08:00
  • 9503fca370 feat(auth): 接入 auth-hub 统一登录,网页登录与 Garmin 同步彻底分离 ericwyuan 2026-08-31 23:12:17 +08:00
  • 7e51223eb9 fix(rate-limit): _is_rate_limited 识别 RetryError 的 429 形态,登录 429 真正触发自动退避 ericwyuan 2026-08-29 10:00:30 +08:00
  • 30ae431ed9 fix(rate-limit): 退避 24h 且守卫以 DB 为准,终结限流死循环 ericwyuan 2026-08-29 09:45:49 +08:00
  • ae126f90d4 fix(rate-limit): 退避延长至 6h 且登录路径同样遵守,打破 Garmin 限流死循环 ericwyuan 2026-08-28 17:18:37 +08:00
  • bec45414a7 feat(garmin): 增加「退出 Garmin 账号」功能,删除已保存令牌以便重新登录 ericwyuan 2026-08-28 15:13:32 +08:00
  • 11869c6a8d fix(sync): 限流退避持久化到 DB,调度器与手动同步均尊重退避期 ericwyuan 2026-08-28 14:54:10 +08:00
  • a4bedc263f fix(sync): 限流检测漏掉了它真实的样子 ericwyuan 2026-08-28 14:27:15 +08:00
  • 042c4d52be fix(sync): 被 Garmin 限流时说人话,并停止把限流越撞越深 ericwyuan 2026-08-28 14:20:43 +08:00
  • ac99c1342d docs: 迁移收尾——部署信息同步到 Oracle 新机 129.146.26.249 ericwyuan 2026-08-25 23:59:47 +08:00
  • e7c336b9df fix(db): 数据库晚一步启动就会让服务永久挂掉 ericwyuan 2026-08-25 14:23:07 +08:00
  • d2d6143ed6 fix(ui): 切换日期后数字不更新,卡片显示的是前一天的数据 ericwyuan 2026-08-24 09:33:22 +08:00
  • 564aaef6c1 fix(auth): 登录页不停刷新、无法输入 ericwyuan 2026-08-24 09:08:02 +08:00
  • 6ad87115ab fix: 返回键失效的根因 + 同步页重做 + 连接池会永久阻塞线程 ericwyuan 2026-08-24 08:41:48 +08:00
  • 67a7c4b87e fix(ui): 自动同步开关不可点、返回键热区过小、路由卡死 ericwyuan 2026-08-24 07:32:35 +08:00
  • 32588085a1 perf: 今日页首屏 394KB/2.0s → 51.5KB/0.82s ericwyuan 2026-08-24 04:34:32 +08:00
  • 283d530f82 fix(deploy): 启动脚本等端口真正释放,并确认服务可用后才报成功 ericwyuan 2026-08-24 04:23:05 +08:00
  • f1319a6171 feat: 补齐 Garmin 未同步的数据,并各自配上界面 ericwyuan 2026-08-24 04:16:33 +08:00
  • 34940cc387 feat(sync): 运动详情改为同步入库,详情页只读本地 ericwyuan 2026-08-24 04:03:49 +08:00
  • fa865ca8a6 fix: 实机验证发现的七个缺陷 ericwyuan 2026-08-24 01:16:44 +08:00
  • 8430ff335e feat(ui): 今日页日期切换 + 卡片可点 + 路由切换进度条 ericwyuan 2026-08-24 00:49:38 +08:00
  • 0c7fecc124 feat(ui): 设置页重做 + 同步页简化 + 评分依据页 ericwyuan 2026-08-24 00:44:07 +08:00
  • b0e0799a97 feat(ui): 卡片可点进详情 + 身体年龄 + 运动详情 + 指标选择弹窗 ericwyuan 2026-08-24 00:39:33 +08:00
  • 6b4c5375dc docs: 建立需求文档,记录全部需求与进度 ericwyuan 2026-08-24 00:28:48 +08:00
  • c70e7ced80 feat(api): 个人资料/单位/同步偏好 + 运动详情 + 身体年龄 ericwyuan 2026-08-24 00:26:26 +08:00
  • 12ef5ca06b feat(sync): 每小时后台自动同步 + 手动拉取最新接口 ericwyuan 2026-08-24 00:17:04 +08:00
  • 85c00759f8 fix(ui): 三处实机问题 + hero 改为三圆环 ericwyuan 2026-08-24 00:01:27 +08:00
  • fd9b610810 [阶段10.1] Tab 改为 今日/健康/趋势/运动/设置 ericwyuan 2026-08-23 23:52:18 +08:00
  • 7ab150537d [阶段10] 前端以 Framework7 重建,采用 iOS 原生形态 ericwyuan 2026-08-23 23:38:21 +08:00
  • 757afdc941 [阶段9] 界面打磨:hero 圆环、sparkline、骨架屏、动效 ericwyuan 2026-08-23 22:48:09 +08:00
  • bfda1cd017 [阶段8] 新增每日数据模块;趋势改为全指标并列 + 周期聚合 ericwyuan 2026-08-23 22:33:59 +08:00
  • 9e5e77755e [阶段7.2] 隐藏 AI 模块;剩余页面迁移到设计令牌 ericwyuan 2026-08-23 22:05:28 +08:00
  • a17d6dde9b 睡眠页默认窗口改为 14 天 ericwyuan 2026-08-23 21:36:28 +08:00
  • 6a5cfa7806 [阶段7.1] 同步改为后台任务 + 进度上报,支持回补历史 ericwyuan 2026-08-23 21:31:50 +08:00
  • ad88ec7e41 [阶段7] 前端重做:31 项指标全部露出,配色经色盲校验 ericwyuan 2026-08-23 21:17:08 +08:00
  • cbbff61082 [阶段6] 同步 Garmin 全量数据:31 项日指标 + 奖励 + 个人纪录 ericwyuan 2026-08-23 20:48:49 +08:00
  • bb774c332b [阶段5.2] 两步验证改到网页端完成,手机上即可绑定 Garmin ericwyuan 2026-08-23 20:11:45 +08:00
  • af0604bce4 fix(garmin): 两步验证账号同步报 EOFError,改用令牌登录 ericwyuan 2026-08-23 19:57:40 +08:00
  • 6de7562cd8 [阶段5.1] 开机自启 + 接入真实 garminconnect,修复同步的三处 API 误用 ericwyuan 2026-08-23 19:05:19 +08:00
  • 5f07dad019 [阶段5] 部署到 NAS + frp 公网映射,并加注册锁 ericwyuan 2026-08-23 18:49:05 +08:00
  • acc6a2474b [阶段4.4] AI 建议结果缓存 - 页面不再阻塞等待 160 秒 ericwyuan 2026-08-23 17:55:12 +08:00
  • 8882bf44a4 [阶段4.3] 接入自建 AI 网关,修复多模型层的四个真实缺陷 ericwyuan 2026-08-23 17:44:51 +08:00
  • 8616a13525 [阶段4.2] 前端对接 Flask API + 建议/分析/设置页面,移除废弃的 Node 后端 ericwyuan 2026-08-23 12:43:52 +08:00
  • c83340742c [阶段4.1] AI 健康建议 - 多模型可切换 + 大上下文 + 失败兜底 ericwyuan 2026-08-23 12:38:19 +08:00
  • 8e37e5a551 [阶段3.1] pytest 测试基建 + auth/health/analysis 单元测试 - 102 用例全绿 ericwyuan 2026-08-23 12:34:18 +08:00
  • a71c5438ce fix(auth): hashlib.scrypt 在 LibreSSL 构建下缺失导致注册返回 500 ericwyuan 2026-08-23 12:34:18 +08:00
  • 0177758e1f [阶段2.3-2.4] 实现前端数据同步和仪表板页面 ericwyuan 2026-08-23 12:27:43 +08:00
  • 637347082a [阶段2.1-2.2] 实现 Garmin 数据同步和健康数据查询路由 ericwyuan 2026-08-23 12:26:27 +08:00
  • 3b2d0697f0 [阶段1.1-1.7] 实现完整的认证系统 ericwyuan 2026-08-23 12:25:33 +08:00
  • 6b05d04773 数据层可插拔(SQLite/MariaDB) + 后端 services 骨架 ericwyuan 2026-08-23 11:58:07 +08:00
  • d73405decb Initial commit: Set up Garmin Health Lab project structure ericwyuan 2026-08-23 11:11:29 +08:00