package dashboard import ( "code.tczkiot.com/wlw/ai-agent/internal/builders" "code.tczkiot.com/wlw/ai-agent/internal/pkg/constants" "code.tczkiot.com/wlw/ai-agent/internal/pkg/dto/request" "code.tczkiot.com/wlw/ai-agent/internal/pkg/httpx" "code.tczkiot.com/wlw/ai-agent/internal/pkg/httpx/params" "code.tczkiot.com/wlw/ai-agent/internal/services" "github.com/gin-gonic/gin" "github.com/mlogclub/simple/web" ) func AgentRunAnyList(ctx *gin.Context) { if _, err := services.AuthService.RequirePermission(ctx, constants.PermissionAIAgentView); err != nil { httpx.WriteJSON(ctx, err) return } queryParams := params.NewQueryParams(ctx) queryParams.Cnd = *params.NewPagedSqlCnd(ctx, params.QueryFilter{ParamName: "conversation_id"}, params.QueryFilter{ParamName: "ai_agent_id"}, params.QueryFilter{ParamName: "agent_revision_id"}, params.QueryFilter{ParamName: "source_message_id"}, params.QueryFilter{ParamName: "workflow_run_id"}, params.QueryFilter{ParamName: "status"}, ).Desc("id") list, paging := services.AgentRunService.FindPageByParams(queryParams) httpx.WriteJSON(ctx, &web.PageResult{Results: builders.BuildAgentRunList(list), Page: paging}) } func AgentRunGetBy(ctx *gin.Context) { id, ok := httpx.GetPathInt64(ctx, "id") if !ok { return } if _, err := services.AuthService.RequirePermission(ctx, constants.PermissionAIAgentView); err != nil { httpx.WriteJSON(ctx, err) return } run, steps, toolCalls := services.AgentRunService.GetDetail(id) if run == nil { httpx.WriteJSON(ctx, httpx.JsonErrorMsg(ctx, "error.e0002")) return } httpx.WriteJSON(ctx, builders.BuildAgentRunDetail(run, steps, toolCalls, services.AgentRunService.GetQualityFeedback(run.ID))) } func AgentRunPostSave_quality_feedback(ctx *gin.Context) { operator, err := services.AuthService.RequirePermission(ctx, constants.PermissionAIAgentUpdate) if err != nil { httpx.WriteJSON(ctx, err) return } req := request.SaveAgentRunQualityFeedbackRequest{} if err := params.ReadJSON(ctx, &req); err != nil { httpx.WriteJSON(ctx, err) return } if err := services.AgentRunService.SaveQualityFeedback(req, operator); err != nil { httpx.WriteJSON(ctx, err) return } httpx.WriteJSON(ctx, nil) } func AgentRunAnyMetrics(ctx *gin.Context) { if _, err := services.AuthService.RequirePermission(ctx, constants.PermissionAIAgentView); err != nil { httpx.WriteJSON(ctx, err) return } aiAgentID, _ := params.GetInt64(ctx, "ai_agent_id") httpx.WriteJSON(ctx, services.AgentRunService.GetMetrics(aiAgentID)) } func AgentRunPostEvaluate(ctx *gin.Context) { if _, err := services.AuthService.RequirePermission(ctx, constants.PermissionAIAgentView); err != nil { httpx.WriteJSON(ctx, err) return } req := request.RunAgentEvaluationRequest{} if err := params.ReadJSON(ctx, &req); err != nil { httpx.WriteJSON(ctx, err) return } result, err := services.AgentEvaluationService.Run(ctx, req) if err != nil { httpx.WriteJSON(ctx, err) return } httpx.WriteJSON(ctx, result) }