Files
zszq-trs/YLErpDAL/Modules/SwapModule/Margin/MarginLeg.cs
T
hjhan 55284fb76b refactor(margin): 抽出独立 Margin 限界上下文,移除 PrepayLeg 错误继承
- 新建 YLErp.Modules.SwapModule.Margin:MarginBalance / MarginLeg / IMarginResolver(Cash/Credit/Guarantee)

- MarginLeg 不继承 IInterestLegStrategy,与利息腿完全解耦(保证金是客户存款/担保,非互换腿)

- 删除 PrepayLeg,工厂不再注册 mode 5/6 预付金

- 预付金用例迁入 MarginLegTest,旧 InterestLegStrategyTest 改为断言预付金已非利息腿
2026-08-10 22:09:09 +08:00

23 lines
1.2 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
namespace YLErp.Modules.SwapModule.Margin;
/// <summary>
/// 保证金(预付金)利息计提。独立限界上下文,不继承也不关联任何利息腿
/// IInterestLegStrategy / FixedNotionalLeg 等)——保证金是客户存款/担保,并非互换腿,
/// 套用利息腿抽象是此前的类别错误(category error)。
///
/// 本类只负责把"保证金余额"这一计息基数正确建模与计算。方向翻转、orginPv 维度纠正、
/// 持仓对齐等预付金独有逻辑不在本类(原散落在 SwapDealService / SwapEodPositionService),
/// 后续按各自独立方法迁移,保持本类最小、可单测。
/// </summary>
public sealed class MarginLeg
{
/// <summary>
/// 计算计息余额。
/// </summary>
/// <param name="marginBalance">保证金余额(现金余额 / 授信占用 / 担保品市值)。</param>
/// <param name="accrualFactor">本期计息适用比例,默认 1(不缩放)。仅部分释放等场景小于 1。</param>
/// <returns>计息基数,不含利率与日计数。</returns>
public MarginBalance CalcBalance(decimal marginBalance, decimal accrualFactor = 1m)
=> new(marginBalance * accrualFactor);
}