test(refactor): SwapInterestScenario3And4 诚实化——去掉 return 0m, 从交易开始日逐日真实收盘
- 删除 StubSwapDealService.GetConsumedInterest 的 硬编码(此前注释明写"与生产缺陷态一致",
等于把唯一会出错的机制整个屏蔽, 断言缺陷态输出, 伪绿)。
- 改为复用生产同一口径: 对真实收盘经 PersistFlowEvent 累积的 swap_flow_event
(EventType∈{互换,自动互换}, DataState=完成, EventDate<结算日) 求和 —— 数据来自真实代码执行, 非硬编码。
- TestableSwapEodPositionService 新增 FlowEvents 捕获 + override PersistFlowEvent, 供 GetConsumedInterest 真实计算(不连库)。
- 新增 E2EEodService: 从交易开始日(TradeDate)逐日驱动真实 SwapPositionCompose 构建 eod 链,
再把真实 eod 快照喂给平仓; 平仓走生产同一入口 SaveAutoEodWithCloseInterestPosition。
- 全程无硬编码输入: FR007 曲线/名义本金/日期均来自 Excel 场景真源, 计算全走真实代码。
- 验证: 24/24 通过(SKIP_INITIALIZATION); PrepaidPrincipal 追踪测试 2/2 通过; 基类改动无回归。
- 注: ConsumedInterestScenarioTest.CI_008 既有失败(复利重置日本金继承, 与本回合无关, 未触碰该文件), 另议。
This commit is contained in:
@@ -27,6 +27,15 @@ namespace YLErp.Modules.SwapModule
|
||||
/// <summary>捕获所有持久化的 eod 持仓(按调用顺序)</summary>
|
||||
public List<eod_swap_position> PersistedPositions { get; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// 捕获所有持久化的互换流水事件(按调用顺序)。
|
||||
/// 生产 PersistFlowEvent 写 DbContext.swap_flow_event;GetConsumedInterest 也读同一张表。
|
||||
/// 测试不连库,这里把真实收盘产生的 swap_flow_event 收集起来,
|
||||
/// 使 GetConsumedInterest 能像生产一样从"真实累积的流水"里算已结利息,
|
||||
/// 而无需硬编码、无需连库。这是消除"return 0m"伪绿的关键。
|
||||
/// </summary>
|
||||
public List<swap_flow_event> FlowEvents { get; } = new();
|
||||
|
||||
/// <summary>SaveAllChanges 调用次数</summary>
|
||||
public int SaveChangesCount { get; private set; }
|
||||
|
||||
@@ -49,6 +58,16 @@ namespace YLErp.Modules.SwapModule
|
||||
PersistedPositions.Add(position);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 捕获真实收盘产生的 swap_flow_event(生产写 DbContext.swap_flow_event)。
|
||||
/// 与 PersistEodSwapPosition 同理,这里只收集不写库,供 GetConsumedInterest 真实计算。
|
||||
/// </summary>
|
||||
protected override void PersistFlowEvent(swap_flow_event flowEvent)
|
||||
{
|
||||
if (flowEvent.id == 0) flowEvent.id = _nextId++;
|
||||
FlowEvents.Add(flowEvent);
|
||||
}
|
||||
|
||||
protected override void SaveAllChanges()
|
||||
{
|
||||
SaveChangesCount++;
|
||||
|
||||
Reference in New Issue
Block a user