尹峰
5ee510aa35
增加vega(1bp)希腊值
2026-08-20 14:15:12 +08:00
hjhan
1bf517188c
fix(swap): 待结算分红收益(DividendPending)改用 EOD 全量口径,修复 e3c473ba 的硬0回归
...
e3c473ba 把前端 DividendPending 硬编码 0,对 GLMS-20260105-0004(PosiDividendSum 恰好=0)
测试通过、掩盖问题。但对 PosiDividendSum≠0 的部分平仓交易,硬0 会落库
(SwapFlowEventService:588 冲账取负写入 swap_flow_event.DividendPending)并在事件列表
"待结算分红收益"列显示错误的 0——是确定的回归。
口径论证(代码证据,非拍板):DividendPending(待结算存量) ↔ EOD PosiDividendSum(未实现),
字段名、递推公式(SwapEodPositionService:1825 已扣当日实现)、列标签(SwapflowList:561)、
旧前端意图(posiQty×totalInterest 想表达"平仓后剩余")四处同指全量口径。是存量非流量,
不按本次平仓比例分摊。
改动:
- SwapDealService.InitUnwind:GetPreEodDividendSum 返回值取一次,同时喂 DividendIn 与
DividendPending(避免重复查库);GetPreEodDividendSum 注释补口径论证+历史教训(防后人改回硬0/分摊)
- 前端 unwindSwapTrade.js:删除 DividendPending=0 硬写,保持后端值不动
- 前端 incomeSwapTrade.js:DividendPending 保持 0(互换=全量结清,结清后待结算归0),
注释说明与平仓页口径差异
- 测试补非0场景:GLMS-20260706-0004(PosiDividendSum=-150,000)验证返回非0真实值,
直接针对"硬0被0掩盖"盲区,防止该回归复现
全量构建 0 错误,4 个分红测试全绿(含 0 场景、互换页、无EOD防御、非0场景)。
2026-08-07 09:28:18 +08:00
hjhan
aaeb4bddf8
docs(swap): 新增互换 MarkClosePnl 口径一致性审计与空头回归红测试(不改生产代码)
...
- 项目文档/互换计算口径一致性_残留问题与治理路线.md:定义 BUG 本质(分散计算/字段重叠/硬编码精度),
定位 income 页缺 longRatio 导致空头符号相反的残留点,并给出如何确认 income 错/unwind 对 的裁决链与改动安全性论证。
- YLErpWeb/fe-tests/_proof_short_income.js:纯 Node 红测试原型,证明多头两页一致(掩盖)、空头符号相反、补 longRatio 后一致。
- YLErpWeb/fe-tests/markClosePnlShortConsistency.test.js:jest 格式红测试(与 parity.test.js 同风格),作为后续修复的回归护栏。
说明:仅审计与测试资产,本次未修改任何生产代码(前端页面/后端 C# 均未改动)。
2026-08-06 22:00:44 +08:00
hjhan
e3c473bafd
fix(swap): 分红前部分平仓过的交易,后续平仓/互换分红收益改由 EOD 单一可信源提供
...
问题:GLMS-20260105-0004 在 2/28 部分平仓 40%、3/2 登记日互换后,3/3 继续平仓/互换时
"浮动端平仓盈亏·分红"误显 -36,160(应为 0)。根因:前端 getDivindIn 用期初全额持仓
×totalInterest 重算分红(-90,400),扣除 consumedDividend(-54,240) 后余 -36,160,
恰为已平仓 40%(登记日前已不持有、不享有该笔分红)部分被重复计入。
方案C:分红收益改由后端读上一收盘日 eod_swap_position.PosiDividendSum 提供(单一可信源),
前端不再自算。EOD 的 PosiDividendSum 已按"实际持仓递推 + 当日实现扣除"准确算出待实现分红,
3/2 互换后为 0。因手动平仓/互换后端不重算 DividendIn、直接落库前端值,后端 Init 阶段给出
正确值可同时修正展示与落库。
改动:
- SwapDealService 新增 GetPreEodDividendSum(复用 GetUnwindInterests:624 的上一 EOD 日期推导
+ SwapEodPositionService.GetPreEodPositions),protected virtual 便于测试覆写、无 EOD 返回 0
- InitUnwind/InitIncome 的 floatEvent.DividendIn 从硬编码 0 改为 GetPreEodDividendSum 返回值
- unwindSwapTrade.js/incomeSwapTrade.js getDivindIn 删除 GetBondPayMentInterest 调用与全部自算,
保留后端 DividendIn 值、DividendPending=0
- GetBondPayMentInterest 加废弃文档注释(保留接口供历史调用,consumedDividend 无日期过滤隐患随废弃消解)
测试:GLMS20260105PartialCloseDividendBugTest 连真实库验收——3/3 平仓/互换 DividendIn=0(修复前
-36,160)、无 EOD 防御返回 0。全量构建 0 错误。
2026-08-06 19:09:45 +08:00
tengyufan
02eb592399
fix: 限制互换展期新到期日不得早于原到期日
2026-08-06 17:45:43 +08:00
张名锐
40b4e2e697
feat(input): 数字输入整数位数限制功能
...
- 在 fastVue.base.js 中实现整数位数配置选项 integerDigits
- 添加 checkIntegerDigitsInput 函数验证整数位数输入限制
- 实现 limitIntegerDigits 函数控制数值字符串中的整数位数
- 在键盘处理和粘贴事件中集成整数位数限制逻辑
- 更新掉期交易价格精度配置支持 quantityIntegerDigits 选项
- 扩展精度辅助函数支持整数位数配置和验证规则
- 添加完整的单元测试覆盖整数位数限制功能
2026-08-06 16:30:59 +08:00
张名锐
6bbe9b1c13
fix(swap): 解决互换交易全额平仓计算和判定问题
...
- 在前端计算函数中添加全额平仓时返回剩余数量的逻辑
- 添加针对 trade2308 问题的单元测试验证全额平仓场景
- 实现后端全额平仓请求标准化处理方法 NormalizeFullCloseRequest
- 添加重新计算标准化平仓金额的方法 RecalculateNormalizedUnwindAmounts
- 实现平仓后是否全额关闭的判定逻辑 IsFullCloseAfterDeduction
- 在平仓流程中集成全额平仓标准化处理和金额重新计算
- 更新平仓后交易状态和剩余金额数量的处理逻辑
- 完善审批流程中的平仓数据标准化和流动事件处理
- 优化持仓扣减时全额平仓的处理逻辑
- 添加多个单元测试验证各种全额平仓场景的正确性
2026-08-06 13:24:41 +08:00
张名锐
5b7f17727d
refactor(swaptrade): 优化互换交易中的数量和金额格式化功能
...
- 引入UnderlyingInstrumentType字段用于精确控制格式化规则
- 添加quantityPrecision配置支持不同产品类型的数量精度设置
- 实现formatAmount和formatQuantity方法提供统一格式化接口
- 更新视图模板使用新的格式化方法替代直接数据绑定
- 重构swapPricePrecisionHelper.js支持按产品类型定制格式化规则
- 移除废弃的inputFormatTradeAmount等旧格式化配置
- 添加千分位分组显示功能提升数字可读性
2026-08-06 12:41:30 +08:00
张名锐
db5dcaf149
refactor(swaptrade): 替换硬编码精度配置为统一的精度管理工具
...
- 使用 swapPricePrecision 工具替代原有的 otcformat 精度设置
- 在多个页面文件中引入 swapPricePrecision 相关脚本
- 将原有的固定精度配置替换为动态精度获取方法
- 统一金额、数量、利率等字段的格式化处理逻辑
- 优化数据格式化函数,提高数值显示的一致性和准确性
- 移除冗余的硬编码精度参数,简化代码维护复杂度
2026-08-06 09:56:13 +08:00
tengyufan
46316c1400
fix: 恢复互换平仓交易费用按基础费率计算
2026-08-05 18:26:15 +08:00
张名锐
d5837f2de8
fix(swaptrade): 修复平仓比例显示精度问题
...
- 调整平仓比例显示精度为4位小数
- 修改掉期利率输入格式配置,设置精度为4并保留尾随零
- 确保数值显示的一致性和准确性
2026-08-05 17:52:51 +08:00
lisong
36877744fa
Merge remote-tracking branch 'dest/glms/feature/1.4.2' into feature/p132_74-risk-engine
2026-08-05 17:28:20 +08:00
lisong
a889925440
Merge branch 'feature/p132_74-risk-engine' of https://gitee.glmszq.com/gsty/onederiv/trs into feature/p132_74-risk-engine
2026-08-05 17:27:15 +08:00
tengyufan
864a29d6a8
#EQD-6605 国联民生-确认书编号规则调整(不基于甲方乙方判定)
...
feat: 国联民生收益互换按簿记分类生成交易编号
簿记账户新增“簿记分类”字段,支持代客、融券,新增账户默认代客,历史账户统一初始化为代客
簿记账户分类设为必填,列表、编辑及详情页面同步展示
修改已被交易引用的簿记账户分类时增加二次确认,并提示关联交易数量
国联民生收益互换交易编号不再根据甲乙方判断,改为根据簿记账户分类生成
代客使用数字序号,融券使用字母序号,分别从已有同客户同日编号的最大序号继续递增
保留手工交易编号优先逻辑,标准格式的手工编号参与后续最大序号计算
生成候选编号后检查完整交易编号是否已存在,存在则继续递增
新增簿记分类编号格式、最大序号计算及数字字母序列隔离专项单测
2026-08-05 15:55:01 +08:00
ruisu
8fb3c4392c
feat:风控触发时显示应用ID、
...
新老风控组合校验:
老风控Error/Warning,新风控需审批——点击特批即两边都放行
老风控Error/Warning,新风控禁止——不展示
老风控Error/Warning——展示特批,且只特批老风控。
新增风控流程日志
2026-08-05 14:39:01 +08:00
ruisu
698662101b
fix:修复点击“修改”按钮后偶发前端报错的问题
2026-08-05 14:30:42 +08:00
张名锐
9affdf5d41
fix(swap-trade): 修正名义本金小数点精度
2026-08-05 13:44:17 +08:00
hjhan
41de2f6dd6
fix: 放宽 MaxModelBindingCollectionSize 至 1000000 修复互换观察日区间超限报错
2026-08-05 12:29:54 +08:00
张名锐
b3ba762838
Merge branch 'glms/feature/dotnumber' into 'glms/feature/1.4.2'
...
fix(swap): 修复平仓交易界面金额格式化问题
See merge request otc-dev/zszq-trs!8
2026-08-05 03:28:17 +00:00
张名锐
1458acc030
fix(swap): 修复平仓交易界面金额格式化问题
...
- 将展期界面的本金、利息、费用等字段格式化方法从inputFormatEqvNotional改为inputFormatCloseAmount
- 新增inputFormatCloseAmount格式化配置,设置精度为2位小数,支持负数显示,保留尾随零
- 统一展期界面各金额输入框的格式化规则,确保数据展示一致性
2026-08-05 11:27:37 +08:00
马冰冰
3b0021d79f
Merge branch 'glms/feature/1.4.2-0805' into glms/feature/1.4.2
2026-08-05 10:59:15 +08:00
马冰冰
8689e75223
feature:筛选条件增加资产类型、列表显示增加资产类型
2026-08-05 10:58:29 +08:00
yexuzhong
6ced6ab55d
列宽度调整
2026-08-05 10:26:42 +08:00
张名锐
d55923a1fb
feat(swaptrade): 修复交易后付、预付金腿金额 小数点精度问题(2位)
...
- 新增 inputFormatTradeSinglePriceFixed2 固定精度为2位小数格式
- 更新 InterestPrincipalFix 字段使用固定2位小数格式
- 更新 PosiTradingFeePending 字段使用固定2位小数格式
2026-08-05 10:07:01 +08:00
张名锐
269807cc44
feat(swaptrade): 收益互换界面金额固定两位小数
...
- 新增 inputFormatInterestAmount 配置对象,精度为2位小数,支持负数显示和尾随零保留
- 在保证金列表中将 InterestAmount 和 InterestFee 字段的格式化从 inputFormatEqvNotional 替换为 inputFormatInterestAmount
- 在利息列表中将 InterestAmount 和 InterestFee 字段的格式化从 inputFormatEqvNotional 替换为 inputFormatInterestAmount
- 保持原有的双向数据绑定和事件监听功能不变
2026-08-05 09:52:22 +08:00
yexuzhong
84ee11a02d
国联启用扩展配置
2026-08-04 11:33:09 +08:00
张名锐
b2c4442772
feat(swaptrade): 利率相关 添加尾随零修剪和数值格式化功能
...
- 在数字输入组件中添加 trimTailZeros 配置选项
- 修改条件判断逻辑以支持尾随零修剪控制
- 为掉期交易利率添加固定精度格式化功能
- 创建 formatObservationRate 函数用于观察率数值格式化
- 在观察率输入字段中添加失焦时格式化事件处理
- 更新视图中的利率显示格式化方式
- 统一利息金额的货币格式化显示
2026-08-03 17:04:51 +08:00
张名锐
613fd66b65
fix(swap): 解决(观察日)利率计算精度问题并优化价格精度处理
...
- 在SwapDealService中对GetFixedRate结果进行精度调整,解决原数据精度误差问题
- 在swapPricePrecisionHelper中添加roundDecimal方法并移除TODO注释
- 新增observationRate相关的精度处理函数,包括roundObservationRate和percent转换函数
- 创建serializeSwapIntervals函数用于处理掉期区间利率精度序列化
- 将consNumberFormat.umpriceP替换为swapPricePrecision.shiftDecimal进行百分比转换
- 使用新的精度处理函数替代原有的toFixed(6)和乘以0.01的操作
2026-08-03 13:21:23 +08:00
张名锐
a507d0ce66
feat: 新增利率收益率 债券指数小数点精度配置
2026-07-31 16:26:06 +08:00
张名锐
b0c06dc673
Merge branch 'glms/feature/1.4.2' into glms/feature/dotnumber
2026-07-31 16:20:42 +08:00
yexuzhong
633cd7d32d
计算指标可配置
2026-07-31 14:49:52 +08:00
马冰冰
f7e7aaa373
Merge remote-tracking branch 'origin/glms/feature/1.4.2' into glms/feature/1.4.2
2026-07-31 11:27:13 +08:00
马冰冰
696ac168f0
Changes:全部统一成续作
2026-07-31 11:10:55 +08:00
yexuzhong
4c7011bfa8
日终持仓风险下载
2026-07-31 11:02:49 +08:00
张名锐
dfac28f54a
Revert "fix(sac): 修复预览页序列化 SacInfo 时 TypeId 触发 IsGenericParameter 异常"
...
This reverts commit ca74095e0c .
2026-07-31 10:49:18 +08:00
yexuzhong
5d580960d8
#EQD-6669 国联民生-期权希腊值计算步长和细节调整(定价引擎部分)
2026-07-31 10:35:25 +08:00
张名锐
9d53d3dd8c
Merge branch 'refs/heads/glms/feature/1.4.2' into glms/feature/dotnumber
2026-07-31 09:19:09 +08:00
张名锐
8ed4bc0f2f
fix(swaptrade): 修复债券价格输入绑定和事件处理问题
...
- 绑定三个债券价格字段到当前Vue方法,确保正确的v-model和事件监听器
- 修复精度输入组件的事件契约,保留keydown、input、enter事件处理逻辑
- 解决格式刷新时不覆盖未提交输入的问题,维护用户输入状态一致性
- 将模板中的@change事件替换为@blur事件,改进输入焦点处理逻辑
2026-07-31 09:18:53 +08:00
hjhan
ca74095e0c
fix(sac): 修复预览页序列化 SacInfo 时 TypeId 触发 IsGenericParameter 异常
...
- SacDescriptionAttribute 增加 ShouldSerializeTypeId() 返回 false,
跳过 Attribute.TypeId(System.Type)的序列化,避免 Newtonsoft 抛
"Method may only be called on a Type for which Type.IsGenericParameter is true."
(13.0.1 安全版对 Type 成员序列化行为变更后暴露)
- ExceptionMiddleware 改用 exception.ToString() 记录完整异常(类型+
内层 message+堆栈),替代仅取最内层 message,便于定位此类反射异常根因;
该信息仅写入日志,不返回前端
2026-07-31 09:10:18 +08:00
hjhan
a871bcb9fe
fix(login): 登录页 NeedCaptcha=false 时 CaptchaClick 避免 null.setAttribute 报错
...
页面加载时无条件调用 CaptchaClick(),但 <img id="captcha"> 仅在
NeedCaptcha=true 时渲染,导致无需验证码时 getElementById 返回 null,
null.setAttribute 抛错。增加 if (!img) return 守卫,img 存在时行为不变。
2026-07-31 09:10:05 +08:00
hjhan
74c434bdd8
fix(swaptrade): 修复重输/重贴原值后回车不触发计算、粘贴不标记REV的静默失效
...
- swapPricePrecisionHelper: onKeydown 回车时无条件派发 input+enter,
不再依赖仅值变化才触发的原生 change;onPaste 粘贴即派发 input 标 REV;
onChange 不再派发 enter(改由 onKeydown 唯一派发,避免重复计算)
- 新增 fe-tests/swapPriceInput.component.test.js 回归守卫(6 用例,
回退旧版即变红,锁定该 QA 高优 Bug 修复)
- bundle/bundleV2: otcDebug 调试开关改为 localStorage 持久化 +
URL ?otcdebug=1 触发,便于排查价格计算链路
2026-07-31 09:07:08 +08:00
tengyufan
cb2076d9ff
fix: 交易确认书编号筛选项保持单行显示
...
- 国联交易确认书页面加宽交易确认书编号筛选项标签和容器
- 避免交易确认书编号标签自动换行
2026-07-30 17:58:51 +08:00
马冰冰
99438ccaf4
Merge branch 'glms/feature/1.4.2-0730' into glms/feature/1.4.2
2026-07-30 17:48:55 +08:00
马冰冰
807ac15417
feature:续作按钮应当有角色权限控制
2026-07-30 17:46:14 +08:00
lisong
715068b759
Merge remote-tracking branch 'dest/glms/feature/1.4.2' into feature/p132_74-risk-engine
2026-07-30 16:03:37 +08:00
lisong
f8ec822667
Merge branch 'feature/p132_74-risk-engine' of https://gitee.glmszq.com/gsty/onederiv/trs into feature/p132_74-risk-engine
2026-07-30 16:02:37 +08:00
tengyufan
f535ed362c
Merge remote-tracking branch 'origin/glms/feature/1.4.2' into glms/feature/1.4.2
2026-07-30 14:46:26 +08:00
tengyufan
43981e245b
#EQD-6718 国联民生-收益互换隐藏收支方向,默认我方收取浮动收益
...
fix:国联民生收益互换隐藏收支方向,默认我方收取浮动收益
- 新增可配置开关 Erp.SwapFloatingIncomeReceiveOnlyMode,默认关闭,支持在普通模式与网厅适配模式之间切换
- 网厅适配模式下,新增及续做收益互换默认浮动端为我方收取,并隐藏新增、平仓、收益结算及查看页面的浮动端收支方向
- 普通模式保持原有展示和编辑逻辑,历史交易不修改原有浮动端收支方向
- 日终持仓风险_互换将浮动收支方向和标的多空合并为交易方向,并同步影响导出
- 交易方向映射收取+B为多头、收取+S为空头、支付+B为空头、支付+S为多头
- 新增交易方向映射专项前端单测
2026-07-30 14:46:07 +08:00
hjhan
52c11e7540
fix(diag): 简化 otcDebug 调试开关命名并支持 localStorage 持久化
...
- __otcDiag 双源对象拆为 __diag(版本元数据, 仅供 banner 展示) + __debug(调试开关布尔值, 唯一真相来源), 消除 __私有对象 与 otcDebug.API 大小写混搭。
- __debug 解析顺序: URL ?otcdebug=1(命中即写回 localStorage) -> localStorage -> 兜底 __diag.debug。同源父子 frame 共享 localStorage, 使 _InfoLayout iframe 弹窗(新增互换交易)自动继承父页面开过的调试开关, 修复弹窗内无调试日志。
2026-07-30 14:42:10 +08:00
ruisu
759edfbde4
Merge branch 'feature/p132_74-risk-engine' of https://gitee.glmszq.com/gsty/onederiv/trs into feature/p132_74-risk-engine
2026-07-30 13:33:19 +08:00