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:
hjhan
2026-07-03 09:38:05 +08:00
parent f0ef37b599
commit b501e21904
3 changed files with 364 additions and 5 deletions
@@ -92,12 +92,8 @@ namespace YLErp.Modules.SwapModule
#endregion
#region 6merge + DealNoPosition
// TODO: 场景6/7 借鉴自 testable 分支,当前分支 DealNoPosition 内部实现细节
// (floatRate/swap_position 查询) 与 testable 分支有差异,CreatedTrades 捕获不到。
// 校验链场景(1-5,8)已通过,创建交易路径待 DealNoPosition seam 对齐后启用。
[TestMethod]
[Ignore]
public void Scenario6_SingleMerge_NoPosition_ShouldCreateOneTrade()
{
var client = CreateClient();
@@ -122,7 +118,6 @@ namespace YLErp.Modules.SwapModule
#region 7merge + DealNoPosition +
[TestMethod]
[Ignore]
public void Scenario7_TwoMerges_NoPosition_ShouldCreateTradeAndUnwind()
{
var client = CreateClient();