Commit Graph
13 Commits
Author SHA1 Message Date
hjhan b548709371 Revert "fix(swap): 互换审核通过后到期日状态流转为已到期"
This reverts commit 83f44124c6.
2026-07-01 17:07:55 +08:00
hjhan f7d23dc132 revert: 撤销单利consumedInterest扣除(双重扣减导致1天利息变0)
单利起点InterestProfitSum已含历史累计(eod快照),
再减consumedInterest会双重扣减。复利起点是0(从头算),
减consumedInterest正确。两者计算结构不同不能套用。

正确方向:让InterestProfitSum在互换结清后归零(eod层方案B),
而非在计算时减consumedInterest。待重新设计单利修复方案。

测试还原为红灯(Assert redCount>0),注释更新说明正确方向。
2026-07-01 13:38:24 +08:00
hjhan 83f44124c6 fix(swap): 互换审核通过后到期日状态流转为已到期
ApproveSwapTrade(cs:1558-1571)状态分支只判CloseMethod==全部平仓,
无ExerciseDate到期判断。互换CloseMethod默认0(Unknown)必走else→
TradeStatus退回确认成交→EodCheckMaturityTrade一直阻止收盘。
对比免审核路径SwapIncome(cs:1512)有正确的到期判断。
引入点083848fb(2025-05-28审核流程重构)。

改动(SwapDealService.cs cs:1579后):
在td.Notional=td.TradeAmount之后补到期判断(避免清零被覆盖):
if(eventType==互换 && ExerciseDate<=ValueDate)→已到期+清零Notional

副作用控制:
- 加eventType==互换条件→不影响平仓(eventType=2)审核
- 放cs:1579之后→Notional=0不被td.Notional=td.TradeAmount覆盖
- ExerciseDate<=ValueDate→非到期互换不进分支

验证: Step1坐实28/28互换事件走else分支, Step3验证3条到期互换→已到期
发现平仓部分平仓+到期也有类似问题(GL-20260420-0003),待业务确认处理方式
2026-07-01 13:02:43 +08:00
hjhan 1eb791381a fix(swap): 单利路径扣除历史已结利息consumedInterest
复利路径已由c6adb3bb修复(加consumedInterest扣除),单利路径
CalcDailySimpleInterest未同步。互换结清后再平仓默认值偏大。

改动(SwapDealService.cs 3处):
- cs:437 去掉InterestType==复利条件,单利也取GetConsumedInterest
- cs:707 单利调用传入consumedInterest参数
- cs:802/856 CalcDailySimpleInterest签名加consumedInterest+末尾扣除

验证(Step1_SimpleInterestRedTest): 1813单利样本
34203偏大量8271→0, 34204预付金偏大量58→0(修正测试口径漏乘ratio)
复利回归(1889): 6-30默认值仍6.44无退化
2026-07-01 13:02:15 +08:00
hjhan 3118c44365 互换三个bug的TDD红灯/绿灯测试
单利利息偏大(红灯): Step1_SimpleInterestRedTest 用1813坐实
单利路径(CalcDailySimpleInterest)未加consumedInterest扣除,
默认值偏大8271(历史已结利息未扣)。复利路径c6adb3bb已修。

审核状态卡死(红灯): SwapApproveStatusStuckTest 3个方法
坐实28/28互换事件CloseMethod=0走else分支(无ExerciseDate判断),
当前3笔交易实际卡死(到期+确认成交)。Step2分析副作用:Notional清零
需放cs:1577之后避免被td.Notional=td.TradeAmount覆盖。

重收盘误删(绿灯确认): Step1加修复后逻辑模拟,确认排除manualClientCashIds
后手动互换记录不再被命中(78751f0a已修)。
2026-07-01 12:22:57 +08:00
hjhan cd03fc53fb 互换两个独立bug分析文档+诊断测试
Bug①利息默认值偏大: 互换结清后eod的InterestProfitSum(待实现)没归零
(=RealizedInterest=77.26), 导致后续平仓默认值=77.26(本该0)+增量→偏大。
6-29收盘后三天对比坐实: 6-30默认83.70, 7-1默认90.14, 均含已实现的77.26。
根因 eod公式cs:829 对互换场景扣减失效(TdInterestIncome≈TdCloseInterest抵消)。

Bug②收益结算审核后状态卡死: ApproveSwapTrade(cs:1525)漏ExerciseDate判断,
到期互换审核后状态退回'确认成交'(CloseMethod默认0≠全部平仓1),
导致EodCheckMaturityTrade一直阻止收盘。引入点083848fb(2025-05-28)。

- 新增利息偏大分析文档(根因/修复方案A扣RealizedInterest/B eod归零)
- 新增审核状态卡死分析文档(根因/修复补ExerciseDate判断)
- 新增SwapPartialUnwindInterestDefaultTest(Step0探查/Step0b诊断/Step0d三天对比)
2026-07-01 09:57:25 +08:00
hjhan 6f9aa5fb45 互换重收盘误删手动互换资金记录: 分析文档+TDD红灯测试
问题:重新收盘后用户手动互换产生的资金记录(ClientCashInCashOut,
Action=系统操作-互换)被误删。根因 ClearSwapPositions:400 按 Action
字符串模糊删除,而该 Action 手动/自动共用,表无来源字段区分。
引入点 commit 44e89726(2026-05-14)。

- 新增决策文档(根因/引入时间/三种修复方案/自测方法)
- 新增 SwapReEodDeleteManualCashRecordTest 4个测试(探查/诊断/录制红灯/离线校验)
- 录制 golden 坐实 bug: trade 1903 手动互换资金记录 id=13032 会被误删
2026-07-01 08:35:58 +08:00
hjhan 029475ce8d test(swap): 新增互换分红重复计算录制测试+排查SQL(TDD红灯)
分红被重复计入 RealizedPnl 两次的根因:互换/平仓事件的 MarkClosePnl
已含分红成分(DividendIn),导致分红既进 RealizedMtmPnL(盯市列) 又进
RealizedDividend(分红列)。本次提供数据证据与回归基线:

- SwapDividendGoldenRecordTest: 连库录制1875(纯分红型)/1891(混合型)
  5表快照→JSON golden,录制时逐事件拆解 MarkClosePnl=价差+费+分红,
  按 PositionId 汇总出重复计入的分红金额。Step2 离线校验已通过。
  诊断结论:1875 重复302400,1891 重复-18.66,均与 eod 分红列吻合。
- golden JSON 纳入源码树(全量复制规则),修复后可作回归基线。
- 排查SQL工具箱: 基于真实DDL核对全部列名(swap_flow_event.EventDate/
  bond_payment_info.paying_interest 等),含定位样本/导出/验证/守恒4步。
- appsettings.json 测试库 zszq→glms 前缀修正。

详见 项目文档/互换分红损益字段语义与重复计算分析.md(9e6af84e)。
2026-06-26 09:13:37 +08:00
吴方海 524f9a5cd8 利息计算单元测试用例添加 2026-06-02 14:41:17 +08:00
吴方海 3d06e59908 盘中平仓利息修复 2026-05-27 18:24:05 +08:00
吴方海 45cb3a1239 修复成交日算了利息 2026-05-11 18:59:56 +08:00
吴方海 95686f4c4d #EQD-5718 【缺陷转需求】-国联民生-利息端计息方式与结算规则扩充 2026-05-08 15:09:58 +08:00
hjhan 5afc7fa279 ```
test(swap): 添加收益互换端到端持仓服务集成测试

- 新增 SwapEodPositionServiceIntegrationTest 集成测试类
- 实现 DealInterests 方法的分支覆盖测试
- 添加真实数据准备和多种利息模式测试场景
- 配置新的数据库连接字符串用于测试环境
- 更新项目依赖包以支持集成测试功能
```
2026-02-13 18:12:00 +08:00