package com.vincent.rsf.server.ai.store; import com.vincent.rsf.server.ai.config.AiDefaults; import com.vincent.rsf.server.ai.store.support.AiRedisExecutor; import com.vincent.rsf.server.ai.store.support.AiRedisKeys; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; @Component @RequiredArgsConstructor public class AiToolResultStore { private final AiRedisExecutor aiRedisExecutor; private final AiRedisKeys aiRedisKeys; public AiCachedToolResult getToolResult(Long tenantId, String requestId, String toolName, String toolInput) { return aiRedisExecutor.readJson(aiRedisKeys.buildToolResultKey(tenantId, requestId, toolName, toolInput), AiCachedToolResult.class); } public void cacheToolResult(Long tenantId, String requestId, String toolName, String toolInput, boolean success, String output, String errorMessage) { aiRedisExecutor.writeJson(aiRedisKeys.buildToolResultKey(tenantId, requestId, toolName, toolInput), AiCachedToolResult.builder() .success(success) .output(output) .errorMessage(errorMessage) .build(), AiDefaults.TOOL_RESULT_CACHE_TTL_SECONDS); } }