项目实战Tally项目PromptPrompt 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)

三、已实现的关键组件

  1. ActionLogService

    • 追加操作日志(AddActionUpdateActionDeleteActionMetaAction

    • 启动时重放所有日志,构建内存状态

    • 元数据使用 LWW(Last Write Wins)

    • 交易日志按日存储:actions/yyyy/MM/dd.log

  2. GitSyncService

    • 初始化本地仓库(克隆或新建)

    • commitAndPushpull 方法(支持动态 token)

    • 已配置代理参数(JVM -Dhttps.proxyHost/Port

  3. 标签管理

    • TagService + TagController

    • 标签数据通过 MetaAction 持久化到 meta.log

  4. 交易管理

    • TransactionController 提供 REST API

    • 交易对象使用 tagIds 存储标签引用

四、未完成 / 待开发功能清单

  1. 前端(优先级最高)

    • 五个核心页面:首页(账单流 + 预算卡片)、记账页、搜索页、统计页、设置页

    • 需要适配移动端 + PC 响应式

  2. 预算模块

    • 总预算 + 按标签的子预算

    • 首页进度条(含理论时间进度 & 超支预警)

    • 预算历史圆点视图

  3. 标签组

    • 标签分组(资产、消费类别等)

    • 组内规则:单选/多选、必选、默认标签

  4. 多币种支持

    • 交易记录币种,筛选器可指定结算币种

    • 标签偏好币种自动切换

  5. 筛选器(保存常用搜索)

    • 支持排除标签(“不计收支”)

    • 跨设备同步(作为元数据)

  6. 统计图表

    • 年度/月度趋势图,标签占比饼图
  7. OAuth 集成(可选)

    • 已有换取 token 的接口,但未完全集成到前端流程
  8. 性能优化

    • 快照机制(定期压缩日志,加速启动)

    • 缓存最近几个月的数据

五、下一步行动建议(欢迎 AI 协助)

  1. 优先开发前端(Vue 3 + Vant),对接现有后端 API。

  2. 实现预算模块,复用标签和 CRDT 元数据机制。

  3. 加入标签组功能,完善标签选择体验。

  4. 后续迭代:多币种、统计图表、快照等。

六、已知问题 / 注意事项

  • 当前 Git 同步依赖手工设置 token(可通过临时接口或配置文件)。

  • 代理配置需在启动 JVM 时显式声明;生产环境建议使用 SSH 方式。

  • 内存状态在重启后完全从日志重放,尚无快照优化,数据量增大后可引入。

Built with LogoFlowershow