锦麟 王
|
365711b5ff
|
自动互换分红时,期末结算全价使用PosiGrossPrice
|
2026-07-02 13:02:14 +08:00 |
|
hjhan
|
0910969e3f
|
fix(swap): PosiDividendSum精度差异修复(GLMS-20260105-0007)
问题:互换后PosiDividendSum=-89999.64(应为-90000),差0.36元。
根因:UpdateEodPosition cs:1635从头重算PosiDividendSum
(Round(全程,2)-已实现),与CopyEodPosition逐天递增
(每天Round(增量,2)累积)产生舍入误差累积。
修复:cs:1635改为递增模式
PosiDividendSum = eod.PosiDividendSum + TdPosiDividend - TdCloseDividend
与InterestIncomeSum的递增模式一致,避免从头重算的精度差异。
验证(golden录制/回放TDD):
- 真实数据录制GLMS-20260105-0007的eod快照+输入数据
- 回放重新调UpdateEodPosition:修复前=-89999.64(红灯),
修复后=-90000(绿灯,精确匹配)
- 121个测试全通过,无回归
|
2026-07-02 10:47:23 +08:00 |
|
hjhan
|
7c993f7bb2
|
refactor(swap): DealFloatPositions外部依赖虚方法接缝(分红场景准备)
加3个protected virtual虚方法:
- GetUnderlyingPrice: 标的市场价格(原UnderlyingCodePrice)
- GetUnderlyingData: 标的缓存数据(原DataCacheProvider)
- CalcBondPayment: 债券付息(原new BondPaymentService)
替换CopyEodPosition/UpdateEodPosition/SaveCurrentEodInitalPosi
内部的外部调用为调虚方法,生产代码行为不变。
这3个接缝使浮动腿归档的分红计算可测(TdPosiDividend/PosiDividendSum)。
验证: 108个测试全通过。
|
2026-07-02 08:57:55 +08:00 |
|
hjhan
|
4138a6ec36
|
refactor(swap): DealFloatPositions浮动腿归档方法可见性放开(testable迁移)
4个方法private→protected,不改变生产行为:
- DealFloatPositions(浮动腿归档主调度)
- CopyEodPosition(无平仓复制前日)
- UpdateEodPosition(有平仓更新)
- SaveCurrentEodInitalPosi(首日初始化)
这4个方法本身无直接DB调用(数据从参数传入),
但CopyEodPosition/UpdateEodPosition依赖外部数据源
(UnderlyingCodePrice/BondPaymentService/DataCacheProvider),
需后续加接缝才能完整测试。
SaveCurrentEodInitalPosi是纯计算可直接测。
验证: 104个测试全通过。
|
2026-07-02 08:47:30 +08:00 |
|
hjhan
|
7f0529bbed
|
test(swap): ComposePage流水合成持仓合成测试(testable迁移)
新增4个ComposePage场景测试(参考testable分支ComposePageScenarioTest):
- CP_001: 空事件→不创建持仓
- CP_002: 单条开仓→创建1条持仓,均价=开仓价
- CP_003: 两条开仓(同标的)→加权均价
- CP_004: 开仓+平仓→平仓扣减数量+产生资金记录
改动(SwapEodPositionService.cs):
- SaveEodPosition改为protected virtual(可override绕过UpdateSwapPosition连库)
- SaveEodPosition内部DbContext.Add替换为PersistEodSwapPosition
StubEodPositionService override 12个虚方法:
FindTrade/FindTradeExtend/FindEodSwapPositions/FindSwapPositions/
FindEodSwap/AddSwapEvent/AddClientCash/SaveEodSwapRecord/
ClearSwapPositionsForCompose/PersistEodSwapPosition/SaveAllChanges/
GetCurrencyRate + SaveEodPosition
验证: 100+4=104全通过(T0/T1=89+DealInterests=7+ConsumedInterest=4+ComposePage=4)。
|
2026-07-02 08:39:39 +08:00 |
|
hjhan
|
886a4d3ab1
|
refactor(swap): ComposePage补充接缝-AddClientCash/SaveEodSwapRecord/ClearSwapPositionsForCompose
ComposePage内部还有3处DB依赖需要接缝:
- AddClientCashInCashOut(cs:804平仓资金记录) → AddClientCash虚方法
- SaveEodSwap(cs:862框架合约汇总) → SaveEodSwapRecord虚方法
- ClearSwapPositions(cs:729清理旧事件) → ClearSwapPositionsForCompose虚方法
测试时override这3个虚方法可避免连库。
验证: 100个测试全通过。
|
2026-07-02 08:34:49 +08:00 |
|
hjhan
|
014edaed45
|
refactor(swap): ComposePage接缝-7虚方法+DB调用替换(testable迁移)
ComposePage(流水合成持仓)是swap_flow_event→swap_position的核心转换,
每笔开仓/平仓/互换都经过这里(176行)。
新增7个protected virtual虚方法(Seams):
- FindTrade/FindTradeExtend/FindSwapPositions
- FindEodSwapPositions/FindEodSwap
- AddSwapEvent/ExecuteInTransaction
ComposePage内部DB调用替换为调虚方法:
- DbContext.trade.Find → FindTrade
- DbContext.trade_extend.FirstOrDefault → FindTradeExtend
- DbContext.eod_swap_position.Where → FindEodSwapPositions
- DbContext.swap_position.Where → FindSwapPositions
- DbContext.eod_swap.FirstOrDefault → FindEodSwap
- new SwapEventService.AddSwapEventDate → AddSwapEvent
- DbContext.SaveChanges → SaveAllChanges(已有)
- ComposePage可见性private→protected
生产代码行为不变(虚方法默认实现=原逻辑)。
验证: 100个测试全通过(T0/T1=89+DealInterests=7+ConsumedInterest=4)。
|
2026-07-02 08:28:13 +08:00 |
|
hjhan
|
638803c497
|
refactor(swap): 阶段1c CalcSwapInterests虚方法接缝(testable迁移)
加1个protected virtual虚方法:
- CalcSwapInterests: 计算利息腿利息明细(原new SwapDealService(this).GetInterests)
参数与GetInterests完全一致,保证行为不变
将3个分支方法里的'new SwapDealService(this).GetInterests'替换为
调用CalcSwapInterests虚方法:
- SaveAutoEodInterestPosition(自动互换分支)
- SaveAutoEodWithCloseInterestPosition(平仓分支)
- SaveEodInterestPositionCopy(普通日分支)
测试子类override CalcSwapInterests,用StubSwapDealService
(已有89个测试验证)内存算利息,即可测全部4个分支。
验证: 93个测试全通过(T0/T1=89 + DealInterests=4),无回归。
|
2026-07-01 18:17:47 +08:00 |
|
hjhan
|
dc3a6e9f77
|
refactor(swap): 阶段1b SwapEodPositionService加虚方法接缝(testable迁移)
加3个protected virtual虚方法(Seams接缝),不改变生产行为:
- PersistEodSwapPosition: 持久化eod持仓(原DbContext.Add+UpdateDbOption)
- SaveAllChanges: 保存变更(原DbContext.SaveChanges)
- GetCurrencyRate: 获取汇率(原new EodCurrencyRateService)
将4个利息归档分支方法里的直接DB调用替换为调虚方法:
- SaveEodInterestPosition(互换分支)
- SaveAutoEodInterestPosition(自动互换分支)
- SaveAutoEodWithCloseInterestPosition(平仓分支)
- SaveEodInterestPositionCopy(普通计息分支)
测试子类override这些虚方法即可在内存中运行收盘逻辑,
不连数据库。生产代码行为完全不变(虚方法默认实现=原逻辑)。
验证: GetInterestsUnitTest_T0/T1 89个测试全通过,无回归。
|
2026-07-01 17:21:56 +08:00 |
|
hjhan
|
3e5a939689
|
refactor(swap): 阶段1a DealInterests利息归档方法可见性放开(testable迁移准备)
将5个利息腿归档相关方法从private改为protected,不改变生产行为:
- DealInterests(利息腿归档主调度)
- SaveEodInterestPosition(手动互换分支)
- SaveAutoEodInterestPosition(自动互换分支)
- SaveAutoEodWithCloseInterestPosition(平仓分支)
- SaveEodInterestPositionCopy(普通计息分支)
这是testable迁移第一步:先放开可见性让测试子类能调用,
后续阶段再加虚方法接缝(替换DB调用)和迁移合成测试。
参考: refactor-swap-event-testable分支 Seams模式改造
|
2026-07-01 16:47:26 +08:00 |
|
锦麟 王
|
fc90636ab4
|
当天利息端待实现逻辑修改为 = 上一天待实现 + 当天产生的利息 - flowEvents的利息
|
2026-07-01 15:20:24 +08:00 |
|
hjhan
|
47f95fcc45
|
fix(swap): 互换结清后eod待实现利息正确扣减(SaveEodInterestPosition)
SaveEodInterestPosition(cs:834)原公式:
InterestIncomeSum = pre + TdInterestIncome - TdCloseInterest
其中 TdInterestIncome = TdCloseInterest(互换日全程利息),
两者抵消导致 InterestIncomeSum=pre不变。
互换结清后待实现没归零,后续平仓默认值偏大。
修复:只改InterestIncomeSum公式为 pre - TdCloseInterest
(前日待实现 - 当日实现 = 剩余待实现)。
TdInterestIncome保持原值不动(入库字段,影响报表)。
验证需重新收盘:修复改的是eod生成逻辑,已有eod不会自动变。
|
2026-07-01 13:58:24 +08:00 |
|
张名锐
|
78751f0a57
|
feat(swap): 完善自动互换资金记录管理功能
- 在SwapEodPositionService中添加clientCashIds列表追踪多笔资金记录
- 为UnwindData类新增ClientCashIds属性存储自动互换生成的资金记录ID集合
- 在SwapTradeBaseService中实现GetAutoSwapClientCashIds方法解析历史数据
- 添加GetLegacyAutoSwapClientCashRecords方法处理遗留资金记录删除逻辑
- 实现IsLegacyAutoSwapClientCashRecord方法精确匹配待删除资金记录
- 优化资金记录删除策略区分自动互换与手动操作产生的记录
|
2026-07-01 09:53:44 +08:00 |
|
锦麟 王
|
cf2f8b6e9f
|
SwapCloseAmount分红重复计算
|
2026-06-29 16:39:02 +08:00 |
|
锦麟 王
|
1c45a54395
|
BugFix SwapCloseAmount计算位置太前,导致资金算了两遍
|
2026-06-29 16:38:34 +08:00 |
|
锦麟 王
|
1e4ab52c1e
|
平仓总额计算规则调整
|
2026-06-29 15:54:07 +08:00 |
|
锦麟 王
|
d9fc5965d3
|
BugFix 系统中MarkCloseValue歧义部分修改
|
2026-06-26 16:06:13 +08:00 |
|
锦麟 王
|
ab70531f17
|
MarkClosePnl 不要重复计算分红
|
2026-06-26 11:03:22 +08:00 |
|
锦麟 王
|
dd305444dd
|
自动分红的不要清除掉当日分红
|
2026-06-26 09:49:34 +08:00 |
|
tengyufan
|
ff69c9b6e2
|
Merge remote-tracking branch 'origin/glms/feature/1.4.2' into glms/feature/1.4.2
|
2026-06-25 20:00:25 +08:00 |
|
tengyufan
|
7f6bdde521
|
fix: DV01汇总及合计功能,优化格式化配置
1. YLErpDAL/Modules/RiskModule/QuotaMonitorService.cs
- 日终版本(QueryEodGlobalFromCalc)恢复互换行DV限额取值
2. YLErpDAL/Modules/SwapModule/SwapEodPositionService.cs
- SaveEodSwap / UpdateEodSwap 补充 eod_Swap.dv01 汇总
- SearchEodSwapList 新增DV合计,返回至前端footer
3. YLErpWeb/wwwroot/Scripts/app/swaptrade/EodPositionRisks.js
- 框架合约tab启用footerrow,展示DV合计
- 框架合约DV列formatter改为4位小数
|
2026-06-25 20:00:18 +08:00 |
|
锦麟 王
|
6662ae7e7e
|
Merge branch 'glms/feature/1.4.2' of http://git.yiliantech.com/gitlab/otc-dev/zszq-trs into glms/feature/1.4.2
|
2026-06-25 19:44:10 +08:00 |
|
锦麟 王
|
2140a97f53
|
BugFix 到期分红的,已实现和互动的修改
|
2026-06-25 19:44:00 +08:00 |
|
hjhan
|
0ab6091962
|
修复分红型自动互换在互换Tab显示期初/期末价未×100及期初净价为0
DealDividends生成分红型自动互换事件时,漏赋了UnderlyingInstrumentType和
TradingAmountNetAvg两个字段,导致互换Tab(TradeView)显示异常:
1. UnderlyingInstrumentType缺失:TradeView第654行IsBond判断为false,
multiplier=1,走了非债券分支(不×100),使期初/期末价显示为相对价(1.00)
而非百分比(100%)。补赋eodPosi.UnderlyingInstrumentType后,
与手动互换一致走债券分支(×100)。
2. TradingAmountNetAvg缺失:TradeView第993行显示期初净价取该字段,
缺失导致显示0。补赋eodPosi.PosiNetNoFeePrice修复。
入库的TradingAmountAvg(相对价)本来就正确,仅显示层判断缺字段。
仅改动DealDividends,不影响平仓/手动互换/显示层逻辑。
|
2026-06-25 18:09:50 +08:00 |
|
锦麟 王
|
90b6692222
|
#EQD-6290 日终持仓风险-互换持仓价值和已实现盈亏不正确 ; 未实现的分红到期时未去掉
|
2026-06-25 17:55:41 +08:00 |
|
锦麟 王
|
25626b845e
|
PosiDividendSum 扣除互换分红的时候方向有问题
|
2026-06-25 15:38:48 +08:00 |
|
锦麟 王
|
6d17e95197
|
收盘 分红计算逻辑中算上手动的已实现的分红
|
2026-06-25 14:33:01 +08:00 |
|
锦麟 王
|
1aba5cca00
|
后端自动分红后,互换持仓价值 已实现盈亏修改
|
2026-06-25 09:41:16 +08:00 |
|
吴方海
|
f9424d0a6d
|
分红与互换分开
|
2026-06-23 19:16:03 +08:00 |
|
吴方海
|
76913010b2
|
修复自动互换
|
2026-06-23 17:39:37 +08:00 |
|
吴方海
|
45173c50c6
|
分红保留2位小数
|
2026-06-23 11:02:19 +08:00 |
|
吴方海
|
3520f24253
|
#EQD-5994 国联民生-【风险管理】TRS合约DV计算统计
|
2026-06-23 10:48:51 +08:00 |
|
吴方海
|
ab09cbc9ca
|
#EQD-6196 国联民生-收益互换期间付息支持自动支付
|
2026-06-18 10:33:04 +08:00 |
|
张名锐
|
a4237cc178
|
fix(swap): 修复收益互换结构类型查询逻辑
- 移除了前端传入的结构类型参数限制
- 添加了对普通债券类收益互换和普通收益互换的固定查询条件
- 实现了临时方案以同时查询两种类型的收益互换数据
- 保留了原有的有效状态验证逻辑
- 注释说明了当前实现为临时解决方案
|
2026-06-10 14:13:39 +08:00 |
|
吴方海
|
30b6c6a429
|
#EQD-6089 国联民生-利息多算一天:修复部分平仓利息计算错误问题
|
2026-06-01 17:00:44 +08:00 |
|
吴方海
|
8aaccf7fc2
|
修复收盘当天有部分平仓情况利息不对
|
2026-05-29 13:34:45 +08:00 |
|
吴方海
|
3e650b8f38
|
期初标的价格(债券的)希望是小数点9位问题
|
2026-05-28 15:16:32 +08:00 |
|
吴方海
|
167dea4e2d
|
收盘互换计息基数记录修复
|
2026-05-15 10:05:48 +08:00 |
|
吴方海
|
44e8972626
|
收盘自动互换,需要将当前计息基数给回到持仓名义本金或固定值
|
2026-05-14 16:15:38 +08:00 |
|
吴方海
|
d961f48fea
|
预付金利息 方向问题修复
|
2026-05-11 15:46:55 +08:00 |
|
吴方海
|
ebe711d382
|
#EQD-5850 预付金返息的发生时间有问题
|
2026-05-11 14:18:05 +08:00 |
|
吴方海
|
95686f4c4d
|
#EQD-5718 【缺陷转需求】-国联民生-利息端计息方式与结算规则扩充
|
2026-05-08 15:09:58 +08:00 |
|
hjhan
|
99ffa9c2bb
|
style(logging): 调整日志级别从错误到信息
- 将 QuotaMonitorService 中的空值检查日志从 Error 级别改为 Info 级别
- 将 SwapEodPositionService 中的参数验证日志从 Error 级别改为 Info 级别
- 保持原有的异常抛出逻辑不变,仅修改日志输出级别
- 统一参数验证相关的日志记录方式
|
2026-03-25 10:40:12 +08:00 |
|
hjhan
|
276d53f986
|
feat(security): 添加JWT令牌受众验证和详细日志记录
- 在AuthHelper中为JWT令牌添加Issuer和Audience字段
- 在RefreshTokenMiddleware中添加SecurityTokenValidationException异常处理
- 添加Token audience验证失败的日志记录和错误处理
- 为SwapEodPositionService中的DealInterests方法添加参数验证日志
- 为SaveAutoEodInterestPosition方法添加详细的参数验证和空值检查
- 增强错误日志输出,包括令牌前缀和异常类型信息
|
2026-03-23 17:32:16 +08:00 |
|
hjhan
|
5b9f97df06
|
fix(swap): 修复EOD持仓利息收入计算逻辑InterestIncomeSum TdCloseInterest 需要考虑 ratio
- 在利息收入总和计算中添加比例因子修正
- 确保TdCloseInterest在计算中正确应用比例
- 保持利息腿损益统计逻辑的一致性
|
2026-02-13 16:50:18 +08:00 |
|
hjhan
|
aa2da0e38c
|
fix(swap): 恢复有平仓时候的 计息基数
- 将posiNotionalValue的计算从posiLongNotional + posiShortNational更改为oriPosiNotionalValue
- 确保头寸计算包含closeNational的数值
- 修正了影响利息方向计算的数量值计算逻辑
|
2026-02-13 15:57:57 +08:00 |
|
hjhan
|
5ba3618bca
|
feat(swap): 添加日志记录并修复数值计算精度问题
- 添加了静态日志记录器用于跟踪方法执行
- 在SwapPositionCompose和SwapEodCompose方法中添加详细的执行参数日志
- 为合约处理流程添加开始和结束状态日志
- 在利息腿归档逻辑中添加处理状态和参数的日志输出
- 将decimal类型的字面量从整数改为带m后缀以确保精度
- 修复了RealizedPnl计算公式,加入利息费用的影响
- 调整了名义金额计算方式,在关闭处理中排除平仓金额
- 修正了利息收入计算中的绝对值问题
- 在数据库操作前后添加详细的实体状态日志
|
2026-02-13 14:52:34 +08:00 |
|
hjhan
|
0fa526bffb
|
fix(swap): 修复期末头寸已实现利息计算逻辑
- 在累计已实现利息计算中添加比例因子
- 确保TdCloseInterest正确应用比例调整
- 保持其他费用和盈亏计算逻辑不变
|
2026-02-13 14:12:10 +08:00 |
|
hjhan
|
776cc5d9c3
|
fix(swap): 修复SwapEodPositionService互换持仓价值计算逻辑 利息考虑方向
- 移除了未使用的命名空间引用
- 修正利息模式判断条件,将小于号改为大于号
- 更新持仓价值计算公式,对利息利润乘以比例系数
- 统一多处持仓价值计算逻辑的修改
|
2026-02-12 17:19:46 +08:00 |
|
hjhan
|
83f7e04e41
|
Revert "fix(swap): EQD-4485 修复FR007方向为空头的时候, eod_swap_position的'互换持仓价值' 字段 SwapPositionValue 里面的利息汇总 需要考虑方向, 使用带方向的 InterestClosePnL"
This reverts commit 4a18dd874e.
|
2026-02-12 17:01:25 +08:00 |
|