Skip to content

About

更好的小米记账 支持导入来自小米钱包、微信和支付宝的账单

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

📒 Better Mi Ledger

更好的小米记账 —— 本地账单导入、筛选与可视化分析,Web / 桌面 / Android 三端一致体验

CI License

Vue TypeScript Electron Capacitor pnpm

报告问题 · 下载构建产物

image image

支持导入小米钱包、支付宝与微信账单,在本地完成去重、跨来源合并、筛选、收支 统计和趋势分析。账单数据只保存在当前设备上,无服务端同步或云端上传。

✨ 功能特性

📥 账单导入

  • 小米钱包 .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

🚀 使用方式

  1. 导出账单:从小米钱包 / 微信 / 支付宝的官方渠道导出账单文件(.xlsx / .csv,或直接导出 .zip 压缩包)
  2. 导入:在应用中选择账单文件(可多选批量导入);加密压缩包会弹窗要求输入密码
  3. 确认去重:高置信度重复自动合并,疑似重复在界面上人工确认
  4. 查看分析:明细页筛选与编辑,仪表盘查看分类占比与 Top 排行,趋势图缩放查看收支走势
  5. 定期备份:在「设置」页导出 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 备份
  • 清空本地数据不可恢复,请先完成备份

📄 许可证

MIT License

About

更好的小米记账 支持导入来自小米钱包、微信和支付宝的账单

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages