gpt4 book ai didi

algorithm - 如何管理交易、债务、利息和罚款?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:36:23 26 4
gpt4 key购买 nike

我正在制作 BI类似银行机构的系统。该系统应管理信贷契约(Contract)、发票、付款、罚款和利息。

现在,我需要创建一个构建发票的方法。我必须计算客户现在必须支付多少钱。他欠债,他必须偿还。他还必须支付利息。如果他在到期付款时迟到,则他迟到的每一天都会受到处罚。

我认为有两种方法可以做到这一点:

  1. 只有 1 个原始状态 - 契约(Contract)的原始状态。每次计算客户必须支付的每月付款时,都要考虑实际支付的款项。
  2. 通过不断地建立中间状态,从最后一个中间状态开始,只考虑在这两个中间状态之间发生的事件。这意味着有一个定期(每天、每月)执行的工作,采用最后保存的状态,应用更改(到期付款、实际付款、全局常量的更改,如中央银行控制的罚款率),并保存结果状态。

第一个变体的好处:

  • 总是真实的。如果对过去的日期进行了更改(一个人在他向银行付款后 5 天带着一张已付款的发票来了),它们将正确反射(reflect)在结果中。

第一个变体的缺陷:

  • 计算时间长
  • 如果正确的数据因输入了追溯日期的操作而发生变化,则使用当前结果打印的文档可能会有所不同。

第二种变体的好处:

  • 工作速度快,聚合数据始终可用于搜索和报告。
  • 计算更简单

第二种变体的缺陷:

  • 易受失败工作的影响。
  • 过去的错误一直传播到最后,直到最终结果。
  • 如果来自过去交易的新数据到达,则不能更改中间结果(它可以,但是很难,并且会产生很多影响,所以我宁愿将其标记为 Tabu)
  • 如果存在未完成的交易(已开具但尚未支付的发票),则无法顺利执行工作

还有别的办法吗?我可以结合这两者的好处吗?您遇到过的其他类似系统中使用了哪一个?请分享任何经验。

最佳答案

这种性质的问题总是比它们最初出现时更复杂。这是我喜欢称之为 Rumsfeldian problem of the unknown unknown 的结果.基本上,无论您现在做什么,都要准备好根据 future 的任意规则进行调整。

这是一个艰难的提议。一些可能对 future 产生重大影响的可能性您的计算模型是回溯付款、调整和费用。宽恕的利息期也可能成为一个问题(特别是如果追溯)。要求提供各种时间点 (PIT) 计算,这些计算基于当时“已知”的内容PIT(过去的过去 View )或考虑引用 PIT 之后发生的交易被追溯至引用之前的 PIT(过去的当前 View )。这种性质的计算可以是真是头疼。

我的建议是从“从头开始”计算(即第一个变体)。仅实现优化(例如第二个变体)必要时满足性能限制。从头开始计算是计算密集型的模型,但在适应意外左转方面通常更灵活。

如果性能是一个问题,但复杂因素的频率(例如,回溯交易)相对较低,您可以探索采用两种变体中最好的混合模型。在这里你存储当前状态和向前计算仅使用自上次存储状态以来发布的那些交易来创建新的当前状态。如果你打了一个“并发症”重新做整个帐户从开始重建当前状态。

从长远来看,能够在不触发重写的情况下适应意外情况可能更为重要现在比剃须计算时间。除非万不得已,否则不要对您的计算模型施加限制。保存当前状态通常会带来许多内置的假设和限制,这些假设和限制会减少回旋余地适应 future 的需求。

关于algorithm - 如何管理交易、债务、利息和罚款?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4508138/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com