编年史 · 第一篇 · 速览仪表板(AI生成)
关键数字#
| 指标 |
数值 |
备注 |
| 总耗时 |
28 天 |
2026-06-19 ~ 2026-07-17 |
| 产品版本迭代 |
2 代 |
v1 网页端 → v2 Flutter 跨平台 |
| Git commits |
1,023 |
v1: 130 + v2: 893 |
| 平台覆盖 |
4 端 |
Android / iOS / Windows / macOS |
| 客户端数量 |
2 个 |
学生端 Flutter App + 教师端 Flutter App |
| 共享代码 |
1 个 |
packages/shared 消除 17 对重复组件 |
| 服务端 Django App |
6 个 |
accounts / courses / interactions / qbank / system / math_platform |
Hermes Agent 使用量#
| 指标 |
口径:state.db(增量) |
口径:DeepSeek 后台(累积计费) |
| 会话数 |
600 |
— |
| 消息数 |
~115,000 |
— |
| 总 Tokens |
~104M |
14,081,786,297(14.08B) |
| 其中 Input |
~76M |
— |
| 其中 Output |
~27.5M |
— |
| Reasoning |
~5.9M |
— |
| API 请求数 |
50,845 |
80,968 |
| Tool Calls |
62,338 |
— |
| 总费用 |
— |
¥554.80 |
| 使用模型 |
deepseek-v4-flash(599/600 会话) |
— |
为何两个口径差 136 倍?
state.db 只记每次 API 响应的新增 tokens;DeepSeek 按每次请求的完整上下文窗口计费(含之前所有轮次累积的历史)。14.08B / 80,968 ≈ 174K tokens/请求,即平均每次都携带了约 174K 的上下文。
产品架构#
┌────────────────────────────────────────┐
│ 学生端 Flutter App │
│ (Android / iOS / Windows / macOS) │
│ SQLite (Drift) · Riverpod · GoRouter │
└──────────────┬─────────────────────────┘
│ HTTP API (JSON)
▼
┌────────────────────────────────────────┐
│ 教师端 Flutter App │
│ (Android / iOS / Windows / macOS) │
│ 复用 student 数据层 + 共享包 │
└──────────────┬─────────────────────────┘
│ HTTP API (JSON)
▼
┌────────────────────────────────────────┐
│ Django API 服务端 │
│ 6 Apps · JWT Auth · SQLite · Sentry │
│ nginx + gunicorn · Cloudflare Tunnel │
└──────────────┬─────────────────────────┘
│
▼
┌────────────────────────────────────────┐
│ 着陆页 / 教师 Web 端 │
│ 纯静态 HTML+CSS+JS │
└────────────────────────────────────────┘
数据流#
登录 → 全量拉取 user.db.gz(gzip 压缩 SQLite)
运行 → 本地 SQLite(优先)→ 写入 sync_queue → 异步推送
更新 → 版本号检查 → .db 整库替换(讲义/题库/assets 分别管理)
v1 vs v2 对比#
| 维度 |
v1 — math_platform |
v2 — zhangyuzhixue_app_v2 |
| 时间段 |
6/19 ~ 7/2(14天) |
7/3 ~ 7/17(15天) |
| 客户端 |
Django 模板网页 |
Flutter 原生 App × 2 |
| 技术栈 |
Django + REST + HTML/JS |
Flutter + Drift + Riverpod + Django API |
| 数据架构 |
服务端渲染,在线依赖 |
离线优先(SQLite + 同步引擎) |
| Git 提交 |
130 |
893 |
| 源文件 |
~137 .py + ~76 .html |
276 .dart + 137 .py + 76 .html |
| 测试 |
少量 pytest |
86 Flutter + 15 Django 测试文件 |
| 质量保障 |
无系统化审计 |
5 维度审计 + fix-batch-workflow |
| AI 会话 |
~30K 消息 / 17M tokens |
~85K 消息 / 59M tokens |
| 版本号 |
— |
v1.0.0-alpha.2+1 |
时间轴#
v1 设计/开发期 过渡 v2 设计期 v2 编码冲刺
├───────────────────────┤├─────┤├──────────┤├────────────────────────┤
06/19 07/02 07/03 07/09 07/10 07/17
↑ ↑ ↑
Flutter 可行性论证 设计定稿 Phase 0 开始编码
| 区间 |
核心事件 |
| 6/19 ~ 6/27 |
v1 题库建设、PDF 生成、解题逻辑修复、内容校对 |
| 6/28 ~ 7/1 |
v1 收尾 · Flutter 可行性论证 · v2 设计启动 |
| 7/2 |
初始项目骨架创建 · 设计文档全面编写 |
| 7/3 ~ 7/9 |
v2 设计阶段:HTML 原型 / 架构/API/数据库设计(~200 commits) |
| 7/10 |
Phase 0-1:脚手架 + CI + 服务端全量 API |
| 7/11 |
🔥 峰值日:Phase 2-3(数据层+UI全量)+ Phase T(教师端)· 60 会话 |
| 7/12 |
走查工具构建(winnav)+ 首轮 Visual E2E Audit |
| 7/13 |
走查密集期 + Audit 系统完善 + 首次完整 UAT |
| 7/14 |
修复密集期:积分/同步/筛选/推荐/解题/等级/成就 |
| 7/15 |
冲刺修复 + 教师端 App + 性能优化 + 共享包抽取 |
| 7/16 |
发布准备:版本号/图标/着陆页/CI/Android/iOS 打包 |
| 7/17 |
收尾:最后批次修复 |
产物清单#
| 类型 |
数量 |
路径 |
| 设计文档 |
43 .md |
docs/(8 大分类 + _archive) |
| HTML 原型 |
76 页 |
docs/04-UI/html/ |
| Hermes Skill |
30+ |
项目专属 3 + 通用 30+ |
| 着陆页 |
1 套 |
landing/ |
| 安装包签名 |
1 套 |
.iss(Inno Setup) |
| 构建脚本 |
6 个 |
scripts/(版本号/图标/数据库构建) |
| 数据库备份 |
多份 |
docs/_archive/db_backup_* |
| 字体 |
14 字重 |
Noto Serif CJK SC + Noto Serif SC |
关键决策回顾#
| 决策 |
路径 A(被否) |
路径 B(执行) |
代价 |
| PDF 方案 |
Flutter 端渲染 |
服务端 HTML → 浏览器打印 |
3 次迭代,数天开销 |
| 教师端架构 |
纯 Web 端 |
Flutter 独立 App + Web 辅助 |
从复制改到共享包,多次重构 |
| 代码复用 |
复制后改 |
抽取 shared 包 |
7/15 单次 commit 消除 17 对重复 |
| 数据同步 |
每次实时拉取 |
登录全量拉取 + 增量 sync queue |
— |
| 测试策略 |
集中在逻辑层 |
分层测试(算法→DAO→Repository→Widget→E2E) |
— |
相关链接#
- v1 源码库:
D:\Hermes\math_platform\
- v1 脚本工坊:
D:\Hermes\platform_script\
- v2 源码库:
D:\Hermes\zhangyuzhixue_app_v2\
- 备份:
D:\Hermes\backups\
- 字体:
D:\Hermes\字体\
- 在线访问: zhangyuzhixue.top