fix: correctly place template downloadUrl inside contracts and calculate original_size
This commit is contained in:
@@ -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");
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user