本网站使用 Kohei Koyanagi 开发的软件自动翻译为多种语言。为确保准确,请参考原始 英文 版本。

Splync v1.9 可为每笔支出设置自定义分摊比例

Splync 用户反馈

在发布允许每个项目和类别自定义分摊比例的 Splync v1.5 大约一个半月后,我们收到了新一轮的反馈。v1.5 更新需要大量的服务器端更改,当时我认为这种细化程度对大多数场景来说已经“足够好了”。然后,一些新用户提出了一个简单而合理的问题:“我们可以为每一笔支出设置自定义分摊比例吗?”他们的旅行项目中有时需要两人分摊特定费用,而其他时候三人都想分享某些费用。在 Splync v1.8 中,答案不幸是否定的。我解释说,他们可以创建额外的类别,针对这些特定情况定制比例——这是一种变通办法,而不是真正的解决方案。

分形森林显得压倒性

回忆起 v1.5 的工作量时有些压倒性。首先,我必须让项目拥有自己的分摊比例。然后,类别也需要自定义比例。那时,我以为已经涵盖了整棵树——收集了每个分支的每个果实。但每笔支出的比例处理不同。感觉就像每次摘一个果实时,一个新树就从那个位置冒出来。并不是无限的分形森林,而是一个清晰的双层结构:一层孕育下一层。在 v1.5 的逻辑中,支出首先继承项目的比例。如果其类别有自定义比例,这些比例将覆盖项目的值。所以在添加每笔支出的比例时,我发现自己试图在覆盖之上再加一个覆盖。结构变成了一阶又一阶的覆盖——技术上正确,但在思维上很混乱。很难证明再建一层拼凑逻辑的合理性。

Splync v1.9 的范式变化

突破最终来自于颠倒结构。与其从“项目 → 类别 → 支出”逐层覆盖,不如反其道而行之?每笔支出 → 每类别 → 每项目。这样排序反映了真实的思维方式:如果具体支出有自己的规则,就应该遵循它们。如果没有,类别模式合适。如果连这都失败了,就退回到项目默认。不再是一阶又一阶的覆盖,而是一个清晰的优先级层次。当我以这种方式看待结构时,伪分形森林的迷雾瞬间消散。实现路径变得显而易见:“每笔支出检查是否有自定义分摊比例。如果存在,使用它们。如果没有,检查类别分摊比例。如果没有,使用项目默认。”

在天空下行走

新逻辑简单、可预测且数学上合理。为了支持这个优先级系统,我们添加了一个专用的 MariaDB 表来管理每笔支出的分摊,有点像处理每类别的分摊表。支出详情表也需要扩展,就像 v1.5 中的类别详情表一样。一旦底层“双层”设计变得清晰,剩下的就是细致的代码编写——无论是在应用程序中还是在服务器上。不过,这条路有时感觉像是在没有地图的黑暗森林中行走。我想清理思绪,于是走到户外。空气清新锐利。在附近散步时,我看到远处的富士山,在晴朗的天空下显得清晰可见。尽管相隔近百公里,但看起来近在咫尺。那一刻就像是个提醒:即使我以为自己在森林中行走,其实是在天空下漫步。

使用 Splync v1.9 可以做什么——为每笔支出自定义分摊

Splync v1.9 是在那一刻的清晰中诞生的。我回到家,完成了新端点的连接,准备了新的服务器逻辑,整理了相关接口,提交了 v1.9 给 Apple,然后终于入睡。审核比平时更早完成。醒来时,Splync v1.9 已经被批准并在 App Store 上自动发布。从这个版本开始,分摊变得更加灵活。如果你和 John 及 Kate 一起旅行,你可以将基本费用均分。但对于食物,可能会选择“25% : 50% : 25%”的比例,因为 John 通常吃得多一倍。如果 John 错过了一顿晚餐——比如在一家生蚝餐厅——你可以将那顿饭的比例设为“50% : 0% : 50%”,这样他就不会为未吃的东西支付。在 v1.9 中,Splync 现在在一个统一的逻辑中支持每项目、每类别和每支出的比例。基础稳定且数学上合理。下一个挑战是界面:一些其他分摊应用提供了更流畅、更时尚的调整方式。Splync 现在拥有支持这些改进的后端实力。我们将逐一进行改进。