package com.vincent.rsf.server.ai.controller; import com.vincent.rsf.framework.common.R; import com.vincent.rsf.server.ai.dto.AiPromptPreviewRequest; import com.vincent.rsf.server.ai.service.AiConfigOpsService; import com.vincent.rsf.server.system.controller.BaseController; import lombok.RequiredArgsConstructor; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController @RequiredArgsConstructor public class AiConfigOpsController extends BaseController { private final AiConfigOpsService aiConfigOpsService; @PreAuthorize("hasAnyAuthority('system:aiParam:list','system:aiPrompt:list','system:aiMcpMount:list')") @GetMapping("/ai/config/summary") public R getSummary(@RequestParam(value = "promptCode", required = false) String promptCode) { return R.ok().add(aiConfigOpsService.getSummary(promptCode, getTenantId())); } @PreAuthorize("hasAnyAuthority('system:aiPrompt:list','system:aiPrompt:save','system:aiPrompt:update')") @PostMapping("/ai/config/prompt/render-preview") public R renderPromptPreview(@RequestBody AiPromptPreviewRequest request) { return R.ok().add(aiConfigOpsService.renderPromptPreview(request, getTenantId())); } }