Commit Graph
195 Commits
Author SHA1 Message Date
hjhan 52b665cd39 fix(otcformat): /front/otcformat 改为 NoStore,修复保存配置后缓存不生效
FrontController.OtcFormat 原使用 ResponseCache(Duration=600, Location=Any),
导致在 Admin 配置页保存 OtcFormat 后,前端最长 600s 内仍返回旧内容,
表现为'改了配置前端不起效果',需手工加 ?v= 才能破缓存。

改为 NoStore 后保存即对所有用户立即生效。
同时在 FrontController 类注释补充完整排查文档:
- 三个同名 otcformat.js 文件的角色与路径
- DB AppConfig 真相源(PGroup=ProjectConfig, PName=OtcFormatConfig)
- 写入/读取/启动三条数据流
- '前端不起效果'的 4 步排查顺序
- 多节点落盘只写当前节点的坑

OtcConfigController.AjaxSaveOtcFormat 补充多节点陷阱说明并指向 FrontController 文档。
2026-08-07 17:53:48 +08:00
张名锐 3053a9e3d7 fix(swap): 修复掉期交易中多空转换逻辑
- 注释掉了浮动盈亏支付相关的多空头寸反转代码
- 在持仓更新逻辑中添加了当PosiDirection为2时的PositionType反转处理
- 修改ReverseLongShort方法参数类型从string改为int并调整返回值逻辑
- 将多空头判断条件从字符串比较改为数值比较以提高性能
2026-08-07 16:19:29 +08:00
张名锐 825482c80c style(SwapTrade2Controller): 格式化注释代码块
- 将多行注释从块注释格式转换为单行注释格式
- 移除不必要的星号前缀保持代码整洁
- 维持原有的业务逻辑说明内容不变
2026-08-07 15:32:26 +08:00
张名锐 7b3c6b06c3 ```
fix(swap-trade): 修复续作交易中支付浮动端方向反转逻辑

- 在续作交易创建过程中添加支付浮动端反向逻辑
- 当 IsPayFloatingProfit 为 true 时反转 PayLongShort 方向
- 实现 ReverseLongShort 方法用于多空头寸转换
- 确保收取端保持原有方向不变
- 添加对支付多头转空头、支付空头转多头的正确处理
```
2026-08-07 15:31:42 +08:00
张名锐 3a435ad89b fix(swap): 修复平仓事件中事件日期=平仓日期的处理逻辑
- 将平仓条件判断从 UnwindDate 改为 EventDate
- 移除不再使用的 priorClosePositionIds 变量
- 统一使用 NormalizeEventUnwindDate 替代 NormalizeIncomeUnwindDate
- 在多个平仓方法中添加 NormalizeEventUnwindDate 调用
- 更新流程事件的 EventDate 和 UnwindDate 字段
- 修改单元测试以验证按 EventDate 分桶的逻辑
- 在前端控制器中将 unwindDate 设置为 valueDate
- 添加 maxdate 属性到平仓日期选择器
- 实现事件日期与平仓日期的双向同步功能
- 更新利息列表获取接口使用统一日期参数
2026-08-07 13:46:24 +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
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
马冰冰 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
马冰冰 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
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
ruisu 3df280d9f0 feat:增加日历与价格偏离辅助函数,修复日志过长无法落库的问题,修复老风控特批、新风控不批时,前端展示为提示框,不是细节框的问题。 2026-07-30 13:32:47 +08:00
张名锐 85f1bccb24 Merge branch 'glms/feature/1.4.2' into glms/feature/dotnumber
# Conflicts:
#	YLErpWeb/App_Data/Config/otcformat.js
#	YLErpWeb/Views/SwapTrade2/TradeEdit.cshtml
#	YLErpWeb/wwwroot/Scripts/app/swaptrade/swapTradeEdit.js
2026-07-30 10:50:44 +08:00
张名锐 fd2a054764 feat(swap): 实现互换交易价格精度控制功能 init
- 添加 swapPricePrecisionHelper.js 工具类处理价格精度格式化
- 新增 swappriceprecision.js 配置文件定义各类金融产品的精度规则
- 在 EodPositionRisks.cshtml 和 SwapIncome.cshtml 中引入新的价格格式化脚本
- 替换原有的价格格式化函数为基于产品类型的动态精度控制
- 移除旧的价格验证和标准化逻辑,改用新的精度控制机制
- 添加 vue-swap-price-input 组件用于精确的价格输入控制
- 更新 Controller 中的价格处理逻辑以支持新精度格式化方式
2026-07-29 09:44:04 +08:00
马冰冰 d836d192fe fix: #EQD-6812 国联民生-TRS簿记页面增加续做按钮(自动新建一个除日期外要素相同的合约)-交易费用后付字段未填充 2026-07-28 16:48:50 +08:00
尹峰 ca77a71f2c feat: 批量操作交互逻辑统一&解耦规则与应用的状态 2026-07-27 16:54:06 +08:00
张名锐 3518be1975 fix(swap-trade): 修复续做交易时名义本金和结算标识的重置逻辑
- 恢复初始名义本金时同时处理 Notional、TradeAmount 和 StockEqvNotional 字段
- 重置结算标识为正常结算模式,清除延期结算相关字段
- 重置 trade_swap 子对象的主键和外键关联
- 清空持仓的运行时累计字段如利息金额、手续费等
2026-07-24 13:56:41 +08:00
张名锐 aa8fb9fd7a Merge branch 'glms/feature/swaptrade_6603_mbb' into glms/feature/1.4.2
# Conflicts:
#	YLErpDAL/Modules/SwapModule/SwapTradeService.cs
2026-07-24 13:29:10 +08:00
张名锐 b729b38814 fix(swap): 修复续做交易中持仓和名义本金的初始化问题
- 恢复初始持仓名义本金,使用OriginalStockEqvNotional和OriginalNotional的原始值
- 只克隆初始持仓(IsInitial=true),避免带入部分平仓后的实时持仓
- 设置预付金腿HappenDate为新交易起始日,非预付金腿置为null
- 清空源交易的事件/持仓快照等集合,避免与源交易共享引用
- 初始化swap_Events、swap_Flow_Events等集合为空列表
2026-07-24 13:23:35 +08:00
lisong 7b7331245c Merge remote-tracking branch 'dest/glms/feature/1.4.2' into feature/p132_74-risk-engine 2026-07-24 09:27:02 +08:00
尹峰 3651d3d2df feat: 风控引擎前后端统一操作符 2026-07-23 18:30:05 +08:00
马冰冰 ef7fa7c6e5 Changes续作功能的实现 2026-07-23 14:37:34 +08:00
hjhan d0c170c2a1 fix(log): 修复 DbUpdateException 日志丢失 InnerException 的问题
- NLog.config: exception layout 从 format=Message 改为 format=toString
  原配置只渲染外层异常 Message,不递归 InnerException。DbUpdateException
  外层 Message 永远是 "See the inner exception for details.",真正的 SQL
  错误(主键冲突/字段超长/外键约束)全在 InnerException 里被吞掉。
  改为 toString 后输出完整异常链(含 InnerException + 堆栈),全局生效。
- SwapTrade2Controller.tradeEditJson catch 块对齐其他 Controller:
  e.Message → e.GetBaseException().Message,并补上 e.ToJson() 数据参数,
  让前端也能拿到最内层错误信息。

验证:dotnet build 0 错误
2026-07-23 13:43:43 +08:00
马冰冰 4419a4125b (fix): 将原保证金模板名称=系统默认 的默认值改为null。 2026-07-22 16:28:17 +08:00
马冰冰 05ce6fb02f (feature):保证金模板字段添加 2026-07-22 14:46:01 +08:00
hjhan 0aad4c8040 feat(swap): 债券计算器C#契约对齐——targetDate估值日透传·错误处理透传真实原因·链路日志
- BondCalcHepler.BondCalc 新增可选 targetDate(估值日) 参数并写入请求体,透传至代理 zszq-bond-oms 的 targetDate(→bond-calc settlementDate);不传则沿用代理默认 T+1,与 bond-oms-ui 契约一致。

- 新增 out errorMsg 重载:地址未配/无响应/success=false/业务错误码 errCode!=0/异常 均返回 null 并透出真实中文原因;日志级别由 Info 升为 Error,try/catch 包裹。

- BondController.CalcBond 把 errorMsg 透传给 JsonError,不再硬编码"计算价格失败"。

- BondCalcByDate(自动结算路径) 同步加 errCode/空守卫,避免回写坏数据。
2026-07-22 11:35:41 +08:00
尹峰 15c249a423 Merge remote-tracking branch 'origin/glms/feature/1.4.2' into feature/p132_74-risk-engine 2026-07-21 15:06:17 +08:00
尹峰 09d06aa295 Merge branch 'feature/p132_74-risk-engine' of https://gitee.glmszq.com/gsty/onederiv/trs into feature/p132_74-risk-engine 2026-07-21 15:05:40 +08:00
尹峰 165ab4e695 feat: 风控批量操作前后端统一改造,允许部分成功并优化提示信息 2026-07-21 15:05:15 +08:00
ruisu 37e275d81e feat:拆分新老风控校验逻辑,为之后老风控下线做准备。同时修复老风控特批跳过新风控的问题 2026-07-20 15:06:58 +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
尹峰 b51d39e0ff 增加变量批量删除功能 2026-07-17 14:27:27 +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 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 1110e2b3ef feat:优化特批处理流程与日志落库 2026-07-17 09:26:04 +08:00
尹峰 220657cb5c 批量启停规则和应用优化 2026-07-16 19:58:26 +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
hjhan 6424b38001 fix(期权到期): checkEodPrice 前置校验改用债券感知统一取价方法
- trade_cashController.checkEodPrice 是前端'执行到期'按钮的前置 gate,
  原用 EodPriceQueryService.TryGetEodPrice(仅查期货+股票两表),
  债券标的(如 GLMS-20260715-0002 / 180011.IB)必然取不到价而报
  '交易日{date}的结算价或收盘价未找到',挡在 tradeExpireConfirm 之前,
  导致层1 对 tradeExpireInner/MultipleTradeExpireConfirm 的修复被绕过。
- 改为与层1 一致的 EodPriceQueryService.TryGetSettlementEodPrice
  (债券走中债估值、期货/股票走原路径),三处到期取价口径统一。
2026-07-16 14:56:28 +08:00
尹峰 19a7b34e84 bugfix:规则批量启用 2026-07-16 12:32:17 +08:00
hjhan 3654841b2e merge: 合并 feature/p132_74-risk-engine 最新改动到 glms/feature/1.4.2
合并风控引擎分支最新提交(风控超时校验SQL、标的/合约类型传参、
UnderlyingAssetClass 字段、缓存刷新与异步逻辑优化等),无冲突。
2026-07-16 11:14:43 +08:00
ruisu 7784e66289 Merge branch 'feature/p132_74-risk-engine' of https://gitee.glmszq.com/gsty/onederiv/trs into feature/p132_74-risk-engine 2026-07-14 17:18:47 +08:00