rosercode 15fd1a263d fix: 兼容支付宝新版交易明细导入并修复外部交易号超长截断
支付宝新版「交易明细」导出格式的列名与旧版「交易记录明细查询」完全不同,导致导入直接报「未找到支付宝账单表头」;此外部分长订单号超过 t_transaction.external_no 的 VARCHAR(64) 长度,导入时触发数据库截断报错。本次让解析器同时兼容新旧两种格式,将 external_no 加宽至 VARCHAR(255)(含已存在库的自动迁移),并补充导入失败日志便于定位。

变更内容:
- AlipayBillParser 兼容新版「交易明细」:支持「交易时间」开头表头、新版列名映射(交易订单号/商品说明/金额等)、斜杠时间格式(yyyy/M/d H:mm[:ss])、交易号去空白、尾部逗号空行跳过与 UTF-8 BOM 处理。
- SchemaMigrator 新增 external_no 加宽迁移:MySQL 检测当前长度不足时执行 ALTER 至 VARCHAR(255),幂等可重复执行,SQLite 不强制长度直接跳过。
- BillImportServiceImpl 补充日志:逐行校验失败、批量插入回退、单条插入失败(含 externalNo 与根因)、重复跳过分别记录 warn/debug,便于定位失败记录。
- init.sql 与 schema-sqlite.sql 将 external_no 由 VARCHAR(64) 调整为 VARCHAR(255),保持两库结构一致。

说明:
- 旧版「交易记录明细查询」格式的解析行为保持不变。
- 长度迁移在应用启动(DatabaseBootstrap)与切换数据库时自动执行,无需手工执行 SQL。
- 64 到 255 跨越长度前缀边界,MySQL 调整列时会重建该表,数据量小影响可忽略。
2026-09-30 15:54:11 +08:00
2026-08-30 14:36:22 +08:00
2026-09-26 20:21:14 +08:00

汇账

个人汇账应用:收支记录、分类标签、账单导入、归类规则、AI 智能记账、统计图表、定时提醒与系统日志。

功能特性

  • 收支记录:增删改查、筛选分页、批量操作、Excel 导出,支持「计入统计」「备注隐藏」开关。
  • 分类与标签:增删改查与默认数据,分类图标/标签颜色支持 AI 推荐。
  • 交易渠道:内置渠道 + 自定义渠道(改名不影响历史账单,有账单使用时不可删除)。
  • 统计与图表:月度收支、分类占比、收支趋势、分组统计与概览(ECharts)。
  • 账单导入:支付宝/微信/美团/淘宝/京东/交行/招行,支持 zip(含加密压缩包),预览后确认导入并按交易号去重。
  • 自定义规则:关键词、收支类型、金额区间组合,命中后自动应用分类与标签。
  • AI 能力:分类/标签建议与一键采纳、自然语言查询与记账、图片记账(SSE 进度)、生成分类标签与图标颜色、用量统计。
  • 定时提醒与通知:每天/每周/每月提醒,邮箱与 Server 酱推送。
  • 系统日志:访问/登录日志查询,运行日志在线查看(SSE 实时推送)。
  • 账号与多语言:JWT 登录、注册开关、运行时切换 SQLite/MySQL、中英日界面。

快速开始

前置条件:JDK 21(Temurin)、Node.js。

# 后端(默认 8080,接口文档 http://localhost:8080/doc.html)
gradlew.bat bootRun

# 前端(默认 5173)
cd frontend && npm run dev

数据库无需预先准备:启动后在页面按引导选择 SQLite(本地文件,零配置)或 MySQL,保存后立即生效并自动建表;配置持久化于 config/database.json。

构建与打包

gradle bootJar bootGuiJar     # 普通 jar + 带 GUI 启动器的 jar,产物在 build/libs/
gradle jpackageAppImage       # 免安装应用(普通 + GUI),产物在 build/jpackage/
  • GUI jar 内嵌前后端与跨平台 JavaFX,单文件即可运行;配置与日志默认落在 jar 所在目录,可用 --home=<目录> 或环境变量 LEDGERLY_HOME 指定。
  • app-image 自带运行时、免安装,但只能为当前操作系统生成。

更详细的目录结构、启动器、jpackage、图标与开发环境说明见 AGENTS.md。

S
Description
No description provided
Readme
1.3 MiB
Languages
Java 62%
Vue 26.2%
TypeScript 10.8%
Go Template 0.9%