test(swap): GLMS-20260105-0007分红精度差异golden红灯(复现0.36差异)

用真实测试库数据录制golden,回放复现0.36精度差异:
- 互换前 PosiDividendSum=-90400,互换支付-400
- 期望 PosiDividendSum=-90000,实际=-89999.64,差异0.36
- 回放断言失败(红灯坐实bug)

根因:UpdateEodPosition cs:1635从头重算PosiDividendSum
(Round(全程,2)-已实现),与CopyEodPosition逐天递增
(每天Round(增量,2)累积)产生舍入误差。

录制方法Record_FromRealDB标[Ignore],手动跑生成golden。
回放方法Replay_VerifyPrecisionDiff进CI,当前红灯(期望=-90000,实际=-89999.64)。
This commit is contained in:
hjhan
2026-07-02 10:28:23 +08:00
parent d11e332ff3
commit 0e045d89db
2 changed files with 588 additions and 0 deletions
@@ -0,0 +1,394 @@
{
"TradeNumber": "GLMS-20260105-0007",
"TradeId": 1924,
"SwapDate": "2026-03-03",
"Description": "分红精度差异:互换前-90400,互换后应为-90000,实际-89999.64",
"KeyFloatEodPositions": [
{
"ValueDate": "2026-03-02",
"PositionId": 35148,
"PosiDividendSum": -90400.000000,
"TdPosiDividend": -90400.000000,
"TdCloseDividend": 0.0,
"RealizedDividend": 0.0,
"PosiQuantity": 50000000.000000,
"PosiMtmPnL": -500000.000000
},
{
"ValueDate": "2026-03-03",
"PositionId": 35148,
"PosiDividendSum": -89999.640000,
"TdPosiDividend": 0.0,
"TdCloseDividend": -400.000000,
"RealizedDividend": -400.000000,
"PosiQuantity": 50000000.000000,
"PosiMtmPnL": -500000.000000
},
{
"ValueDate": "2026-03-04",
"PositionId": 35148,
"PosiDividendSum": -89999.640000,
"TdPosiDividend": 0.0,
"TdCloseDividend": 0.0,
"RealizedDividend": -400.000000,
"PosiQuantity": 50000000.000000,
"PosiMtmPnL": -500000.000000
}
],
"AllFloatEodDividends": [
{
"ValueDate": "2026-01-05",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-01-06",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-01-07",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-01-08",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-01-09",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-01-10",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-01-11",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-01-12",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-01-13",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-01-14",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-01-15",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-01-16",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-01-17",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-01-18",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-01-19",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-01-20",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-01-21",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-01-22",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-01-23",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-01-24",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-01-25",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-01-26",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-01-27",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-01-28",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-01-29",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-01-30",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-01-31",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-02-01",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-02-02",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-02-03",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-02-04",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-02-05",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-02-06",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-02-07",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-02-08",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-02-09",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-02-10",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-02-11",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-02-12",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-02-13",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-02-14",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-02-15",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-02-16",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-02-17",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-02-18",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-02-19",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-02-20",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-02-21",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-02-22",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-02-23",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-02-24",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-02-25",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-02-26",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-02-27",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-02-28",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-03-01",
"PosiDividendSum": 0.0,
"TdPosiDividend": 0.0,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-03-02",
"PosiDividendSum": -90400.000000,
"TdPosiDividend": -90400.000000,
"RealizedDividend": 0.0
},
{
"ValueDate": "2026-03-03",
"PosiDividendSum": -89999.640000,
"TdPosiDividend": 0.0,
"RealizedDividend": -400.000000
},
{
"ValueDate": "2026-03-04",
"PosiDividendSum": -89999.640000,
"TdPosiDividend": 0.0,
"RealizedDividend": -400.000000
}
]
}