fix(aihr): hide speech and llm error payloads

This commit is contained in:
2026-07-14 08:32:37 +08:00
parent fd4170a2e5
commit f49218b44c
4 changed files with 7 additions and 3 deletions
@@ -409,7 +409,7 @@ public class AihrModelSeedService {
.send(builder.build(), HttpResponse.BodyHandlers.ofString()); .send(builder.build(), HttpResponse.BodyHandlers.ofString());
if (response.statusCode() < 200 || response.statusCode() >= 300) { if (response.statusCode() < 200 || response.statusCode() >= 300) {
throw new IllegalStateException("LLM HTTP " + response.statusCode() + ": " + truncate(response.body(), 240)); throw new IllegalStateException("LLM HTTP " + response.statusCode() + "(外部响应体已隐藏)");
} }
JsonNode root = objectMapper.readTree(response.body()); JsonNode root = objectMapper.readTree(response.body());
@@ -60,7 +60,7 @@ public class AihrSpeechService {
.build(); .build();
HttpResponse<String> response = client().send(httpRequest, HttpResponse.BodyHandlers.ofString()); HttpResponse<String> response = client().send(httpRequest, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() < 200 || response.statusCode() >= 300) { if (response.statusCode() < 200 || response.statusCode() >= 300) {
log.warn("asr http {}: {}", response.statusCode(), truncate(response.body())); log.warn("asr http {}(外部响应体已隐藏)", response.statusCode());
return Optional.empty(); return Optional.empty();
} }
String text = objectMapper.readTree(response.body()).path("text").asText(""); String text = objectMapper.readTree(response.body()).path("text").asText("");
@@ -92,7 +92,7 @@ public class AihrSpeechService {
.build(); .build();
HttpResponse<byte[]> response = client().send(httpRequest, HttpResponse.BodyHandlers.ofByteArray()); HttpResponse<byte[]> response = client().send(httpRequest, HttpResponse.BodyHandlers.ofByteArray());
if (response.statusCode() < 200 || response.statusCode() >= 300) { if (response.statusCode() < 200 || response.statusCode() >= 300) {
log.warn("tts http {}: {}", response.statusCode(), truncate(new String(response.body(), StandardCharsets.UTF_8))); log.warn("tts http {}(外部响应体已隐藏)", response.statusCode());
return Optional.empty(); return Optional.empty();
} }
return response.body().length == 0 ? Optional.empty() : Optional.of(response.body()); return response.body().length == 0 ? Optional.empty() : Optional.of(response.body());
@@ -44,10 +44,12 @@ class AihrSensitiveTextTest {
String orgSyncSource = Files.readString(source("AihrOrgSyncService.java")); String orgSyncSource = Files.readString(source("AihrOrgSyncService.java"));
assertTrue(modelSource.contains("AihrSensitiveText.forModel(prompt)")); assertTrue(modelSource.contains("AihrSensitiveText.forModel(prompt)"));
assertTrue(modelSource.contains("外部响应体已隐藏"));
assertTrue(sopSource.contains("AihrSensitiveText.forModel(renderPrompt(prompt.template(), queryText, context))")); assertTrue(sopSource.contains("AihrSensitiveText.forModel(renderPrompt(prompt.template(), queryText, context))"));
assertTrue(sopSource.contains("AihrSensitiveText.forModel(\"\"\"")); assertTrue(sopSource.contains("AihrSensitiveText.forModel(\"\"\""));
assertTrue(interviewSource.contains("AihrSensitiveText.personName(candidate.name(), \"候选人\")")); assertTrue(interviewSource.contains("AihrSensitiveText.personName(candidate.name(), \"候选人\")"));
assertTrue(speechSource.contains("AihrSensitiveText.forModel(text.trim())")); assertTrue(speechSource.contains("AihrSensitiveText.forModel(text.trim())"));
assertTrue(speechSource.contains("asr http {}(外部响应体已隐藏)"));
assertTrue(orgSyncSource.contains("外部响应体已隐藏")); assertTrue(orgSyncSource.contains("外部响应体已隐藏"));
assertTrue(orgSyncSource.contains("AihrSensitiveText.forModel(e.getMessage())")); assertTrue(orgSyncSource.contains("AihrSensitiveText.forModel(e.getMessage())"));
} }
+2
View File
@@ -461,8 +461,10 @@ contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrSopSeedService.java "aihr_knowledge_gap" contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrSopSeedService.java "aihr_knowledge_gap"
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrSensitiveText.java "外部 AI 模型前" contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrSensitiveText.java "外部 AI 模型前"
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrModelSeedService.java "AihrSensitiveText.forModel(prompt)" contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrModelSeedService.java "AihrSensitiveText.forModel(prompt)"
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrModelSeedService.java "外部响应体已隐藏"
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrSopSeedService.java "AihrSensitiveText.forModel(renderPrompt" contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrSopSeedService.java "AihrSensitiveText.forModel(renderPrompt"
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrSpeechService.java "AihrSensitiveText.forModel(text.trim())" contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrSpeechService.java "AihrSensitiveText.forModel(text.trim())"
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrSpeechService.java "asr http {}(外部响应体已隐藏)"
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrVideoService.java "AihrSensitiveText.forModel(fileName)" contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrVideoService.java "AihrSensitiveText.forModel(fileName)"
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrOrgSyncService.java "外部响应体已隐藏" contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrOrgSyncService.java "外部响应体已隐藏"
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/controller/AihrCaseController.java "仅项目负责人或主管可提交案例素材" contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/controller/AihrCaseController.java "仅项目负责人或主管可提交案例素材"