项目实战Tally项目PromptPrompt v1.0

Cent 记账应用 – 开发 Prompt v1.0

一、项目定位

  • 名称:Cent(概念性记账工具)

  • 核心理念:用标签系统完全替代传统资产管理,提供高度灵活的记账体验;数据由用户通过 GitHub 仓库自托管,支持多端(手机 + 电脑)使用。

  • 目标用户:喜欢自定义分类、关注预算控制、注重数据隐私和长期可维护性的个人用户。

二、核心功能需求

1. 记账基础

  • 记录支出收入,字段包括:金额、类型、日期、备注、标签(可多选)、币种。

  • 支持按标签自动切换偏好币种(如选中“海外银行卡C”时,记账金额币种自动变为 USD)。

  • 支持转账场景:通过记录两笔带“不计收支”标签的交易实现,不干扰净收支统计。

2. 标签系统(替代资产管理)

  • 平铺标签 + 标签组

    • 标签组可定义:是否单选、是否必选、默认标签、显示顺序。

    • 例如:“资产”标签组(单选、必选,默认“银行卡A”)、“消费类别”标签组(多选、非必选)。

  • 通过筛选器实现资产管理

    • 用户可创建筛选器(如“银行卡A”),条件为 tags 包含 银行卡A,即可统计该资产的收支与结余。

    • 筛选器支持设置币种、排除标签(如“不计收支”)。

  • 多币种支持:每笔交易记录原始币种和金额;统计时可选择按历史汇率换算或直接显示原币种。

3. 预算模块

  • 总预算 + 子预算(按分类标签):

    • 可设置预算周期(月/年/自定义)、总金额、子预算(如餐饮1500、娱乐800)。

    • 支持排除标签(“逃生舱”),如“意外支出”不参与预算计算。

  • 首页进度条

    • 灰色背景;黄色 = 今日支出占比;绿色/红色 = 截止今日累计支出占比(超支变红);黑色竖线 = 理论时间进度对应的支出位置。

    • 理论进度 = (已过天数 / 周期总天数) × 总预算。

  • 历史达成视图

    • 每个预算周期显示两个圆点:总预算状态(绿=未超,红=超)、子预算状态(绿=所有子项未超,红=任一子项超)。

4. 页面结构(五个核心页面)

页面功能描述
首页(账单流)顶部今日支出快捷板块;预算卡片(进度条+预警);按时间倒序的账单列表。
记账页大号加号按钮进入;记录支出/收入;标签分组选择器;金额、日期、备注、币种。
搜索页多条件筛选:标签、时间范围、金额区间、类型;支持保存为自定义筛选器。
统计页年趋势图(月柱状)、月详情图(日折线+预算线)、标签占比饼图;预算历史圆点列表。
设置页GitHub 配置、标签/标签组管理、预算管理、筛选器管理、导入/导出、多币种偏好、主题等。

5. 跨设备与数据同步

  • 后端统一处理 Git 操作(JGit),前端通过 REST API 调用。

  • 数据存储在 GitHub 仓库,结构如下:

    /data/transactions/2026-01.json   # 按月分片
    /metadata/
      tags.json          # 标签定义
      tagGroups.json     # 标签组
      budgets.json       # 预算定义
      filters.json       # 保存的筛选器
    /config/
      user-preferences.json
  • 每次数据变更(增/删/改)自动 commit + push,冲突时采用 pull + 按 updatedAt 合并策略。

  • 手机可通过局域网访问电脑上运行的后端,或部署至公网(需加认证)。

三、技术选型

  • 后端:Java + Spring Boot + JGit + Jackson (JSON)

  • 数据存储:本地 Git 仓库缓存 + GitHub 远程

  • 前端:响应式 Web UI(Vue 3 + Vant 或纯 HTML/CSS/JS),适配手机与电脑

  • 统计图表:ECharts 或 Chart.js

  • 部署:电脑本地运行(推荐初期)或免费云服务(Railway/Vercel + 后端独立)

四、关键业务逻辑要点

1. 标签组规则校验(后端)

  • 记账时校验:若标签组 required=true,则交易中必须包含该组的至少一个标签;若 singleSelect=true,则交易中不能包含该组的两个及以上标签。

2. 预算进度计算

  • 实际支出 = 周期内所有支出交易金额之和(排除 excludedTags 中的标签)。

  • 理论支出 = 总预算 × (已过天数 / 总天数)。

  • 今日支出单独提取,用于进度条黄色部分。

3. 统计优化

  • 对年度/月度聚合结果可生成摘要文件(如 summary/year-2026.json),记账时增量更新,避免每次全量扫描。

4. 标签名称变更的迁移

  • 用户修改标签名时,需遍历所有交易文件,将旧名替换为新名,并提交一次变更。

五、开发优先级建议(迭代顺序)

  1. 基础记账 + Git 同步:增删改查交易,按月 JSON 存储,支持标签(无标签组)。

  2. 标签组与标签管理:实现标签组规则,记账时按分组选择。

  3. 统计图表与搜索:年/月/日统计,多条件搜索。

  4. 预算模块:总预算 + 子预算,首页进度条,历史圆点。

  5. 设置页 & 高级功能:GitHub 配置、导入导出、多币种、筛选器保存。

  6. 多设备测试 & 体验优化:缓存、冲突处理、PWA 支持。

六、注意事项

  • 安全性:GitHub Token 不能硬编码,使用环境变量。

  • 移动端适配:所有页面需支持触摸操作,输入框调出合适的虚拟键盘。

  • 记账效率:提供快捷选项(如长按“+”复制上一笔,常用标签置顶)。

  • 预算“逃生舱”:需确保排除标签功能在统计和预算中一致生效。

  • 离线支持:后端本地缓存仓库后,即使无网络也可查看近期数据,记账操作暂存队列,待网络恢复后 push。

Built with LogoFlowershow