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 규격 적용)
|
// 5. 결과 조립 (JSON-RPC 응답 - Agent Builder 규격 적용)
|
||||||
Map<String, Object> innerResult = new HashMap<>();
|
Map<String, Object> innerResult = new HashMap<>();
|
||||||
if (methodResult instanceof Map) {
|
if (methodResult instanceof Map && ((Map<?, ?>) methodResult).containsKey("contracts")) {
|
||||||
innerResult.putAll((Map<String, Object>) methodResult);
|
innerResult.putAll((Map<String, Object>) methodResult);
|
||||||
}
|
} else {
|
||||||
if (!innerResult.containsKey("contracts")) {
|
|
||||||
List<Object> contracts = new ArrayList<>();
|
List<Object> contracts = new ArrayList<>();
|
||||||
if (methodResult != null) {
|
if (methodResult != null) {
|
||||||
contracts.add(methodResult);
|
contracts.add(methodResult);
|
||||||
}
|
}
|
||||||
innerResult.put("contracts", contracts);
|
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<>();
|
Map<String, Object> resultPayload = new HashMap<>();
|
||||||
@@ -222,7 +227,21 @@ public class BusinessToolController {
|
|||||||
resultPayload.put("error_message", null);
|
resultPayload.put("error_message", null);
|
||||||
resultPayload.put("elapsed_ms", elapsed);
|
resultPayload.put("elapsed_ms", elapsed);
|
||||||
resultPayload.put("truncated", false);
|
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 사용
|
Map<String, Object> rpcResponse = new java.util.LinkedHashMap<>(); // 순서 보장을 위해 LinkedHashMap 사용
|
||||||
rpcResponse.put("jsonrpc", "2.0");
|
rpcResponse.put("jsonrpc", "2.0");
|
||||||
|
|||||||
@@ -44,9 +44,14 @@ public class TemplateUtilityService extends AbstractMcpToolService {
|
|||||||
|
|
||||||
Map<String, Object> result = new java.util.HashMap<>();
|
Map<String, Object> result = new java.util.HashMap<>();
|
||||||
result.put("status", "success");
|
result.put("status", "success");
|
||||||
result.put("fileName", fileName);
|
|
||||||
result.put("downloadUrl", downloadUrl);
|
Map<String, Object> contract = new java.util.HashMap<>();
|
||||||
result.put("message", "다운로드 링크가 성공적으로 생성되었습니다. AI는 이 링크를 마크다운 형식으로 사용자에게 전달해야 합니다.");
|
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;
|
return result;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|||||||
Reference in New Issue
Block a user