refactor(swap): InitInterestDate 删除死子句 td.StartDate>interestStart + 触发场景注释归因修正
分析定谳:interestStart 经三条赋值路径(=开始日/不算头+1天/preSettleDate 且仅当 ≥interestStart 才覆盖)恒 ≥ td.StartDate,第二 OR 子句恒 false——死代码删除。 注释归因同时修正两侧旧错误: - 原注释把"不算头首日"笼统挂在返回 true 上——实际由第一子句 interestStart>interestEnd 兜住(StartDate+1>StartDate); - 候选修正案"观察日当日已结息(preSettleDate 覆盖窗口末)"亦不精确——日期相等 时函数返回 false,当日已结息的利息归零在 GetInterests closeList 净额层; 只有相等叠加到期日不算尾回拨(endDate-1)才严格大于而触发。 新增三条 InitInterestDate 直测钉边界:不算头首日空窗/同日已结息日期相等非空/ 同日已结息+到期日回拨空窗。 验证:GLMS20260817Fr007UnwindMorningTest 36/36;全量 981 例 145 败与基线 diff=0
This commit is contained in:
@@ -655,7 +655,8 @@ namespace YLErp.Modules.SwapModule
|
||||
|
||||
// 计算计息区间
|
||||
int interestPeriod = position.interest_rest_days ?? 1;
|
||||
// true=计息窗口为空(不计利息,利率与金额归零;典型场景=互换当日已结息,但判定只看日期窗口,与事件类型无关)
|
||||
// true=计息窗口为空(不计利息,利率与金额归零;典型触发=不算头首日/不算尾到期日回拨翻转,
|
||||
// 判定只看日期窗口与事件类型无关;当日已结息日期相等时窗口非空,归零由下方 closeList 净额层处理)
|
||||
bool interestWindowEmpty = InitInterestDate(unwindDate, preDealDate, td, tdClose, out DateTime startDate, out DateTime endDate);
|
||||
|
||||
// 获取利率(保证金/融资腿共用:SwapIntervalList 取当日适用固定利率 + 精度收口)
|
||||
|
||||
Reference in New Issue
Block a user