news 2026/9/3 7:58:28

TREK预算追踪实战:如何用多币种费用分摊与AA结算(Splitwise风格)搞定旅行账本

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
TREK预算追踪实战:如何用多币种费用分摊与AA结算(Splitwise风格)搞定旅行账本

TREK预算追踪实战:如何用多币种费用分摊与AA结算(Splitwise风格)搞定旅行账本

【免费下载链接】TREKA self-hosted travel/trip planner with real-time collaboration, interactive maps, PWA support, SSO, budgets, packing lists, and more.项目地址: https://gitcode.com/GitHub_Trending/nomad22/TREK

TREK是一款自托管的旅行规划应用(self-hosted travel planner),除了实时协作与交互地图,还内置了 Splitwise 风格的预算追踪功能:多币种记录、按人头分摊、AA 结算计算器,让"旅行结束算不清账"成为过去式。

📌 注意:从 v3.3.0 起,该模块在界面上统一更名为Costs(费用),但底层 addon id 仍是budget

在哪里找到费用功能?

打开任意行程规划器,顶部导航点击Costs标签页即可(需管理员在 Addons 中启用该插件)。页面顶部是四张核心卡片:

  • You owe:你欠别人的总额
  • You're owed:别人欠你的总额
  • Outstanding amount:还没有付款人的未记账费用
  • Total trip spend:整个行程总支出 + 你的份额

下方是按日期倒序的费用流水,右侧栏则是"Settle up(结算)"与"Balances(余额)"面板。

多币种预算追踪:三种"货币设置"千万别搞混

这是新手最容易踩坑的地方。TREK 支持165 种货币(汇率来自 Frankfurter,无需 API Key),但它把"货币"拆成了三个独立设置,各管一件事:

设置位置作用
行程货币行程 → 编辑行程记账基准,所有余额、结算都在它身上计算
费用货币添加费用弹窗小票上写的什么就填什么,如$100 晚餐就填100 USD
显示货币设置 → 常规只改"读法",不改任何存储数据

💡关键机制——汇率冻结:当你保存一笔外币费用时,TREK 会把当时的实时汇率"冻结"在这笔费用上。这意味着:还完的债不会因市场波动而重新变成欠款,汇率锁死的那一刻就是你欠账的那一刻。即使你把行程货币从卢布换成欧元,已录入的9 000 ₽也绝不会被悄悄改写。

三种AA分摊模式:均分、自定义、逐项记账

多人行程中,点击费用编辑按钮会打开分摊弹窗,提供三种模式:

  1. Equally(均分):在选中的成员之间平分。零头(四舍五入产生的分币误差)会按规则确定性地轮转分配,保证整个旅途中每人分到的金额长期公平。
  2. Custom(自定义):为每位旅伴输入各自的具体金额,所有份额之和必须恰好等于总价——分不平就存不了。
  3. Ticket(逐项):像记账单一样列出明细(例如 苹果 $10、蛋糕 $50、牛奶 $40),再给每个单项指定分摊人,精确到分。

另外,点击费用条目上已分配的成员头像,即可标记该成员已付款(头像会出现绿色光环);右栏余额会实时刷新。

前端实现见 CostsPanel.tsx 与 CostsPanel.helpers.ts,分摊与结算逻辑集中在 budgetService.ts。

AA结算计算器:一步算出"最少转账方案"

当成员之间存在未结清的债务时,总额卡片内会出现一个可展开的Settlement(结算)区域。它用贪心配对算法给出最少数量的转账:谁付给谁、付多少,一目了然;下方还会列出每位成员的净余额(盈余/赤字条)。

所有余额一律先以行程货币轧差,最后才一次性换算成你的显示货币——避免"逐笔换算"产生的分币漂移,已结清的行程永远不会冒出幽灵债务。

记录还款:也支持外币

结清一笔卢布债务完全可以用欧元转账。点击Settle up旁的+ Add payment,选择付款人、收款人、金额和货币即可:

每笔还款同样自带冻结汇率,记在账本里显示为双币金额(如$30.00 → 27,00 €)。你也可以点击结算建议直接"Settle"一键入账,或撤销任何一笔还款记录。

导出与自动化:CSV 一键带走全部账目

工具栏的Export CSV可下载完整费用表(costs-<行程名>.csv,分号分隔 + UTF-8 BOM,Excel 直接打开不乱码,行内同时保留原始币种与显示币种的金额)。

如果你有 AI 工作流需求,TREK 还暴露了 MCP 工具create_budget_itemcalculate_settlement等(见 budget.ts),可以让 Agent 帮你自动记账和算账——只需授予budget:read/budget:write作用域。

常见问题速查

Q:为什么我的总额每天都在轻微变动?你的显示货币 ≠ 行程货币时,显示换算用的是实时汇率(因为那只是"视图");底层余额和债务纹丝不动。

Q:改行程货币会把数字改错吗?不会。无自带币种的费用会被"钉"在旧货币上,所有冻结汇率会重新锚定到新的基准,你手输的数字绝不改写。

Q:权限怎么控制?增删改费用需要budget_edit权限;修改行程货币属于行程本身,需要trip_edit

更多细节可阅读官方文档:Budget-Tracking.md、Currencies.md。

小结

场景TREK 的解法
多国混币记账费用自带货币 + 汇率冻结
多人 AA均分 / 自定义 / 逐项三种模式
旅行结束清账贪心算法给出最少转账方案
事后报销CSV 双币导出

把行程货币设成目的地货币、费用按小票原样录入,剩下的就交给 TREK 的结算计算器——下次旅行结束,你只需要看一眼"Settle up"面板。🧳

【免费下载链接】TREKA self-hosted travel/trip planner with real-time collaboration, interactive maps, PWA support, SSO, budgets, packing lists, and more.项目地址: https://gitcode.com/GitHub_Trending/nomad22/TREK

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/31 21:16:59

奇安信前端笔试题复盘:深拷贝、事件循环与XSS防御等硬核考点解析

2019年春天&#xff0c;我拿到了奇安信的前端开发笔试题&#xff0c;当时的第一反应是&#xff1a;这家公司考的怎么这么“硬核”。别的公司还在问Vue生命周期和flex布局&#xff0c;它已经把手写深拷贝、事件循环输出题、XSS防御方案、甚至webpack的plugin机制全部塞进了一张卷…

作者头像 李华
网站建设 2026/8/31 23:45:05

Unity联网游戏开发实战:集成Xlua热更新与Photon网络同步架构解析

简介&#xff1a;热更新与网络同步是现代游戏开发中提升开发效率和保障多人在线体验的两项核心技术。热更新技术允许开发者在无需重新发布应用的情况下&#xff0c;动态更新游戏逻辑与资源&#xff0c;极大地缩短了迭代周期并提升了运营灵活性。网络同步则确保了多玩家在虚拟世…

作者头像 李华
网站建设 2026/9/1 5:45:04

OBS Studio 新手教程:5步跑通直播与录制

OBS Studio 新手教程&#xff1a;5步跑通直播与录制 【免费下载链接】obs-studio OBS Studio - Free and open source software for live streaming and screen recording 项目地址: https://gitcode.com/GitHub_Trending/ob/obs-studio 这是一份面向第一次使用者的 OBS…

作者头像 李华
网站建设 2026/9/2 11:22:33

蓝桥杯单片机国赛实战:从硬件驱动到状态机设计的嵌入式系统开发指南

1. 项目概述&#xff1a;从“蓝桥杯国赛”到一份可复现的实战指南最近整理资料&#xff0c;翻到了当年参加第十一届蓝桥杯单片机设计与开发大学组国赛的完整备赛记录。这个比赛&#xff0c;对于电子、自动化、嵌入式相关专业的学生来说&#xff0c;分量不轻。它考察的不仅仅是写…

作者头像 李华
网站建设 2026/9/2 8:03:50

Linux PAM 1.3.0 到 1.3.1 升级实战:ABI 兼容性与国产化适配

简介&#xff1a;Linux-PAM 是 Linux 系统认证的核心基础设施&#xff0c;其本质是一套运行时动态加载的 C 语言接口规范&#xff0c;而非简单的配置文件集合。理解 PAM 的 ABI&#xff08;Application Binary Interface&#xff09;兼容性机制&#xff0c;是保障 sshd、lightd…

作者头像 李华
网站建设 2026/9/1 13:30:16

MarkItDown 工具实战:一条命令把 PDF 和办公文档转成 Markdown

MarkItDown 工具实战&#xff1a;一条命令把 PDF 和办公文档转成 Markdown 【免费下载链接】markitdown Python tool for converting files and office documents to Markdown. 项目地址: https://gitcode.com/GitHub_Trending/ma/markitdown markitdown 是一个 Python …

作者头像 李华