支持导入小米钱包、支付宝与微信账单,在本地完成去重、跨来源合并、筛选、收支 统计和趋势分析。账单数据只保存在当前设备上,无服务端同步或云端上传。
- 小米钱包
.xlsx、微信支付账单流水.xlsx、支付宝交易明细.csv(GB18030,解析失败回退 UTF-8) - 直接导入官方导出的
.zip压缩包,含 ZipCrypto / AES 加密包(弹窗输入密码,错误可重输) - 多文件批量导入,给出「解析总数 / 新增 / 重复跳过 / 跨来源合并 / 本地总计」汇总
- 内容指纹去重:有
order_id优先使用,否则组合「时间 + 收支类型 + 金额 + 分类 + 子分类 + 备注」,按出现次数计数以保留同秒同额的合法交易 - 跨来源合并:小米钱包与支付宝 / 微信之间的重复记录,高置信度自动合并
- 人工确认:时间接近的疑似重复交由界面确认,「不是重复」的判断持久保存
- 账单明细:按日期区间、来源、收支类型、分类筛选,汇总栏实时显示收入 / 支出 / 结余 / 笔数
- 单笔记录支持编辑与删除
- 金额趋势图:切换时间粒度、dataZoom 手势缩放、显示数据点数值;「放大查看」全屏浮层在手机竖屏时自动转为横屏舞台
- 仪表盘:支出 / 收入分类占比饼图与 Top 分类排行
- JSON 备份导出与导入(桌面 / Web 走下载,Android 走系统分享)
- 亮色 / 暗色主题与界面缩放,状态栏配色跟随主题
- 设置页显示本地记录数、时间范围与占用空间,支持清空全部数据
- 三端一致的界面:桌面顶栏导航,移动端底部标签栏 + 顶栏,Android 适配全面屏与硬件返回键
Note
项目暂未发布 GitHub Release。各平台安装包由 CI 构建并上传为 Actions artifact(保留 14 天),在对应 run 页面下载。
| 平台 | 产物 | Artifact |
|---|---|---|
| 🪟 Windows | portable .exe(x64,免安装) |
bettermiledger-windows |
| 🐧 Linux | .deb 与 .pacman(x64) |
bettermiledger-linux |
| 🍎 macOS | .dmg(universal) |
bettermiledger-macos(手动触发 build-installers.yml) |
| 🤖 Android | debug APK | bettermiledger-android-debug |
| 🌐 Web | 静态产物 | bettermiledger-web-dist |
- 导出账单:从小米钱包 / 微信 / 支付宝的官方渠道导出账单文件(
.xlsx/.csv,或直接导出.zip压缩包) - 导入:在应用中选择账单文件(可多选批量导入);加密压缩包会弹窗要求输入密码
- 确认去重:高置信度重复自动合并,疑似重复在界面上人工确认
- 查看分析:明细页筛选与编辑,仪表盘查看分类占比与 Top 排行,趋势图缩放查看收支走势
- 定期备份:在「设置」页导出 JSON 备份——清空本地数据不可恢复
| 层 | 选型 |
|---|---|
| 前端 | Vue 3 + TypeScript + Vite、Pinia、vue-router |
| UI | PrimeVue + Tailwind CSS 4、ECharts(vue-echarts) |
| 存储 | IndexedDB(idb),可回退 localStorage / 内存适配器 |
| 表格解析 | SheetJS(xlsx)、@zip.js/zip.js(按需动态加载) |
| 桌面 | Electron 43 + electron-builder |
| 移动 | Capacitor 7(Android) |
| 服务端(开发中) | NestJS 11 + Prisma 7 + better-sqlite3、LangChain / LangGraph |
packages/
├── web/ # Vue 3 前端:导入、去重、筛选、统计与图表(所有业务逻辑都在这里)
├── desktop/ # Electron 主进程 + electron-builder 打包配置
├── mobile/ # Capacitor Android 壳,webDir 复用 packages/web/dist
└── api/ # NestJS + Prisma(SQLite) 服务端,开发中,前端尚未接入
packages/web 是唯一有业务逻辑的包,desktop 与 mobile 只负责各自平台的壳与打包。
环境:Node.js 24、pnpm 11.1.2;构建 Android 额外需要 JDK 21。
pnpm install
# Web 开发服务
pnpm --filter bettermiledger-web dev
# 桌面端开发(先起 web dev server,再起 Electron)
pnpm --filter bettermiledger-web dev
pnpm --filter bettermiledger-desktop dev
# 测试与检查
pnpm --filter bettermiledger-web type-check
pnpm --filter bettermiledger-web test
pnpm exec eslint packages/web packages/desktop packages/mobile
# 打包
pnpm --filter bettermiledger-desktop dist:win # / dist:linux / dist:mac
pnpm --filter bettermiledger-mobile apk:debug # release 需自行配置签名密钥CI(ci.yml,push / PR):lint 三个客户端包 → web 类型检查 → web 测试 → web 构建 →
desktop 主进程构建,另有 Android debug APK 与 Linux / Windows 安装包打包;
build-installers.yml 手动触发,矩阵构建 Linux / Windows / macOS 安装包。
- 导入后的账单保存在当前设备的本地存储(IndexedDB)中
- 不包含服务端同步或云端上传功能
- 建议在「设置」页面定期导出 JSON 备份
- 清空本地数据不可恢复,请先完成备份