refactor(swap): 合并多空名义本金参数为单一 posiTotalNotional 并加固测试
- DealInterests 的 posiLongNotionalValue + posiShortNotionalValue 合并为 posiTotalNotional(调用点以 posiLongNotional+posiShortNotional 求和传入),净减一个参数 - SwapDealService / SwapEodPositionService / InterestCalcRequest 同步收敛多空死管道参数 - 19 个测试调用点适配新签名 - SwapEodPositionServiceIntegrationTest 参数计数断言由裸数字改为参数名集合断言(CollectionAssert.AreEquivalent,对增删/重排/改名敏感)
This commit is contained in:
@@ -8,7 +8,8 @@ namespace YLErp.Modules.SwapModule;
|
||||
/// GetInterestsEntrySemanticsTest 的口径留档),位置参数无法表达该约束。
|
||||
///
|
||||
/// 用法:只能经两个场景工厂构造——工厂形参名即该场景语义(平仓前剩余 / 平仓后剩余 / 实际平掉额),
|
||||
/// 物理上防止两套语义混传。needPrice/grossPrice 为原方法死参数(体内零消费),本对象不承载。
|
||||
/// 物理上防止两套语义混传。needPrice/grossPrice(原方法死参数)与 posiLong/posiShortNotionalValue
|
||||
/// (多空组合子系统删除后计息链零消费的管道死参数)均不承载。
|
||||
/// </summary>
|
||||
public sealed class InterestCalcRequest
|
||||
{
|
||||
@@ -21,8 +22,6 @@ public sealed class InterestCalcRequest
|
||||
|
||||
/// <summary>当日适用名义本金。语义随场景:盘中=平仓【前】剩余;EOD平仓后收盘=平仓【后】剩余;EOD增量=当前剩余。</summary>
|
||||
public decimal PosiNotionalValue { get; }
|
||||
public decimal PosiLongNotionalValue { get; }
|
||||
public decimal PosiShortNotionalValue { get; }
|
||||
|
||||
/// <summary>本次实际平掉本金(两场景恒同义)。mode2 无条件覆盖 / mode9 全平兜底的输入。</summary>
|
||||
public decimal ClosePosiNotionalValue { get; }
|
||||
@@ -40,15 +39,14 @@ public sealed class InterestCalcRequest
|
||||
private InterestCalcRequest(
|
||||
trade td, trade_extend tradeExtend, DateTime valueDate, DateTime unwindDate,
|
||||
List<eod_swap_position> eodPositions, List<swap_position> positions,
|
||||
decimal posiNotionalValue, decimal posiLongNotionalValue, decimal posiShortNotionalValue,
|
||||
decimal posiNotionalValue,
|
||||
decimal closePosiNotionalValue, decimal closePercent,
|
||||
int eventType, bool tdClose, decimal orginPv,
|
||||
bool add, bool newCalcLast, List<swap_flow_event> closeList)
|
||||
{
|
||||
Td = td; TradeExtend = tradeExtend; ValueDate = valueDate; UnwindDate = unwindDate;
|
||||
EodPositions = eodPositions; Positions = positions;
|
||||
PosiNotionalValue = posiNotionalValue; PosiLongNotionalValue = posiLongNotionalValue;
|
||||
PosiShortNotionalValue = posiShortNotionalValue; ClosePosiNotionalValue = closePosiNotionalValue;
|
||||
PosiNotionalValue = posiNotionalValue; ClosePosiNotionalValue = closePosiNotionalValue;
|
||||
ClosePercent = closePercent; EventType = eventType; TdClose = tdClose; OrginPv = orginPv;
|
||||
Add = add; NewCalcLast = newCalcLast; CloseList = closeList;
|
||||
}
|
||||
@@ -62,13 +60,11 @@ public sealed class InterestCalcRequest
|
||||
public static InterestCalcRequest IntradayUnwind(
|
||||
trade td, trade_extend tradeExtend, DateTime valueDate, DateTime unwindDate,
|
||||
List<eod_swap_position> eodPositions, List<swap_position> positions,
|
||||
decimal preCloseNotional, decimal preCloseLongNotional, decimal preCloseShortNotional,
|
||||
decimal closedNotional, decimal closePercentRemaining,
|
||||
decimal preCloseNotional, decimal closedNotional, decimal closePercentRemaining,
|
||||
int eventType, bool tdClose, decimal orginPv,
|
||||
bool add, bool newCalcLast, List<swap_flow_event> closeList)
|
||||
=> new(td, tradeExtend, valueDate, unwindDate, eodPositions, positions,
|
||||
preCloseNotional, preCloseLongNotional, preCloseShortNotional,
|
||||
closedNotional, closePercentRemaining,
|
||||
preCloseNotional, closedNotional, closePercentRemaining,
|
||||
eventType, tdClose, orginPv, add, newCalcLast, closeList);
|
||||
|
||||
/// <summary>
|
||||
@@ -80,12 +76,10 @@ public sealed class InterestCalcRequest
|
||||
public static InterestCalcRequest EodPostCloseSettle(
|
||||
trade td, trade_extend tradeExtend, DateTime valueDate, DateTime unwindDate,
|
||||
List<eod_swap_position> eodPositions, List<swap_position> positions,
|
||||
decimal remainingNotionalAfterClose, decimal remainingLongNotional, decimal remainingShortNotional,
|
||||
decimal closedNotional,
|
||||
decimal remainingNotionalAfterClose, decimal closedNotional,
|
||||
int eventType, bool tdClose, decimal orginPv,
|
||||
bool add, bool newCalcLast)
|
||||
=> new(td, tradeExtend, valueDate, unwindDate, eodPositions, positions,
|
||||
remainingNotionalAfterClose, remainingLongNotional, remainingShortNotional,
|
||||
closedNotional, 1m, // 恒1:本次事件全额结息(非 closeNational / 期初比例)
|
||||
remainingNotionalAfterClose, closedNotional, 1m, // 恒1:本次事件全额结息(非 closeNational / 期初比例)
|
||||
eventType, tdClose, orginPv, add, newCalcLast, closeList: null);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user