Commit Graph
223 Commits
Author SHA1 Message Date
张名锐 32af85d35c Merge branch 'glms/feature/dotnumber' into glms/feature/1.4.2
# Conflicts:
#	YLErpWeb/Views/SwapTrade2/TradeEdit.cshtml
#	YLErpWeb/wwwroot/Scripts/app/swaptrade/swapTradeEdit.js
2026-07-23 17:53:37 +08:00
hjhan 8694e6e3f4 债券互换三字段互算:估值日(开始日)缺失报错 + 补提漏交回归用例
- 估值日严格取互换起始日 StartDate,去掉"悄悄回退交易日(TradeDate)":
  真的为空时返回错误提示("请先填写开始日…或手动填写三项数值")并 return,
  不调用计算器、不覆盖手工输入,与需求(按开始日估值)完全一致。
- 抽纯函数 getBondStartDateMissingMsg(StartDate 空→文案/null) + 导出;
  复用 D3 的 shouldShowBondErr 去重,避免空开始日时价格格逐键连刷。
- BondCalcHepler.cs 仅补 XML 注释说明前端已强制 StartDate 必填;
  targetDate 空→代理默认 T+1 行为不变(兜底 RealtimePnlCalc 旧链路)。
- 补提此前漏提交的回归用例:bondCalc.test.js(×100/÷100 端到端 + 逐字段手动锁定)、
  swapCalc.test.js(D1/D2/D3 + 本次估值日缺失守卫)。
- jest bondCalc+swapCalc 全绿(68 passed)。
2026-07-23 16:49:40 +08:00
hjhan 8b8fee9306 债券互换三字段互算:修复单位换算与重开覆盖/提示噪声(D1/D2/D3)
- 发计算器前×100、回写÷100(bondPriceToCalc/bondCalcPriceToStorage),
  根治 -117.93/378543 离谱值(存储态小数↔展示态百分比对齐)
- D1:setUnderlyingCode 切债券清空 bondManual/bondDriverType,
  避免旧债券手填态污染新债券
- D2:重开(刷新/审批重开)已保存债券单时,加载路径对三字段齐全的
  标的锁为手动态,编辑某格不联动另两格(手动覆盖跨会话 sticky)
- D3:不可算债券逐键手填时,同一失败提示只弹一次,抑制 toast 连刷
- fe-tests:+9 用例覆盖 D1/D2/D3 边界(切标的清标志/重开锁定/失败提示去重)

jest bondCalc+swapCalc 全绿(62 passed)
2026-07-23 16:37:13 +08:00
张名锐 7475bddc44 fix(tradeHelper): 无法修改后端Bonds->Bond 采用前端兼容,修复债券类型判断逻辑
- 添加了 Bond 类型到 IsBond 函数的判断条件中
- 确保 Bond 类型能够被正确识别为债券产品
2026-07-23 16:23:52 +08:00
hjhan d768a83387 test(swap-calc): 补充债券计算器单位换算端到端测试 + 精化错误提示文案
- bondCalc.test.js 新增 3 个测试:bondPriceToCalc/bondCalcPriceToStorage
  单位换算边界 + 复刻 -117.93/378543 离谱值根因验证
- swapCalc.js 注释从"主数据量纲错误"改为"前端↔计算器单位换算不匹配",
  错误提示文案优化(无逻辑变更)
- 26 个测试全通过
2026-07-23 11:35:27 +08:00
张名锐 bc961c3411 fix(swap): 修复互换交易中债券价格精度处理问题,扩充到11位计算
- 统一债券价格四舍五入规则,使用AwayFromZero模式
- 为债券类型添加特殊的精度处理逻辑
- 修复前端价格显示精度计算问题
- 优化价格存储精度控制,区分债券和其他产品类型
- 修复初始化YTM和净价精度处理问题
- 更新价格验证逻辑以支持动态精度设置
2026-07-23 11:06:50 +08:00
hjhan 63d9decd17 恢复对债券首次读取接口返回的 price / netPrice 本来就是存储态小数 (EodPrice 直接返回 DB 值;非 EodPrice 分支 ×bondPriceMultiple=0.01 2026-07-22 15:04:42 +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
hjhan e331c15a15 计算器 结果还是会被 不断 /100 2026-07-22 14:48:52 +08:00
hjhan 3cf06c2be7 债券计算器 返回结果后要进行 /100 * 100 处理 适配目前的 这个 /100 * 100,避免 很离谱的 值 2026-07-22 14:00:55 +08:00
张名锐 0755233ab6 fix(swap): 统一处理【名义本金】数值精度舍入问题
- 在多个位置添加 Math.Round 函数确保金额计算精度
- 新增 NormalizeNotionalValues 方法统一处理 UnwindData 中的名义本金舍入
- 修复交易平仓时 StockEqvNotional 扣减计算的精度问题
- 解决持仓数据 PosiNotionalValue 的精度舍入处理
- 修复前端页面显示格式化问题
- 添加单元测试验证名义本金舍入逻辑正确性
2026-07-22 13:05:49 +08:00
hjhan 1373f57884 feat(swap): 债券互算接入浮动收益端(期初三字段change触发+手动/源徽标+重算)
- swapTradeEdit.onBondPriceInput:编辑净价/全价/收益率之一即标记该字段为"已手动设过"(bondManual[type]=true) 并以之为源调 /Bond/CalcBond,反算仅填充未手填字段。

- calcBondForItem:估值日用整笔交易 trade.StartDate(回退 TradeDate→null/T+1);用 main.post(...,{alertFn:main.message}) 让业务/参数错误以非阻塞 toast 展示、绝不回写;未选债券标的先提示;回写前用 getBondCalcErrorMessage 判错。

- resetBondCalc:清空手动锁定、以当前某字段为源重新自动反算。

- setUnderlyingCode:标记浮动腿 isBond(债券标的) 以启用互算。

- TradeEdit.cshtml:三字段加 v-on:change 触发 + 绿色"源"/橙色"手动"徽标 + "重算"链接。
2026-07-22 11:36:00 +08:00
hjhan d3b47f6fa1 feat(swap): 债券净价/全价/收益率互算核心(逐字段手动锁定+错误不覆盖纯函数+测试)
- swapCalc.applyBondCalcResult(state, calc, manualSet):回写时跳过"用户手填过的字段"(逐字段手动锁定,永不覆盖),只反向填充未手填字段;EPS 去抖避免光标跳动。

- 纯函数 getBondCalcErrorMessage(resp):空响应/errCode!=0 返回文案、否则 null,与 C# errCode 守卫一一对应,保证"坏结果"不静默回写。

- 新增 jest 用例覆盖:三字段互算、逐字段锁定(手填全部三个无一被回写)、业务错误不覆盖手工输入、getBondCalcErrorMessage。85→86 全绿。
2026-07-22 11:35:53 +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
张名锐 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 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
张名锐 415539704d fix(swap): 修复债券结息价差盈亏计算逻辑
- 将价差盈亏计算从使用CloseNotionalValue改为使用PositionQty和ContractSize
- 更新前端JavaScript代码中的计算公式,按持仓数量和合约乘数计算价差盈亏
- 在UnwindInput模型中添加PositionQty和ContractSize字段
- 修正后台计算服务中的数据映射逻辑
- 添加FC_009测试用例验证债券价差按数量计算的正确性
- 更新现有测试用例的输入参数以匹配新的计算方式
2026-07-17 10:58:31 +08:00
ruisu 1110e2b3ef feat:优化特批处理流程与日志落库 2026-07-17 09:26:04 +08:00
hjhan 62c26bd7f5 fix 部分平仓 选择切换 会导致不一致,浮动端会错误 2026-07-16 20:57:18 +08:00
hjhan 238824f4f4 fix(预付金返回/平仓比例): 恢复占期初语义并在后端入口统一转占剩余
之前提交 4f46e263 误将平仓比例改为占剩余持仓(Definition B)语义,与需求不符。
正确需求:每次打开平仓/提前终止均基于最开始原始名义本金(Definition A),
但每次返回的预付金金额需正确(后端按占剩余计算)。

- SwapDealService: 新增 ToRemainingClosePercent/ToOriginalClosePercent 双语义转换;
  SwapUnwind 入口把前端传来的占期初(A)转为占剩余(B),全计算链公式不动;
  SaveSwapDealInternal 序列化前还原为 A 落库,事件列表读取即显示占期初比例。
- SwapTrade2Controller.GetUnwindInterestList: 接收期初/剩余名义本金,预览利息按 B 计算。
- unwindSwapTrade.js: 回退为占期初语义(ClosePercent/平仓名义本金用 NotionalValue,
  oriClosePercent=剩余/期初),提前终止同理。
- 单测 UW_007/008 覆盖 A→B 全平/部分平仓判定。

不影响收盘后盯市/估值(仅平仓入口与展示口径)。
2026-07-16 19:54:26 +08:00
锦麟 王 d5b43e3769 只提示不阻塞 2026-07-16 17:17:21 +08:00
张名锐 6d591fe9af Merge remote-tracking branch 'origin/glms/feature/1.4.2' into glms/feature/1.4.2 2026-07-16 13:47:29 +08:00
张名锐 10b1e34754 refactor(swaptrade): 重构EOD持仓风险导出功能的弹窗实现 - 风格统一
- 将原有的main.open2方法替换为layer.open原生实现
- 简化弹窗样式配置,移除冗余的CSS样式设置
- 使用HTML内容直接构建弹窗界面,提高可维护性
- 通过事件委托方式处理按钮点击事件
- 统一按钮样式为Bootstrap风格,提升用户体验
- 优化弹窗尺寸配置,调整为更合适的大小
2026-07-16 13:47:10 +08:00
hjhan 4f46e2634f 修复收益互换多次部分平仓预付金返还:平仓比例/名义本金改以剩余持仓为基准
unwindSwapTrade.js:
- oriClosePercent 恒为 1(Definition B 下最多平 100% 剩余,修正全部平仓/按比例少返预付金 + 进页面 getInterestList 少算)
- CloseMethod==1(全部平仓)时修正 ClosePercent=1;CloseMethod==2(部分平仓/待复核)保留已提交比例,避免覆盖
- changeCloseQty/Percent/NotionalValue 三处换算改用 PosiNotionalValue(剩余本金),不再用原始 NotionalValue

swapCalc.js: 新增 calcCloseNotionalByRemaining / calcClosePercentByRemaining 纯函数(含除零保护)
swapCalc.test.js + _shim_run.js: 补充多次部分平仓换算单测(剩余vs原始对比、第3次全平、3次合计=原始、除零保护)
2026-07-16 10:03:21 +08:00
hjhan d69faaa8e8 fix(fast): 修复 numberInput 粘贴路径 percent 字段 ×100,并补 Jest 粘贴回归单测
- fastVue.base.js: __onInput 粘贴分支原把显示值当模型值传入 setValue 导致 percent 字段 ×100;
  改为先按 __change 同款口径(去千分位逗号 + 按 percent/append:'%'/append:'‱' 除法)解析为模型值再回显,
  使 DOM/显示/模型三者一致;键盘输入路径不变
- 重新生成 Statics/bundles/bundle.js:去每个输入文件头的 UTF-8 BOM(避免 bundle 中间出现 ZWN BSP 不可见字符),
  页面实际加载 bundle.js(改源文件必须重生成 bundle 才生效)
- 新增 numberInput.paste.test.js 覆盖 percent:true/append:%/append:‱/普通数字 4 类字段的 Ctrl+V 粘贴(Jest+jsdom,4 passed)
- fe-tests package.json 增加 jest-environment-jsdom、jquery 依赖
2026-07-15 12:58:08 +08:00
锦麟 王 00ab542d39 Merge branch 'glms/feature/1.4.2' of http://git.yiliantech.com/gitlab/otc-dev/zszq-trs into glms/feature/1.4.2 2026-07-15 11:14:35 +08:00
锦麟 王 420bb2a291 隐藏“投资规模”选项 2026-07-15 11:14:26 +08:00
hjhan 05826fe7d5 debug(fast): 为 numberInput 粘贴路径加 F12 诊断日志并清理 bundle.js 中的 BOM
- fastVue.base.js: 在 __onInput 粘贴分支和 __change 加入 console.log,
  输出 raw/parsed/append/percent,便于在浏览器 F12 排查粘贴值实际走向
- 重新生成 bundle.js,并去掉每个输入文件头的 BOM,避免 bundle.js 中间出现 ZWN BSP 不可见字符
2026-07-15 11:08:25 +08:00
hjhan ea313dc1c6 fix(fast): 修复 numberInput 粘贴路径 percent 字段 ×100,并补 Jest 粘贴回归单测
- fastVue.base.js: __onInput 粘贴分支原把显示值当模型值传入 setValue 导致 percent 字段 ×100;
  改为按 __change 同款口径先解析为模型值再回显,键盘输入路径不变
- 新增 numberInput.paste.test.js 覆盖 percent:true/append:%/append:‱/普通数字 4 类字段的 Ctrl+V 粘贴
- fe-tests package.json 增加 jest-environment-jsdom、jquery 依赖
2026-07-15 10:18:26 +08:00
锦麟 王 24b43d535e Merge branch 'glms/feature/1.4.2' of http://git.yiliantech.com/gitlab/otc-dev/zszq-trs into glms/feature/1.4.2 2026-07-15 09:39:23 +08:00
锦麟 王 fac84c8fa5 BugFix 交易新增与修改 2026-07-15 09:39:08 +08:00
张名锐 fdbb7b363a Merge remote-tracking branch 'origin/glms/feature/1.4.2' into glms/feature/1.4.2 2026-07-14 17:22:24 +08:00
张名锐 2d2ea6c509 ```
feat(swaptrade): 优化框架合约导出功能

- 新增导出列名配置数组 eodSwapExportColumnNames
- 实现框架合约标签页导出列名自动同步
- 移除冗余的分组表头初始化逻辑
- 添加导出方式选择对话框支持两种导出模式
- 扩展工具函数支持自定义导出列名参数
- 重构导出逻辑统一处理不同导出场景
```
2026-07-14 17:21:58 +08:00
hjhan b9462510de Merge branch 'merge/p132_74-risk-engine-into-1.4.2' into glms/feature/1.4.2 2026-07-14 15:14:27 +08:00
锦麟 王 74690c1783 Merge branch 'glms/feature/1.4.2' of http://git.yiliantech.com/gitlab/otc-dev/zszq-trs into glms/feature/1.4.2 2026-07-14 15:03:45 +08:00
锦麟 王 8b5a69fd10 更新交易流程和审批条件文本 2026-07-14 14:57:46 +08:00
hjhan 0483cd8576 Merge remote-tracking branch 'origin/feature/p132_74-risk-engine' into spike/merge-p132_74-to-1.4.2 2026-07-14 14:48:11 +08:00
张名锐 4f5af864dc Merge branch 'glms/feature/valuation_0709_zmr' into glms/feature/1.4.2 2026-07-14 11:16:45 +08:00
张名锐 4449bd5824 feat(swap): 更新互换估值功能并优化数据模型
- 添加互换估值V1配置常量以支持新版本
- 将PeriodAmount和DividendAmount字段改为可空decimal类型
- 更新字段注释说明预付金利率和利息的计算方式
- 修改净额结算金额定义,排除期初和追加预付金本金
- 在报表服务中添加安全求和操作防止空值异常
- 增加多个汇总字段包括股息、保证金利息等统计
- 重构预付金处理逻辑,改用加权平均计算方式
- 新增加权保证金利率和利息计算辅助方法
- 调整前端表格列顺序,优化交易编号显示位置
- 更新数值格式化器以支持空值处理和精度控制
- 添加文档列顺序恢复功能确保表格一致性
2026-07-14 09:46:54 +08:00
锦麟 王 623183f47f Merge branch 'glms/feature/1.4.2_ApprovalProcess' into glms/feature/1.4.2 2026-07-14 09:14:07 +08:00
hjhan d978f7048d refactor: 日终价格联想逻辑抽成共享 eodUnderlyingSuggest.js 并修复下拉静默失效
- 三编辑页重复的 eodSuggest/eodRenderSuggest/eodHideSuggest/checkSubmitData/初始化 抽成 eodUnderlyingSuggest.js 一处引用,禁止逐页复制内联脚本

- 修复静默 bug:cshtml 缺 #eodSuggestBox 容器且 class 无 CSS 导致下拉从未渲染;改为 JS 动态创建盒子+样式内联

- 修复点选 ReferenceError:回调由对象字面量求值改为 window['lookup'+kind] 安全解析+typeof 校验
2026-07-13 13:30:35 +08:00
hjhan 8cade8ae53 fix: 修复日终价格新增后查不出(picker过滤LaunchState、新记录日期默认今天、列表新增改三选一)
- EodPriceController.BuildUnderlyingOptions 增加 LaunchState=="1" 过滤,与列表查询对齐,避免新增非激活标的被 inner join 永久过滤

- 三个编辑页新建分支将 valuation_date/ValueDate 默认设为今天,落在列表默认查询窗口内

- eodStockPriceEdit 补全 StockPicker 下拉(此前股票无picker,UnderlyingCode为空hidden导致查不出),删除上传无用的状态字段

- eodPriceList.js openEodPriceAdd 改为三选一(债券/期货/股票)打开各自编辑页空enid,替代已废弃的 EodPriceAdd 搜索页
2026-07-13 12:34:39 +08:00
hjhan 36d8909fe0 feat: 日终价格管理新增统一录入表单(按标的类型自动落表)
列表页新增"新增"按钮(结算管理-日终价格修改 权限),打开统一新增页;选标的后按 UnderlyingInstrumentType 自动显示对应字段组,保存时路由到正确的 Save 方法落到对应表;字段与上传 Excel 对齐,避免冗余字段。
2026-07-13 11:00:46 +08:00
张名锐 a7c4344436 refactor(swaptrade): 移除互换估值导出功能并移除折叠分组
- 移除 excellentexport.js 依赖库
- 删除导出互换估值按钮及相关功能函数
- 移除网格分组配置和导出逻辑代码
- 简化网格初始化参数,移除 grouping 配置
- 更新隐藏列注释说明
- 添加默认业务列显示保障机制
- 优化列选择器初始化流程
2026-07-10 23:56:54 +08:00
张名锐 7df9e8060e feat(swap): 添加互换合约估值功能和优化数据模型
- 在ClientSwapPositionRequest中新增BookId字段用于资产分类查询
- 新增FloatingUnrealizedPnl、InterestPaymentMethod、MaturityNettingValuation等估值相关字段
- 添加MaturitySettlementDate、DividendAmount、AdditionalMarginAmount等持仓详情字段
- 更新前端表格列模型,调整浮动端和估值实现收益分组显示
- 实现框架合约导出功能,支持完整数据筛选结果导出
- 优化名义本金计算逻辑,修复长短仓数值处理问题
- 完善付息方式和估值口径的业务逻辑处理
- 添加TRS估值、期间分红等关键业务字段计算
- 实现Excel导出时分组表头格式化功能
- 修复框架合约列排序和分组表头显示问题
2026-07-10 18:20:20 +08:00
锦麟 王 c4293ed523 优化审批流程逻辑,支持复杂分支条件 2026-07-10 17:00:13 +08:00
张名锐 5f27c85ae9 feat(export): 为Excel导出功能添加分组表头支持
- 修改exportVisibleColumnsToExcel函数,增加groupConfig参数
- 实现buildGroupHeaderHtml函数用于构建二级表头结构
- 当存在分组配置时自动生成合并单元格的表头
- 支持按字段分组显示标题并设置样式
- 更新函数注释文档说明新参数用途
2026-07-09 15:21:05 +08:00
张名锐 358993bedb feat(swaptrade): 添加期末头寸风险表新字段支持
- 在EodSwap实体模型中新增标的类型、期间付息/分红、保证金利息收支字段
- 在前端表格列模型中添加标的类型、期间付息/分红列定义
- 在前端表格分组配置中将新字段归入对应分组显示
- 实现后端服务中对新字段的数据查询和计算逻辑
- 添加保证金利息收入支出的分类汇总功能
- 完善标的类型字段的数据源获取和展示逻辑
2026-07-09 15:11:58 +08:00
ruisu d14bdc18e7 feat:风控引擎增加超时机制:在进行超时校验的时候,如果超时,不但重置新风控重新校验,老风控的二次校验也不允许直接放行,需要重新校验。 2026-07-09 10:26:26 +08:00