Prompt v2.0
Tally 记账应用 – 当前状态与下一步开发 Prompt
一、项目概述
项目名称:Tally(原 Cent)
核心理念:标签驱动、数据自主(Git 仓库托管)的个人记账工具
已完成里程碑:
-
基础记账 API(增删改查)
-
按日分片存储的 CRDT 操作日志(
ActionLogService) -
元数据(标签)采用 CRDT + LWW 合并策略
-
Git 同步基本打通(HTTPS + 个人访问令牌,网络代理已解决,能成功获取 token 并推送)
-
Spring Boot 后端服务可独立运行,数据持久化到本地
actions/目录
二、技术栈
-
Java 21 + Spring Boot 3.5.14
-
JGit 7.x (Git 操作)
-
Jackson (JSON 处理)
-
存储:本地 Git 仓库(
repo_cache) + 内存状态(重放日志) -
前端:尚未开发(计划 Vue 3 + Vant)
三、已实现的关键组件
-
ActionLogService-
追加操作日志(
AddAction、UpdateAction、DeleteAction、MetaAction) -
启动时重放所有日志,构建内存状态
-
元数据使用 LWW(Last Write Wins)
-
交易日志按日存储:
actions/yyyy/MM/dd.log
-
-
GitSyncService-
初始化本地仓库(克隆或新建)
-
commitAndPush、pull方法(支持动态 token) -
已配置代理参数(JVM
-Dhttps.proxyHost/Port)
-
-
标签管理
-
TagService+TagController -
标签数据通过
MetaAction持久化到meta.log
-
-
交易管理
-
TransactionController提供 REST API -
交易对象使用
tagIds存储标签引用
-
四、未完成 / 待开发功能清单
-
前端(优先级最高)
-
五个核心页面:首页(账单流 + 预算卡片)、记账页、搜索页、统计页、设置页
-
需要适配移动端 + PC 响应式
-
-
预算模块
-
总预算 + 按标签的子预算
-
首页进度条(含理论时间进度 & 超支预警)
-
预算历史圆点视图
-
-
标签组
-
标签分组(资产、消费类别等)
-
组内规则:单选/多选、必选、默认标签
-
-
多币种支持
-
交易记录币种,筛选器可指定结算币种
-
标签偏好币种自动切换
-
-
筛选器(保存常用搜索)
-
支持排除标签(“不计收支”)
-
跨设备同步(作为元数据)
-
-
统计图表
- 年度/月度趋势图,标签占比饼图
-
OAuth 集成(可选)
- 已有换取 token 的接口,但未完全集成到前端流程
-
性能优化
-
快照机制(定期压缩日志,加速启动)
-
缓存最近几个月的数据
-
五、下一步行动建议(欢迎 AI 协助)
-
优先开发前端(Vue 3 + Vant),对接现有后端 API。
-
实现预算模块,复用标签和 CRDT 元数据机制。
-
加入标签组功能,完善标签选择体验。
-
后续迭代:多币种、统计图表、快照等。
六、已知问题 / 注意事项
-
当前 Git 同步依赖手工设置 token(可通过临时接口或配置文件)。
-
代理配置需在启动 JVM 时显式声明;生产环境建议使用 SSH 方式。
-
内存状态在重启后完全从日志重放,尚无快照优化,数据量增大后可引入。