unbridled-41 opened a new pull request, #4284:
URL: https://github.com/apache/rocketmq-dashboard/pull/4284

   Fixes #4280.
   
   ## Problem / Evidence
   
   `LlmConfigService.saveConfig` 重建完整 `GeneralSettingsVO` 时未复制 
`dingtalkWebhook`/`smsWebhook`/`emailRecipients`;`SettingsService.saveGeneralSettings`
 
的空值回填(apiKey、dingtalkSigningSecret、llmEngine、deploymentName、apiVersion、awsRegion、maxTokens、temperature)没有通知渠道分支;`MybatisPlusSettingsRepository.saveGeneralSettings`
 将整个 VO 序列化覆盖单例行。三段链路逐行亲验:保存一次 AI/LLM 配置即把已配置的通知渠道持久化为 null,后续告警的钉钉/短信/邮件投递全部以 
`No configured dingtalk webhook`(outbox 既有报错)重试耗尽进入 
FAILED。回归测试先红:`saveConfigShouldPreserveNotificationChannelFields` → `expected: 
"https://oapi.dingtalk.com/robot/send?access_token=abc"; but was: null`。
   
   ## Root cause / Fix
   
   `saveConfig` 的 builder 遗漏三个渠道字段。修复:与同方法中其他保留字段一致,从 `current` 拷贝三字段(+5 
行)。`emailRecipients` 在 GET 侧本就不脱敏、`webhook` 字段对管理员会话也不脱敏,`getGeneralSettings` 
的掩码路径不受影响。
   
   ## Priority & scoring
   
   PRIORITY 78 = 影响 32(一次保存即静默禁用全部告警通知渠道,告警体系核心交付面失效)+ 波及 14(设置与通知两个子系统交叉)+ 可复现 
18(确定性 API 序列)+ 维护价值 14(补齐 #2963 已确立的部分保存契约的对称缺口);FIX_CONFIDENCE 92。
   
   ## Tests
   
   - 回归先红:`mvn -o test -Dtest=LlmConfigServiceTest` → `Tests run: 30, Failures: 
1`(expected ... but was: null);修复后 30/30 全绿。
   - 相关模块:`LlmConfigServiceTest, LlmControllerTest, SettingsControllerTest, 
SettingsServiceTest, OpenAiCompatibleLlmGatewayTest` 全部通过。
   - 全量后端(分支上 `mvn -o clean test`):2152 tests(pristine 6c24d2ed = 2151 + 本 PR 
新增 1),3 失败 = AuthCorsIntegrationTest ×2(基线预存,开放 PR #4217 已认领修复)+ 
`OpenAiCompatibleLlmGatewayTest.saturatedGatewayReturnsStructuredOverloadWithoutRunningProviderOnCaller`(历轮记录的负载脆弱用例,隔离通过)——零新增失败;编译由
 test 阶段覆盖 backend-build job。
   - numstat 自检:`LlmConfigService.java +5/−0`、`LlmConfigServiceTest.java 
+27/−0`。
   
   ## Risk
   
   低。仅在有存储值时多拷贝三个字段;通知渠道本就只应经 general 设置端点修改,LLM 表单不含这些输入。CI:upstream 工作流全部 
startup_failure(自 2026-08-29 起,0 check-runs),head 76000c1 无 CI 结果,以上为本地完整验证。
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to