张名锐
|
05d3e9bc52
|
fix(swap): 修复收入值日期计算逻辑
- 移除非节假日调整逻辑,直接使用行使日期前一天作为最大收入值日期
- 简化日期计算流程,避免节假日调整导致的潜在错误
|
2026-07-06 16:49:11 +08:00 |
|
张名锐
|
6835a593b0
|
feat(swaptrade): 添加收益结算日期验证和限制功能
- 新增 MaxIncomeValueDate 属性用于限制收益结算日期上限
- 实现 parseLocalDate 函数用于解析本地日期格式
- 在前端添加日期选择器的最大日期限制和验证逻辑
- 添加 isAfterMaxIncomeValueDate 和 validateIncomeValueDate 方法进行日期验证
- 在后端添加 GetMaxIncomeValueDate 方法计算最大收益结算日期
- 实现 ValidateIncomeValueDate 对收益结算日期进行服务器端验证
- 添加 NormalizeIncomeUnwindDate 方法统一处理平仓日期
- 在模型中新增 MaxIncomeValueDate 非映射属性用于前端显示
- 更新日期格式化函数确保日期字符串的一致性处理
|
2026-07-06 15:20:21 +08:00 |
|
hjhan
|
32bcf9beb9
|
refactor(swap): FindTrade seam上提基类消除三子类重复
SwapDealService/SwapEodPositionService/SwapFlowEventService 三处 FindTrade(int)
签名和实现完全一致(DbContext.trade.Find),上提到 SwapTradeBaseService 基类。
核对确认可安全上提的只有 FindTrade(三者逐字一致):
- FindTradeExtend 不可上提: SwapEodPositionService 用 FirstOrDefault,
SwapFlowEventService 用 First(找不到抛异常),语义不同。
- FindPositions 不可上提: SwapEodPositionService 含 IsInitial 持仓,
SwapFlowEventService 排除 IsInitial + AsNoTracking,语义不同。
测试 stub override FindTrade 跨基类层级正常工作,C# virtual 多态不受影响。
SwapModule 171测试全绿,无回归。
|
2026-07-03 09:52:57 +08:00 |
|
hjhan
|
e4a92c93ee
|
feat(swap): 后端只读校验告警-搬FrontendCalcReference+SwapIncome/SwapUnwind插校验
前端保持快速反馈(用户改输入立即算),后端不替代前端,仅做合理性兜底校验。
1. 搬FrontendCalcReference到YLErpDAL/Helpers(测试与生产共用同一份公式,避免分叉)
- 从FrontendCalcCharacterizationTest提取,改public,8个FC测试搬迁后全绿验证一致
2. SwapDealService新增ValidateFrontendPnL只读校验:
- 从unwindData.FlowEvents取浮动腿,PosiGrossPrice==0时跳过(避免误报)
- 调FrontendCalcReference重算,与前端传值逐字段比对
- 差异>0.01记Logger.Error(带输入快照便于排查)
- 整体try/catch吞异常,校验自身错误绝不阻断交易
- SwapUnwind/SwapIncome各插一处(FindTrade后、ExecuteInTransaction前)
不碰NLog配置(告警进Console,生产由运维采集)。SwapModule 157测试全绿。
|
2026-07-03 09:04:57 +08:00 |
|
hjhan
|
129e4bed0d
|
test(swap): 补ApproveSwapTrade/ApplySwapTrade测试+3个seam(借鉴testable分支)
借鉴 origin/glms/feature/refactor-swap-event-testable 的 SwapUnwindScenarioTest 场景4/5,
补全当前分支缺失的平仓审批流程覆盖。
SwapDealService 新增3个 protected virtual seam:
- FindSwapEvent(查待审核事件)
- FindFlowEventsByEventId(查事件关联流水)
- CloseReCheckSetTrade(前置校验包装)
ApproveSwapTrade/ApplySwapTrade 重构为调seam,生产行为不变。
SwapDealSettlementTest 新增2个测试(SD_005/006,共6个):
- SD_005 ApproveSwapTrade 全平仓审核: 反序列化swap_event.EventData→资金流水→TradeStatus
- SD_006 ApplySwapTrade 提交审核: CloseReCheck前置校验+SwapRealizedPnL=SwapCloseAmount
融合策略: 保留当前分支SwapIncome资金流水断言独特价值(SD_001/002),
借鉴testable分支审批流程覆盖(SD_005/006),不二选一。
SwapModule 157测试全绿,无回归。
|
2026-07-03 08:30:36 +08:00 |
|
hjhan
|
a207927f1b
|
test(swap): SwapDealService抽7个virtual seam + 手动结算内存测试
攻克SwapIncome/SwapUnwind零单元测试覆盖的盲区(此前仅DBRecording,CI不跑)。
SwapDealService补7个protected virtual seam(参考已验证的SwapEodPositionService模式):
- FindTrade/AddClientCash/SaveSwapDeal(原private改protected virtual)
- SaveAllChanges/ExecuteInTransaction/CallSaveSwapTradeClientCash/TriggerRealtimeSwapPosition
生产实现行为不变,SwapIncome/SwapUnwind/ApproveSwapTrade重构为调seam。
新增SwapDealSettlementTest.cs(4个内存测试):
- SD_001 SwapIncome资金流水金额=-SwapRealizedPnL
- SD_002 含预付金返息双流水
- SD_003 SwapUnwind全平仓持仓归零+状态变更
- SD_004 DealFloatPosition含费价重算(后端唯二真做计算处)
红灯验证通过(改错金额符号测试立即失败)。
|
2026-07-03 08:22:43 +08:00 |
|
张名锐
|
b2dce0e4f7
|
fix(swap): 修复互换交易流程事件数据填充问题
- 添加SwapTradeNo、EventType和EventReason字段到流程事件
- 修正EventType枚举类型从SwapEventTypeEnum改为SwapFlowEventTypeEnum
- 在SaveSwapDeal方法中添加交易信息验证逻辑
- 提取FillSwapFlowEvent方法统一处理流程事件数据填充
- 优化数据库保存操作确保数据一致性
|
2026-07-02 14:28:47 +08:00 |
|
hjhan
|
f501ee95a7
|
test(swap): 复利consumedInterest扣除合成测试(补c6adb3bb覆盖缺口)
c6adb3bb加的复利consumedInterest扣除此前无任何测试覆盖。
现在用4个合成测试完整验证:
改动(SwapDealService.cs):
- GetConsumedInterest加virtual关键字(测试可override注入内存值)
新增(ConsumedInterestScenarioTest.cs):
- StubSwapDealService override TryGetFloatRate+GetConsumedInterest
(模仿T0/T1的StubSwapDealService模式)
- CI_001: 基线(consumedInterest=0)拿到全程复利利息
- CI_002: 注入consumedInterest后利息=基线-consumed(直接验证cs:793)
- CI_003: 守恒(consumed+利息=基线)×3组不同consumed值
- CI_004: 全部已结(consumed=基线)平仓≈0不为负(防双重扣减)
关键发现:测试必须传settment:false走盘中平仓路径(CalcUnwindInterest),
settment:true(默认)走收盘归档路径(CalcEodInterest)不传consumedInterest。
验证: 89(T0/T1)+7(DealInterests)+4(ConsumedInterest)=100全通过。
|
2026-07-01 18:40:48 +08:00 |
|
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 |
|
锦麟 王
|
c6adb3bb8a
|
BugFix 复利计算的没有扣除手动互换长生的利息端费用
|
2026-07-01 10:34:58 +08:00 |
|
锦麟 王
|
d9fc5965d3
|
BugFix 系统中MarkCloseValue歧义部分修改
|
2026-06-26 16:06:13 +08:00 |
|
锦麟 王
|
ab70531f17
|
MarkClosePnl 不要重复计算分红
|
2026-06-26 11:03:22 +08:00 |
|
锦麟 王
|
1c9b28ff0d
|
互换审核时对持仓sotckeqvnotional不要调整
|
2026-06-25 20:34:53 +08:00 |
|
hjhan
|
276c1c2961
|
修复互换收益结算期末价不可编辑及刷新图标缺失
ab09cbc9为支持自动互换期间付息,误将期末标的价格改为纯文本不可编辑,
并删除了changeUnderlyingPrice/refreshUnderlyingPrice方法。开发误解了需求:
自动互换默认填上次互换价是后端逻辑,手动互换时期末价应可编辑+刷新(与平仓页一致)。
对齐平仓页(SwapUnwind)恢复:
- incomeSwapTrade.js: 恢复changeUnderlyingPrice、refreshUnderlyingPrice方法
- SwapIncome.cshtml: 期末价列恢复vue-number-input输入框+刷新图标
- SwapDealService.cs/InitIncome: 补充注释说明TradingAmountNetAvg字段
虽名为期末语义但此处装入期初净价,避免后续混淆
|
2026-06-25 14:41:55 +08:00 |
|
吴方海
|
ab09cbc9ca
|
#EQD-6196 国联民生-收益互换期间付息支持自动支付
|
2026-06-18 10:33:04 +08:00 |
|
吴方海
|
535497c68a
|
收到平仓或互换利息修复
|
2026-06-04 13:23:31 +08:00 |
|
吴方海
|
19f8d9a8de
|
修复当日多次部分平仓场景
|
2026-06-02 14:25:30 +08:00 |
|
吴方海
|
3c895a2bd7
|
代码优化
|
2026-06-02 14:17:00 +08:00 |
|
吴方海
|
0fe5e9744d
|
盘中单复利计算分开,复利不取上一次收盘,直接从新算
|
2026-06-02 11:25:59 +08:00 |
|
吴方海
|
30b6c6a429
|
#EQD-6089 国联民生-利息多算一天:修复部分平仓利息计算错误问题
|
2026-06-01 17:00:44 +08:00 |
|
吴方海
|
4e53f822ab
|
盘中部分平仓逻辑挪到内部
|
2026-05-29 14:39:44 +08:00 |
|
吴方海
|
53c89f1e26
|
当日多次平仓修复
|
2026-05-29 14:00:23 +08:00 |
|
吴方海
|
50d0fdacbc
|
#EQD-6089 国联民生-利息多算一天:未收盘,直接平仓修复
|
2026-05-28 14:07:20 +08:00 |
|
吴方海
|
3d06e59908
|
盘中平仓利息修复
|
2026-05-27 18:24:05 +08:00 |
|
吴方海
|
4c570c512e
|
收盘利息修复
|
2026-05-14 16:25:23 +08:00 |
|
吴方海
|
01953f599b
|
#EQD-5888 国联民生-预付金返息计算错误
|
2026-05-13 16:57:35 +08:00 |
|
吴方海
|
45cb3a1239
|
修复成交日算了利息
|
2026-05-11 18:59:56 +08:00 |
|
吴方海
|
bb95eb1396
|
代码回退
|
2026-05-11 18:38:58 +08:00 |
|
吴方海
|
bdaab1dee9
|
#EQD-5857 资金记录-预付金返息和利息金额不正确
|
2026-05-11 17:57:08 +08:00 |
|
吴方海
|
8852d4d51a
|
收盘利息修复
|
2026-05-11 16:29:50 +08:00 |
|
吴方海
|
95686f4c4d
|
#EQD-5718 【缺陷转需求】-国联民生-利息端计息方式与结算规则扩充
|
2026-05-08 15:09:58 +08:00 |
|
hjhan
|
95ce3a3c8c
|
fix(swap): 修复互换实时持仓服务异常处理和结算模块计算问题
- 添加try-catch块包装RealtimeSwapPosition调用以捕获异常
- 记录互换实时持仓服务计算失败的日志
- 修复结算模块金额计算中的空引用问题
- 为unwind百分比、原始名义金额和计数比率添加空值检查
|
2026-04-16 16:54:17 +08:00 |
|
hjhan
|
6708878d6a
|
feat(swap-trade): 新增收益互换交易功能
- 实现了收入互换交易的前端界面和交互逻辑
- 添加了平仓日期、标的价格、交易费用等字段的处理
- 集成了价格格式化和数值精度控制功能
- 实现了浮动端平仓盈亏计算逻辑
- 添加了利息端信息获取和平仓金额计算
- 集成了审批流程和复核机制
- 实现了后端服务层的平仓初始化和利息计算功能
- 添加了多空组合平仓和收益互换的业务逻辑
- 集成了底层数据库模型和服务类
- 实现了价格缓存和数据验证机制
|
2026-04-14 09:09:18 +08:00 |
|
嬴政 时
|
d8d7dee562
|
修复平仓为计算税的问题, 修复日终结算未考虑起算日的问题.
|
2025-10-24 14:53:13 +08:00 |
|
gongpei
|
1bbdd47497
|
修复平仓时计息使用事件日期
|
2025-10-23 22:42:27 +08:00 |
|
gongpei
|
de184dfdd6
|
还原平仓时付息记录。
|
2025-10-23 21:14:39 +08:00 |
|
gongpei
|
5ee62775b7
|
fix: 计算平仓分红
|
2025-10-23 18:58:26 +08:00 |
|
gongpei
|
8b8eb19ddc
|
fix: 浮动端待实现收益分红
|
2025-10-23 17:30:50 +08:00 |
|
gongpei
|
f5463e4a57
|
fix: 流水的分红计算
|
2025-10-23 17:10:05 +08:00 |
|
gongpei
|
866f13d85e
|
fix: 手动平仓分红收益计算
|
2025-10-23 15:25:47 +08:00 |
|
gongpei
|
80a2b4057d
|
fix: 计算浮动端平仓盈亏分红
|
2025-10-22 16:14:32 +08:00 |
|
gongpei
|
89df4443bd
|
feat: 债券付息收盘处理
|
2025-10-21 13:43:32 +08:00 |
|
吴方海
|
dc1df57dcf
|
TRS-ZS-560 费用保留2位落库,平仓利息保留2位,估值保留2位
|
2025-06-30 10:20:50 +08:00 |
|
吴方海
|
e721f5ea5d
|
平仓成交金额不是平仓名义本金
|
2025-06-13 16:44:44 +08:00 |
|
吴方海
|
955f790626
|
平仓名义本金保留2位小数
|
2025-06-13 15:53:32 +08:00 |
|
吴方海
|
002488bb71
|
平仓名义本金与剩余名义本金公式调整
|
2025-06-13 14:59:20 +08:00 |
|
吴方海
|
f7e6f7f40e
|
平仓,如果平仓名义本金>持仓名义本金 =持仓名义本金
|
2025-06-13 13:26:56 +08:00 |
|