AiForm 是 CodeSpirit.Amis 框架的智能表单功能,专为AI驱动的长时间处理任务设计。它自动生成一个多步骤的用户界面,包含表单输入、进度监控、日志显示和结果展示等功能。
@OperationAttribute 自动生成完整的AI表单界面
在控制器方法上使用 @HeaderOperation 特性:
ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line
[HttpPost("ai/generate-async")]
[HeaderOperation("AI智能生成问卷", "aiForm",
Icon = "fa-solid fa-magic",
StatusApi = "/survey/api/survey/Surveys/ai/task-status",
PollingInterval = 2000,
MaxPollingTime = 300000,
FormTitle = "问卷生成配置",
StepsTitle = "AI生成进度",
LogTitle = "生成日志",
ResultTitle = "生成结果")]
[DisplayName("AI智能生成问卷")]
public async Task<ActionResult<ApiResponse<string>>> GenerateSurveyAsync([FromBody] GenerateSurveyRequest request)
{
var taskId = await _surveyAiGeneratorService.GenerateAsync(request);
return SuccessResponse(taskId);
}属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
StatusApi | string | - | 必填,AI任务状态查询API地址 |
PollingInterval | int | 2000 | 轮询间隔(毫秒) |
MaxPollingTime | int | 300000 | 最大轮询时间(毫秒) |
SuccessRedirect | string | - | 成功后跳转的URL |
FormTitle | string | "配置信息" | 表单面板标题 |
StepsTitle | string | "处理进度" | 步骤面板标题 |
LogTitle | string | "处理日志" | 日志面板标题 |
ResultTitle | string | "处理结果" | 结果面板标题 |
实现 IAiTaskService 接口用于管理任务状态:
ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line
public class AiTaskService : IAiTaskService, ISingletonDependency
{
public async Task<string> CreateTaskAsync(string taskType, object parameters)
{
// 创建任务并返回任务ID
}
public async Task<AiTaskStatusDto?> GetTaskStatusAsync(string taskId)
{
// 返回任务状态信息
}
// 其他方法实现...
}继承 BaseAiGeneratorService 基类:
ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line
public class SurveyAiGeneratorService : BaseAiGeneratorService<GenerateSurveyRequest, GeneratedSurveyDto>, IScopedDependency
{
protected override string GetTaskType() => "问卷生成";
protected override async Task<GeneratedSurveyDto> DoGenerateAsync(
GenerateSurveyRequest request,
Action<double, string>? progressCallback = null)
{
// 实现具体的AI生成逻辑
// 使用 progressCallback 报告进度
progressCallback?.Invoke(0.3, "正在分析需求...");
// 生成逻辑...
return generatedSurvey;
}
}创建状态查询接口:
ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line
[HttpGet("ai/task-status")]
[DisplayName("获取AI任务状态")]
public async Task<ActionResult<ApiResponse<AiTaskStatusDto>>> GetTaskStatus([FromQuery] string taskId)
{
var status = await _aiTaskService.GetTaskStatusAsync(taskId);
if (status == null)
{
return BadResponse<AiTaskStatusDto>("任务不存在", statusCode: 404);
}
return SuccessResponse(status);
}AI表单生成的界面包含4个标签页:




使用Amis的标准事件动作系统实现:
loop 动作类型进行循环轮询wait 动作设置轮询间隔(PollingInterval 毫秒)ajax 动作查询任务状态condition 动作检查任务状态并执行相应操作MaxPollingTime / PollingIntervalPending (0):待开始InProgress (1):进行中Completed (2):已完成Failed (3):失败Cancelled (4):已取消ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line
public class AiTaskStatusDto
{
public string TaskId { get; set; } // 任务ID
public AiTaskStatus Status { get; set; } // 任务状态
public string StatusText { get; set; } // 状态描述
public int Step { get; set; } // 当前步骤(0-3)
public int Progress { get; set; } // 进度百分比(0-100)
public List<string> Logs { get; set; } // 任务日志
public object? Result { get; set; } // 任务结果
public DateTime StartTime { get; set; } // 开始时间
public DateTime? EndTime { get; set; } // 结束时间
public string ElapsedTime { get; set; } // 耗时显示
public string? DetailUrl { get; set; } // 结果详情页URL
}ISingletonDependency 确保任务状态在应用程序生命周期内保持progressCallback 报告进度MaxPollingTimePollingInterval 不宜设置过小,避免频繁请求IAiTaskService 和具体的AI生成服务已正确注册StatusApi 路径是否正确MaxPollingTime 值完整的示例可以参考:
Src/ApiServices/CodeSpirit.SurveyApi/Controllers/SurveysController.csSrc/ApiServices/CodeSpirit.SurveyApi/Services/Implementations/SurveyAiGeneratorService.csSrc/CodeSpirit.Shared/Services/AiTaskService.cs通过 AI表单功能,您可以轻松为长时间运行的AI任务创建用户友好的界面,提供实时反馈和进度监控,显著提升用户体验。