按摩 / 厨具 / 游泳散落多处
- 角色
- 产品设计与设计工程(服务架构 / 数据迁移)
- 时间
- 2026 · 24h first release, ongoing
- 平台
- Mobile Web / Desktop Web / PWA
一条轨道处理每天的记录;另一条轨道确保这些数据仍然属于自己。
01 / Context
不是再做一个记账界面
真正的问题是把多年私人数据从封闭工具迁出,同时保留手机快速录入、桌面分析和长期可恢复性。

早期 demo 已有视觉方向,但数据、同步和历史能力仍是假的。

早期移动图表验证了黑白黄语言,也暴露周期拥挤和状态反馈问题。
02 / Framing
先统一分类,再压缩录入决策
- 大类只表达消费领域,小类只表达具体事项。
- 同一事项只有一个归属,降低记账犹豫和分析噪音。
一个事项,一个稳定归属
分类从场景、物品、行为混用,重构为 12 个消费领域。
03 / Decision
一套 PWA,两种使用密度
- 手机负责快速记录、搜索和刷新。
- 桌面负责周期判断、类别下钻和整理。
- 不做原生 App,也不引入完整离线写冲突。

桌面端把周期判断、趋势和类别下钻放在同一工作台。

记一笔是全局动作,金额、类别、事项和日期在一个底部流程中完成。

移动端保留同一分析逻辑,但只显示当下决策所需的周期和指标。

搜索跨备注、具体事项和大类,以稳定游标渐进读取全部历史。
D1 保持事实一致,IndexedDB 让历史内容本机立即可见。
04 / System
本机立即可见,云端保持事实
结构化私人数据不进入 Service Worker HTTP cache;IndexedDB 负责本地读取,Worker 与 D1 负责认证和事实一致性。
先显示本机历史,后台静默校验;退出即清除私人缓存。
先读本机,后台校验;退出登录时清除私人缓存。
幂等写入
主库读取
周期查询
鉴权生成
备份校验
USER / FRONTSTAGE / BACKSTAGE
录入、同步、分析、导出和恢复被当作一条服务链,而不是孤立页面。
05 / Iteration
真实使用暴露了等待感
移动端慢并不只是接口延迟。固定周期、重复网络读取和过大的 loading 都会放大失控感,因此逐步改为全历史游标、本地优先和原位反馈。
大型 spinner
原位进度与低对比骨架
大型 spinner 被替换为原位进度与低对比骨架。
06 / Delivery
完成意味着数据能回来
- 真实登录、CRUD、搜索、导出和类别管理。
- migration、备份、恢复和发布 smoke。
- 私人产品,不开放注册,不伪造商业验证。
测试、迁移、导出、备份和恢复共同定义“完成”。