rosercode a8ef91ed3d feat: 扩展 AI 记账能力并优化收支记录交互
- AI 能力:新增分类 Emoji 推荐、标签颜色推荐、自然语言生成分类/标签、单条记录分类推荐

- AI 批量建议:按类型+支付方式+备注去重聚合后分批调用,支持分类/标签/两者范围并记忆偏好,结果可勾选应用

- 分类/标签管理:新增 EmojiPicker 与预设色板,支持 AI 一键推荐并在列表可视化

- 收支记录:新增序号列,标签筛选支持无标签,编辑记录时允许不设置分类

- 修复:账单导入未选择默认标签时生成空 IN 列表导致的 SQL 语法错误

- AI 未启用时隐藏所有 AI 入口与弹窗
2026-09-18 09:57:53 +08:00
2026-08-30 14:36:22 +08:00
2026-08-30 14:36:22 +08:00

收支管理系统

个人收支管理系统,支持收入/支出记录管理、分类管理、月度统计与图表展示。

技术栈

层级 技术
后端 Spring Boot 3.3.6 + Java 21 + MyBatis-Plus + MySQL
前端 Vue 3 + TypeScript + Vite + Naive UI + ECharts
构建 Gradle 8.13 (后端) / npm (前端)
认证 JWT
API 文档 Knife4j (OpenAPI 3)
JDK 版本 21.0.12.1 (Temurin LTS)
Node.js 版本 v24.0.0

前置条件

  • JDK 21.0.12.1 Temurin LTS,安装在 D:\venv\jdk-21
  • Node.js v24.0.0

数据库初始化

首次运行前需建表,执行 src/main/resources/sql/init.sql,或运行 Python 脚本:

pip install pymysql bcrypt
python init_db.py
python generate_test_data.py

启动后端

cd my-app
set JAVA_HOME=D:\venv\jdk-21
gradlew.bat bootRun

启动前端

cd my-app/frontend
npm run dev

打包

将项目源代码打包为 tar.gz(不含构建产物和 node_modules):

gradlew.bat archive

输出文件:build/distributions/finance-app-0.0.1-SNAPSHOT-{时间戳}.tar.gz

项目结构

my-app/
├── build.gradle
├── src/main/java/cn/rosercode/finance/
│   ├── controller/        # 接口层
│   ├── service/           # 业务层
│   ├── mapper/            # 数据访问层
│   ├── entity/            # 实体类
│   ├── dto/               # 请求对象
│   ├── vo/                # 响应对象
│   ├── config/            # 配置类
│   ├── common/            # 公共类
│   ├── interceptor/       # 拦截器
│   └── util/              # 工具类
├── src/main/resources/
│   ├── application.yml
│   ├── mapper/
│   └── sql/init.sql
└── frontend/              # Vue 3 前端
    └── src/
        ├── api/           # API 请求封装
        ├── router/        # 路由配置
        ├── store/         # 状态管理
        └── views/         # 页面组件
S
Description
No description provided
Readme
1.3 MiB
Languages
Java 62%
Vue 26.2%
TypeScript 10.8%
Go Template 0.9%