rosercode c69e76ed4c feat: 支持自定义分类与标签规则并优化 AI 查询交互
- 新增 t_rule、t_rule_tag 表(MySQL/SQLite 双脚本)与规则引擎,支持关键词(备注/交易对方/商品名称)、收支类型、金额区间组合匹配
- 新增 /api/rule 增删改查与启用停用接口,侧边栏新增「规则管理」页,支持排序与启停
- 账单导入解析阶段批量匹配,返回命中规则与建议分类/标签,预览表格新增「匹配规则/建议」列
- 确认导入时按行重新匹配:规则建议分类优先于面板默认分类,规则标签与默认标签合并去重
- 删除标签时同步清理规则标签关联
- AI 自然语言查询解析后直接应用筛选并搜索,移除二次确认弹窗,成功提示展示识别意图
- 修正登录日志筛选 success 参数类型为 'true'/'false'
2026-09-18 17:42:59 +08:00
2026-08-30 14:36:22 +08:00

收支管理系统

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

技术栈

层级 技术
后端 Spring Boot 3.3.6 + Java 21 + MyBatis-Plus + MySQL / SQLite
前端 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

数据库配置

系统支持在服务启动后再配置数据库,无需启动前准备:

  • 未检测到配置时,应用仍可正常启动,前端会引导进入「初始化数据库」页面;
  • 支持 SQLite(本地单文件,零配置)与 MySQL 两种数据库;
  • 保存配置后立即生效并自动建表,无需手动执行 SQL;
  • 配置持久化在 config/database.json(已加入 .gitignore),SQLite 数据默认位于 data/ 目录;
  • 新注册用户会自动获得一套默认分类与标签;
  • 兼容旧部署:若无本地配置但存在 DB_URL / DB_USERNAME / DB_PASSWORD 环境变量,会自动作为首次配置并保存。

登录后可通过右上角用户菜单 →「数据库设置」随时切换数据库;切换后原数据库的数据保留,不做自动迁移。

启动后端

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

启动前端

cd finance-app/frontend
npm run dev

构建可执行 jar(前后端一体化)

将前端构建产物一并打入 jar,单文件同时提供前端页面与后端接口:

gradle bootJar
  • 该任务会先执行前端 npm run build,再把 frontend/dist 复制到 jar 内的 BOOT-INF/classes/static/
  • 构建环境需具备 Node(开发容器通过 NODE_HOME 指向系统 nvm Node,npm 走本地 verdaccio 源)
  • 输出文件:build/libs/finance-app-0.0.1-SNAPSHOT.jar

启动(默认 8080,可另指定端口):

java -jar build/libs/finance-app-0.0.1-SNAPSHOT.jar --server.port=18081

访问对应端口即可同时使用前端与接口;刷新 /dashboard 等子路由会由后端回退到 index.html。

项目结构

finance-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%