fix: correctly place template downloadUrl inside contracts and calculate original_size

This commit is contained in:
jade
2026-07-11 02:07:35 +09:00
parent 931c22e17a
commit 383ab92e98
2 changed files with 31 additions and 7 deletions

View File

@@ -204,15 +204,20 @@ public class BusinessToolController {
// 5. 결과 조립 (JSON-RPC 응답 - Agent Builder 규격 적용)
Map<String, Object> innerResult = new HashMap<>();
if (methodResult instanceof Map) {
if (methodResult instanceof Map && ((Map<?, ?>) methodResult).containsKey("contracts")) {
innerResult.putAll((Map<String, Object>) methodResult);
}
if (!innerResult.containsKey("contracts")) {
} else {
List<Object> contracts = new ArrayList<>();
if (methodResult != null) {
contracts.add(methodResult);
}
innerResult.put("contracts", contracts);
if (methodResult instanceof Map && ((Map<?, ?>) methodResult).containsKey("status")) {
innerResult.put("status", ((Map<?, ?>) methodResult).get("status"));
} else {
innerResult.put("status", "SUCCESS");
}
}
Map<String, Object> resultPayload = new HashMap<>();
@@ -222,7 +227,21 @@ public class BusinessToolController {
resultPayload.put("error_message", null);
resultPayload.put("elapsed_ms", elapsed);
resultPayload.put("truncated", false);
resultPayload.put("original_size", 0);
int originalSize = 0;
try {
if (methodResult instanceof Map && ((Map<?, ?>) methodResult).containsKey("legacy_response")) {
Object legacyResp = ((Map<?, ?>) methodResult).get("legacy_response");
if (legacyResp instanceof String) {
originalSize = ((String) legacyResp).getBytes(java.nio.charset.StandardCharsets.UTF_8).length;
}
} else {
String jsonStr = objectMapper.writeValueAsString(innerResult);
originalSize = jsonStr.getBytes(java.nio.charset.StandardCharsets.UTF_8).length;
}
} catch (Exception e) {
log.warn("Failed to calculate original_size", e);
}
resultPayload.put("original_size", originalSize);
Map<String, Object> rpcResponse = new java.util.LinkedHashMap<>(); // 순서 보장을 위해 LinkedHashMap 사용
rpcResponse.put("jsonrpc", "2.0");

View File

@@ -44,9 +44,14 @@ public class TemplateUtilityService extends AbstractMcpToolService {
Map<String, Object> result = new java.util.HashMap<>();
result.put("status", "success");
result.put("fileName", fileName);
result.put("downloadUrl", downloadUrl);
result.put("message", "다운로드 링크가 성공적으로 생성되었습니다. AI는 이 링크를 마크다운 형식으로 사용자에게 전달해야 합니다.");
Map<String, Object> contract = new java.util.HashMap<>();
contract.put("fileName", fileName);
contract.put("downloadUrl", downloadUrl);
contract.put("message", "다운로드 링크가 성공적으로 생성되었습니다. AI는 이 링크를 마크다운 형식으로 사용자에게 전달해야 합니다.");
contract.put("status", "success");
result.put("contracts", java.util.Collections.singletonList(contract));
return result;
} catch (Exception e) {