Files
ledgerly/README.md
T
rosercode ce71fd9b7a feat: 桌面启动器、可执行 jar 瘦身与数据库配置实时进度
本次提交为「汇账」补充桌面 GUI 启动器与 jpackage 免安装打包,并对可执行 jar 做两项依赖瘦身(移除 OpenAI SDK、裁剪 Knife4j/Swagger UI),修复 Windows 构建兼容问题,最后将数据库「测试连接 / 保存并应用」改为 SSE 实时进度并新增进度弹框。

变更内容:
- 桌面启动器:新增 cn.rosercode.ledgerly.launcher(启停服务、日志实时查看、系统托盘、单实例锁、端口配置),普通 jar 经 exclude 排除该包以保持无 JavaFX 依赖。
- 打包:bootJar/bootGuiJar 文件名携带目标 JDK 版本;新增 jpackageAppImage(聚合)与 jpackageServerAppImage/jpackageGuiAppImage,基于 jpackage --type app-image 产出免安装应用,GUI 内嵌 win/linux/mac/mac-aarch64 四平台 JavaFX;应用图标不入库,打包时从 OSS 地址(launcher/icon.url)下载源图并由 tools/IconGen.java 生成平台图标(ico/icns/png)。
- 启动器图标:图标二进制不随源码分发,地址记录在 launcher/icon.url(阿里云 OSS 长期签名地址);运行时由 LauncherIconProvider 下载并缓存到 <基准目录>/cache/launcher-icon.png,缓存缺失时先直接用远端地址,下载失败静默降级为无图标。
- 运行目录:AppHome 新增 configDir/logsDir/setHome,config/logs/data 统一以基准目录(ledgerly.home 系统属性 / LEDGERLY_HOME 环境变量)解析,logback 同步支持。
- 依赖瘦身:移除 com.openai:openai-java,DeepSeekClient 改用 Spring RestClient 直连 Chat Completions(对外签名与 DeepSeekResponse 不变);Knife4j/Swagger UI 改为 developmentOnly,生产仅保留 /v3/api-docs JSON,Knife4jConfig 增加 @ConditionalOnClass 兜底。
- Windows 兼容:npm 解析兼容 npm.cmd;Spotless 统一 LF 并新增 .gitattributes。
- 数据库配置:新增 DatabaseConfigStreamService 与 POST /api/database/{test,config}/stream,SchemaInitializer/SchemaMigrator/DatabaseService 增加进度回调,前端弹框实时展示日志;数据库接口超时放宽为测试 60s、保存 120s。
- 缺陷修复:LauncherHome 改用 java.class.path 定位 jar,避免 Spring Boot 可执行 jar 下嵌套路径导致启动器崩溃;JwtInterceptor 跳过 SSE 完成后的 ASYNC 分派并加固响应已提交判断,避免首次无 Token 配置数据库时重复鉴权写入 401 触发 getOutputStream() 异常。
- 文档:README 精简为功能特性与快速开始/构建打包,细节说明迁移至本地 AGENTS.md。
2026-09-24 14:43:01 +08:00

43 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 汇账
个人汇账应用:收支记录、分类标签、账单导入、归类规则、AI 智能记账、统计图表、定时提醒与系统日志。
## 功能特性
- 收支记录:增删改查、筛选分页、批量操作、Excel 导出,支持「计入统计」「备注隐藏」开关。
- 分类与标签:增删改查与默认数据,分类图标/标签颜色支持 AI 推荐。
- 交易渠道:内置渠道 + 自定义渠道(改名不影响历史账单,有账单使用时不可删除)。
- 统计与图表:月度收支、分类占比、收支趋势、分组统计与概览(ECharts)。
- 账单导入:支付宝/微信/美团/淘宝/京东/交行/招行,支持 zip(含加密压缩包),预览后确认导入并按交易号去重。
- 自定义规则:关键词、收支类型、金额区间组合,命中后自动应用分类与标签。
- AI 能力:分类/标签建议与一键采纳、自然语言查询与记账、图片记账(SSE 进度)、生成分类标签与图标颜色、用量统计。
- 定时提醒与通知:每天/每周/每月提醒,邮箱与 Server 酱推送。
- 系统日志:访问/登录日志查询,运行日志在线查看(SSE 实时推送)。
- 账号与多语言:JWT 登录、注册开关、运行时切换 SQLite/MySQL、中英日界面。
## 快速开始
前置条件:JDK 21(Temurin)、Node.js。
```bash
# 后端(默认 8080,接口文档 http://localhost:8080/doc.html)
gradlew.bat bootRun
# 前端(默认 5173)
cd frontend && npm run dev
```
数据库无需预先准备:启动后在页面按引导选择 SQLite(本地文件,零配置)或 MySQL,保存后立即生效并自动建表;配置持久化于 `config/database.json`。
## 构建与打包
```bash
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`。