39b0c36d08bc75aad314dc0a316dc3684642dd9c
规则、分类、标签三个管理页统一为「批量操作模式」:默认不显示勾选框,点右上角「批量操作」进入后再勾选与批量操作,退出即清空选择;同时补齐标签、分类的批量删除能力,并把规则「应用规则到匹配账单」的预览弹窗加宽以容纳全部列。此外为邮箱账单「立即检查」的实时进度加上行首时间戳,便于判断进度先后与是否停滞。 变更内容: - 规则管理:默认隐藏勾选列,进入批量模式后方可勾选;「应用匹配账单」「批量删除」移入批量模式,「AI 生成规则」在批量模式下隐藏。 - 标签管理:新增批量操作模式与批量删除,同时清理交易-标签、规则-标签关联(DELETE /api/tag/batch)。 - 分类管理:新增批量操作模式与批量删除,收入/支出两表勾选合并处理(DELETE /api/category/batch)。 - 应用预览弹窗(RuleApplyPreviewModal)宽度由 min(1200px,94vw) 改为 min(1400px,96vw),表格 max-height 由 420 改为 560。 - 邮箱账单「立即检查」:SSE 推送的进度行与提示、前端追加的结果/失败提示行,统一加 [HH:mm:ss] 行首时间戳。 - 新增 tag/category 批量文案(zh/en/ja)与前端 API 封装 batchDeleteTags / batchDeleteCategories。 说明: - 标签删除会从所有交易记录中移除该标签,分类删除仅移除分类本身(账单显示为未分类),与原有单条删除行为一致。 - 后端批量删除均按 userId 过滤归属,仅删除属于当前用户的记录,返回实际删除数。 - 邮箱时间戳为纯展示改动,不影响业务逻辑与数据。
汇账
个人汇账应用:收支记录、分类标签、账单导入、归类规则、AI 智能记账、统计图表、定时提醒与系统日志。
功能特性
- 收支记录:增删改查、筛选分页、批量操作、Excel 导出,支持「计入统计」「备注隐藏」开关。
- 分类与标签:增删改查与默认数据,分类图标/标签颜色支持 AI 推荐。
- 交易渠道:内置渠道 + 自定义渠道(改名不影响历史账单,有账单使用时不可删除)。
- 统计与图表:月度收支、分类占比、收支趋势、分组统计与概览(ECharts)。
- 账单导入:支付宝/微信/美团/淘宝/京东/交行/招行,支持 zip(含加密压缩包),预览后确认导入并按交易号去重。
- 自定义规则:关键词、收支类型、金额区间组合,命中后自动应用分类与标签。
- AI 能力:分类/标签建议与一键采纳、自然语言查询与记账、图片记账(SSE 进度)、生成分类标签与图标颜色、用量统计。
- 定时提醒与通知:每天/每周/每月提醒,邮箱与 Server 酱推送。
- 系统日志:访问/登录日志查询,运行日志在线查看(SSE 实时推送)。
- 账号与多语言:JWT 登录、注册开关、运行时切换 SQLite/MySQL、中英日界面。
快速开始
前置条件:JDK 21(Temurin,含编译工具链与 jpackage)、Node.js(含 npm)。
首次构建或运行需联网:Gradle 会下载发行版与 Maven 依赖,前端会
npm install安装依赖。使用 wrapper(./gradlew/gradlew.bat)可自动获取所需 Gradle 版本。
# Windows 用 gradlew.bat,Linux/macOS 用 ./gradlew
# 后端(默认 8080,接口文档 http://localhost:8080/doc.html)
./gradlew bootRun
# 前端(默认 5173,/api 由 Vite 代理到 8080)
cd frontend && npm install && npm run dev
数据库无需预先准备:启动后在页面按引导选择 SQLite(本地文件,零配置)或 MySQL,保存后立即生效并自动建表;配置持久化于 config/database.json。
代码检查
- 后端:
./gradlew lint(Spotless + Checkstyle + SpotBugs)。 - 前端:
cd frontend && npm run lint(ESLint;npm run lint:fix自动修复,npm run format用 Prettier 格式化)。 bootJar/bootGuiJar会先执行后端检查与前端 ESLint,检查不通过则中断打包。
构建与打包
./gradlew bootJar bootGuiJar # 普通 jar + 带 GUI 启动器的 jar(内嵌前端),产物在 build/libs/
./gradlew jpackageAppImage # 免安装应用(普通 + GUI),产物在 build/jpackage/
- 打包前会先安装前端依赖并构建前端产物,再一并打入 jar,无需手动
npm run build。 - GUI jar 内嵌前后端与跨平台 JavaFX,单文件即可运行;配置与日志默认落在 jar 所在目录,可用
--home=<目录>或环境变量LEDGERLY_HOME指定。 - app-image 自带运行时、免安装,但只能为当前操作系统生成。
Languages
Java
62%
Vue
26.2%
TypeScript
10.8%
Go Template
0.9%