Add async AI generation tasks

This commit is contained in:
王鹏
2026-05-24 13:55:14 +08:00
parent 6682a44a43
commit bb7291f7d1
29 changed files with 2304 additions and 30 deletions

View File

@@ -19,6 +19,7 @@ import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.generator.domain.front.FrontProject;
import com.ruoyi.generator.domain.front.dto.DatabaseDesignResponse;
import com.ruoyi.generator.domain.front.dto.AiGenerationTaskCreateRequest;
import com.ruoyi.generator.domain.front.dto.FrontProjectCreateRequest;
import com.ruoyi.generator.domain.front.dto.FrontProjectUpdateRequest;
import com.ruoyi.generator.domain.front.dto.GenerateAppBlueprintRequest;
@@ -26,6 +27,7 @@ import com.ruoyi.generator.domain.front.dto.GenerateBusinessBlueprintRequest;
import com.ruoyi.generator.domain.front.dto.GenerateDatabaseRequest;
import com.ruoyi.generator.domain.front.dto.PreviewFileRequest;
import com.ruoyi.generator.service.front.IAiGenerateService;
import com.ruoyi.generator.service.front.IAiGenerationTaskService;
import com.ruoyi.generator.service.front.IFrontProjectPreviewService;
import com.ruoyi.generator.service.front.IFrontProjectService;
@@ -38,6 +40,8 @@ public class FrontProjectController extends BaseController
@Autowired
private IAiGenerateService aiGenerateService;
@Autowired
private IAiGenerationTaskService aiGenerationTaskService;
@Autowired
private IFrontProjectPreviewService frontProjectPreviewService;
@PostMapping("/create")
@@ -116,6 +120,48 @@ public class FrontProjectController extends BaseController
return success(aiGenerateService.generateBusinessBlueprint(userId, projectId, request));
}
@PostMapping("/{projectId}/ai-tasks")
public AjaxResult createAiTask(@PathVariable Long projectId, @RequestBody AiGenerationTaskCreateRequest request)
{
Long userId = SecurityUtils.getUserId();
return success(aiGenerationTaskService.createTask(userId, projectId, request));
}
@GetMapping("/{projectId}/ai-tasks/{taskId}")
public AjaxResult getAiTask(@PathVariable Long projectId, @PathVariable Long taskId)
{
Long userId = SecurityUtils.getUserId();
return success(aiGenerationTaskService.getTask(userId, projectId, taskId));
}
@PostMapping("/{projectId}/ai-tasks/{taskId}/retry")
public AjaxResult retryAiTask(@PathVariable Long projectId, @PathVariable Long taskId)
{
Long userId = SecurityUtils.getUserId();
return success(aiGenerationTaskService.retryTask(userId, projectId, taskId));
}
@PostMapping("/{projectId}/ai-tasks/{taskId}/cancel")
public AjaxResult cancelAiTask(@PathVariable Long projectId, @PathVariable Long taskId)
{
Long userId = SecurityUtils.getUserId();
return success(aiGenerationTaskService.cancelTask(userId, projectId, taskId));
}
@GetMapping("/{projectId}/generations")
public AjaxResult generations(@PathVariable Long projectId)
{
Long userId = SecurityUtils.getUserId();
return success(aiGenerationTaskService.listGenerations(userId, projectId));
}
@GetMapping("/ai-quota")
public AjaxResult aiQuota()
{
Long userId = SecurityUtils.getUserId();
return success(aiGenerationTaskService.getQuota(userId));
}
@PostMapping("/{projectId}/preview")
public AjaxResult preview(@PathVariable Long projectId)
{