Skip to content

Latest commit

 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

记账分摊 · SplitLedger

简体中文 | English

零依赖 零构建 单文件 数据不出本机 License: MIT

一行一句话 + 一个数字就是一笔账。自动识别金额、实时合计,再一键算清 AA 谁该给谁。

界面截图

在线使用 | GitHub Pages 镜像


它是什么

一个极简的记账 + AA 分摊小工具。不注册、不登录、不上传 —— 数据只存在你自己浏览器的 localStorage 里。

网页端是一个单文件(web/index.html,HTML / CSS / JS 全部内联),零依赖、零构建、零后端,双击就能用,也能随手丢到任意静态托管上。

特性

  • 极简记账 —— 每行一条,像发消息一样写:午饭 18、打车 23.5、报销到账 +120
  • 智能识别 —— 取每行最后一个数字作为金额,其余文字当摘要;支持支出 -6、收入 +120、千分位 1,200、小数 59.9、全角数字、结尾的「元 / 块 / ¥」
  • 没数字的行不丢 —— 原样保留展示,只是标注「不计入」合计
  • 实时统计 —— 合计(净额 = 收入 − 支出)、收入、支出、笔数、未识别行
  • 保存与记录 —— 一键把编辑区拆成逐条记录(新批在前),可单条删除、可清空
  • AA 结算 —— 填上「TA 已付」,自动算清谁该给谁,并把四步算式摊开给你看
  • 两种导出 —— 长图(⌘/Ctrl + S 或菜单)与 CSV
  • 中英双语 —— 右上角国旗一键切换,币种跟着语言走(¥ / $)
  • 自动跟随系统深色模式,响应式布局(600px / 860px 断点)

快速开始

在线使用

点击 在线使用 即可打开,无需安装、不用注册;打不开时换 GitHub Pages 镜像 —— 同一份单文件应用,只是换个地方托管。

本地使用

网页端没有构建步骤,直接打开文件就行:

# 方式一:双击文件(macOS)
open web/index.html

# 方式二:起个本地静态服务
cd web && python3 -m http.server 8080
# 然后访问 http://localhost:8080

记账规则

每行取最后一个数字作为金额,+ 是收入、- 是支出,不带符号的数字按工具栏「无符号数字算作」的设置处理(默认算支出)。

你写的 识别为 说明
午饭 18 支出 ¥18.00 无符号,按工具栏设置算支出
打车 23.5 支出 ¥23.50 支持小数
报销到账 +120 收入 ¥120.00 + 开头算收入
客户打款 +1,200 收入 ¥1,200.00 支持千分位
买菜 12 支出 ¥12.00 支持全角数字
买牛奶 59.9 元 支出 ¥59.90 结尾的「元 / 块 / ¥」会被忽略
今天忘了带钱包 — 没有数字:保留展示,标注「不计入」

界面说明

位置 元素 作用
右上角 🇨🇳 / 🇺🇸 切换中文 / 英文(币种同步切换)
工具栏 无符号数字算作 不带符号的数字算支出还是收入
工具栏 填入示例 一键填入一行示例,快速体验
工具栏 保存 把编辑区拆成逐条记录存入本机,并清空编辑区
工具栏 复制全部 复制编辑区全部文本到剪贴板
工具栏 导出 → 导出图片 导出整本流水长图(含合计与 AA 结算)
工具栏 导出 → 导出 CSV 导出 CSV(UTF-8 带 BOM,Excel 直接打开不乱码)
工具栏 清空 清空编辑区(二次确认)
记录表 底部合计行 已保存记录的净额合计 + 清空已保存(二次确认)
记录表下方 AA 结算 填「TA 已付」,实时算清差额并展开算式

快捷键

快捷键 作用
⌘/Ctrl + S 直接导出图片(CSV 只能从「导出」菜单进入)
Esc 关闭「导出」菜单,焦点回到按钮

AA 结算怎么算

口径是:账本里记的是「我」付的钱,「TA 已付」那部分手填;两者都算进共同开销,再按两人平摊。

你的净垫付  mine  = 支出 − 收入
合计已付    total = mine + TA 已付
每人应承担  each  = total ÷ 2
差额        diff  = each − TA 已付     (恒等于 (mine − TA 已付) ÷ 2)
  • diff > 0 → TA 需付给你(绿色)
  • diff < 0 → 你需付给 TA(红色)
  • TA 已付 == 你的净垫付 → 两清,只显示文字不显示金额(差值小于 0.005 视为两清,避开浮点误差)

数据与隐私

  • 数据只存本机浏览器,不上传、不联网、无账号。换浏览器或清缓存 = 换一本账。
  • 上面两个在线入口是两个不同的站点(域名不同),账本按站点隔离 —— 换入口就是换一本账,原有记录不会跟过去。
  • 存储位置(localStorage):
Key 内容
ledger-mini/v1 草稿:编辑区文本、方向设置、语言、AA 结算的「TA 已付」
ledger-mini/saved/v1 已保存记录,逐条 {at, label, amount, dir}

Key 前缀保留 ledger-mini 是故意的:改了等于所有老用户的账本清零。

目录结构

splitledger/
├── web/
│   └── index.html              # 单文件应用(HTML/CSS/JS 全内联)
├── docs/
│   ├── screenshot.png          # 中文界面截图
│   └── screenshot-en.png       # 英文界面截图
├── .github/
│   └── workflows/
│       └── pages.yml           # 推到 main 时把 web/ 自动发布到 GitHub Pages
├── README.md                   # 中文说明(默认)
├── README.en.md                # 英文说明
└── LICENSE                     # MIT 许可证

开发说明

  • 网页端没有构建、没有依赖:改完 web/index.html 刷新浏览器即可。
  • 中英词条在同一个 I18N 对象里(zh / en),两份 key 必须严格对齐,改文案两边同步。
  • 导出的长图最多画 200 行明细,超出会在图尾标注「另有 N 条未在图中显示」。
  • 推到 main 后,.github/workflows/pages.yml 会把 web/ 原样发布到 GitHub Pages(仓库的 Pages 源需设为 GitHub Actions)。web/ 本身就是完整站点,不需要任何构建。

浏览器支持

Chrome / Edge / Safari / Firefox 等现代浏览器。导出长图基于 Canvas,已针对 iOS Safari 的画布面积上限做降采样兜底;导出失败时会提示换个浏览器重试。

许可

MIT © 2026 isnotry

About

每行一句话 + 一个数字,自动累加,再一键算清 AA 谁该给谁。数据只存在你这台浏览器里,不上传。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages