docs: 文档/配置/测试同步 NAS :8124 生产现状,清除 Node.js 与甲骨文残留
背景:文档停在 Node.js 时代或甲骨文 8123 部署,与生产(NAS :8124 + Flask + auth-hub + ai-gateway)严重脱节,曾导致凭旧记忆误判'无线上环境'。 - CLAUDE.md 重写:技术栈/结构/命令/部署事实/关键坑(F7 button、UTC 日期、 429 退避以 DB 为准、迁移幂等、AI 生成耗时) - docs/ARCHITECTURE.md 重写为 Flask 蓝图+services+可插拔数据层 + NAS 部署 - docs/DEVELOPMENT.md 重写为 Flask/CRA 开发指南 + push.sh 部署流程 - docs/REQUIREMENTS.md:部署条目改 NAS 8124;补 auth-hub/AI 教练/新修复 - docs/AUTH_HUB_INTEGRATION.md 新增(补 .env.example 悬空引用) - README.md:技术栈/DB/auth-hub/API 清单/部署节修正 - backend/config.py 与 .env.example:AUTH_HUB_REDIRECT_URI 默认 8123→8124, MariaDB 注释 Oracle→NAS - tests:GatewayCourtesy 并发测试对齐 MAX_CONCURRENT(AI_JOB_CONCURRENCY=2); conftest 禁用 create_app 后台队列线程,修整库测试 flaky(585 passed)
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
|
||||
状态:`✅ 已完成` · `🚧 进行中` · `📋 待做` · `⏸ 已搁置`
|
||||
|
||||
最后更新:2026-08-25
|
||||
最后更新:2026-09-02
|
||||
|
||||
---
|
||||
|
||||
@@ -13,10 +13,12 @@
|
||||
| # | 需求 | 理解 | 状态 |
|
||||
|---|---|---|---|
|
||||
| 1.1 | 新建项目分析佳明海外账号健康数据 | Gitea 自建仓库,Web 应用 | ✅ |
|
||||
| 1.2 | 部署到 Oracle 云服务器 (129.146.26.249),用 MariaDB | Flask + gunicorn + MariaDB(127.0.0.1:3306),SQLite 供开发 | ✅ |
|
||||
| 1.3 | 公网可访问 | gunicorn 直绑 Oracle:8123(frp 隧道已移除) | ✅ |
|
||||
| 1.2 | 部署到 NAS(192.168.50.64),用 MariaDB | Flask + gunicorn(root, :8124) + NAS MariaDB 10.11(库 `garmin_health_lab`),SQLite 供开发 | ✅ |
|
||||
| 1.3 | 公网可访问 | NAS frpc 隧道 → 甲骨文公网 `129.146.26.249:8124` | ✅ |
|
||||
| 1.4 | 单元测试 / 界面自测 / 性能测试 | 446 项 pytest;界面用浏览器实测;接口逐个计时 | ✅ |
|
||||
| 1.5 | 一任务一 commit,完成即推送 | 已成为固定流程 | ✅ |
|
||||
| 1.6 | auth-hub 统一登录(SSO) | OAuth2/OIDC,回调注册 LAN + 公网两地址;本地邮箱密码登录已移除 | ✅ |
|
||||
| 1.7 | 一键部署脚本 | `deploy/push.sh`:tar-over-ssh 同步 + 清空重推前端 + sudo 重启 + pid/health 双校验 | ✅ |
|
||||
|
||||
## 二、数据同步
|
||||
|
||||
@@ -97,6 +99,10 @@
|
||||
| 6.1 | 多个大上下文文本模型,可切换 | gateway / gemini-flash / llama-70b / nemotron-49b / mistral-large | ✅ |
|
||||
| 6.2 | 暂时隐藏 AI 模块 | `FEATURES.ai = false` | ✅ |
|
||||
| 6.3 | AI 用来解释,不用来定阈值 | 阈值全部来自公开参考值,AI 只负责解读 | ✅ 已确认为设计原则 |
|
||||
| 6.4 | AI 教练:晨报 / 趋势归因 / Copilot(2026-09-01) | `services/insights` 特征工程 → `coach.py` 三套提示词 + 规则兜底 → ai-gateway;晨报后台生成 + 轮询,Copilot SSE | ✅ |
|
||||
| 6.5 | AI 生成走后台队列,界面不阻塞 | `services/jobs.py` 生产者/消费者(DB 互斥);每日/运动详情持续排队不限量(`refill_backlog`) | ✅ |
|
||||
| 6.6 | 队列状态可见、可重试 | 设置 → AI 生成队列页 + `/analysis/insight/queue/retry` | ✅ |
|
||||
| 6.7 | AI 模型不可用时降级不报错 | 规则引擎兜底,`meta.source` 标注谁作答;流式失败自动退回非流式 | ✅ |
|
||||
|
||||
---
|
||||
|
||||
@@ -111,6 +117,9 @@
|
||||
| 心率区间百分比偏高(区间1 显示 90%,手表是 52%) | 分母用了「落在区间内的总时长」,应为整次运动时长 | 改用运动时长,低于区间1 的时间不再被挤掉 |
|
||||
| 打开运动详情超时 60s | 每个请求都重新认证 Garmin,`_connect` 单次约 11 秒 | 按进程缓存已认证会话(15 分钟 TTL),冷启 16s → 热 7s → 命中缓存 0.8s |
|
||||
| 主要收益显示 UNKNOWN | Garmin 用 UNKNOWN 表示「没有结论」 | 映射为中文,UNKNOWN 直接不显示该区块 |
|
||||
| Copilot 浮窗布局错乱(✕ 错位、输入框缩成 21px) | Framework7 全局 `button { width: 100% }` 压过自定义类 | `.copilot-*` 按钮显式 `width: auto`(2026-09-02 已修并部署 NAS :8124) |
|
||||
| Garmin 429 限流反复触发(同步死循环) | 退避太短 + 守卫被多 worker 内存卡死 + RetryError 里的 429 未识别 | 退避 24h + `rate_limited_until` 以 DB 为准 + 沿异常 `__cause__` 链识别 429 |
|
||||
| 文档与实现脱节导致误判部署位置 | 文档停在 Node.js / 甲骨文 8123 时代 | docs/* 与 CLAUDE.md/README 已按 NAS :8124 + Flask 现状重写(2026-09-02) |
|
||||
|
||||
## 测试与性能(2026-08-24)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user