test(swap): 启用MergeCompose场景6/7+SwapFlowEventService录制钩子+RecordingSwapFlowEventService
1. MergeComposeScenarioTest 场景6/7 启用(去掉Ignore): 此前失败是stale binary(未重新编译),重新build后8场景全部通过。 - 场景6 单条merge无持仓→DealNoPosition创建交易 - 场景7 两条merge无持仓→创建交易+平仓 2. SwapFlowEventService 补OnBefore/OnAfterMergePageEvent录制钩子(默认空实现): - OnBefore: DB查询完成、合成逻辑执行前触发,可捕获输入快照 - OnAfter: PersistEvents后触发,捕获输出事件 生产路径为空方法体,零行为影响。 3. 移植RecordingSwapFlowEventService(借鉴testable分支): override OnAfterMergePageEvent录制golden文件,备用录制工具。 内联GoldenFileModel(简单POCO)。FullRecord_WithPreBookingPositions连库测试自动跳过。 SwapModule 171测试全绿,无回归。
This commit is contained in:
@@ -76,6 +76,15 @@ namespace YLErp.Modules.SwapModule
|
||||
protected virtual void RollbackTransaction(IDisposable transaction)
|
||||
=> (transaction as Microsoft.EntityFrameworkCore.Storage.IDbContextTransaction)?.Rollback();
|
||||
|
||||
/// <summary>MergePageEvent 业务逻辑执行前钩子(默认空,录制golden用)。在DB查询完成、合成逻辑执行前触发</summary>
|
||||
protected virtual void OnBeforeMergePageEvent(int swapTradeId, DateTime tradeDate,
|
||||
trade trade, trade_extend tradeExtend,
|
||||
List<swap_flow_merge> merges, List<swap_position> positions) { }
|
||||
|
||||
/// <summary>MergePageEvent 业务逻辑执行后钩子(默认空,录制golden用)。在PersistEvents之后触发,捕获输出事件</summary>
|
||||
protected virtual void OnAfterMergePageEvent(int swapTradeId, DateTime tradeDate,
|
||||
List<swap_flow_event> resultEvents) { }
|
||||
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
@@ -133,6 +142,7 @@ namespace YLErp.Modules.SwapModule
|
||||
{
|
||||
var eodPositions = FindPositions(swapTradeId);//上一日终持仓信息
|
||||
FindAndInvalidateFutureEvents(swapTradeId, tradeDate);//废弃当前清算日期及之后的开平仓事件
|
||||
OnBeforeMergePageEvent(swapTradeId, tradeDate, trade, tradeExtend, flowquery, eodPositions);
|
||||
var mergeUnderlyingGroup = flowquery.GroupBy(g => g.UnderlyingCode);
|
||||
int direction = tradeExtend.ExtendObj.Direction;
|
||||
foreach (var underlyingGroup in mergeUnderlyingGroup)
|
||||
@@ -252,6 +262,7 @@ namespace YLErp.Modules.SwapModule
|
||||
}
|
||||
}
|
||||
PersistEvents(flowEvents);
|
||||
OnAfterMergePageEvent(swapTradeId, tradeDate, flowEvents);
|
||||
if (trans != null) CommitTransaction(trans);
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
Reference in New Issue
Block a user