Commit Graph
953 Commits
Author SHA1 Message Date
张名锐 32a3a45c85 refactor(swap): 修复债券日终价格映射
- 移除 GetSwapValuationPrice 方法中的 posiGrossPrice 参数
- 删除债券价格转换相关的注释代码和日志记录
- 简化债券价格处理逻辑,直接使用原始价格进行四舍五入
- 更新所有调用 GetSwapValuationPrice 的地方以匹配新方法签名
- 移除多余的价格转换和展示态判断逻辑
2026-07-23 14:17:26 +08:00
张名锐 a91010589a fix: Bonds枚举对应的值改回Bond 2026-07-23 14:16:50 +08:00
张名锐 bc961c3411 fix(swap): 修复互换交易中债券价格精度处理问题,扩充到11位计算
- 统一债券价格四舍五入规则,使用AwayFromZero模式
- 为债券类型添加特殊的精度处理逻辑
- 修复前端价格显示精度计算问题
- 优化价格存储精度控制,区分债券和其他产品类型
- 修复初始化YTM和净价精度处理问题
- 更新价格验证逻辑以支持动态精度设置
2026-07-23 11:06:50 +08:00
张名锐 018136c615 fix(swap): 修复收益互换价格转换和初始保证金计算问题
- 移除债券价格显示态和存储态转换的错误判断逻辑
- 简化债券价格转换条件,只对债券标的进行存储态转换
- 添加初始保证金计算前的金额精度统一处理
- 重构初始保证金准备逻辑到独立方法中
- 修复因价格单位不一致导致的浮动损益计算错误
2026-07-23 10:13:09 +08:00
张名锐 bbf98ba61c fix(data): 修正债券常量定义
- 将 Bonds 常量值从 "Bond" 更正为 "Bonds"
2026-07-22 18:08:04 +08:00
张名锐 c58a9d40c4 feat(swap): 统一【期初、期末交割价格】精度处理
- 在ConsGlobal中新增SwapDeliveryPriceRound常量定义为9位小数
- 更新incomeSwapTrade.js中交割价格计算逻辑,添加getStorageDeliveryPrice方法
- 修改SwapConsumerService中TradingAmountAvg字段的精度处理
- 添加ValidateDeliveryPrices和NormalizeDeliveryPrices方法进行交割价格验证和标准化
- 在SwapEodPositionService中对PosiGrossPrice和UnderlyingPrice进行精度处理
- 更新SwapFlowEventService中TradingAmountAvg字段的精度处理
- 在SwapFlowImportService中添加交割价格精度处理
- 更新前端界面中的输入格式配置,使用新的交割价格精度设置
- 修改SwapflowList.js中交割价格精度处理逻辑
- 在SwapFlowService中添加交割价格验证和精度处理
- 更新SwapTradeAutoService中交割价格精度处理
- 修改SwapTradeService中PosiGrossPrice字段的精度处理
- 更新unwindSwapTrade.js中交割价格计算逻辑
2026-07-22 14:53:46 +08:00
张名锐 0755233ab6 fix(swap): 统一处理【名义本金】数值精度舍入问题
- 在多个位置添加 Math.Round 函数确保金额计算精度
- 新增 NormalizeNotionalValues 方法统一处理 UnwindData 中的名义本金舍入
- 修复交易平仓时 StockEqvNotional 扣减计算的精度问题
- 解决持仓数据 PosiNotionalValue 的精度舍入处理
- 修复前端页面显示格式化问题
- 添加单元测试验证名义本金舍入逻辑正确性
2026-07-22 13:05:49 +08:00
hjhan e7c6e432e1 test: 修复陈旧 golden 与恢复 Step1 Ignore
golden_互换结清后待实现归零.json 的 RealizedPnl 0->8.219(f4ffe710 修复后未重录,8.219为正确值); SwapReEodDeleteManualCashRecordTest.Step1 恢复 [Ignore](与类头契约一致,避免污染入库 golden)。
2026-07-21 15:28:17 +08:00
hjhan 985162242d feat(greeks): 新增 risk-factor bump 计算与注册
ParameterBase.Clone() 保留运行时类型深拷贝; ValueCalculator 两个薄接入方法; GreeksBumpCalculator/GreeksRiskFactor 引擎。加法性重定价桥,不动现有定价输出。
2026-07-21 15:28:15 +08:00
hjhan a179675efd refactor(swap-deal): 前端盈亏校验抽为 SwapFrontendPnlValidator
BuildFrontendValidationDiffs/FrontendPnlDiff/AddDiffIfOverThreshold 从2043行 SwapDealService 移至新文件,本文件仅留调用+日志。纯位置迁移,零行为变更。
2026-07-21 15:28:14 +08:00
hjhan a153a1d1a6 refactor(swap-eod): 抽出期末头寸纯函数并放宽可见性
SetFixedLegRealizedPnl 替换4处复制粘贴(清理L1296双分号); NormalizeInterestSignForReport 替换16行内联报表分支; CalculateWeightedMarginInterest private->public static。均为纯静态无实例依赖,配套无库单测锁定行为。
2026-07-21 15:28:13 +08:00
hjhan 494a7a06cc test(swap): 修正平仓利息复现用例标的代码为 2500002.IB
- 将 GLMS20260703CloseInterestTest 中 UnderlyingCode 由 511160.SH 更正为真实标的 2500002.IB
- 核心复现用例(复利真实FR007→-13667.85 / 单利→-13668.02)保留, 作为代码级验算样例
2026-07-20 18:41:16 +08:00
hjhan 98bfe8fb5d test(swap): 增加 GLMS-20260703-0002 平仓利息复现用例(真实FR007+真实函数)
- 调用系统 GetInterests 真实路径(复利/单利两条), 用截图中的真实 FR007 定盘值
  在 07-06/07-13 两个重置点真实取数, 复现系统值 -13,667.85 与业务实际值 -13,668.02
- 断言两者差异 0.17 元来自复利第二段本金并入
- 仅保留调用系统函数的断言, 不内嵌手算, 验算见 GLMS20260703_平仓利息验算.xlsx
2026-07-20 18:31:19 +08:00
张名锐 f4ffe71071 fix(swap): 修复期末头寸已实现盈亏计算问题
- 在新创建的期末付款头寸中添加已实现盈亏字段计算
- 对历史数据的利息和已实现利息进行符号标准化处理
- 添加预付金腿利息方向与保证金本金方向的反向逻辑
- 兼容修复前已落库的利息腿数据缺失已实现盈亏字段问题
- 统一风险报表按绝对金额和业务方向的数据口径
2026-07-20 15:28:40 +08:00
张名锐 a0f8dc9df7 refactor(SwapModule): 简化预付金利息计算逻辑
- 移除本金绝对值加权平均的复杂计算方式
- 直接对各腿利息金额进行轧差求和
- 保留收取为正、支付为负的方向转换逻辑
- 删除不再使用的本金权重计算代码
- 简化方法实现并提高计算效率
2026-07-20 09:30:01 +08:00
tengyufan 48742649ba 国联民生收益互换交易确认书模板字体修复 2026-07-17 16:52:59 +08:00
lisong ec5da002f4 Merge remote-tracking branch 'dest/glms/feature/1.4.2' into feature/p132_74-risk-engine 2026-07-17 15:41:32 +08:00
尹峰 cd170faf8d Merge branch 'feature/p132_74-risk-engine' of https://gitee.glmszq.com/gsty/onederiv/trs into feature/p132_74-risk-engine 2026-07-17 15:39:46 +08:00
尹峰 b2d5fb9900 修改规则&应用默认状态为停用 2026-07-17 15:39:25 +08:00
ruisu 87199f18d6 Merge branch 'feature/p132_74-risk-engine' of https://gitee.glmszq.com/gsty/onederiv/trs into feature/p132_74-risk-engine 2026-07-17 14:30:12 +08:00
ruisu 9b98a0dd88 feat:风控引擎执行异常或者现场编译异常时视为不通过,并且返回前端,落数据库 2026-07-17 14:29:44 +08:00
尹峰 b51d39e0ff 增加变量批量删除功能 2026-07-17 14:27:27 +08:00
张名锐 8aa06c1b72 ```
refactor(report): 修改山西结算报告文件生成方法

- 在GenerateFileEntry方法中添加applyFrontendColumnConfig参数,默认值为true
- 更新GenerateReportExcel方法签名以接收applyFrontendColumnConfig参数
- 将ApplySwapValuationColumnConfig调用包装在条件判断中
- 修正PDF和Excel文件生成时的参数传递
- 更新XML文档注释以反映新参数的作用
```
2026-07-17 13:35:23 +08:00
张名锐 c41e677042 Merge remote-tracking branch 'origin/glms/feature/1.4.2' into glms/feature/1.4.2 2026-07-17 13:17:39 +08:00
张名锐 7fac6e13a8 feat(swaptrade): 实现收益结算审批页面期末价格回显功能
- 在incomeSwapTrade.js中修改TradingAmountAvg赋值逻辑,区分普通打开和审批打开场景
- 新增resolveIncomeTradingAmountAvg函数处理审批回显和普通默认值的不同逻辑
- 审批打开时保留已提交的期末全价,普通打开时使用期初全价作为默认值
- 统一债券价格×100缩放到界面百分比显示格式
- 添加单元测试验证审批回显和普通打开的功能差异
2026-07-17 13:17:28 +08:00
hjhan 42602055de test(eod): 为 FR007 入库 UnderlyingId 守卫补纯函数单测
- EodPriceService 抽出纯函数 ResolveUnderlyingIdForCode(行为不变),SyncUnderlyingIdFromCode 调用之,便于无库单测
- 新增 EodPriceUnderlyingIdGuardTest:7 用例全过,覆盖空代码/标的不存在维持原值、已一致不改动、FR007 错行(511160.SH=2173889、159111.SZ=2173890)校正为 2170838、非错配不互相覆盖
- 对应根因:GLMS-20260701 FR007 价格行 UnderlyingId 错挂导致网页查得到/结算查不到
2026-07-17 11:24:11 +08:00
尹峰 b849841545 Merge branch 'feature/p132_74-risk-engine' of https://gitee.glmszq.com/gsty/onederiv/trs into feature/p132_74-risk-engine 2026-07-17 11:04:15 +08:00
尹峰 180f113433 优化变量保存校验和变量公式替换逻辑 2026-07-17 11:03:43 +08:00
hjhan e261137c1d fix(swap): 修复多次部分平仓 ClosePercent 口径(A占期初→B占剩余)转换缺失
- SwapDealService.ApplySwapTrade 入口补 ToRemainingClosePercent(A→B) 转换,与 SwapUnwind 保持一致;缺此转换导致 SaveSwapDealInternal 的 B→A 还原出错(GLMS-20260701-0006:第二次部分平仓50%被错误还原为32.5%)
- unwindSwapTrade.js 改用 swapCalc.calcCloseQtyByOriginalPercent 的 roundHalfAwayFromZero,规避 JS 浮点精度偏差(32500000*(0.5/0.65) 应为 25000000)
- SwapUnwind.cshtml 引入 swapCalc.js
- 新增 ApplySwapTradeClosePercentBugTest 回归测试;补充 swapCalc.test.js 精度用例与 GLMS20260701DbDiagnoseTest 诊断测试([Ignore])
2026-07-17 10:59:18 +08:00
张名锐 4f23ad9c0f Merge remote-tracking branch 'origin/glms/feature/1.4.2' into glms/feature/1.4.2 2026-07-17 10:58:41 +08:00
张名锐 415539704d fix(swap): 修复债券结息价差盈亏计算逻辑
- 将价差盈亏计算从使用CloseNotionalValue改为使用PositionQty和ContractSize
- 更新前端JavaScript代码中的计算公式,按持仓数量和合约乘数计算价差盈亏
- 在UnwindInput模型中添加PositionQty和ContractSize字段
- 修正后台计算服务中的数据映射逻辑
- 添加FC_009测试用例验证债券价差按数量计算的正确性
- 更新现有测试用例的输入参数以匹配新的计算方式
2026-07-17 10:58:31 +08:00
hjhan 75988a33eb fix: eod_commodity_future_price 入库前以 UnderlyingCode 重派生 UnderlyingId,防止 FR007 等价格行 UnderlyingId 与 FutureContractId 失同步
- 新增 EodPriceService.SyncUnderlyingIdFromCode:入库前以 UnderlyingCode(FutureContractId) 为准反查真实 UnderlyingId,不一致则告警并自动校正
- SaveEodFuturePrice(web编辑/新增)、SettlementPriceImportService(xlsx上传)、EodSyntheticPriceSaveService(系统合成价) 写入前调用
- 根治'网页端能查到、EOD结算查不到'的失同步问题
2026-07-17 10:32:57 +08:00
ruisu 9dad4cb8d0 fix:风控引擎的数据库对象不再采用全局,防止追踪所有查询出的对象 2026-07-17 10:28:21 +08:00
张名锐 f37a5b997c Merge remote-tracking branch 'origin/glms/feature/1.4.2' into glms/feature/1.4.2 2026-07-17 10:02:18 +08:00
张名锐 ce0908c53b fix(swap): 修复浮动端已实现盈亏计算逻辑
- 添加了SetFloatingRealizedPnl方法统一计算已实现盈亏
- 已实现盈亏现在正确包含盯市、分红和费用三个组成部分
- 修复了多处RealizedPnl计算错误,确保数值准确性
- 为DF_008测试场景添加了专门的单元测试验证
- 移除了重复的盈亏计算代码,提高代码可维护性
2026-07-17 10:02:06 +08:00
hjhan dddf0782bd Merge branch 'origin/feature/p132_74-risk-engine' into glms/feature/1.4.2 (规则批量启用/应用审批优化) 2026-07-17 09:57:08 +08:00
ruisu bcb1ee25b1 Merge branch 'feature/p132_74-risk-engine' of https://gitee.glmszq.com/gsty/onederiv/trs into feature/p132_74-risk-engine 2026-07-17 09:27:39 +08:00
ruisu d9002e8d36 feat:修改测试用例 2026-07-17 09:27:25 +08:00
ruisu 1110e2b3ef feat:优化特批处理流程与日志落库 2026-07-17 09:26:04 +08:00
hjhan 21b86c871f test(trade): 补 23108016 互换/期权本次名义本金分支单元测试
抽 CalcSwapCloseNotionalFromEventData 和 CalcOptionCloseNotional 为 public static 纯函数, BuildTriggerContext 了结场景改为调用这两个函数. 新增 13 个单元测试覆盖: 互换分支 EventData null/空/非法JSON/正数/负数/零 容错与绝对值, 期权分支 两者null/单边null/正数相乘/负数容错 绝对值语义. 重点锁定静默 catch 容错契约, 防止 EventData 异常时名义本金变 0 绕过审批阈值.
2026-07-17 08:45:49 +08:00
hjhan 2395aa9856 test(swap): 补 6676b625 掉期保证金利息方向反向单元测试
抽 CalculateSwapRealizedPnl 为 public static 纯函数(用 ConsTrade.InterestMarginModels 替代实例 marginTypes), 新增 8 个单元测试覆盖: 非保证金腿收取/支付原向, 保证金腿(初始预付金/追加预付金)收取/支付反向, 完整 5 字段汇总两种方向, RealizedInterest=0 边界. 锁定 6676b625 修复的保证金腿利息方向反向契约, 防止后续误改回归.
2026-07-17 08:40:19 +08:00
hjhan 96a64ae82d test(swap): 修复 GLMS20260701DbDiagnoseTest 编译错误并加 2.3c 模拟 API 流程
L208-209 Convert.ToDecimal 修复 double?  decimal 隐式转换错误(CS0266)和非 nullable double ?? 0 错误(CS0019). 新增 2.3b 直接调用 ResolveInterestLegPositions 验证 Clone 行为, 2.3c 模拟 controller 完整流程(ToRemainingClosePercent + GetUnwindInterests) 等价于 HTTP API. 该测试带 [TestCategory(DbDiagnose)] 标记不进 CI, 作为可重复手动诊断工具保留.
2026-07-17 08:24:00 +08:00
hjhan 43679393bb test(swap): 补 e2fb456b InitUnwind 默认 ClosePercent 单元测试
抽 CalcDefaultInitClosePercent 静态纯函数(PosiNotionalValue/NotionalValue), InitUnwind L270 改为调用此函数, 新增 6 个单元测试覆盖: 未平仓/已平30%/除零保护/GLMS-20260701-0013 真实快照/与 ToRemainingClosePercent 联动自洽不变式/全平完边界场景. 填补 e2fb456b 提交的测试覆盖缺口.
2026-07-17 08:23:50 +08:00
张名锐 059867424d Merge remote-tracking branch 'origin/glms/feature/1.4.2' into glms/feature/1.4.2 2026-07-16 21:25:52 +08:00
张名锐 2495c01f68 feat(report): 添加互换估值列配置功能
- 引入 Newtonsoft.Json 用于列配置的序列化处理
- 实现 ApplySwapValuationColumnConfig 方法应用用户自定义列配置
- 添加 ReorderSwapValuationColumns 方法重新排序可见列
- 在每日估值报告导出时同步业务字段显示状态和列顺序
- 使用临时工作表避免 EPPlus 扩列时的 ColumnMax 冲突
- 确保列配置损坏时不影响报告导出功能
2026-07-16 21:25:46 +08:00
hjhan 62c26bd7f5 fix 部分平仓 选择切换 会导致不一致,浮动端会错误 2026-07-16 20:57:18 +08:00
张名锐 cd9fed9913 Merge remote-tracking branch 'origin/glms/feature/1.4.2' into glms/feature/1.4.2 2026-07-16 20:54:11 +08:00
张名锐 46f1d0b8db feat(report): 更新结算报告服务的小数位格式化处理
- 修改注释说明以明确去尾零和固定小数位的展示要求
- 添加浮动利率和预付金利率的固定四位小数格式化功能
- 新增SetFixedExcelText方法用于固定小数位数显示
- 确保百分比数据正确应用四位小数格式化
2026-07-16 20:53:31 +08:00
hjhan e2fb456bc3 fix 平仓(InitUnwind L267)硬编码 1而不是剩余平仓比例 2026-07-16 20:07:50 +08:00
尹峰 3385113133 Merge branch 'feature/p132_74-risk-engine' of https://gitee.glmszq.com/gsty/onederiv/trs into feature/p132_74-risk-engine 2026-07-16 19:58:40 +08:00