概述
在构建基于 Vibe Coding 工作流的全栈应用时,一个常见挑战是:如何将模糊的产品愿景转化为 LLM 能够精确执行的开发指令。
继上一阶段完成登录、注册及退出登录的核心认证模块后,本阶段的核心任务不再是编写具体代码,而是进行一项至关重要的前期规划——梳理完整的后端核心业务功能清单。
这份清单不仅充当产品需求文档,更是与Claude Code等 AI 编程助手高效协作的“结构化提示词工程”。本文档将详细拆解某记账应用的六大核心功能模块,明确其数据交互逻辑、业务规则及边界场景,旨在帮助开发者构建精准的上下文,从而指导 AI 生成高质量、可直接集成的后端代码。
概述
本项目基于 Vibe Coding 实践,旨在构建一个全栈记账应用。后端服务需提供 RESTful API 或 GraphQL 接口,前端则通过接口调用实现数据持久化。所有功能模块必须与关系型数据库(如 PostgreSQL 或 MySQL)深度集成,确保数据的一致性、完整性与查询性能。
核心功能大纲
以下是本应用的后端核心业务功能清单,涵盖了从数据维护到数据可视化的完整链路。
- 用户与系统设置模块
- 账户管理:账户信息的持久化(增删改查)
- 分类管理:收支分类的持久化(增删改查)
- 用户头像:头像文件上传与 URL 持久化
- 交易记录模块
- 记账操作:新增收支记录
- 关联数据校验:分类与账户的有效性验证
- 明细列表模块
- 条件筛选:按类型(支出/收入/全部)与月份查询
- 分页加载:基于游标或偏移量的无限滚动/传统分页
- 首页看板模块
- 月度汇总:实时计算收入、支出、结余
- 分类排行:支出金额最高的前 N 个分类
- 最近流水:按时间倒序展示最近记账明细
- 统计报表模块
- 年份筛选:切换统计维度(年份)
- 年度汇总:按年统计收入支出结余
- 分类饼图:支出分类占比统计
- 趋势折线图:月度收支走势
- 数据导出:生成 Excel 报表(
.xlsx)
- 辅助逻辑
- 输入校验:金额字段的严格数字格式校验
- 错误处理:数据库约束冲突与业务异常捕获
功能模块详解与技术实现策略
设置页面:主数据维护
设置页面是所有基础数据(Master Data)的入口,其核心在于实现前端输入与数据库存储的同步。在 Vibe Coding 开发中,需要明确描述实体关系。
账户管理
功能描述:实现对用户自有资金账户(如支付宝、微信、银行卡、现金)的新增、编辑与删除。
技术实现:
- API 设计:设计
/api/accounts的 RESTful 路由。 - 数据交互:操作需持久化至
accounts数据表,包含id,user_id,name,balance,created_at等字段。 - 级联处理:删除账户时需校验是否存在关联的交易记录,若有则应返回错误提示或实现软删除。
分类管理
功能描述:管理支出与收入的标签(如餐饮、交通、工资)。
技术实现:
- API 设计:设计
/api/categories路由。 - 数据模型:字段需包含
id,user_id,name,type(枚举:EXPENSE/INCOME),icon等。 - 关联约束:删除分类时需校验是否有历史交易使用该分类。
用户头像
功能描述:支持用户上传新图片作为头像。
技术实现:
- 文件上传:后端需集成文件上传中间件(如
Multer或FastAPI的UploadFile)。 - 存储策略:将图片存储至云存储(如 AWS S3,阿里云 OSS)或本地静态目录,并将访问 URL 更新至
users表的avatar字段。
记账操作:交易核心
这是应用中使用频率最高的功能,需保证数据的原子性。
功能描述:用户记录一笔新的收入或支出。
技术实现:
- 关联校验:提交数据时,需校验
category_id和account_id是否存在且属于当前用户。 - 金额处理:金额字段使用
Decimal类型避免浮点数精度丢失。 - 数据写入:将记录写入
transactions表,字段包含id,user_id,amount,type,category_id,account_id,note,transaction_date。 - 计算逻辑:账户余额更新通常通过数据库触发器或在事务中手动更新
accounts.balance字段。
明细列表:数据查询与分页
功能描述:展示所有历史交易记录,是用户查看历史的核心窗口。
技术实现:
- 多条件查询:SQL 需支持按
type和date(月份)筛选。使用索引优化查询性能。 - 分组排序:数据需按月份分组,内部按
transaction_date DESC排序。 - 分页策略:
- Web 端(鼠标滚动):推荐使用
LIMIT ? OFFSET ?或基于cursor(游标)的分页方式,如WHERE id < ? ORDER BY id DESC LIMIT 20。 - 移动端(上滑加载):通常使用
LIMIT ? OFFSET ?配合加载更多按钮或无限滚动监听。 - 数据量级:单页固定返回 20 条,以提高响应速度。
- Web 端(鼠标滚动):推荐使用
首页看板:实时数据聚合
功能描述:提供月度财务概览,作为用户启动应用后的仪表盘。
技术实现(涉及复杂聚合查询):
- 月度汇总:
- 使用
SUM(CASE WHEN type = 'INCOME' THEN amount ELSE 0 END)计算收入。 - 使用
SUM(CASE WHEN type = 'EXPENSE' THEN amount ELSE 0 END)计算支出。 - 结余 = 收入 - 支出。
- 需添加
WHERE user_id = ? AND YEAR(transaction_date) = ? AND MONTH(transaction_date) = ?条件。
- 使用
- 分类支出 TOP 3:
- 查询本月的支出记录,按
category_id分组并计算SUM(amount)。 - 排序后取前 3 条,并关联
categories表获取名称。
- 查询本月的支出记录,按
- 最近记账列表:
- 查询本月记录,按
transaction_date DESC排序,取前 3-5 条。 - 此处建议使用复合索引
(user_id, transaction_date)以提升性能。
- 查询本月记录,按
统计报表:数据分析与导出
统计模块的数据处理量较大,建议通过异步任务或优化的单次查询完成。
功能描述:提供年度收支趋势图、分类占比饼图及数据导出能力。
技术实现:
- 年份选择器:API 接收
year参数,返回该年 1-12 月的汇总数据。 - 年度汇总:逻辑与首页月度汇总类似,仅将
GROUP BY维度改为YEAR(transaction_date)。 - 支出分类饼图数据:
- 查询指定年份的支出记录,按
category_id分组聚合金额。 - 返回前端格式:
[{ name: '餐饮', value: 1000 }, ...]。
- 查询指定年份的支出记录,按
- 收支趋势折线图:
- 构建一个包含 1-12 月的查询结果集(若无数据则返回 0)。
- 返回支出和收入两个数组,或包含
month维度的对象数组。
- Excel 导出:
- 使用库如
ExcelJS(Node.js) 或openpyxl(Python) 生成.xlsx文件。 - 设置响应头
Content-Disposition: attachment; filename="report.xlsx"。 - 注意:该功能通常仅桌面端浏览器支持较佳,移动端可通过邮件或分享链接替代。
- 使用库如
开发协同策略
在Claude Code或类似工具中,为获得最佳代码生成效果,建议采用以下结构化描述语法:
- 明确上下文:指明技术栈(如
Spring Boot 3 + MyBatis-Plus或Python FastAPI + SQLAlchemy)。 - 定义数据模型:在 Prompt 中附带
CREATE TABLE语句。 - 指定入参与出参:使用 JSON Schema 或 TypeScript Interface 描述 API 契约。
技术栈概览
基于当前主流微服务及全栈开发趋势,推荐以下技术组合:
| 层级 | 技术选项 | 备注 |
|---|---|---|
| 后端框架 | Python FastAPI/Node.js Express/Spring Boot | 选用熟悉的技术栈以提升开发效率 |
| 数据库 | PostgreSQL/MySQL | 建议使用PostgreSQL以支持更复杂的聚合查询 |
| ORM | SQLAlchemy/Prisma/MyBatis-Plus | 简化数据库交互,自动处理 SQL 注入防护 |
| 认证鉴权 | JWT(JSON Web Token) | 目前登录方案的主流选择,实现无状态认证 |
| 文件存储 | MinIO/AWS S3/ 本地存储 | 生产环境建议使用对象存储 |
| 导出库 | ExcelJS/openpyxl/Apache POI | 根据语言生态选择 |
总结
本文通过对记账应用六大核心功能模块的梳理,展示了在 Vibe Coding 实践中,精确的需求结构化比编写代码本身更具决定性作用。通过明确数据模型、业务规则及边界条件,开发者能够构建高质量的上下文,引导 AI 生成具备生产环境标准的后端代码。其关键在于:
- 主数据维护:确保账户、分类等基础数据的 CRUD 与数据库强一致。
- 核心交易:强调数据完整性校验和事务管理。
- 聚合查询:利用数据库特性实现实时统计,通过索引优化性能。
- 工具扩展:导出、图表数据等功能的实现依赖于对三方库的准确调用描述。