hjhan
|
3c7e25820a
|
feat(admin): EQD-5320 邮件模板配置下拉补资金通知书两项——原下拉为cshtml写死HTML仅4个确认书类型,后端AjaxGet/Save按EmailType查存email_template本不限类型;新增追保资金通知书/轧差资金通知书两option,value与bond-oms Java FundEmailHandler查询串一字不差(注释冻结约定),此场景{{文档编号}}/{{交易列表}}渲染为空
|
2026-08-21 16:55:13 +08:00 |
|
tengyufan
|
e5a1ca1f68
|
fix: 收益互换OA移动审批改为内部定时轮询
- 复用 HostedTaskService 定时器轮询待处理的 OA 移动审批状态
- 增加单实例防重入控制,避免同一进程内重复同步
- 新增 Erp.TradeApprovalOaSyncIntervalSeconds 配置,默认 30 秒
- 支持在 Admin 全局配置页修改查询间隔,保存后立即生效,无需重启
- 补充 AppConfig 初始化 SQL,不再依赖 PowerJob 或 XXL-JOB 外部调度
|
2026-08-21 16:48:37 +08:00 |
|
hjhan
|
4fcbc15f05
|
refactor(web): EQD-5320 清理不可达的互换日终估值导入死代码——#importEod弹窗div与showImport/importEodFile/importClose三函数整块删除:全库无任何按钮调用showImport()(弹窗不可达,业务无从使用),其内部/trs_hub_api/valuationEndOfDay/import直连反代为死代码且是全库最后一处可执行trs_hub_api依赖(剩余引用均为历史注释);bond-oms侧接口不动;如需恢复按BatchSendSettleEmail同款C#代理模式(注释留指引)
|
2026-08-21 16:01:47 +08:00 |
|
lisong
|
120f443aae
|
Merge remote-tracking branch 'dest/glms/feature/1.4.2' into test
|
2026-08-21 16:00:48 +08:00 |
|
tengyufan
|
3f0984800a
|
feat: 收益互换开平仓及收益结算接入OA移动审批
#EQD-6425 国联民生-衍生品系统移动审批(提交OA流程)
- 审批节点支持配置“关联OA移动审批”
- 创建OA流程并记录请求、requestId、状态及异常备注
- 支持OA轮询同步审批通过、退回和归档状态
- 本地通过、拒绝、撤回时同步强制归档未结束OA流程
- 增加审批列表OA备注展示及本地Mock联调接口
- 新增OA审批记录表和数据库升级脚本
- OA移动审批使用独立查询地址及isnextflow配置,不影响交易确认书OA
|
2026-08-21 15:54:54 +08:00 |
|
hjhan
|
23a02e06c4
|
fix(swap): EQD-5320 单行发送Email按钮报'平仓流水id解析为空'——同事fa927b21新增的单行按钮传swap_flow_event.EncryptId(加密串,全站enid惯例),而端点原只按逗号分隔数字解析long.TryParse必败;控制器兼容双形态令牌:非数字即DecryptLong解密(失败返0不抛,非法串忽略),错误文案附原始入参便于定位;批量按钮(数字id)行为不变
|
2026-08-21 15:41:56 +08:00 |
|
苏睿
|
6c547a0d13
|
!27 增加vega(1bp)希腊值
Merge pull request !27 from feature/p132_155-yf-vega-1bp
|
2026-08-21 07:40:04 +00:00 |
|
苏睿
|
e867e702b5
|
!28 登录界面美化
Merge pull request !28 from feature/p132_154-yf-new-sso-login
|
2026-08-21 07:39:39 +00:00 |
|
hjhan
|
cd981527ab
|
feat(web): EQD-6953 前端值域闸门补疑似到期债券判定——ytm=0且净/全价均为面值100三者同时成立(现实在市券几乎不可能,UAT 060203.IB实证jquantlib空现金流退化形态)时按既有'不回写+toast真实原因'处理,提示核对到期日或手工填写;录入页/平仓页共用此闸门同步生效;判定条件与后端BondCalcHepler.IsMaturedDegenerate同口径(注释已互指);新增4个jest用例(命中/正常券/ytm=0但价格非面值/价格面值但ytm非0)61/61通过
|
2026-08-21 15:26:46 +08:00 |
|
马冰冰
|
38e0a7795f
|
Merge branch 'glms/feature/1.4.2-M819' into glms/feature/1.4.2
|
2026-08-21 14:19:40 +08:00 |
|
马冰冰
|
f16634534c
|
feature:#EQD-7093 国联民生-交易确认书校验(2)针对ETF标的获取新增信息并且支持配置分类。 ETF交易确认书中填充参考标的证券全称、参考标的基金管理人,
|
2026-08-21 14:16:05 +08:00 |
|
hjhan
|
fa927b2133
|
fix(zszq-trs): 结算确认书列表新增每行发送邮件按钮,复用 BatchSendSettleEmail
- 新增 tradeEndConfirmSendEmail.js(独立文件降冲突),含纯函数 buildSettleEmailSendPayload 便于单测
- tradeEndConfirmList.js showToolName 加按钮,受 pageData.canSendEmail + ContractDocUrl 控制,跳过"多空组合"
- cshtml 引入新脚本;后端零改动(复用 SwapEndConfirmService.BatchSendSettleEmail -> bond-oms Java)
- 安全: 新按钮不引入新增 XSS/CSRF 暴露; CSRF token 缺失为全站既有问题,与批量按钮同源
|
2026-08-21 13:21:15 +08:00 |
|
张名锐
|
8efb468c56
|
Merge branch 'glms/feature/1.4.2' into glms/feature/0812_zmr_divPower
|
2026-08-21 09:50:12 +08:00 |
|
hjhan
|
0567955434
|
fix(swap): EQD-5320 批量发送确认书改走C#服务端代理——原前端直连/trs_hub_api反向代理在未配nginx的环境404(UAT实测),与计算器(SendConfirmEamil同款BondOmsInterface_BaseUrl服务端出口)通路不一致;新增SwapEndConfirmService.BatchSendSettleEmail(POST代理bond-oms batchSend,契约DTO+成败日志)与SwapTrade2Controller.BatchSendSettleEmail(逗号id串防呆解析);前端改调同源/swaptrade2端点保留error兜底;232/232前端测试通过
|
2026-08-21 09:40:01 +08:00 |
|
hjhan
|
433bca9530
|
fix(web): EQD-5320 批量发送确认书按钮点击无反应——$.ajax原无error回调,/trs_hub_api代理不通/超时/返回非JSON(如被登录页重定向)时完全静默;补error回调给HTTP状态+排查指引(控制台同步详错),success兜底非标准返回结构并提示笔数,成功后刷新列表;232/232前端测试通过
|
2026-08-21 09:16:28 +08:00 |
|
hjhan
|
e8d0a76442
|
refactor(web): 平仓页收付方向符号显式化unwindLegSign.js+4例单测——裸三元(x==1?±1:∓1)抽为命名函数并冻结业务事实:利息盈亏与保证金返还本金对同一InterestDirection枚举必须反号(利息=买方持有标的向交易商融资的成本,保证金返还=退客户自己交的钱,业务确认非笔误),不变量断言两符号之和恒0,顺手统一必挂;interestPnlSign对利息/保证金两腿通用(changeInterestAmount模板对两类行都绑定,已核实);另删死代码:this.ratio/this.shortRatio数据属性+赋值全库无读取(模板亦无绑定)及注释掉的历史三元;SwapUnwind.cshtml补script标签,两个执行型测试沙箱喂真实模块;行为等价(Number===1与==1对实际入参等价已验证),全套315例绿
|
2026-08-21 07:17:20 +08:00 |
|
hjhan
|
3728d45cc4
|
test(web): swapPricePrecisionHelper补19例特征测试冻结字符串精确十进制核心——shiftDecimal/roundDecimal/multiplyDecimal/getRule/roundForSubmit/format全golden值断言(0.1×0.2精确0.02、1.005→1.01绕开浮点陷阱、roundDecimal绝对值四舍五入与ExitYtm约定同向、乘法保留小数标度1.5×2=3.0、Bond字段拼错→null回落umprice而Stock回落品种级的不对称冻结);require直连加载替代readFileSync沙箱(可被插桩);覆盖率清单纳入该文件;实锤注释:源码在rootDir外致babel(无transformer)与v8(逃逸路径无法归因,含roots/绝对路径变体实测jest29.7)两提供器覆盖率恒0且门槛不触发,真修需重构rootDir另行立项
|
2026-08-21 07:09:51 +08:00 |
|
张名锐
|
a44960d31e
|
fix(swap): 修复股票基金类互换合约平仓时公司行为处理逻辑
- 优化 FindFundCorporateActions 方法,明确查询范围为严格大于 eodDate 的开区间,并添加日志记录
- 重命名 TryRestoreEffectiveFundPosition 为 TryRestorePositionFromEod 和 TryRestoreAndValidateUnwindData
- 完善 EOD 数据完整性验证,检查持仓数量和价格的有效性
- 添加详细的公司行为查询和应用过程日志记录
- 优化异常信息,包含更多上下文信息如生效日和记录ID
- 更新方法调用引用以使用新的方法名称
|
2026-08-20 18:22:17 +08:00 |
|
hjhan
|
fb9cf9eadd
|
feat(web): EQD-6953 BondController计算器调用补source场景日志——平仓页请求带source=unwind(可选参数向后兼容,录入页不传);BondCalcHepler本就记录完整参数/结果/失败原因,补场景维度即可区分入口定位是参数还是别的问题
|
2026-08-20 17:41:41 +08:00 |
|
hjhan
|
4bd528f966
|
feat(web): EQD-6953 平仓页接入期末结算收益率互算——SwapUnwind浮动端新增列(仅普通债券类收益互换,控件/事件/源AUTO REV标识与录入页同款vue-swap-price-input);DP回车→算ExitYtm(4位)、YD回车→反算交割全价并重算平仓盈亏、手填未回车=REV可覆盖;估值日=平仓日,改日期清陈旧值;防御:applyCalcFailure非法driver只清标识防误清交割全价(补回归测试);closePercentInterestRefresh沙箱补UnwindBondCalc mock对齐页面脚本序;209/209通过
|
2026-08-20 17:38:43 +08:00 |
|
hjhan
|
45d4bc1d26
|
feat(web): EQD-6953 平仓页DP↔YD互算纯函数库unwindBondCalc.js+17个jest单测——冻结三条易错约定:发计算器展示态直传不×100/ExitYtm四位四舍五入AwayFromZero(确认书导出固定4位不去零)/失败只清对方字段;修复roundExitYtm(null)会被取整成0覆盖手输的隐患(单测拦截);jest覆盖率清单纳入新文件;纯新增零接线,不影响生产
|
2026-08-20 17:34:52 +08:00 |
|
尹峰
|
b8d8ed151e
|
优化页面缓存
|
2026-08-20 17:30:45 +08:00 |
|
尹峰
|
775ee93a24
|
Merge branch 'master' of https://gitee.glmszq.com/gsty/onederiv/trs into feature/p132_154-yf-new-sso-login
|
2026-08-20 17:02:58 +08:00 |
|
尹峰
|
4c1ac60ed7
|
fix style 属性内嵌未转义双引号
|
2026-08-20 17:02:41 +08:00 |
|
张名锐
|
582cb2c7c5
|
Merge branch 'glms/feature/1.4.2' into glms/feature/0812_zmr_divPower
# Conflicts:
# YLErpDAL/Modules/EodModule/BondPaymentService.cs
# YLErpDAL/Modules/SwapModule/SwapDealService.cs
|
2026-08-20 16:21:13 +08:00 |
|
hjhan
|
8d7bc1b457
|
feat(web): EQD-6977 簿记页是否罚息开关(ExtendObj 直绑,保存经既有 JSON.stringify 自动落 ExtendJson)
|
2026-08-20 15:53:13 +08:00 |
|
hjhan
|
4f1b55b843
|
feat(web): EQD-6977 平仓页是否罚息下拉(改选即重取利息含罚息) + 其他费用改标签其他费用含罚息 + 预览参数透传(提交经 UnwindData 随 deal 自动回传)
|
2026-08-20 15:53:13 +08:00 |
|
hjhan
|
5552402a7c
|
feat(swap): EQD-6977 罚息开关簿记默认值管道——TradeExtendJson.IsPenaltyInterest(存量缺省false零回填) + InitUnwind 平仓页带出簿记值 + GetUnwindInterestList 参数透传
|
2026-08-20 15:53:11 +08:00 |
|
尹峰
|
5ee510aa35
|
增加vega(1bp)希腊值
|
2026-08-20 14:15:12 +08:00 |
|
张名锐
|
aa3548e77f
|
feat(bond): 支持债券与股票基金公司行为现金流计算的差异化处理 - init2
- 修改 CalcPayment 方法添加 useBondPriceScale 参数区分债券和股票/基金的金额计算口径
- 债券利息按每100元面值票息通过BondPriceConverter转为入库金额,股票基金分红直接计算
- 在BondPaymentService中添加详细的参数说明文档注释
- 更新SwapDealService中分红计算逻辑,根据标的类型自动选择合适的金额转换方式
- 新增CorporateActionEventLifecycleTest单元测试验证公司行为事件生命周期管理
- 添加SplitCorporateActionTddTest测试验证拆合股功能
- 优化FundCorporateActionRollbackAndUnwindTest扩展到股票类型测试
- 更新前端OperationHistory页面表格列宽和显示格式支持更长的说明信息
|
2026-08-19 17:48:34 +08:00 |
|
尹峰
|
23a0c89531
|
登录界面美化
|
2026-08-19 13:42:47 +08:00 |
|
tengyufan
|
8701bd8c44
|
fix(ClientBlack): 修正黑名单删除结果提示
- 根据本次实际进入删除审批的记录数返回删除结果
- 未提交、新增已拒绝直接删除时提示“删除成功”
- 已生效记录进入删除审批时提示“已经提交删除审批”
- 批量混合删除时提示部分记录已提交删除审批
|
2026-08-19 10:16:51 +08:00 |
|
tengyufan
|
274a93b328
|
更改黑名单审批导入格式为.xlsx
|
2026-08-18 16:56:29 +08:00 |
|
张名锐
|
aa1a13d7a3
|
feat(trade): 新增真实除权日字段并完善基金公司行为处理 init
- 添加 EffectiveDate 字段用于标识真实除权生效日
- 实现公司行为价格系数和数量系数统一计算方法
- 增加基金除权回退和平仓基线恢复功能
- 完善除权日验证逻辑,确保真实除权日不早于股权登记日
- 重构平仓流程,支持按有效EOD基线重新计算损益和现金
- 添加基金拆合股和现金分红的特殊处理逻辑
- 增加单元测试验证各种公司行为场景下的正确性
|
2026-08-18 11:20:56 +08:00 |
|
hjhan
|
1c19d2f7c5
|
fix(EQD-7049): 新建空白期权定价页跳过空标的默认查询,避免'标的信息缺失'弹窗
- 页面初始化时 updateUnderlying 以空 UnderlyingCode/InstrumentType/VarietyId 发起 /pricing/AjaxGetUnderlying,后端三者皆空返回 JsonError('标的信息缺失') 并自动弹窗
- 前端守卫:三者皆空时仅重置空 underlying 并 return,不再发请求,与后端 AjaxGetUnderlying(PricingController.cs:398-414) 判定精确对应
- 不影响正常路径:选类型(InstrumentType)/品种(VarietyId>0)/具体标的(UnderlyingCode) 仍照常查询
- 同步修改东莞定制版 structure_dz.js
|
2026-08-14 17:49:59 +08:00 |
|
hjhan
|
fdf6357c4f
|
fix(EQD-7049): 期权定价页标的下拉改为服务端搜索,移除全量标的下载
- vueUnderlying.lookup 不再遍历全量 ylotc.underlyings(债券十几万量级导致 29s 下载/页面卡死),改为调用 /frontdata/AjaxGetUnderlyingSelect 按关键词服务端搜索
- 默认预拉 20 条(后端 MaxShowLength 硬截断),输入时异步搜索并刷新缓存(乱序响应由 token 丢弃)
- 移除 BasicDataJs 的 标的Live 参数消除全量标的下载;IsCombined 由 IsSynthetic||IsBasket 映射,保留期权黑名单护栏(BlackLimit=1)
- 同步修改东莞定制版 Structure_DZ
|
2026-08-14 17:06:08 +08:00 |
|
张名锐
|
11a7aabce5
|
Merge branch 'glms/feature/0812_zmr_divPower' into glms/feature/1.4.2
|
2026-08-14 14:51:56 +08:00 |
|
tengyufan
|
8afd449c40
|
feat(ClientBlack): 新增客户黑名单审批流程
- 黑名单新增、删除、批量导入、批量移出在配置审批节点后,审批通过才生效
- 新增黑名单待提交后可提交审批;仅首节点未审批时可撤回,进入后续节点禁止撤回
- 增加黑名单审批列表、审批弹窗、审批操作日志及状态筛选
- 支持审批配置中的“黑名单审批”流程及对应菜单、模块权限、操作权限
- 黑名单审批中禁止同名记录覆盖备注;已在黑名单中的同名导入会明确提示本次将修改备注
- 未配置审批节点时保持原有直接生效行为
- 增加黑名单审批状态机单测,39/39 通过
- 修正撤回全部失败时仍提示“撤回审批成功”的问题
|
2026-08-13 17:21:04 +08:00 |
|
张名锐
|
5a51d66970
|
refactor(dividend): 优化除权除息计算逻辑并改进数据类型精度
- 将除权除息相关数值字段从 double 类型改为 decimal 类型以提高精度
- 重构了红利比率计算方法 GetRatio,新增 GetRatioDecimal 方法使用 decimal 计算
- 修改价格和持仓数量计算逻辑,统一使用 decimal 进行高精度运算
- 更新数据库查询逻辑,将篮子标的判断从 IsBasket() 方法改为 CommodityCode 条件
- 优化 AddDividendInfos 方法中的批量处理逻辑,增加业务键冲突检测
- 添加数据源标识字段 DataSource 和来源更新时间字段 SourceUpdatedAt
- 新增 FindExDividendByBusinessKey 和 MergeNonZeroDividendValues 辅助方法
- 更新结算服务中除权除息信息的获取方式,使用字典查找替代 LINQ JOIN
- 修复前端保存除权信息时的响应处理逻辑
- 为基金类型也开放除权功能,不仅限于股票类型
- 添加单元测试验证篮子标的查询翻译逻辑的正确性
|
2026-08-13 10:53:57 +08:00 |
|
hjhan
|
af1b4fd27f
|
refactor(longshort): 全量移除多空组合(StructType)子系统死代码(无入口/无存量,按需求重写优于维护)
|
2026-08-13 09:50:25 +08:00 |
|
hjhan
|
905bd407e2
|
refactor(frontend): 清理已删除利息模式 7/8 的前端死分支
后端 InterestModeEnum 已删除 mode 7/8(无历史数据),前端对应分支恒不成立。
移除 swaptrade 下 6 个 JS 文件中的 ==7/==8 死分支,并精简仅校验 mode7/8
唯一性的 checkSwapRateList(保留 changeInterestMode 方法签名以对齐 cshtml 绑定)。
|
2026-08-13 09:05:58 +08:00 |
|
嬴政 时
|
f29aee753a
|
#EQD-7024 国联民生-开平仓费用悬浮文案改为“我方收取交易费用”,仅更改文案,估值与平仓计算逻辑均不变
|
2026-08-12 10:46:43 +08:00 |
|
张名锐
|
ec820a4974
|
Merge branch 'glms/feature/1.4.2_0808' into glms/feature/1.4.2
|
2026-08-12 09:44:51 +08:00 |
|
hjhan
|
29df4c480d
|
refactor: 删除 CalcNotionalByMode, 保证金/融资腿计息基数内联到调用点
CalcNotionalByMode 已完成历史使命:
- 融资腿(1/2/9)迁入 FundingLegStrategyFactory
- 保证金(5/6)迁入 MarginModes.Contains 分支
- 死代码(3/4/7/8)已删
调用点(GetInterests:843)现在内联两条路径:
- 保证金: closePrincipal = Fix × closePercent (用 MarginModes.Contains 判断)
- 融资腿: FundingLegStrategyFactory.Get(mode).CalcNotional(...)
删除:
- CalcNotionalByMode 方法(含注释)
- 2个用反射调私有方法的诊断测试(验证的逻辑已被FundingLegStrategyTest覆盖)
验证: 编译0错误, 全量509测试7失败(基线一致)。
|
2026-08-11 13:13:32 +08:00 |
|
张名锐
|
2e75e62bbc
|
feat(exception): 优化异常中间件的日志记录功能
- 添加了对 Swap Trade 编辑请求的特殊处理逻辑
- 实现了针对掉期交易的诊断功能,包括 JSON 解析和验证
- 添加了专门用于检测无效利率的诊断方法
- 优化了异常日志的输出格式和内容
- 集成了缓冲区管理和流位置重置功能
- 增强了错误信息的详细程度和可读性
|
2026-08-10 17:21:46 +08:00 |
|
张名锐
|
54445c1e38
|
Merge remote-tracking branch 'origin/glms/feature/zmr-0808' into glms/feature/1.4.2
# Conflicts:
# YLErpDAL/Modules/SwapModule/SwapDealService.cs
# YLErpDAL/Modules/SwapModule/SwapEodPositionService.cs
|
2026-08-10 10:56:34 +08:00 |
|
张名锐
|
7411b9d23d
|
fix(swap-trade): 初始化续作交易时设置默认值
- 为续作交易添加 IsGroup 和 IsApproval 默认值
- 为 swap 详情添加 OriginalTradeId 默认值
- 确保续作交易的基础字段正确初始化
|
2026-08-10 09:24:37 +08:00 |
|
张名锐
|
421662a07c
|
fix(swaptrade): 清空续作持仓的浮动利率字段
- 在续作处理中添加了对 FloatRate 字段的清零操作
- 确保续作持仓的累计字段被正确重置
- 避免历史浮动利率数据影响新的交易计算
|
2026-08-09 14:10:08 +08:00 |
|
hjhan
|
97029897c4
|
feat(swap): SwapCalcTrace 支持运行时按请求开关 + 响应头可见(无需重启)
- SwapCalcTrace 改为双模式:保留全局静态开关(单元测试用 IsEnabled/Dump),
新增请求级 AsyncLocal 缓冲(EnableForRequest/DumpForRequest/ClearForRequest),
由中间件按请求开关,不跨请求串扰。
- 新增 SwapCalcTraceMiddleware:开启方式三选一——URL ?swaptrace=1 /
请求头 X-SwapCalc-Trace:1 / 标记文件 App_Data/swapcalctrace.on(无需重启);
Response.OnStarting 时把逐日计息过程写入响应头 X-SwapCalc-Trace(超长落
logs/swapcalctrace-YYYYMMDD.log 并在头给路径),同时写服务器日志。
开发者在浏览器“网络”面板即可查看,零前端改码、零行为影响、性能可忽略。
- Program.cs 在 ExceptionMiddleware 后注册该中间件。
- 删除 CalcDailyCompoundInterestByEod 遗留垃圾日志 LogFactory.GetLogger("test").Error("lksafhasdhfjas")。
- CalcDailySimpleInterest 两处追踪守卫改为 IsEnabled||IsRequestEnabled。
- 既有 PrepaidPrincipalCloseTraceTest / ClosingChainTraceTest 2/2 仍全绿。
回答用户两点:① dynomicPrincipal 公式字段含义;② 原 Trace 需重启才能开,
现改为前端 otcdebug 式(?swaptrace=1) 即可在响应头看到逐步计息过程。
|
2026-08-08 15:57:00 +08:00 |
|
hjhan
|
fc01b766cd
|
test(fe): 添加部分平仓比例刷新守卫 + 历史对账骨架(离线无DB) — closePercentInterestRefresh 守卫全部→部分平仓比例刷新链; historicalReconciliation 独立规格vs落库值差分; 全部18套件276测试通过
|
2026-08-08 14:16:54 +08:00 |
|