Commit Graph
316 Commits
Author SHA1 Message Date
张名锐 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
hjhan 0bef986e10 fix(valuation): 修复折叠分组后表头消失无法展开的问题
问题:折叠一个分组时,该组所有列被 hideCol 隐藏后,buildGroupHeaders
因 visibleColsInGroup 为空而 continue 跳过该分组,导致分组表头不渲染,
用户失去展开入口(表现为"收起后整组列和表头都不见了")。

修复:
- applyGroupHeaders:折叠时保留该组首列作为"展开锚点"(只隐藏 slice(1)),
  确保 setGroupHeaders 仍能为该分组渲染表头单元格
- buildGroupHeaders:折叠态下 numberOfColumns=1,表头显示 ▶ 可点击展开;
  被 setcolumnChooser 主动隐藏的分组仍跳过(不影响)
- 展开时恢复该组全部列

测试场景:
1. 互换估值Tab折叠任一分组 → 表头保留(▶),点击可展开恢复
2. 框架合约Tab同上
3. 全部折叠 → 每组各保留1列锚点,页面仍有列可操作
2026-07-08 09:08:08 +08:00
hjhan a617ed6d93 feat(valuation): 互换估值Tab 接入分组折叠 + 簿记筛选 + 导出
对应需求《估值模块V1》模块二:每日估值报告 - 互换估值Tab

改动:
1. 新增 eodSwapValuationGroupConfig 分组配置(4组:基本信息/利率与规模/价格/收益)
   现有列顺序已天然满足分组连续性,无需重排,风险最低
2. gridComplete 在 setcolumnChooser 完成后初始化可折叠分组表头
   保留原有异常行标红(dataError)逻辑
3. 新增簿记账户筛选(需求3.1):cshtml 加 BookId 下拉,searchPositionDetials 传 BookId
   未选择时传空,后端返回该对手方下全部账户合约
4. 新增「导出互换估值」按钮(需求3.2+4.2),走通用 exportVisibleColumnsToExcel
   文件名:{对手方}_每日估值报告_互换估值_{估值日}.xls
   与现有 DownLoadReport(整份报告)独立,互不影响

缺失字段(TODO,待后端确认):期间分红、预付金系列(利率/利息/期初/追加)、TRS估值

测试要点:簿记筛选生效、分组表头显示、折叠交互、异常行标红不受影响、导出可用
2026-07-08 08:56:34 +08:00
hjhan d40b561a42 feat(valuation): 框架合约Tab 导出可见列Excel + 通用导出工具
对应需求《估值模块V1》4.2:导出当前筛选后可见列数据,格式与前端一致。

改动:
1. utils.js 新增通用导出工具 exportVisibleColumnsToExcel(jgrid, fileName)
   - 零依赖,基于 HTML table + ms-excel MIME
   - 只导出当前可见列(与折叠状态联动:收起的分组列不导出)
   - 与后端模板导出(SettlementReport/EodPositionRisksQueryService)口径独立,互不干扰
2. EodPositionRisks.cshtml 恢复导出按钮(原 exportTrade 被注释,现改为 exportVisibleColumns)
3. EodPositionRisks.js 新增 exportVisibleColumns(),文件名含Tab名+结算日期

测试要点:导出列=页面可见列、列名=表头名、数据=当前筛选数据、折叠的列不导出
2026-07-08 08:53:44 +08:00
hjhan 76af939332 feat(valuation): 框架合约Tab 接入可折叠分组表头 + 字段命名对齐
对应需求《估值模块V1》模块一:日终持仓风险_互换 - 框架合约Tab

改动:
1. colModelGridEodSwap 列按需求2.2分组重排(组内列连续,满足setGroupHeaders要求)
   - 互换类型移至基本信息组(原在末尾)
2. 字段命名对齐需求用词(纯label改动,不改name/index):
   - 合约利率端待实现收益 → 合约利息端待实现收益
   - 预付金字段 → 保证金(收取/支付 初始/维持保证金)
3. 新增 eodSwapGroupConfig 分组配置(7组:基本信息/名义本金/标的市值/浮动端/利息端/保证金/估值与实现收益)
4. gridComplete 在 setcolumnChooser 完成后初始化可折叠分组表头

缺失字段(TODO,待后端确认):
- 标的类型、期间付息/分红、付息方式、合约估值(两口径)

测试要点:框架合约Tab表头分组合并、点击折叠/展开、footer汇总行(DV)正常、列设置功能正常
2026-07-08 08:51:33 +08:00
hjhan 7928000dc6 feat(valuation): 新增通用可折叠分组表头工具 initCollapsibleGroupHeaders
jqGrid 4.5.4 原生 setGroupHeaders 只支持静态合并表头,不支持点击折叠。
本次在 utils.js 新增通用工具函数,为估值模块前端重构提供基础能力:

- initCollapsibleGroupHeaders(jgrid, groupConfig): 生成合并表头 + 点击折叠/展开
- refreshCollapsibleGroupHeaders(jgrid): 列重排/显隐后重建分组边界
- 复用本文件 setcolumnChooser2 已验证的 destroyGroupHeader → 显隐列 → setGroupHeaders 重建模式
- 默认全部展开,折叠态显示 ▶ 展开态显示 ▼
- 与 setcolumnChooser 通过事件委托协调,不依赖 free-jqGrid 商业版

不换库、零全站回归风险。后续提交接入业务页面。
2026-07-08 08:50:14 +08:00
锦麟 王 fb59c6180a 支持审批流程中的分支网关和节点触发条件 2026-07-07 15:47:17 +08:00
hjhan b3c2fdfe38 test(fe): 补充守卫注释与架构闸门,防新增内联金额计算
- 生产接线处补注释,追溯到具体历史 bug (dcf649f2/20ea93d8/3c5f25a5/f873239a)

- swapCalc.js 注明哪些函数已接入生产、哪些是纯交叉校验规格

- 新增 guard_arch.js 架构闸门:扫描提交新增行,拦截 Vue 组件内联金额计算

- pre-commit hook 串行运行 单元测试 + 架构闸门
2026-07-07 13:26:32 +08:00