hjhan
24266cfad4
fix(swap): 多次部分平仓预付金返还默认显示初始值(GLMS-20260701-0008)
根因: GetUnwindInterests 利息腿迭代源取 origPositions(IsInitial=1),
其预付金腿 InterestPrincipalFix 恒为初始值(99000); 而"当前剩余本金"(73260)
存于实时腿 realPositions(IsInitial=0)。CalcNotionalByMode 与 InitSwapDealInterest
均读 position.InterestPrincipalFix, 导致多次部分平仓后平仓页默认按初始本金计算
返还。首次平仓 orig==real 掩盖了 bug, 故此前"只修好一次部分平仓"。
修复: 抽纯函数 ResolveInterestLegPositions(orig, real)——迭代源仍用 origPositions
(保留 orig.id -> eod_swap_position.PositionId 的日终匹配, 全库 eod 均按 orig.id 归档,
换 realPositions 会破坏 preEod 匹配导致利息重算错误), 仅对预付金腿(初始5/追加6)
Clone 覆盖 InterestPrincipalFix 为实时腿剩余本金; real.PositionId == orig.id 精确
1:1 关联; orig==real 时返回原始腿本身不克隆。
测试: 新增 SwapUnwindPrepayOrigVsRealBugTdd(6 用例)直接单测该纯函数, 覆盖既有
19 个用例(均绕过 orig/real 选择)的盲区。dotnet test --filter SwapUnwindPrepay
25 passed(19+6) 失败 0。
2026-07-16 10:49:12 +08:00
..
2026-07-02 09:11:38 +08:00
2026-07-02 08:39:39 +08:00
2026-07-01 18:40:48 +08:00
2026-07-02 09:02:43 +08:00
2026-07-02 09:37:18 +08:00
2026-07-01 18:25:44 +08:00
2026-07-03 09:04:57 +08:00
2026-06-02 14:41:17 +08:00
2026-06-02 14:41:17 +08:00
2026-07-02 10:47:23 +08:00
2026-07-02 09:37:18 +08:00
2026-07-03 09:38:05 +08:00
2026-07-03 09:26:13 +08:00
2026-07-02 09:20:41 +08:00
2026-07-02 12:59:16 +08:00
2026-07-03 09:38:05 +08:00
2026-07-01 17:07:55 +08:00
2026-06-26 09:13:37 +08:00
2026-02-13 18:12:00 +08:00
2026-07-03 18:12:52 +08:00
2026-07-01 13:38:24 +08:00
2026-07-03 18:37:46 +08:00
2026-07-01 12:22:57 +08:00
2026-07-16 10:49:12 +08:00
2026-07-14 17:23:33 +08:00
2026-07-03 18:12:52 +08:00
2026-07-03 18:12:52 +08:00
2026-07-03 09:26:13 +08:00
2026-07-03 09:20:59 +08:00