diff --git a/backend/api/handler/coze/loop/apis/eval_target_service.go b/backend/api/handler/coze/loop/apis/eval_target_service.go index 615c48fab..f9def75fc 100644 --- a/backend/api/handler/coze/loop/apis/eval_target_service.go +++ b/backend/api/handler/coze/loop/apis/eval_target_service.go @@ -9,7 +9,6 @@ import ( "context" "github.com/cloudwego/hertz/pkg/app" - "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/evaltargetservice" ) @@ -104,3 +103,9 @@ func MockEvalTargetOutput(ctx context.Context, c *app.RequestContext) { func GetEvalTargetOutputFieldContent(ctx context.Context, c *app.RequestContext) { invokeAndRender(ctx, c, localEvalTargetSvc.GetEvalTargetOutputFieldContent) } + +// GetSourceEvalTargetVersion . +// @router /api/evaluation/v1/eval_targets/get_source_version [GET] +func GetSourceEvalTargetVersion(ctx context.Context, c *app.RequestContext) { + invokeAndRender(ctx, c, localEvalTargetSvc.GetSourceEvalTargetVersion) +} diff --git a/backend/api/router/coze/loop/apis/coze.loop.apis.go b/backend/api/router/coze/loop/apis/coze.loop.apis.go index fad4e2cf5..ba0b6c4c5 100644 --- a/backend/api/router/coze/loop/apis/coze.loop.apis.go +++ b/backend/api/router/coze/loop/apis/coze.loop.apis.go @@ -105,6 +105,7 @@ func Register(r *server.Hertz, handler *apis.APIHandler) { _eval_targets.POST("/batch_get_by_source", append(_batchgetevaltargetsbysourceMw(handler), apis.BatchGetEvalTargetsBySource)...) _eval_targets.POST("/batch_get_source", append(_batchgetsourceevaltargetsMw(handler), apis.BatchGetSourceEvalTargets)...) _eval_targets.POST("/debug", append(_debugevaltargetMw(handler), apis.DebugEvalTarget)...) + _eval_targets.GET("/get_source_version", append(_getsourceevaltargetversionMw(handler), apis.GetSourceEvalTargetVersion)...) _eval_targets.POST("/list_source", append(_listsourceevaltargetsMw(handler), apis.ListSourceEvalTargets)...) _eval_targets.POST("/list_source_version", append(_listsourceevaltargetversionsMw(handler), apis.ListSourceEvalTargetVersions)...) _eval_targets.POST("/mock_output", append(_mockevaltargetoutputMw(handler), apis.MockEvalTargetOutput)...) diff --git a/backend/api/router/coze/loop/apis/middleware.go b/backend/api/router/coze/loop/apis/middleware.go index 4a65c3194..00be6029c 100644 --- a/backend/api/router/coze/loop/apis/middleware.go +++ b/backend/api/router/coze/loop/apis/middleware.go @@ -2015,6 +2015,11 @@ func _reportevaluatorinvokeprogressMw(handler *apis.APIHandler) []app.HandlerFun return nil } +func _getsourceevaltargetversionMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + return nil +} + func _batchgetpromptbasicMw(handler *apis.APIHandler) []app.HandlerFunc { // your code... return nil diff --git a/backend/go.sum b/backend/go.sum index fc81856af..5cc939c73 100644 --- a/backend/go.sum +++ b/backend/go.sum @@ -473,6 +473,7 @@ github.com/google/pprof v0.0.0-20240827171923-fa2c70bbbfe5/go.mod h1:vavhavw2zAx github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/s2a-go v0.1.8 h1:zZDs9gcbt9ZPLV0ndSyQk6Kacx2g/X+SKYovpnz3SMM= github.com/google/s2a-go v0.1.8/go.mod h1:6iNWHTpQ+nfNRN5E00MSdfDwVesa8hhS32PhPO8deJA= +github.com/google/subcommands v1.2.0 h1:vWQspBTo2nEqTUFita5/KeEWlUL8kQObDFbub/EN9oE= github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= diff --git a/backend/kitex_gen/coze/loop/apis/evaltargetservice/client.go b/backend/kitex_gen/coze/loop/apis/evaltargetservice/client.go index f17584f58..e254bd476 100644 --- a/backend/kitex_gen/coze/loop/apis/evaltargetservice/client.go +++ b/backend/kitex_gen/coze/loop/apis/evaltargetservice/client.go @@ -18,6 +18,7 @@ type Client interface { ListSourceEvalTargets(ctx context.Context, request *eval_target.ListSourceEvalTargetsRequest, callOptions ...callopt.Option) (r *eval_target.ListSourceEvalTargetsResponse, err error) ListSourceEvalTargetVersions(ctx context.Context, request *eval_target.ListSourceEvalTargetVersionsRequest, callOptions ...callopt.Option) (r *eval_target.ListSourceEvalTargetVersionsResponse, err error) BatchGetSourceEvalTargets(ctx context.Context, request *eval_target.BatchGetSourceEvalTargetsRequest, callOptions ...callopt.Option) (r *eval_target.BatchGetSourceEvalTargetsResponse, err error) + GetSourceEvalTargetVersion(ctx context.Context, request *eval_target.GetSourceEvalTargetVersionRequest, callOptions ...callopt.Option) (r *eval_target.GetSourceEvalTargetVersionResponse, err error) SearchCustomEvalTarget(ctx context.Context, req *eval_target.SearchCustomEvalTargetRequest, callOptions ...callopt.Option) (r *eval_target.SearchCustomEvalTargetResponse, err error) ExecuteEvalTarget(ctx context.Context, request *eval_target.ExecuteEvalTargetRequest, callOptions ...callopt.Option) (r *eval_target.ExecuteEvalTargetResponse, err error) AsyncExecuteEvalTarget(ctx context.Context, request *eval_target.AsyncExecuteEvalTargetRequest, callOptions ...callopt.Option) (r *eval_target.AsyncExecuteEvalTargetResponse, err error) @@ -93,6 +94,11 @@ func (p *kEvalTargetServiceClient) BatchGetSourceEvalTargets(ctx context.Context return p.kClient.BatchGetSourceEvalTargets(ctx, request) } +func (p *kEvalTargetServiceClient) GetSourceEvalTargetVersion(ctx context.Context, request *eval_target.GetSourceEvalTargetVersionRequest, callOptions ...callopt.Option) (r *eval_target.GetSourceEvalTargetVersionResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.GetSourceEvalTargetVersion(ctx, request) +} + func (p *kEvalTargetServiceClient) SearchCustomEvalTarget(ctx context.Context, req *eval_target.SearchCustomEvalTargetRequest, callOptions ...callopt.Option) (r *eval_target.SearchCustomEvalTargetResponse, err error) { ctx = client.NewCtxWithCallOptions(ctx, callOptions) return p.kClient.SearchCustomEvalTarget(ctx, req) diff --git a/backend/kitex_gen/coze/loop/apis/evaltargetservice/evaltargetservice.go b/backend/kitex_gen/coze/loop/apis/evaltargetservice/evaltargetservice.go index 314cc0d01..69932f5f4 100644 --- a/backend/kitex_gen/coze/loop/apis/evaltargetservice/evaltargetservice.go +++ b/backend/kitex_gen/coze/loop/apis/evaltargetservice/evaltargetservice.go @@ -63,6 +63,13 @@ var serviceMethods = map[string]kitex.MethodInfo{ false, kitex.WithStreamingMode(kitex.StreamingNone), ), + "GetSourceEvalTargetVersion": kitex.NewMethodInfo( + getSourceEvalTargetVersionHandler, + newEvalTargetServiceGetSourceEvalTargetVersionArgs, + newEvalTargetServiceGetSourceEvalTargetVersionResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), "SearchCustomEvalTarget": kitex.NewMethodInfo( searchCustomEvalTargetHandler, newEvalTargetServiceSearchCustomEvalTargetArgs, @@ -292,6 +299,25 @@ func newEvalTargetServiceBatchGetSourceEvalTargetsResult() interface{} { return eval_target.NewEvalTargetServiceBatchGetSourceEvalTargetsResult() } +func getSourceEvalTargetVersionHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*eval_target.EvalTargetServiceGetSourceEvalTargetVersionArgs) + realResult := result.(*eval_target.EvalTargetServiceGetSourceEvalTargetVersionResult) + success, err := handler.(eval_target.EvalTargetService).GetSourceEvalTargetVersion(ctx, realArg.Request) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newEvalTargetServiceGetSourceEvalTargetVersionArgs() interface{} { + return eval_target.NewEvalTargetServiceGetSourceEvalTargetVersionArgs() +} + +func newEvalTargetServiceGetSourceEvalTargetVersionResult() interface{} { + return eval_target.NewEvalTargetServiceGetSourceEvalTargetVersionResult() +} + func searchCustomEvalTargetHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { realArg := arg.(*eval_target.EvalTargetServiceSearchCustomEvalTargetArgs) realResult := result.(*eval_target.EvalTargetServiceSearchCustomEvalTargetResult) @@ -545,6 +571,16 @@ func (p *kClient) BatchGetSourceEvalTargets(ctx context.Context, request *eval_t return _result.GetSuccess(), nil } +func (p *kClient) GetSourceEvalTargetVersion(ctx context.Context, request *eval_target.GetSourceEvalTargetVersionRequest) (r *eval_target.GetSourceEvalTargetVersionResponse, err error) { + var _args eval_target.EvalTargetServiceGetSourceEvalTargetVersionArgs + _args.Request = request + var _result eval_target.EvalTargetServiceGetSourceEvalTargetVersionResult + if err = p.c.Call(ctx, "GetSourceEvalTargetVersion", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + func (p *kClient) SearchCustomEvalTarget(ctx context.Context, req *eval_target.SearchCustomEvalTargetRequest) (r *eval_target.SearchCustomEvalTargetResponse, err error) { var _args eval_target.EvalTargetServiceSearchCustomEvalTargetArgs _args.Req = req diff --git a/backend/kitex_gen/coze/loop/evaluation/domain/eval_target/eval_target.go b/backend/kitex_gen/coze/loop/evaluation/domain/eval_target/eval_target.go index 82503124f..f13bd7074 100644 --- a/backend/kitex_gen/coze/loop/evaluation/domain/eval_target/eval_target.go +++ b/backend/kitex_gen/coze/loop/evaluation/domain/eval_target/eval_target.go @@ -53,6 +53,8 @@ const ( EvalTargetType_CustomRPCServer EvalTargetType = 6 // 火山智能体Agentkit EvalTargetType_VolcengineAgentAgentkit EvalTargetType = 7 + // Web智能体 + EvalTargetType_WebAgent EvalTargetType = 8 // CozeBot在线(评测过程中不执行对象,仅用于展示对象) EvalTargetType_CozeBotOnline EvalTargetType = 11 // Prompt在线(评测过程中不执行对象,仅用于展示对象) @@ -83,6 +85,8 @@ func (p EvalTargetType) String() string { return "CustomRPCServer" case EvalTargetType_VolcengineAgentAgentkit: return "VolcengineAgentAgentkit" + case EvalTargetType_WebAgent: + return "WebAgent" case EvalTargetType_CozeBotOnline: return "CozeBotOnline" case EvalTargetType_CozeLoopPromptOnline: @@ -115,6 +119,8 @@ func EvalTargetTypeFromString(s string) (EvalTargetType, error) { return EvalTargetType_CustomRPCServer, nil case "VolcengineAgentAgentkit": return EvalTargetType_VolcengineAgentAgentkit, nil + case "WebAgent": + return EvalTargetType_WebAgent, nil case "CozeBotOnline": return EvalTargetType_CozeBotOnline, nil case "CozeLoopPromptOnline": @@ -1477,6 +1483,8 @@ type EvalTargetContent struct { VolcengineAgent *VolcengineAgent `thrift:"volcengine_agent,104,optional" frugal:"104,optional,VolcengineAgent" form:"volcengine_agent" json:"volcengine_agent,omitempty" query:"volcengine_agent"` // EvalTargetType=6 时,传参此字段。 评测对象为 CustomRPCServer 时, 需要设置 CustomRPCServer 信息 CustomRPCServer *CustomRPCServer `thrift:"custom_rpc_server,105,optional" frugal:"105,optional,CustomRPCServer" form:"custom_rpc_server" json:"custom_rpc_server,omitempty" query:"custom_rpc_server"` + // EvalTargetType=8 时,传参此字段。 评测对象为 WebAgent 时, 需要设置 WebAgent 信息 + WebAgent *WebAgent `thrift:"web_agent,106,optional" frugal:"106,optional,WebAgent" form:"web_agent" json:"web_agent,omitempty" query:"web_agent"` } func NewEvalTargetContent() *EvalTargetContent { @@ -1581,6 +1589,18 @@ func (p *EvalTargetContent) GetCustomRPCServer() (v *CustomRPCServer) { } return p.CustomRPCServer } + +var EvalTargetContent_WebAgent_DEFAULT *WebAgent + +func (p *EvalTargetContent) GetWebAgent() (v *WebAgent) { + if p == nil { + return + } + if !p.IsSetWebAgent() { + return EvalTargetContent_WebAgent_DEFAULT + } + return p.WebAgent +} func (p *EvalTargetContent) SetInputSchemas(val []*common.ArgsSchema) { p.InputSchemas = val } @@ -1605,6 +1625,9 @@ func (p *EvalTargetContent) SetVolcengineAgent(val *VolcengineAgent) { func (p *EvalTargetContent) SetCustomRPCServer(val *CustomRPCServer) { p.CustomRPCServer = val } +func (p *EvalTargetContent) SetWebAgent(val *WebAgent) { + p.WebAgent = val +} var fieldIDToName_EvalTargetContent = map[int16]string{ 1: "input_schemas", @@ -1615,6 +1638,7 @@ var fieldIDToName_EvalTargetContent = map[int16]string{ 103: "coze_workflow", 104: "volcengine_agent", 105: "custom_rpc_server", + 106: "web_agent", } func (p *EvalTargetContent) IsSetInputSchemas() bool { @@ -1649,6 +1673,10 @@ func (p *EvalTargetContent) IsSetCustomRPCServer() bool { return p.CustomRPCServer != nil } +func (p *EvalTargetContent) IsSetWebAgent() bool { + return p.WebAgent != nil +} + func (p *EvalTargetContent) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -1731,6 +1759,14 @@ func (p *EvalTargetContent) Read(iprot thrift.TProtocol) (err error) { } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 106: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField106(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } default: if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError @@ -1857,6 +1893,14 @@ func (p *EvalTargetContent) ReadField105(iprot thrift.TProtocol) error { p.CustomRPCServer = _field return nil } +func (p *EvalTargetContent) ReadField106(iprot thrift.TProtocol) error { + _field := NewWebAgent() + if err := _field.Read(iprot); err != nil { + return err + } + p.WebAgent = _field + return nil +} func (p *EvalTargetContent) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 @@ -1896,6 +1940,10 @@ func (p *EvalTargetContent) Write(oprot thrift.TProtocol) (err error) { fieldId = 105 goto WriteFieldError } + if err = p.writeField106(oprot); err != nil { + fieldId = 106 + goto WriteFieldError + } } if err = oprot.WriteFieldStop(); err != nil { goto WriteFieldStopError @@ -2074,6 +2122,24 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 105 end error: ", p), err) } +func (p *EvalTargetContent) writeField106(oprot thrift.TProtocol) (err error) { + if p.IsSetWebAgent() { + if err = oprot.WriteFieldBegin("web_agent", thrift.STRUCT, 106); err != nil { + goto WriteFieldBeginError + } + if err := p.WebAgent.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 106 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 106 end error: ", p), err) +} func (p *EvalTargetContent) String() string { if p == nil { @@ -2107,21 +2173,835 @@ func (p *EvalTargetContent) DeepEqual(ano *EvalTargetContent) bool { if !p.Field103DeepEqual(ano.CozeWorkflow) { return false } - if !p.Field104DeepEqual(ano.VolcengineAgent) { + if !p.Field104DeepEqual(ano.VolcengineAgent) { + return false + } + if !p.Field105DeepEqual(ano.CustomRPCServer) { + return false + } + if !p.Field106DeepEqual(ano.WebAgent) { + return false + } + return true +} + +func (p *EvalTargetContent) Field1DeepEqual(src []*common.ArgsSchema) bool { + + if len(p.InputSchemas) != len(src) { + return false + } + for i, v := range p.InputSchemas { + _src := src[i] + if !v.DeepEqual(_src) { + return false + } + } + return true +} +func (p *EvalTargetContent) Field2DeepEqual(src []*common.ArgsSchema) bool { + + if len(p.OutputSchemas) != len(src) { + return false + } + for i, v := range p.OutputSchemas { + _src := src[i] + if !v.DeepEqual(_src) { + return false + } + } + return true +} +func (p *EvalTargetContent) Field3DeepEqual(src *string) bool { + + if p.RuntimeParamJSONDemo == src { + return true + } else if p.RuntimeParamJSONDemo == nil || src == nil { + return false + } + if strings.Compare(*p.RuntimeParamJSONDemo, *src) != 0 { + return false + } + return true +} +func (p *EvalTargetContent) Field101DeepEqual(src *CozeBot) bool { + + if !p.CozeBot.DeepEqual(src) { + return false + } + return true +} +func (p *EvalTargetContent) Field102DeepEqual(src *EvalPrompt) bool { + + if !p.Prompt.DeepEqual(src) { + return false + } + return true +} +func (p *EvalTargetContent) Field103DeepEqual(src *CozeWorkflow) bool { + + if !p.CozeWorkflow.DeepEqual(src) { + return false + } + return true +} +func (p *EvalTargetContent) Field104DeepEqual(src *VolcengineAgent) bool { + + if !p.VolcengineAgent.DeepEqual(src) { + return false + } + return true +} +func (p *EvalTargetContent) Field105DeepEqual(src *CustomRPCServer) bool { + + if !p.CustomRPCServer.DeepEqual(src) { + return false + } + return true +} +func (p *EvalTargetContent) Field106DeepEqual(src *WebAgent) bool { + + if !p.WebAgent.DeepEqual(src) { + return false + } + return true +} + +type WebAgent struct { + // 应用ID + ID *int64 `thrift:"id,1,optional" frugal:"1,optional,i64" form:"id" json:"id,omitempty" query:"id"` + // DTO使用,不存数据库 + Name *string `thrift:"name,2,optional" frugal:"2,optional,string" form:"name" json:"name,omitempty" query:"name"` + // DTO使用,不存数据库 + Description *string `thrift:"description,3,optional" frugal:"3,optional,string" form:"description" json:"description,omitempty" query:"description"` + // agent config + AgentConfig *common.AgentConfig `thrift:"agent_config,4,optional" frugal:"4,optional,common.AgentConfig" form:"agent_config" json:"agent_config,omitempty" query:"agent_config"` + // agent prompt config for agent + PromptConfig *WebAgentTargetPromptConfig `thrift:"prompt_config,5,optional" frugal:"5,optional,WebAgentTargetPromptConfig" form:"prompt_config" json:"prompt_config,omitempty" query:"prompt_config"` +} + +func NewWebAgent() *WebAgent { + return &WebAgent{} +} + +func (p *WebAgent) InitDefault() { +} + +var WebAgent_ID_DEFAULT int64 + +func (p *WebAgent) GetID() (v int64) { + if p == nil { + return + } + if !p.IsSetID() { + return WebAgent_ID_DEFAULT + } + return *p.ID +} + +var WebAgent_Name_DEFAULT string + +func (p *WebAgent) GetName() (v string) { + if p == nil { + return + } + if !p.IsSetName() { + return WebAgent_Name_DEFAULT + } + return *p.Name +} + +var WebAgent_Description_DEFAULT string + +func (p *WebAgent) GetDescription() (v string) { + if p == nil { + return + } + if !p.IsSetDescription() { + return WebAgent_Description_DEFAULT + } + return *p.Description +} + +var WebAgent_AgentConfig_DEFAULT *common.AgentConfig + +func (p *WebAgent) GetAgentConfig() (v *common.AgentConfig) { + if p == nil { + return + } + if !p.IsSetAgentConfig() { + return WebAgent_AgentConfig_DEFAULT + } + return p.AgentConfig +} + +var WebAgent_PromptConfig_DEFAULT *WebAgentTargetPromptConfig + +func (p *WebAgent) GetPromptConfig() (v *WebAgentTargetPromptConfig) { + if p == nil { + return + } + if !p.IsSetPromptConfig() { + return WebAgent_PromptConfig_DEFAULT + } + return p.PromptConfig +} +func (p *WebAgent) SetID(val *int64) { + p.ID = val +} +func (p *WebAgent) SetName(val *string) { + p.Name = val +} +func (p *WebAgent) SetDescription(val *string) { + p.Description = val +} +func (p *WebAgent) SetAgentConfig(val *common.AgentConfig) { + p.AgentConfig = val +} +func (p *WebAgent) SetPromptConfig(val *WebAgentTargetPromptConfig) { + p.PromptConfig = val +} + +var fieldIDToName_WebAgent = map[int16]string{ + 1: "id", + 2: "name", + 3: "description", + 4: "agent_config", + 5: "prompt_config", +} + +func (p *WebAgent) IsSetID() bool { + return p.ID != nil +} + +func (p *WebAgent) IsSetName() bool { + return p.Name != nil +} + +func (p *WebAgent) IsSetDescription() bool { + return p.Description != nil +} + +func (p *WebAgent) IsSetAgentConfig() bool { + return p.AgentConfig != nil +} + +func (p *WebAgent) IsSetPromptConfig() bool { + return p.PromptConfig != nil +} + +func (p *WebAgent) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.STRING { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 3: + if fieldTypeId == thrift.STRING { + if err = p.ReadField3(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 4: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField4(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 5: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField5(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_WebAgent[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *WebAgent) ReadField1(iprot thrift.TProtocol) error { + + var _field *int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = &v + } + p.ID = _field + return nil +} +func (p *WebAgent) ReadField2(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.Name = _field + return nil +} +func (p *WebAgent) ReadField3(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.Description = _field + return nil +} +func (p *WebAgent) ReadField4(iprot thrift.TProtocol) error { + _field := common.NewAgentConfig() + if err := _field.Read(iprot); err != nil { + return err + } + p.AgentConfig = _field + return nil +} +func (p *WebAgent) ReadField5(iprot thrift.TProtocol) error { + _field := NewWebAgentTargetPromptConfig() + if err := _field.Read(iprot); err != nil { + return err + } + p.PromptConfig = _field + return nil +} + +func (p *WebAgent) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("WebAgent"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField3(oprot); err != nil { + fieldId = 3 + goto WriteFieldError + } + if err = p.writeField4(oprot); err != nil { + fieldId = 4 + goto WriteFieldError + } + if err = p.writeField5(oprot); err != nil { + fieldId = 5 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *WebAgent) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetID() { + if err = oprot.WriteFieldBegin("id", thrift.I64, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(*p.ID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *WebAgent) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetName() { + if err = oprot.WriteFieldBegin("name", thrift.STRING, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.Name); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *WebAgent) writeField3(oprot thrift.TProtocol) (err error) { + if p.IsSetDescription() { + if err = oprot.WriteFieldBegin("description", thrift.STRING, 3); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.Description); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} +func (p *WebAgent) writeField4(oprot thrift.TProtocol) (err error) { + if p.IsSetAgentConfig() { + if err = oprot.WriteFieldBegin("agent_config", thrift.STRUCT, 4); err != nil { + goto WriteFieldBeginError + } + if err := p.AgentConfig.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) +} +func (p *WebAgent) writeField5(oprot thrift.TProtocol) (err error) { + if p.IsSetPromptConfig() { + if err = oprot.WriteFieldBegin("prompt_config", thrift.STRUCT, 5); err != nil { + goto WriteFieldBeginError + } + if err := p.PromptConfig.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 5 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 5 end error: ", p), err) +} + +func (p *WebAgent) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("WebAgent(%+v)", *p) + +} + +func (p *WebAgent) DeepEqual(ano *WebAgent) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.ID) { + return false + } + if !p.Field2DeepEqual(ano.Name) { + return false + } + if !p.Field3DeepEqual(ano.Description) { + return false + } + if !p.Field4DeepEqual(ano.AgentConfig) { + return false + } + if !p.Field5DeepEqual(ano.PromptConfig) { + return false + } + return true +} + +func (p *WebAgent) Field1DeepEqual(src *int64) bool { + + if p.ID == src { + return true + } else if p.ID == nil || src == nil { + return false + } + if *p.ID != *src { + return false + } + return true +} +func (p *WebAgent) Field2DeepEqual(src *string) bool { + + if p.Name == src { + return true + } else if p.Name == nil || src == nil { + return false + } + if strings.Compare(*p.Name, *src) != 0 { + return false + } + return true +} +func (p *WebAgent) Field3DeepEqual(src *string) bool { + + if p.Description == src { + return true + } else if p.Description == nil || src == nil { + return false + } + if strings.Compare(*p.Description, *src) != 0 { + return false + } + return true +} +func (p *WebAgent) Field4DeepEqual(src *common.AgentConfig) bool { + + if !p.AgentConfig.DeepEqual(src) { + return false + } + return true +} +func (p *WebAgent) Field5DeepEqual(src *WebAgentTargetPromptConfig) bool { + + if !p.PromptConfig.DeepEqual(src) { + return false + } + return true +} + +type WebAgentTargetPromptConfig struct { + // 通过messge list的方式描述target的操作说明 + MessageList []*common.Message `thrift:"message_list,1,optional" frugal:"1,optional,list" form:"message_list" json:"message_list,omitempty" query:"message_list"` + // 输出规则 + OutputRule *WebAgentTargetPromptConfigOutputRule `thrift:"output_rule,2,optional" frugal:"2,optional,WebAgentTargetPromptConfigOutputRule" form:"output_rule" json:"output_rule,omitempty" query:"output_rule"` +} + +func NewWebAgentTargetPromptConfig() *WebAgentTargetPromptConfig { + return &WebAgentTargetPromptConfig{} +} + +func (p *WebAgentTargetPromptConfig) InitDefault() { +} + +var WebAgentTargetPromptConfig_MessageList_DEFAULT []*common.Message + +func (p *WebAgentTargetPromptConfig) GetMessageList() (v []*common.Message) { + if p == nil { + return + } + if !p.IsSetMessageList() { + return WebAgentTargetPromptConfig_MessageList_DEFAULT + } + return p.MessageList +} + +var WebAgentTargetPromptConfig_OutputRule_DEFAULT *WebAgentTargetPromptConfigOutputRule + +func (p *WebAgentTargetPromptConfig) GetOutputRule() (v *WebAgentTargetPromptConfigOutputRule) { + if p == nil { + return + } + if !p.IsSetOutputRule() { + return WebAgentTargetPromptConfig_OutputRule_DEFAULT + } + return p.OutputRule +} +func (p *WebAgentTargetPromptConfig) SetMessageList(val []*common.Message) { + p.MessageList = val +} +func (p *WebAgentTargetPromptConfig) SetOutputRule(val *WebAgentTargetPromptConfigOutputRule) { + p.OutputRule = val +} + +var fieldIDToName_WebAgentTargetPromptConfig = map[int16]string{ + 1: "message_list", + 2: "output_rule", +} + +func (p *WebAgentTargetPromptConfig) IsSetMessageList() bool { + return p.MessageList != nil +} + +func (p *WebAgentTargetPromptConfig) IsSetOutputRule() bool { + return p.OutputRule != nil +} + +func (p *WebAgentTargetPromptConfig) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.LIST { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_WebAgentTargetPromptConfig[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *WebAgentTargetPromptConfig) ReadField1(iprot thrift.TProtocol) error { + _, size, err := iprot.ReadListBegin() + if err != nil { + return err + } + _field := make([]*common.Message, 0, size) + values := make([]common.Message, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + + if err := _elem.Read(iprot); err != nil { + return err + } + + _field = append(_field, _elem) + } + if err := iprot.ReadListEnd(); err != nil { + return err + } + p.MessageList = _field + return nil +} +func (p *WebAgentTargetPromptConfig) ReadField2(iprot thrift.TProtocol) error { + _field := NewWebAgentTargetPromptConfigOutputRule() + if err := _field.Read(iprot); err != nil { + return err + } + p.OutputRule = _field + return nil +} + +func (p *WebAgentTargetPromptConfig) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("WebAgentTargetPromptConfig"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *WebAgentTargetPromptConfig) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetMessageList() { + if err = oprot.WriteFieldBegin("message_list", thrift.LIST, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteListBegin(thrift.STRUCT, len(p.MessageList)); err != nil { + return err + } + for _, v := range p.MessageList { + if err := v.Write(oprot); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *WebAgentTargetPromptConfig) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetOutputRule() { + if err = oprot.WriteFieldBegin("output_rule", thrift.STRUCT, 2); err != nil { + goto WriteFieldBeginError + } + if err := p.OutputRule.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} + +func (p *WebAgentTargetPromptConfig) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("WebAgentTargetPromptConfig(%+v)", *p) + +} + +func (p *WebAgentTargetPromptConfig) DeepEqual(ano *WebAgentTargetPromptConfig) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.MessageList) { return false } - if !p.Field105DeepEqual(ano.CustomRPCServer) { + if !p.Field2DeepEqual(ano.OutputRule) { return false } return true } -func (p *EvalTargetContent) Field1DeepEqual(src []*common.ArgsSchema) bool { +func (p *WebAgentTargetPromptConfig) Field1DeepEqual(src []*common.Message) bool { - if len(p.InputSchemas) != len(src) { + if len(p.MessageList) != len(src) { return false } - for i, v := range p.InputSchemas { + for i, v := range p.MessageList { _src := src[i] if !v.DeepEqual(_src) { return false @@ -2129,62 +3009,182 @@ func (p *EvalTargetContent) Field1DeepEqual(src []*common.ArgsSchema) bool { } return true } -func (p *EvalTargetContent) Field2DeepEqual(src []*common.ArgsSchema) bool { +func (p *WebAgentTargetPromptConfig) Field2DeepEqual(src *WebAgentTargetPromptConfigOutputRule) bool { - if len(p.OutputSchemas) != len(src) { + if !p.OutputRule.DeepEqual(src) { return false } - for i, v := range p.OutputSchemas { - _src := src[i] - if !v.DeepEqual(_src) { - return false - } - } return true } -func (p *EvalTargetContent) Field3DeepEqual(src *string) bool { - if p.RuntimeParamJSONDemo == src { - return true - } else if p.RuntimeParamJSONDemo == nil || src == nil { - return false +type WebAgentTargetPromptConfigOutputRule struct { + Message *common.Message `thrift:"message,1,optional" frugal:"1,optional,common.Message" form:"message" json:"message,omitempty" query:"message"` +} + +func NewWebAgentTargetPromptConfigOutputRule() *WebAgentTargetPromptConfigOutputRule { + return &WebAgentTargetPromptConfigOutputRule{} +} + +func (p *WebAgentTargetPromptConfigOutputRule) InitDefault() { +} + +var WebAgentTargetPromptConfigOutputRule_Message_DEFAULT *common.Message + +func (p *WebAgentTargetPromptConfigOutputRule) GetMessage() (v *common.Message) { + if p == nil { + return } - if strings.Compare(*p.RuntimeParamJSONDemo, *src) != 0 { - return false + if !p.IsSetMessage() { + return WebAgentTargetPromptConfigOutputRule_Message_DEFAULT } - return true + return p.Message +} +func (p *WebAgentTargetPromptConfigOutputRule) SetMessage(val *common.Message) { + p.Message = val } -func (p *EvalTargetContent) Field101DeepEqual(src *CozeBot) bool { - if !p.CozeBot.DeepEqual(src) { - return false +var fieldIDToName_WebAgentTargetPromptConfigOutputRule = map[int16]string{ + 1: "message", +} + +func (p *WebAgentTargetPromptConfigOutputRule) IsSetMessage() bool { + return p.Message != nil +} + +func (p *WebAgentTargetPromptConfigOutputRule) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError } - return true + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_WebAgentTargetPromptConfigOutputRule[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *EvalTargetContent) Field102DeepEqual(src *EvalPrompt) bool { - if !p.Prompt.DeepEqual(src) { - return false +func (p *WebAgentTargetPromptConfigOutputRule) ReadField1(iprot thrift.TProtocol) error { + _field := common.NewMessage() + if err := _field.Read(iprot); err != nil { + return err } - return true + p.Message = _field + return nil } -func (p *EvalTargetContent) Field103DeepEqual(src *CozeWorkflow) bool { - if !p.CozeWorkflow.DeepEqual(src) { - return false +func (p *WebAgentTargetPromptConfigOutputRule) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("WebAgentTargetPromptConfigOutputRule"); err != nil { + goto WriteStructBeginError } - return true + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *EvalTargetContent) Field104DeepEqual(src *VolcengineAgent) bool { - if !p.VolcengineAgent.DeepEqual(src) { +func (p *WebAgentTargetPromptConfigOutputRule) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetMessage() { + if err = oprot.WriteFieldBegin("message", thrift.STRUCT, 1); err != nil { + goto WriteFieldBeginError + } + if err := p.Message.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} + +func (p *WebAgentTargetPromptConfigOutputRule) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("WebAgentTargetPromptConfigOutputRule(%+v)", *p) + +} + +func (p *WebAgentTargetPromptConfigOutputRule) DeepEqual(ano *WebAgentTargetPromptConfigOutputRule) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.Message) { return false } return true } -func (p *EvalTargetContent) Field105DeepEqual(src *CustomRPCServer) bool { - if !p.CustomRPCServer.DeepEqual(src) { +func (p *WebAgentTargetPromptConfigOutputRule) Field1DeepEqual(src *common.Message) bool { + + if !p.Message.DeepEqual(src) { return false } return true @@ -9265,6 +10265,8 @@ type EvalTargetOutputData struct { EvalTargetRunError *EvalTargetRunError `thrift:"eval_target_run_error,3,optional" frugal:"3,optional,EvalTargetRunError" form:"eval_target_run_error" json:"eval_target_run_error,omitempty" query:"eval_target_run_error"` // 运行耗时 TimeConsumingMs *int64 `thrift:"time_consuming_ms,4,optional" frugal:"4,optional,i64" json:"time_consuming_ms" form:"time_consuming_ms" query:"time_consuming_ms"` + // 平台扩展字段 + Ext map[string]string `thrift:"ext,20,optional" frugal:"20,optional,map" form:"ext" json:"ext,omitempty" query:"ext"` } func NewEvalTargetOutputData() *EvalTargetOutputData { @@ -9321,6 +10323,18 @@ func (p *EvalTargetOutputData) GetTimeConsumingMs() (v int64) { } return *p.TimeConsumingMs } + +var EvalTargetOutputData_Ext_DEFAULT map[string]string + +func (p *EvalTargetOutputData) GetExt() (v map[string]string) { + if p == nil { + return + } + if !p.IsSetExt() { + return EvalTargetOutputData_Ext_DEFAULT + } + return p.Ext +} func (p *EvalTargetOutputData) SetOutputFields(val map[string]*common.Content) { p.OutputFields = val } @@ -9333,12 +10347,16 @@ func (p *EvalTargetOutputData) SetEvalTargetRunError(val *EvalTargetRunError) { func (p *EvalTargetOutputData) SetTimeConsumingMs(val *int64) { p.TimeConsumingMs = val } +func (p *EvalTargetOutputData) SetExt(val map[string]string) { + p.Ext = val +} var fieldIDToName_EvalTargetOutputData = map[int16]string{ - 1: "output_fields", - 2: "eval_target_usage", - 3: "eval_target_run_error", - 4: "time_consuming_ms", + 1: "output_fields", + 2: "eval_target_usage", + 3: "eval_target_run_error", + 4: "time_consuming_ms", + 20: "ext", } func (p *EvalTargetOutputData) IsSetOutputFields() bool { @@ -9357,6 +10375,10 @@ func (p *EvalTargetOutputData) IsSetTimeConsumingMs() bool { return p.TimeConsumingMs != nil } +func (p *EvalTargetOutputData) IsSetExt() bool { + return p.Ext != nil +} + func (p *EvalTargetOutputData) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -9407,6 +10429,14 @@ func (p *EvalTargetOutputData) Read(iprot thrift.TProtocol) (err error) { } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 20: + if fieldTypeId == thrift.MAP { + if err = p.ReadField20(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } default: if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError @@ -9492,6 +10522,35 @@ func (p *EvalTargetOutputData) ReadField4(iprot thrift.TProtocol) error { p.TimeConsumingMs = _field return nil } +func (p *EvalTargetOutputData) ReadField20(iprot thrift.TProtocol) error { + _, _, size, err := iprot.ReadMapBegin() + if err != nil { + return err + } + _field := make(map[string]string, size) + for i := 0; i < size; i++ { + var _key string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _key = v + } + + var _val string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _val = v + } + + _field[_key] = _val + } + if err := iprot.ReadMapEnd(); err != nil { + return err + } + p.Ext = _field + return nil +} func (p *EvalTargetOutputData) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 @@ -9515,6 +10574,10 @@ func (p *EvalTargetOutputData) Write(oprot thrift.TProtocol) (err error) { fieldId = 4 goto WriteFieldError } + if err = p.writeField20(oprot); err != nil { + fieldId = 20 + goto WriteFieldError + } } if err = oprot.WriteFieldStop(); err != nil { goto WriteFieldStopError @@ -9616,6 +10679,35 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) } +func (p *EvalTargetOutputData) writeField20(oprot thrift.TProtocol) (err error) { + if p.IsSetExt() { + if err = oprot.WriteFieldBegin("ext", thrift.MAP, 20); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteMapBegin(thrift.STRING, thrift.STRING, len(p.Ext)); err != nil { + return err + } + for k, v := range p.Ext { + if err := oprot.WriteString(k); err != nil { + return err + } + if err := oprot.WriteString(v); err != nil { + return err + } + } + if err := oprot.WriteMapEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 20 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 20 end error: ", p), err) +} func (p *EvalTargetOutputData) String() string { if p == nil { @@ -9643,6 +10735,9 @@ func (p *EvalTargetOutputData) DeepEqual(ano *EvalTargetOutputData) bool { if !p.Field4DeepEqual(ano.TimeConsumingMs) { return false } + if !p.Field20DeepEqual(ano.Ext) { + return false + } return true } @@ -9685,6 +10780,19 @@ func (p *EvalTargetOutputData) Field4DeepEqual(src *int64) bool { } return true } +func (p *EvalTargetOutputData) Field20DeepEqual(src map[string]string) bool { + + if len(p.Ext) != len(src) { + return false + } + for k, v := range p.Ext { + _src := src[k] + if strings.Compare(v, _src) != 0 { + return false + } + } + return true +} type EvalTargetUsage struct { InputTokens int64 `thrift:"input_tokens,1" frugal:"1,default,i64" json:"input_tokens" form:"input_tokens" query:"input_tokens"` diff --git a/backend/kitex_gen/coze/loop/evaluation/domain/eval_target/eval_target_validator.go b/backend/kitex_gen/coze/loop/evaluation/domain/eval_target/eval_target_validator.go index 3d993f85f..1acfb77f4 100644 --- a/backend/kitex_gen/coze/loop/evaluation/domain/eval_target/eval_target_validator.go +++ b/backend/kitex_gen/coze/loop/evaluation/domain/eval_target/eval_target_validator.go @@ -73,6 +73,40 @@ func (p *EvalTargetContent) IsValid() error { return fmt.Errorf("field CustomRPCServer not valid, %w", err) } } + if p.WebAgent != nil { + if err := p.WebAgent.IsValid(); err != nil { + return fmt.Errorf("field WebAgent not valid, %w", err) + } + } + return nil +} +func (p *WebAgent) IsValid() error { + if p.AgentConfig != nil { + if err := p.AgentConfig.IsValid(); err != nil { + return fmt.Errorf("field AgentConfig not valid, %w", err) + } + } + if p.PromptConfig != nil { + if err := p.PromptConfig.IsValid(); err != nil { + return fmt.Errorf("field PromptConfig not valid, %w", err) + } + } + return nil +} +func (p *WebAgentTargetPromptConfig) IsValid() error { + if p.OutputRule != nil { + if err := p.OutputRule.IsValid(); err != nil { + return fmt.Errorf("field OutputRule not valid, %w", err) + } + } + return nil +} +func (p *WebAgentTargetPromptConfigOutputRule) IsValid() error { + if p.Message != nil { + if err := p.Message.IsValid(); err != nil { + return fmt.Errorf("field Message not valid, %w", err) + } + } return nil } func (p *CustomRPCServer) IsValid() error { diff --git a/backend/kitex_gen/coze/loop/evaluation/domain/eval_target/k-eval_target.go b/backend/kitex_gen/coze/loop/evaluation/domain/eval_target/k-eval_target.go index 4b891b1e3..8cae519b9 100644 --- a/backend/kitex_gen/coze/loop/evaluation/domain/eval_target/k-eval_target.go +++ b/backend/kitex_gen/coze/loop/evaluation/domain/eval_target/k-eval_target.go @@ -936,6 +936,20 @@ func (p *EvalTargetContent) FastRead(buf []byte) (int, error) { goto SkipFieldError } } + case 106: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField106(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } default: l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -1078,6 +1092,18 @@ func (p *EvalTargetContent) FastReadField105(buf []byte) (int, error) { return offset, nil } +func (p *EvalTargetContent) FastReadField106(buf []byte) (int, error) { + offset := 0 + _field := NewWebAgent() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.WebAgent = _field + return offset, nil +} + func (p *EvalTargetContent) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } @@ -1093,6 +1119,7 @@ func (p *EvalTargetContent) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) i offset += p.fastWriteField103(buf[offset:], w) offset += p.fastWriteField104(buf[offset:], w) offset += p.fastWriteField105(buf[offset:], w) + offset += p.fastWriteField106(buf[offset:], w) } offset += thrift.Binary.WriteFieldStop(buf[offset:]) return offset @@ -1109,6 +1136,7 @@ func (p *EvalTargetContent) BLength() int { l += p.field103Length() l += p.field104Length() l += p.field105Length() + l += p.field106Length() } l += thrift.Binary.FieldStopLength() return l @@ -1200,6 +1228,15 @@ func (p *EvalTargetContent) fastWriteField105(buf []byte, w thrift.NocopyWriter) return offset } +func (p *EvalTargetContent) fastWriteField106(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetWebAgent() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 106) + offset += p.WebAgent.FastWriteNocopy(buf[offset:], w) + } + return offset +} + func (p *EvalTargetContent) field1Length() int { l := 0 if p.IsSetInputSchemas() { @@ -1259,115 +1296,795 @@ func (p *EvalTargetContent) field103Length() int { l += thrift.Binary.FieldBeginLength() l += p.CozeWorkflow.BLength() } - return l + return l +} + +func (p *EvalTargetContent) field104Length() int { + l := 0 + if p.IsSetVolcengineAgent() { + l += thrift.Binary.FieldBeginLength() + l += p.VolcengineAgent.BLength() + } + return l +} + +func (p *EvalTargetContent) field105Length() int { + l := 0 + if p.IsSetCustomRPCServer() { + l += thrift.Binary.FieldBeginLength() + l += p.CustomRPCServer.BLength() + } + return l +} + +func (p *EvalTargetContent) field106Length() int { + l := 0 + if p.IsSetWebAgent() { + l += thrift.Binary.FieldBeginLength() + l += p.WebAgent.BLength() + } + return l +} + +func (p *EvalTargetContent) DeepCopy(s interface{}) error { + src, ok := s.(*EvalTargetContent) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.InputSchemas != nil { + p.InputSchemas = make([]*common.ArgsSchema, 0, len(src.InputSchemas)) + for _, elem := range src.InputSchemas { + var _elem *common.ArgsSchema + if elem != nil { + _elem = &common.ArgsSchema{} + if err := _elem.DeepCopy(elem); err != nil { + return err + } + } + + p.InputSchemas = append(p.InputSchemas, _elem) + } + } + + if src.OutputSchemas != nil { + p.OutputSchemas = make([]*common.ArgsSchema, 0, len(src.OutputSchemas)) + for _, elem := range src.OutputSchemas { + var _elem *common.ArgsSchema + if elem != nil { + _elem = &common.ArgsSchema{} + if err := _elem.DeepCopy(elem); err != nil { + return err + } + } + + p.OutputSchemas = append(p.OutputSchemas, _elem) + } + } + + if src.RuntimeParamJSONDemo != nil { + var tmp string + if *src.RuntimeParamJSONDemo != "" { + tmp = kutils.StringDeepCopy(*src.RuntimeParamJSONDemo) + } + p.RuntimeParamJSONDemo = &tmp + } + + var _cozeBot *CozeBot + if src.CozeBot != nil { + _cozeBot = &CozeBot{} + if err := _cozeBot.DeepCopy(src.CozeBot); err != nil { + return err + } + } + p.CozeBot = _cozeBot + + var _prompt *EvalPrompt + if src.Prompt != nil { + _prompt = &EvalPrompt{} + if err := _prompt.DeepCopy(src.Prompt); err != nil { + return err + } + } + p.Prompt = _prompt + + var _cozeWorkflow *CozeWorkflow + if src.CozeWorkflow != nil { + _cozeWorkflow = &CozeWorkflow{} + if err := _cozeWorkflow.DeepCopy(src.CozeWorkflow); err != nil { + return err + } + } + p.CozeWorkflow = _cozeWorkflow + + var _volcengineAgent *VolcengineAgent + if src.VolcengineAgent != nil { + _volcengineAgent = &VolcengineAgent{} + if err := _volcengineAgent.DeepCopy(src.VolcengineAgent); err != nil { + return err + } + } + p.VolcengineAgent = _volcengineAgent + + var _customRPCServer *CustomRPCServer + if src.CustomRPCServer != nil { + _customRPCServer = &CustomRPCServer{} + if err := _customRPCServer.DeepCopy(src.CustomRPCServer); err != nil { + return err + } + } + p.CustomRPCServer = _customRPCServer + + var _webAgent *WebAgent + if src.WebAgent != nil { + _webAgent = &WebAgent{} + if err := _webAgent.DeepCopy(src.WebAgent); err != nil { + return err + } + } + p.WebAgent = _webAgent + + return nil +} + +func (p *WebAgent) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 3: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField3(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 4: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField4(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 5: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField5(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_WebAgent[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *WebAgent) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field *int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.ID = _field + return offset, nil +} + +func (p *WebAgent) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Name = _field + return offset, nil +} + +func (p *WebAgent) FastReadField3(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Description = _field + return offset, nil +} + +func (p *WebAgent) FastReadField4(buf []byte) (int, error) { + offset := 0 + _field := common.NewAgentConfig() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.AgentConfig = _field + return offset, nil +} + +func (p *WebAgent) FastReadField5(buf []byte) (int, error) { + offset := 0 + _field := NewWebAgentTargetPromptConfig() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.PromptConfig = _field + return offset, nil +} + +func (p *WebAgent) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *WebAgent) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField3(buf[offset:], w) + offset += p.fastWriteField4(buf[offset:], w) + offset += p.fastWriteField5(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *WebAgent) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field3Length() + l += p.field4Length() + l += p.field5Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *WebAgent) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetID() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) + offset += thrift.Binary.WriteI64(buf[offset:], *p.ID) + } + return offset +} + +func (p *WebAgent) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetName() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Name) + } + return offset +} + +func (p *WebAgent) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetDescription() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 3) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Description) + } + return offset +} + +func (p *WebAgent) fastWriteField4(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetAgentConfig() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 4) + offset += p.AgentConfig.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *WebAgent) fastWriteField5(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetPromptConfig() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 5) + offset += p.PromptConfig.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *WebAgent) field1Length() int { + l := 0 + if p.IsSetID() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + } + return l +} + +func (p *WebAgent) field2Length() int { + l := 0 + if p.IsSetName() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.Name) + } + return l +} + +func (p *WebAgent) field3Length() int { + l := 0 + if p.IsSetDescription() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.Description) + } + return l +} + +func (p *WebAgent) field4Length() int { + l := 0 + if p.IsSetAgentConfig() { + l += thrift.Binary.FieldBeginLength() + l += p.AgentConfig.BLength() + } + return l +} + +func (p *WebAgent) field5Length() int { + l := 0 + if p.IsSetPromptConfig() { + l += thrift.Binary.FieldBeginLength() + l += p.PromptConfig.BLength() + } + return l +} + +func (p *WebAgent) DeepCopy(s interface{}) error { + src, ok := s.(*WebAgent) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.ID != nil { + tmp := *src.ID + p.ID = &tmp + } + + if src.Name != nil { + var tmp string + if *src.Name != "" { + tmp = kutils.StringDeepCopy(*src.Name) + } + p.Name = &tmp + } + + if src.Description != nil { + var tmp string + if *src.Description != "" { + tmp = kutils.StringDeepCopy(*src.Description) + } + p.Description = &tmp + } + + var _agentConfig *common.AgentConfig + if src.AgentConfig != nil { + _agentConfig = &common.AgentConfig{} + if err := _agentConfig.DeepCopy(src.AgentConfig); err != nil { + return err + } + } + p.AgentConfig = _agentConfig + + var _promptConfig *WebAgentTargetPromptConfig + if src.PromptConfig != nil { + _promptConfig = &WebAgentTargetPromptConfig{} + if err := _promptConfig.DeepCopy(src.PromptConfig); err != nil { + return err + } + } + p.PromptConfig = _promptConfig + + return nil +} + +func (p *WebAgentTargetPromptConfig) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.LIST { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_WebAgentTargetPromptConfig[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *WebAgentTargetPromptConfig) FastReadField1(buf []byte) (int, error) { + offset := 0 + + _, size, l, err := thrift.Binary.ReadListBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make([]*common.Message, 0, size) + values := make([]common.Message, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + if l, err := _elem.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + + _field = append(_field, _elem) + } + p.MessageList = _field + return offset, nil +} + +func (p *WebAgentTargetPromptConfig) FastReadField2(buf []byte) (int, error) { + offset := 0 + _field := NewWebAgentTargetPromptConfigOutputRule() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.OutputRule = _field + return offset, nil +} + +func (p *WebAgentTargetPromptConfig) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *WebAgentTargetPromptConfig) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *WebAgentTargetPromptConfig) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *WebAgentTargetPromptConfig) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetMessageList() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 1) + listBeginOffset := offset + offset += thrift.Binary.ListBeginLength() + var length int + for _, v := range p.MessageList { + length++ + offset += v.FastWriteNocopy(buf[offset:], w) + } + thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) + } + return offset +} + +func (p *WebAgentTargetPromptConfig) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetOutputRule() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 2) + offset += p.OutputRule.FastWriteNocopy(buf[offset:], w) + } + return offset } -func (p *EvalTargetContent) field104Length() int { +func (p *WebAgentTargetPromptConfig) field1Length() int { l := 0 - if p.IsSetVolcengineAgent() { + if p.IsSetMessageList() { l += thrift.Binary.FieldBeginLength() - l += p.VolcengineAgent.BLength() + l += thrift.Binary.ListBeginLength() + for _, v := range p.MessageList { + _ = v + l += v.BLength() + } } return l } -func (p *EvalTargetContent) field105Length() int { +func (p *WebAgentTargetPromptConfig) field2Length() int { l := 0 - if p.IsSetCustomRPCServer() { + if p.IsSetOutputRule() { l += thrift.Binary.FieldBeginLength() - l += p.CustomRPCServer.BLength() + l += p.OutputRule.BLength() } return l } -func (p *EvalTargetContent) DeepCopy(s interface{}) error { - src, ok := s.(*EvalTargetContent) +func (p *WebAgentTargetPromptConfig) DeepCopy(s interface{}) error { + src, ok := s.(*WebAgentTargetPromptConfig) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - if src.InputSchemas != nil { - p.InputSchemas = make([]*common.ArgsSchema, 0, len(src.InputSchemas)) - for _, elem := range src.InputSchemas { - var _elem *common.ArgsSchema + if src.MessageList != nil { + p.MessageList = make([]*common.Message, 0, len(src.MessageList)) + for _, elem := range src.MessageList { + var _elem *common.Message if elem != nil { - _elem = &common.ArgsSchema{} + _elem = &common.Message{} if err := _elem.DeepCopy(elem); err != nil { return err } } - p.InputSchemas = append(p.InputSchemas, _elem) + p.MessageList = append(p.MessageList, _elem) } } - if src.OutputSchemas != nil { - p.OutputSchemas = make([]*common.ArgsSchema, 0, len(src.OutputSchemas)) - for _, elem := range src.OutputSchemas { - var _elem *common.ArgsSchema - if elem != nil { - _elem = &common.ArgsSchema{} - if err := _elem.DeepCopy(elem); err != nil { - return err + var _outputRule *WebAgentTargetPromptConfigOutputRule + if src.OutputRule != nil { + _outputRule = &WebAgentTargetPromptConfigOutputRule{} + if err := _outputRule.DeepCopy(src.OutputRule); err != nil { + return err + } + } + p.OutputRule = _outputRule + + return nil +} + +func (p *WebAgentTargetPromptConfigOutputRule) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError } } - - p.OutputSchemas = append(p.OutputSchemas, _elem) + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } } } - if src.RuntimeParamJSONDemo != nil { - var tmp string - if *src.RuntimeParamJSONDemo != "" { - tmp = kutils.StringDeepCopy(*src.RuntimeParamJSONDemo) - } - p.RuntimeParamJSONDemo = &tmp + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_WebAgentTargetPromptConfigOutputRule[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *WebAgentTargetPromptConfigOutputRule) FastReadField1(buf []byte) (int, error) { + offset := 0 + _field := common.NewMessage() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l } + p.Message = _field + return offset, nil +} - var _cozeBot *CozeBot - if src.CozeBot != nil { - _cozeBot = &CozeBot{} - if err := _cozeBot.DeepCopy(src.CozeBot); err != nil { - return err - } +func (p *WebAgentTargetPromptConfigOutputRule) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *WebAgentTargetPromptConfigOutputRule) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) } - p.CozeBot = _cozeBot + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} - var _prompt *EvalPrompt - if src.Prompt != nil { - _prompt = &EvalPrompt{} - if err := _prompt.DeepCopy(src.Prompt); err != nil { - return err - } +func (p *WebAgentTargetPromptConfigOutputRule) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() } - p.Prompt = _prompt + l += thrift.Binary.FieldStopLength() + return l +} - var _cozeWorkflow *CozeWorkflow - if src.CozeWorkflow != nil { - _cozeWorkflow = &CozeWorkflow{} - if err := _cozeWorkflow.DeepCopy(src.CozeWorkflow); err != nil { - return err - } +func (p *WebAgentTargetPromptConfigOutputRule) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetMessage() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) + offset += p.Message.FastWriteNocopy(buf[offset:], w) } - p.CozeWorkflow = _cozeWorkflow + return offset +} - var _volcengineAgent *VolcengineAgent - if src.VolcengineAgent != nil { - _volcengineAgent = &VolcengineAgent{} - if err := _volcengineAgent.DeepCopy(src.VolcengineAgent); err != nil { - return err - } +func (p *WebAgentTargetPromptConfigOutputRule) field1Length() int { + l := 0 + if p.IsSetMessage() { + l += thrift.Binary.FieldBeginLength() + l += p.Message.BLength() } - p.VolcengineAgent = _volcengineAgent + return l +} - var _customRPCServer *CustomRPCServer - if src.CustomRPCServer != nil { - _customRPCServer = &CustomRPCServer{} - if err := _customRPCServer.DeepCopy(src.CustomRPCServer); err != nil { +func (p *WebAgentTargetPromptConfigOutputRule) DeepCopy(s interface{}) error { + src, ok := s.(*WebAgentTargetPromptConfigOutputRule) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _message *common.Message + if src.Message != nil { + _message = &common.Message{} + if err := _message.DeepCopy(src.Message); err != nil { return err } } - p.CustomRPCServer = _customRPCServer + p.Message = _message return nil } @@ -6535,6 +7252,20 @@ func (p *EvalTargetOutputData) FastRead(buf []byte) (int, error) { goto SkipFieldError } } + case 20: + if fieldTypeId == thrift.MAP { + l, err = p.FastReadField20(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } default: l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -6624,6 +7355,38 @@ func (p *EvalTargetOutputData) FastReadField4(buf []byte) (int, error) { return offset, nil } +func (p *EvalTargetOutputData) FastReadField20(buf []byte) (int, error) { + offset := 0 + + _, _, size, l, err := thrift.Binary.ReadMapBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make(map[string]string, size) + for i := 0; i < size; i++ { + var _key string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _key = v + } + + var _val string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _val = v + } + + _field[_key] = _val + } + p.Ext = _field + return offset, nil +} + func (p *EvalTargetOutputData) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } @@ -6635,6 +7398,7 @@ func (p *EvalTargetOutputData) FastWriteNocopy(buf []byte, w thrift.NocopyWriter offset += p.fastWriteField1(buf[offset:], w) offset += p.fastWriteField2(buf[offset:], w) offset += p.fastWriteField3(buf[offset:], w) + offset += p.fastWriteField20(buf[offset:], w) } offset += thrift.Binary.WriteFieldStop(buf[offset:]) return offset @@ -6647,6 +7411,7 @@ func (p *EvalTargetOutputData) BLength() int { l += p.field2Length() l += p.field3Length() l += p.field4Length() + l += p.field20Length() } l += thrift.Binary.FieldStopLength() return l @@ -6696,6 +7461,23 @@ func (p *EvalTargetOutputData) fastWriteField4(buf []byte, w thrift.NocopyWriter return offset } +func (p *EvalTargetOutputData) fastWriteField20(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetExt() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.MAP, 20) + mapBeginOffset := offset + offset += thrift.Binary.MapBeginLength() + var length int + for k, v := range p.Ext { + length++ + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, k) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, v) + } + thrift.Binary.WriteMapBegin(buf[mapBeginOffset:], thrift.STRING, thrift.STRING, length) + } + return offset +} + func (p *EvalTargetOutputData) field1Length() int { l := 0 if p.IsSetOutputFields() { @@ -6738,6 +7520,21 @@ func (p *EvalTargetOutputData) field4Length() int { return l } +func (p *EvalTargetOutputData) field20Length() int { + l := 0 + if p.IsSetExt() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.MapBeginLength() + for k, v := range p.Ext { + _, _ = k, v + + l += thrift.Binary.StringLengthNocopy(k) + l += thrift.Binary.StringLengthNocopy(v) + } + } + return l +} + func (p *EvalTargetOutputData) DeepCopy(s interface{}) error { src, ok := s.(*EvalTargetOutputData) if !ok { @@ -6787,6 +7584,23 @@ func (p *EvalTargetOutputData) DeepCopy(s interface{}) error { p.TimeConsumingMs = &tmp } + if src.Ext != nil { + p.Ext = make(map[string]string, len(src.Ext)) + for key, val := range src.Ext { + var _key string + if key != "" { + _key = kutils.StringDeepCopy(key) + } + + var _val string + if val != "" { + _val = kutils.StringDeepCopy(val) + } + + p.Ext[_key] = _val + } + } + return nil } diff --git a/backend/kitex_gen/coze/loop/evaluation/domain/evaluator/evaluator.go b/backend/kitex_gen/coze/loop/evaluation/domain/evaluator/evaluator.go index ec582107c..5e22b17d2 100644 --- a/backend/kitex_gen/coze/loop/evaluation/domain/evaluator/evaluator.go +++ b/backend/kitex_gen/coze/loop/evaluation/domain/evaluator/evaluator.go @@ -16,6 +16,8 @@ const ( LanguageTypeJS = "JS" + EvaluatorSourceTypeIntelligentGen = "intelligent_gen" + EvaluatorTagTypeEvaluator = "Evaluator" EvaluatorTagTypeTemplate = "Template" @@ -320,6 +322,8 @@ func (p *EvaluatorRunStatus) Value() (driver.Value, error) { type LanguageType = string +type EvaluatorSourceType = string + type EvaluatorTagType = string type EvaluatorTagLangType = string @@ -5774,8 +5778,10 @@ type Evaluator struct { EvaluatorInfo *EvaluatorInfo `thrift:"evaluator_info,21,optional" frugal:"21,optional,EvaluatorInfo" json:"evaluator_info" form:"evaluator_info" query:"evaluator_info"` BuiltinVisibleVersion *string `thrift:"builtin_visible_version,22,optional" frugal:"22,optional,string" json:"builtin_visible_version" form:"builtin_visible_version" query:"builtin_visible_version"` // 默认白盒 - BoxType *EvaluatorBoxType `thrift:"box_type,23,optional" frugal:"23,optional,string" json:"box_type" form:"box_type" query:"box_type"` - Tags map[EvaluatorTagLangType]map[EvaluatorTagKey][]string `thrift:"tags,100,optional" frugal:"100,optional,map>>" json:"tags" form:"tags" query:"tags"` + BoxType *EvaluatorBoxType `thrift:"box_type,23,optional" frugal:"23,optional,string" json:"box_type" form:"box_type" query:"box_type"` + // 来源 + SourceType *EvaluatorSourceType `thrift:"source_type,24,optional" frugal:"24,optional,string" form:"source_type" json:"source_type,omitempty" query:"source_type"` + Tags map[EvaluatorTagLangType]map[EvaluatorTagKey][]string `thrift:"tags,100,optional" frugal:"100,optional,map>>" json:"tags" form:"tags" query:"tags"` } func NewEvaluator() *Evaluator { @@ -5941,6 +5947,18 @@ func (p *Evaluator) GetBoxType() (v EvaluatorBoxType) { return *p.BoxType } +var Evaluator_SourceType_DEFAULT EvaluatorSourceType + +func (p *Evaluator) GetSourceType() (v EvaluatorSourceType) { + if p == nil { + return + } + if !p.IsSetSourceType() { + return Evaluator_SourceType_DEFAULT + } + return *p.SourceType +} + var Evaluator_Tags_DEFAULT map[EvaluatorTagLangType]map[EvaluatorTagKey][]string func (p *Evaluator) GetTags() (v map[EvaluatorTagLangType]map[EvaluatorTagKey][]string) { @@ -5991,6 +6009,9 @@ func (p *Evaluator) SetBuiltinVisibleVersion(val *string) { func (p *Evaluator) SetBoxType(val *EvaluatorBoxType) { p.BoxType = val } +func (p *Evaluator) SetSourceType(val *EvaluatorSourceType) { + p.SourceType = val +} func (p *Evaluator) SetTags(val map[EvaluatorTagLangType]map[EvaluatorTagKey][]string) { p.Tags = val } @@ -6009,6 +6030,7 @@ var fieldIDToName_Evaluator = map[int16]string{ 21: "evaluator_info", 22: "builtin_visible_version", 23: "box_type", + 24: "source_type", 100: "tags", } @@ -6064,6 +6086,10 @@ func (p *Evaluator) IsSetBoxType() bool { return p.BoxType != nil } +func (p *Evaluator) IsSetSourceType() bool { + return p.SourceType != nil +} + func (p *Evaluator) IsSetTags() bool { return p.Tags != nil } @@ -6190,6 +6216,14 @@ func (p *Evaluator) Read(iprot thrift.TProtocol) (err error) { } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 24: + if fieldTypeId == thrift.STRING { + if err = p.ReadField24(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } case 100: if fieldTypeId == thrift.MAP { if err = p.ReadField100(iprot); err != nil { @@ -6362,6 +6396,17 @@ func (p *Evaluator) ReadField23(iprot thrift.TProtocol) error { p.BoxType = _field return nil } +func (p *Evaluator) ReadField24(iprot thrift.TProtocol) error { + + var _field *EvaluatorSourceType + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.SourceType = _field + return nil +} func (p *Evaluator) ReadField100(iprot thrift.TProtocol) error { _, _, size, err := iprot.ReadMapBegin() if err != nil { @@ -6480,6 +6525,10 @@ func (p *Evaluator) Write(oprot thrift.TProtocol) (err error) { fieldId = 23 goto WriteFieldError } + if err = p.writeField24(oprot); err != nil { + fieldId = 24 + goto WriteFieldError + } if err = p.writeField100(oprot); err != nil { fieldId = 100 goto WriteFieldError @@ -6736,6 +6785,24 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 23 end error: ", p), err) } +func (p *Evaluator) writeField24(oprot thrift.TProtocol) (err error) { + if p.IsSetSourceType() { + if err = oprot.WriteFieldBegin("source_type", thrift.STRING, 24); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.SourceType); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 24 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 24 end error: ", p), err) +} func (p *Evaluator) writeField100(oprot thrift.TProtocol) (err error) { if p.IsSetTags() { if err = oprot.WriteFieldBegin("tags", thrift.MAP, 100); err != nil { @@ -6838,6 +6905,9 @@ func (p *Evaluator) DeepEqual(ano *Evaluator) bool { if !p.Field23DeepEqual(ano.BoxType) { return false } + if !p.Field24DeepEqual(ano.SourceType) { + return false + } if !p.Field100DeepEqual(ano.Tags) { return false } @@ -6985,6 +7055,18 @@ func (p *Evaluator) Field23DeepEqual(src *EvaluatorBoxType) bool { } return true } +func (p *Evaluator) Field24DeepEqual(src *EvaluatorSourceType) bool { + + if p.SourceType == src { + return true + } else if p.SourceType == nil || src == nil { + return false + } + if strings.Compare(*p.SourceType, *src) != 0 { + return false + } + return true +} func (p *Evaluator) Field100DeepEqual(src map[EvaluatorTagLangType]map[EvaluatorTagKey][]string) bool { if len(p.Tags) != len(src) { diff --git a/backend/kitex_gen/coze/loop/evaluation/domain/evaluator/k-evaluator.go b/backend/kitex_gen/coze/loop/evaluation/domain/evaluator/k-evaluator.go index cfba669d4..50ab60fef 100644 --- a/backend/kitex_gen/coze/loop/evaluation/domain/evaluator/k-evaluator.go +++ b/backend/kitex_gen/coze/loop/evaluation/domain/evaluator/k-evaluator.go @@ -4211,6 +4211,20 @@ func (p *Evaluator) FastRead(buf []byte) (int, error) { goto SkipFieldError } } + case 24: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField24(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } case 100: if fieldTypeId == thrift.MAP { l, err = p.FastReadField100(buf[offset:]) @@ -4421,6 +4435,20 @@ func (p *Evaluator) FastReadField23(buf []byte) (int, error) { return offset, nil } +func (p *Evaluator) FastReadField24(buf []byte) (int, error) { + offset := 0 + + var _field *EvaluatorSourceType + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.SourceType = _field + return offset, nil +} + func (p *Evaluator) FastReadField100(buf []byte) (int, error) { offset := 0 @@ -4501,6 +4529,7 @@ func (p *Evaluator) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset += p.fastWriteField21(buf[offset:], w) offset += p.fastWriteField22(buf[offset:], w) offset += p.fastWriteField23(buf[offset:], w) + offset += p.fastWriteField24(buf[offset:], w) offset += p.fastWriteField100(buf[offset:], w) } offset += thrift.Binary.WriteFieldStop(buf[offset:]) @@ -4523,6 +4552,7 @@ func (p *Evaluator) BLength() int { l += p.field21Length() l += p.field22Length() l += p.field23Length() + l += p.field24Length() l += p.field100Length() } l += thrift.Binary.FieldStopLength() @@ -4646,6 +4676,15 @@ func (p *Evaluator) fastWriteField23(buf []byte, w thrift.NocopyWriter) int { return offset } +func (p *Evaluator) fastWriteField24(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetSourceType() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 24) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.SourceType) + } + return offset +} + func (p *Evaluator) fastWriteField100(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetTags() { @@ -4795,6 +4834,15 @@ func (p *Evaluator) field23Length() int { return l } +func (p *Evaluator) field24Length() int { + l := 0 + if p.IsSetSourceType() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.SourceType) + } + return l +} + func (p *Evaluator) field100Length() int { l := 0 if p.IsSetTags() { @@ -4915,6 +4963,11 @@ func (p *Evaluator) DeepCopy(s interface{}) error { p.BoxType = &tmp } + if src.SourceType != nil { + tmp := *src.SourceType + p.SourceType = &tmp + } + if src.Tags != nil { p.Tags = make(map[EvaluatorTagLangType]map[EvaluatorTagKey][]string, len(src.Tags)) for key, val := range src.Tags { diff --git a/backend/kitex_gen/coze/loop/evaluation/domain/expt/expt.go b/backend/kitex_gen/coze/loop/evaluation/domain/expt/expt.go index 6cd2ae7f9..cdab3f32f 100644 --- a/backend/kitex_gen/coze/loop/evaluation/domain/expt/expt.go +++ b/backend/kitex_gen/coze/loop/evaluation/domain/expt/expt.go @@ -19,6 +19,8 @@ import ( ) const ( + VisibilityHidden = "hidden" + Manual = "manual" OpenAPI = "openapi" @@ -227,6 +229,8 @@ const ( SourceType_Evaluation SourceType = 1 SourceType_AutoTask SourceType = 2 SourceType_Workflow SourceType = 3 + // 智能生成 + SourceType_IntelligentGen SourceType = 4 ) func (p SourceType) String() string { @@ -237,6 +241,8 @@ func (p SourceType) String() string { return "AutoTask" case SourceType_Workflow: return "Workflow" + case SourceType_IntelligentGen: + return "IntelligentGen" } return "" } @@ -249,6 +255,8 @@ func SourceTypeFromString(s string) (SourceType, error) { return SourceType_AutoTask, nil case "Workflow": return SourceType_Workflow, nil + case "IntelligentGen": + return SourceType_IntelligentGen, nil } return SourceType(0), fmt.Errorf("not a valid SourceType string") } @@ -987,6 +995,8 @@ func (p *DataType) Value() (driver.Value, error) { return int64(*p), nil } +type Visibility = string + type ExptTriggerType = string type Frequency = string @@ -1005,15 +1015,17 @@ type InsightAnalysisReportVoteType = string type FeedbackActionType = string type Experiment struct { - ID *int64 `thrift:"id,1,optional" frugal:"1,optional,i64" json:"id" form:"id" query:"id"` - Name *string `thrift:"name,2,optional" frugal:"2,optional,string" form:"name" json:"name,omitempty" query:"name"` - Desc *string `thrift:"desc,3,optional" frugal:"3,optional,string" form:"desc" json:"desc,omitempty" query:"desc"` - CreatorBy *string `thrift:"creator_by,4,optional" frugal:"4,optional,string" form:"creator_by" json:"creator_by,omitempty" query:"creator_by"` - Status *ExptStatus `thrift:"status,5,optional" frugal:"5,optional,ExptStatus" form:"status" json:"status,omitempty" query:"status"` - StatusMessage *string `thrift:"status_message,6,optional" frugal:"6,optional,string" form:"status_message" json:"status_message,omitempty" query:"status_message"` - StartTime *int64 `thrift:"start_time,7,optional" frugal:"7,optional,i64" json:"start_time" form:"start_time" query:"start_time"` - EndTime *int64 `thrift:"end_time,8,optional" frugal:"8,optional,i64" json:"end_time" form:"end_time" query:"end_time"` - ItemConcurNum *int32 `thrift:"item_concur_num,9,optional" frugal:"9,optional,i32" form:"item_concur_num" json:"item_concur_num,omitempty" query:"item_concur_num"` + ID *int64 `thrift:"id,1,optional" frugal:"1,optional,i64" json:"id" form:"id" query:"id"` + Name *string `thrift:"name,2,optional" frugal:"2,optional,string" form:"name" json:"name,omitempty" query:"name"` + Desc *string `thrift:"desc,3,optional" frugal:"3,optional,string" form:"desc" json:"desc,omitempty" query:"desc"` + CreatorBy *string `thrift:"creator_by,4,optional" frugal:"4,optional,string" form:"creator_by" json:"creator_by,omitempty" query:"creator_by"` + Status *ExptStatus `thrift:"status,5,optional" frugal:"5,optional,ExptStatus" form:"status" json:"status,omitempty" query:"status"` + StatusMessage *string `thrift:"status_message,6,optional" frugal:"6,optional,string" form:"status_message" json:"status_message,omitempty" query:"status_message"` + StartTime *int64 `thrift:"start_time,7,optional" frugal:"7,optional,i64" json:"start_time" form:"start_time" query:"start_time"` + EndTime *int64 `thrift:"end_time,8,optional" frugal:"8,optional,i64" json:"end_time" form:"end_time" query:"end_time"` + ItemConcurNum *int32 `thrift:"item_concur_num,9,optional" frugal:"9,optional,i32" form:"item_concur_num" json:"item_concur_num,omitempty" query:"item_concur_num"` + // 实验可见性,默认为空,可见 + Visibility *Visibility `thrift:"visibility,10,optional" frugal:"10,optional,string" form:"visibility" json:"visibility,omitempty" query:"visibility"` EvalSetVersionID *int64 `thrift:"eval_set_version_id,21,optional" frugal:"21,optional,i64" json:"eval_set_version_id" form:"eval_set_version_id" query:"eval_set_version_id"` TargetVersionID *int64 `thrift:"target_version_id,22,optional" frugal:"22,optional,i64" json:"target_version_id" form:"target_version_id" query:"target_version_id"` EvaluatorVersionIds []int64 `thrift:"evaluator_version_ids,23,optional" frugal:"23,optional,list" json:"evaluator_version_ids" form:"evaluator_version_ids" query:"evaluator_version_ids"` @@ -1038,6 +1050,8 @@ type Experiment struct { // 评估器得分加权配置 ScoreWeightConfig *ExptScoreWeight `thrift:"score_weight_config,61,optional" frugal:"61,optional,ExptScoreWeight" form:"score_weight_config" json:"score_weight_config,omitempty" query:"score_weight_config"` EnableWeightedScore *bool `thrift:"enable_weighted_score,62,optional" frugal:"62,optional,bool" form:"enable_weighted_score" json:"enable_weighted_score,omitempty" query:"enable_weighted_score"` + // 智能评测相关 + ThreadID *string `thrift:"thread_id,63,optional" frugal:"63,optional,string" form:"thread_id" json:"thread_id,omitempty" query:"thread_id"` // 触发方式 TriggerType *ExptTriggerType `thrift:"trigger_type,70,optional" frugal:"70,optional,string" form:"trigger_type" json:"trigger_type,omitempty" query:"trigger_type"` ExptSource *ExptSource `thrift:"expt_source,71,optional" frugal:"71,optional,ExptSource" form:"expt_source" json:"expt_source,omitempty" query:"expt_source"` @@ -1158,6 +1172,18 @@ func (p *Experiment) GetItemConcurNum() (v int32) { return *p.ItemConcurNum } +var Experiment_Visibility_DEFAULT Visibility + +func (p *Experiment) GetVisibility() (v Visibility) { + if p == nil { + return + } + if !p.IsSetVisibility() { + return Experiment_Visibility_DEFAULT + } + return *p.Visibility +} + var Experiment_EvalSetVersionID_DEFAULT int64 func (p *Experiment) GetEvalSetVersionID() (v int64) { @@ -1422,6 +1448,18 @@ func (p *Experiment) GetEnableWeightedScore() (v bool) { return *p.EnableWeightedScore } +var Experiment_ThreadID_DEFAULT string + +func (p *Experiment) GetThreadID() (v string) { + if p == nil { + return + } + if !p.IsSetThreadID() { + return Experiment_ThreadID_DEFAULT + } + return *p.ThreadID +} + var Experiment_TriggerType_DEFAULT ExptTriggerType func (p *Experiment) GetTriggerType() (v ExptTriggerType) { @@ -1472,6 +1510,9 @@ func (p *Experiment) SetEndTime(val *int64) { func (p *Experiment) SetItemConcurNum(val *int32) { p.ItemConcurNum = val } +func (p *Experiment) SetVisibility(val *Visibility) { + p.Visibility = val +} func (p *Experiment) SetEvalSetVersionID(val *int64) { p.EvalSetVersionID = val } @@ -1538,6 +1579,9 @@ func (p *Experiment) SetScoreWeightConfig(val *ExptScoreWeight) { func (p *Experiment) SetEnableWeightedScore(val *bool) { p.EnableWeightedScore = val } +func (p *Experiment) SetThreadID(val *string) { + p.ThreadID = val +} func (p *Experiment) SetTriggerType(val *ExptTriggerType) { p.TriggerType = val } @@ -1555,6 +1599,7 @@ var fieldIDToName_Experiment = map[int16]string{ 7: "start_time", 8: "end_time", 9: "item_concur_num", + 10: "visibility", 21: "eval_set_version_id", 22: "target_version_id", 23: "evaluator_version_ids", @@ -1577,6 +1622,7 @@ var fieldIDToName_Experiment = map[int16]string{ 60: "expt_template_meta", 61: "score_weight_config", 62: "enable_weighted_score", + 63: "thread_id", 70: "trigger_type", 71: "expt_source", } @@ -1617,6 +1663,10 @@ func (p *Experiment) IsSetItemConcurNum() bool { return p.ItemConcurNum != nil } +func (p *Experiment) IsSetVisibility() bool { + return p.Visibility != nil +} + func (p *Experiment) IsSetEvalSetVersionID() bool { return p.EvalSetVersionID != nil } @@ -1705,6 +1755,10 @@ func (p *Experiment) IsSetEnableWeightedScore() bool { return p.EnableWeightedScore != nil } +func (p *Experiment) IsSetThreadID() bool { + return p.ThreadID != nil +} + func (p *Experiment) IsSetTriggerType() bool { return p.TriggerType != nil } @@ -1803,6 +1857,14 @@ func (p *Experiment) Read(iprot thrift.TProtocol) (err error) { } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 10: + if fieldTypeId == thrift.STRING { + if err = p.ReadField10(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } case 21: if fieldTypeId == thrift.I64 { if err = p.ReadField21(iprot); err != nil { @@ -1979,6 +2041,14 @@ func (p *Experiment) Read(iprot thrift.TProtocol) (err error) { } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 63: + if fieldTypeId == thrift.STRING { + if err = p.ReadField63(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } case 70: if fieldTypeId == thrift.STRING { if err = p.ReadField70(iprot); err != nil { @@ -2124,6 +2194,17 @@ func (p *Experiment) ReadField9(iprot thrift.TProtocol) error { p.ItemConcurNum = _field return nil } +func (p *Experiment) ReadField10(iprot thrift.TProtocol) error { + + var _field *Visibility + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.Visibility = _field + return nil +} func (p *Experiment) ReadField21(iprot thrift.TProtocol) error { var _field *int64 @@ -2392,6 +2473,17 @@ func (p *Experiment) ReadField62(iprot thrift.TProtocol) error { p.EnableWeightedScore = _field return nil } +func (p *Experiment) ReadField63(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.ThreadID = _field + return nil +} func (p *Experiment) ReadField70(iprot thrift.TProtocol) error { var _field *ExptTriggerType @@ -2454,6 +2546,10 @@ func (p *Experiment) Write(oprot thrift.TProtocol) (err error) { fieldId = 9 goto WriteFieldError } + if err = p.writeField10(oprot); err != nil { + fieldId = 10 + goto WriteFieldError + } if err = p.writeField21(oprot); err != nil { fieldId = 21 goto WriteFieldError @@ -2542,6 +2638,10 @@ func (p *Experiment) Write(oprot thrift.TProtocol) (err error) { fieldId = 62 goto WriteFieldError } + if err = p.writeField63(oprot); err != nil { + fieldId = 63 + goto WriteFieldError + } if err = p.writeField70(oprot); err != nil { fieldId = 70 goto WriteFieldError @@ -2730,6 +2830,24 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 9 end error: ", p), err) } +func (p *Experiment) writeField10(oprot thrift.TProtocol) (err error) { + if p.IsSetVisibility() { + if err = oprot.WriteFieldBegin("visibility", thrift.STRING, 10); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.Visibility); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 10 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 10 end error: ", p), err) +} func (p *Experiment) writeField21(oprot thrift.TProtocol) (err error) { if p.IsSetEvalSetVersionID() { if err = oprot.WriteFieldBegin("eval_set_version_id", thrift.I64, 21); err != nil { @@ -3158,6 +3276,24 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 62 end error: ", p), err) } +func (p *Experiment) writeField63(oprot thrift.TProtocol) (err error) { + if p.IsSetThreadID() { + if err = oprot.WriteFieldBegin("thread_id", thrift.STRING, 63); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.ThreadID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 63 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 63 end error: ", p), err) +} func (p *Experiment) writeField70(oprot thrift.TProtocol) (err error) { if p.IsSetTriggerType() { if err = oprot.WriteFieldBegin("trigger_type", thrift.STRING, 70); err != nil { @@ -3236,6 +3372,9 @@ func (p *Experiment) DeepEqual(ano *Experiment) bool { if !p.Field9DeepEqual(ano.ItemConcurNum) { return false } + if !p.Field10DeepEqual(ano.Visibility) { + return false + } if !p.Field21DeepEqual(ano.EvalSetVersionID) { return false } @@ -3302,6 +3441,9 @@ func (p *Experiment) DeepEqual(ano *Experiment) bool { if !p.Field62DeepEqual(ano.EnableWeightedScore) { return false } + if !p.Field63DeepEqual(ano.ThreadID) { + return false + } if !p.Field70DeepEqual(ano.TriggerType) { return false } @@ -3419,6 +3561,18 @@ func (p *Experiment) Field9DeepEqual(src *int32) bool { } return true } +func (p *Experiment) Field10DeepEqual(src *Visibility) bool { + + if p.Visibility == src { + return true + } else if p.Visibility == nil || src == nil { + return false + } + if strings.Compare(*p.Visibility, *src) != 0 { + return false + } + return true +} func (p *Experiment) Field21DeepEqual(src *int64) bool { if p.EvalSetVersionID == src { @@ -3647,6 +3801,18 @@ func (p *Experiment) Field62DeepEqual(src *bool) bool { } return true } +func (p *Experiment) Field63DeepEqual(src *string) bool { + + if p.ThreadID == src { + return true + } else if p.ThreadID == nil || src == nil { + return false + } + if strings.Compare(*p.ThreadID, *src) != 0 { + return false + } + return true +} func (p *Experiment) Field70DeepEqual(src *ExptTriggerType) bool { if p.TriggerType == src { @@ -3675,6 +3841,8 @@ type ExptTemplateMeta struct { Desc *string `thrift:"desc,4,optional" frugal:"4,optional,string" form:"desc" json:"desc,omitempty" query:"desc"` // 模板对应的实验类型,当前主要为 Offline ExptType *ExptType `thrift:"expt_type,5,optional" frugal:"5,optional,ExptType" form:"expt_type" json:"expt_type,omitempty" query:"expt_type"` + // 实验模板可见性,默认为空,可见 + Visibility *Visibility `thrift:"visibility,6,optional" frugal:"6,optional,string" form:"visibility" json:"visibility,omitempty" query:"visibility"` } func NewExptTemplateMeta() *ExptTemplateMeta { @@ -3743,6 +3911,18 @@ func (p *ExptTemplateMeta) GetExptType() (v ExptType) { } return *p.ExptType } + +var ExptTemplateMeta_Visibility_DEFAULT Visibility + +func (p *ExptTemplateMeta) GetVisibility() (v Visibility) { + if p == nil { + return + } + if !p.IsSetVisibility() { + return ExptTemplateMeta_Visibility_DEFAULT + } + return *p.Visibility +} func (p *ExptTemplateMeta) SetID(val *int64) { p.ID = val } @@ -3758,6 +3938,9 @@ func (p *ExptTemplateMeta) SetDesc(val *string) { func (p *ExptTemplateMeta) SetExptType(val *ExptType) { p.ExptType = val } +func (p *ExptTemplateMeta) SetVisibility(val *Visibility) { + p.Visibility = val +} var fieldIDToName_ExptTemplateMeta = map[int16]string{ 1: "id", @@ -3765,6 +3948,7 @@ var fieldIDToName_ExptTemplateMeta = map[int16]string{ 3: "name", 4: "desc", 5: "expt_type", + 6: "visibility", } func (p *ExptTemplateMeta) IsSetID() bool { @@ -3787,6 +3971,10 @@ func (p *ExptTemplateMeta) IsSetExptType() bool { return p.ExptType != nil } +func (p *ExptTemplateMeta) IsSetVisibility() bool { + return p.Visibility != nil +} + func (p *ExptTemplateMeta) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -3845,6 +4033,14 @@ func (p *ExptTemplateMeta) Read(iprot thrift.TProtocol) (err error) { } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 6: + if fieldTypeId == thrift.STRING { + if err = p.ReadField6(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } default: if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError @@ -3930,6 +4126,17 @@ func (p *ExptTemplateMeta) ReadField5(iprot thrift.TProtocol) error { p.ExptType = _field return nil } +func (p *ExptTemplateMeta) ReadField6(iprot thrift.TProtocol) error { + + var _field *Visibility + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.Visibility = _field + return nil +} func (p *ExptTemplateMeta) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 @@ -3957,6 +4164,10 @@ func (p *ExptTemplateMeta) Write(oprot thrift.TProtocol) (err error) { fieldId = 5 goto WriteFieldError } + if err = p.writeField6(oprot); err != nil { + fieldId = 6 + goto WriteFieldError + } } if err = oprot.WriteFieldStop(); err != nil { goto WriteFieldStopError @@ -4065,6 +4276,24 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 5 end error: ", p), err) } +func (p *ExptTemplateMeta) writeField6(oprot thrift.TProtocol) (err error) { + if p.IsSetVisibility() { + if err = oprot.WriteFieldBegin("visibility", thrift.STRING, 6); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.Visibility); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 6 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 6 end error: ", p), err) +} func (p *ExptTemplateMeta) String() string { if p == nil { @@ -4095,6 +4324,9 @@ func (p *ExptTemplateMeta) DeepEqual(ano *ExptTemplateMeta) bool { if !p.Field5DeepEqual(ano.ExptType) { return false } + if !p.Field6DeepEqual(ano.Visibility) { + return false + } return true } @@ -4158,6 +4390,18 @@ func (p *ExptTemplateMeta) Field5DeepEqual(src *ExptType) bool { } return true } +func (p *ExptTemplateMeta) Field6DeepEqual(src *Visibility) bool { + + if p.Visibility == src { + return true + } else if p.Visibility == nil || src == nil { + return false + } + if strings.Compare(*p.Visibility, *src) != 0 { + return false + } + return true +} // 实验三元组配置 type ExptTuple struct { diff --git a/backend/kitex_gen/coze/loop/evaluation/domain/expt/k-expt.go b/backend/kitex_gen/coze/loop/evaluation/domain/expt/k-expt.go index 02b44a7e5..e746276ac 100644 --- a/backend/kitex_gen/coze/loop/evaluation/domain/expt/k-expt.go +++ b/backend/kitex_gen/coze/loop/evaluation/domain/expt/k-expt.go @@ -184,6 +184,20 @@ func (p *Experiment) FastRead(buf []byte) (int, error) { goto SkipFieldError } } + case 10: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField10(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } case 21: if fieldTypeId == thrift.I64 { l, err = p.FastReadField21(buf[offset:]) @@ -492,6 +506,20 @@ func (p *Experiment) FastRead(buf []byte) (int, error) { goto SkipFieldError } } + case 63: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField63(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } case 70: if fieldTypeId == thrift.STRING { l, err = p.FastReadField70(buf[offset:]) @@ -666,6 +694,20 @@ func (p *Experiment) FastReadField9(buf []byte) (int, error) { return offset, nil } +func (p *Experiment) FastReadField10(buf []byte) (int, error) { + offset := 0 + + var _field *Visibility + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Visibility = _field + return offset, nil +} + func (p *Experiment) FastReadField21(buf []byte) (int, error) { offset := 0 @@ -1005,6 +1047,20 @@ func (p *Experiment) FastReadField62(buf []byte) (int, error) { return offset, nil } +func (p *Experiment) FastReadField63(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.ThreadID = _field + return offset, nil +} + func (p *Experiment) FastReadField70(buf []byte) (int, error) { offset := 0 @@ -1054,6 +1110,7 @@ func (p *Experiment) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset += p.fastWriteField4(buf[offset:], w) offset += p.fastWriteField5(buf[offset:], w) offset += p.fastWriteField6(buf[offset:], w) + offset += p.fastWriteField10(buf[offset:], w) offset += p.fastWriteField23(buf[offset:], w) offset += p.fastWriteField24(buf[offset:], w) offset += p.fastWriteField25(buf[offset:], w) @@ -1069,6 +1126,7 @@ func (p *Experiment) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset += p.fastWriteField51(buf[offset:], w) offset += p.fastWriteField60(buf[offset:], w) offset += p.fastWriteField61(buf[offset:], w) + offset += p.fastWriteField63(buf[offset:], w) offset += p.fastWriteField70(buf[offset:], w) offset += p.fastWriteField71(buf[offset:], w) } @@ -1088,6 +1146,7 @@ func (p *Experiment) BLength() int { l += p.field7Length() l += p.field8Length() l += p.field9Length() + l += p.field10Length() l += p.field21Length() l += p.field22Length() l += p.field23Length() @@ -1110,6 +1169,7 @@ func (p *Experiment) BLength() int { l += p.field60Length() l += p.field61Length() l += p.field62Length() + l += p.field63Length() l += p.field70Length() l += p.field71Length() } @@ -1198,6 +1258,15 @@ func (p *Experiment) fastWriteField9(buf []byte, w thrift.NocopyWriter) int { return offset } +func (p *Experiment) fastWriteField10(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetVisibility() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 10) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Visibility) + } + return offset +} + func (p *Experiment) fastWriteField21(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetEvalSetVersionID() { @@ -1424,6 +1493,15 @@ func (p *Experiment) fastWriteField62(buf []byte, w thrift.NocopyWriter) int { return offset } +func (p *Experiment) fastWriteField63(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetThreadID() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 63) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.ThreadID) + } + return offset +} + func (p *Experiment) fastWriteField70(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetTriggerType() { @@ -1523,6 +1601,15 @@ func (p *Experiment) field9Length() int { return l } +func (p *Experiment) field10Length() int { + l := 0 + if p.IsSetVisibility() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.Visibility) + } + return l +} + func (p *Experiment) field21Length() int { l := 0 if p.IsSetEvalSetVersionID() { @@ -1735,6 +1822,15 @@ func (p *Experiment) field62Length() int { return l } +func (p *Experiment) field63Length() int { + l := 0 + if p.IsSetThreadID() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.ThreadID) + } + return l +} + func (p *Experiment) field70Length() int { l := 0 if p.IsSetTriggerType() { @@ -1816,6 +1912,11 @@ func (p *Experiment) DeepCopy(s interface{}) error { p.ItemConcurNum = &tmp } + if src.Visibility != nil { + tmp := *src.Visibility + p.Visibility = &tmp + } + if src.EvalSetVersionID != nil { tmp := *src.EvalSetVersionID p.EvalSetVersionID = &tmp @@ -1995,6 +2096,14 @@ func (p *Experiment) DeepCopy(s interface{}) error { p.EnableWeightedScore = &tmp } + if src.ThreadID != nil { + var tmp string + if *src.ThreadID != "" { + tmp = kutils.StringDeepCopy(*src.ThreadID) + } + p.ThreadID = &tmp + } + if src.TriggerType != nil { tmp := *src.TriggerType p.TriggerType = &tmp @@ -2099,6 +2208,20 @@ func (p *ExptTemplateMeta) FastRead(buf []byte) (int, error) { goto SkipFieldError } } + case 6: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField6(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } default: l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -2189,6 +2312,20 @@ func (p *ExptTemplateMeta) FastReadField5(buf []byte) (int, error) { return offset, nil } +func (p *ExptTemplateMeta) FastReadField6(buf []byte) (int, error) { + offset := 0 + + var _field *Visibility + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Visibility = _field + return offset, nil +} + func (p *ExptTemplateMeta) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } @@ -2201,6 +2338,7 @@ func (p *ExptTemplateMeta) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) in offset += p.fastWriteField3(buf[offset:], w) offset += p.fastWriteField4(buf[offset:], w) offset += p.fastWriteField5(buf[offset:], w) + offset += p.fastWriteField6(buf[offset:], w) } offset += thrift.Binary.WriteFieldStop(buf[offset:]) return offset @@ -2214,6 +2352,7 @@ func (p *ExptTemplateMeta) BLength() int { l += p.field3Length() l += p.field4Length() l += p.field5Length() + l += p.field6Length() } l += thrift.Binary.FieldStopLength() return l @@ -2264,6 +2403,15 @@ func (p *ExptTemplateMeta) fastWriteField5(buf []byte, w thrift.NocopyWriter) in return offset } +func (p *ExptTemplateMeta) fastWriteField6(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetVisibility() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 6) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Visibility) + } + return offset +} + func (p *ExptTemplateMeta) field1Length() int { l := 0 if p.IsSetID() { @@ -2309,6 +2457,15 @@ func (p *ExptTemplateMeta) field5Length() int { return l } +func (p *ExptTemplateMeta) field6Length() int { + l := 0 + if p.IsSetVisibility() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.Visibility) + } + return l +} + func (p *ExptTemplateMeta) DeepCopy(s interface{}) error { src, ok := s.(*ExptTemplateMeta) if !ok { @@ -2346,6 +2503,11 @@ func (p *ExptTemplateMeta) DeepCopy(s interface{}) error { p.ExptType = &tmp } + if src.Visibility != nil { + tmp := *src.Visibility + p.Visibility = &tmp + } + return nil } diff --git a/backend/kitex_gen/coze/loop/evaluation/domain_openapi/eval_target/eval_target.go b/backend/kitex_gen/coze/loop/evaluation/domain_openapi/eval_target/eval_target.go index 8017fa0fe..6f61278cb 100644 --- a/backend/kitex_gen/coze/loop/evaluation/domain_openapi/eval_target/eval_target.go +++ b/backend/kitex_gen/coze/loop/evaluation/domain_openapi/eval_target/eval_target.go @@ -3017,6 +3017,8 @@ type EvalTargetOutputData struct { EvalTargetRunError *EvalTargetRunError `thrift:"eval_target_run_error,3,optional" frugal:"3,optional,EvalTargetRunError" form:"eval_target_run_error" json:"eval_target_run_error,omitempty" query:"eval_target_run_error"` // 运行耗时 TimeConsumingMs *int64 `thrift:"time_consuming_ms,4,optional" frugal:"4,optional,i64" json:"time_consuming_ms" form:"time_consuming_ms" query:"time_consuming_ms"` + // 平台扩展字段 + Ext map[string]string `thrift:"ext,20,optional" frugal:"20,optional,map" form:"ext" json:"ext,omitempty" query:"ext"` } func NewEvalTargetOutputData() *EvalTargetOutputData { @@ -3073,6 +3075,18 @@ func (p *EvalTargetOutputData) GetTimeConsumingMs() (v int64) { } return *p.TimeConsumingMs } + +var EvalTargetOutputData_Ext_DEFAULT map[string]string + +func (p *EvalTargetOutputData) GetExt() (v map[string]string) { + if p == nil { + return + } + if !p.IsSetExt() { + return EvalTargetOutputData_Ext_DEFAULT + } + return p.Ext +} func (p *EvalTargetOutputData) SetOutputFields(val map[string]*common.Content) { p.OutputFields = val } @@ -3085,12 +3099,16 @@ func (p *EvalTargetOutputData) SetEvalTargetRunError(val *EvalTargetRunError) { func (p *EvalTargetOutputData) SetTimeConsumingMs(val *int64) { p.TimeConsumingMs = val } +func (p *EvalTargetOutputData) SetExt(val map[string]string) { + p.Ext = val +} var fieldIDToName_EvalTargetOutputData = map[int16]string{ - 1: "output_fields", - 2: "eval_target_usage", - 3: "eval_target_run_error", - 4: "time_consuming_ms", + 1: "output_fields", + 2: "eval_target_usage", + 3: "eval_target_run_error", + 4: "time_consuming_ms", + 20: "ext", } func (p *EvalTargetOutputData) IsSetOutputFields() bool { @@ -3109,6 +3127,10 @@ func (p *EvalTargetOutputData) IsSetTimeConsumingMs() bool { return p.TimeConsumingMs != nil } +func (p *EvalTargetOutputData) IsSetExt() bool { + return p.Ext != nil +} + func (p *EvalTargetOutputData) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -3159,6 +3181,14 @@ func (p *EvalTargetOutputData) Read(iprot thrift.TProtocol) (err error) { } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 20: + if fieldTypeId == thrift.MAP { + if err = p.ReadField20(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } default: if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError @@ -3244,6 +3274,35 @@ func (p *EvalTargetOutputData) ReadField4(iprot thrift.TProtocol) error { p.TimeConsumingMs = _field return nil } +func (p *EvalTargetOutputData) ReadField20(iprot thrift.TProtocol) error { + _, _, size, err := iprot.ReadMapBegin() + if err != nil { + return err + } + _field := make(map[string]string, size) + for i := 0; i < size; i++ { + var _key string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _key = v + } + + var _val string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _val = v + } + + _field[_key] = _val + } + if err := iprot.ReadMapEnd(); err != nil { + return err + } + p.Ext = _field + return nil +} func (p *EvalTargetOutputData) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 @@ -3267,6 +3326,10 @@ func (p *EvalTargetOutputData) Write(oprot thrift.TProtocol) (err error) { fieldId = 4 goto WriteFieldError } + if err = p.writeField20(oprot); err != nil { + fieldId = 20 + goto WriteFieldError + } } if err = oprot.WriteFieldStop(); err != nil { goto WriteFieldStopError @@ -3368,6 +3431,35 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) } +func (p *EvalTargetOutputData) writeField20(oprot thrift.TProtocol) (err error) { + if p.IsSetExt() { + if err = oprot.WriteFieldBegin("ext", thrift.MAP, 20); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteMapBegin(thrift.STRING, thrift.STRING, len(p.Ext)); err != nil { + return err + } + for k, v := range p.Ext { + if err := oprot.WriteString(k); err != nil { + return err + } + if err := oprot.WriteString(v); err != nil { + return err + } + } + if err := oprot.WriteMapEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 20 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 20 end error: ", p), err) +} func (p *EvalTargetOutputData) String() string { if p == nil { @@ -3395,6 +3487,9 @@ func (p *EvalTargetOutputData) DeepEqual(ano *EvalTargetOutputData) bool { if !p.Field4DeepEqual(ano.TimeConsumingMs) { return false } + if !p.Field20DeepEqual(ano.Ext) { + return false + } return true } @@ -3437,6 +3532,19 @@ func (p *EvalTargetOutputData) Field4DeepEqual(src *int64) bool { } return true } +func (p *EvalTargetOutputData) Field20DeepEqual(src map[string]string) bool { + + if len(p.Ext) != len(src) { + return false + } + for k, v := range p.Ext { + _src := src[k] + if strings.Compare(v, _src) != 0 { + return false + } + } + return true +} type EvalTargetUsage struct { InputTokens int64 `thrift:"input_tokens,1" frugal:"1,default,i64" json:"input_tokens" form:"input_tokens" query:"input_tokens"` diff --git a/backend/kitex_gen/coze/loop/evaluation/domain_openapi/eval_target/k-eval_target.go b/backend/kitex_gen/coze/loop/evaluation/domain_openapi/eval_target/k-eval_target.go index 2a17ec50b..e2335965f 100644 --- a/backend/kitex_gen/coze/loop/evaluation/domain_openapi/eval_target/k-eval_target.go +++ b/backend/kitex_gen/coze/loop/evaluation/domain_openapi/eval_target/k-eval_target.go @@ -2211,6 +2211,20 @@ func (p *EvalTargetOutputData) FastRead(buf []byte) (int, error) { goto SkipFieldError } } + case 20: + if fieldTypeId == thrift.MAP { + l, err = p.FastReadField20(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } default: l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -2300,6 +2314,38 @@ func (p *EvalTargetOutputData) FastReadField4(buf []byte) (int, error) { return offset, nil } +func (p *EvalTargetOutputData) FastReadField20(buf []byte) (int, error) { + offset := 0 + + _, _, size, l, err := thrift.Binary.ReadMapBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make(map[string]string, size) + for i := 0; i < size; i++ { + var _key string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _key = v + } + + var _val string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _val = v + } + + _field[_key] = _val + } + p.Ext = _field + return offset, nil +} + func (p *EvalTargetOutputData) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } @@ -2311,6 +2357,7 @@ func (p *EvalTargetOutputData) FastWriteNocopy(buf []byte, w thrift.NocopyWriter offset += p.fastWriteField1(buf[offset:], w) offset += p.fastWriteField2(buf[offset:], w) offset += p.fastWriteField3(buf[offset:], w) + offset += p.fastWriteField20(buf[offset:], w) } offset += thrift.Binary.WriteFieldStop(buf[offset:]) return offset @@ -2323,6 +2370,7 @@ func (p *EvalTargetOutputData) BLength() int { l += p.field2Length() l += p.field3Length() l += p.field4Length() + l += p.field20Length() } l += thrift.Binary.FieldStopLength() return l @@ -2372,6 +2420,23 @@ func (p *EvalTargetOutputData) fastWriteField4(buf []byte, w thrift.NocopyWriter return offset } +func (p *EvalTargetOutputData) fastWriteField20(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetExt() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.MAP, 20) + mapBeginOffset := offset + offset += thrift.Binary.MapBeginLength() + var length int + for k, v := range p.Ext { + length++ + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, k) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, v) + } + thrift.Binary.WriteMapBegin(buf[mapBeginOffset:], thrift.STRING, thrift.STRING, length) + } + return offset +} + func (p *EvalTargetOutputData) field1Length() int { l := 0 if p.IsSetOutputFields() { @@ -2414,6 +2479,21 @@ func (p *EvalTargetOutputData) field4Length() int { return l } +func (p *EvalTargetOutputData) field20Length() int { + l := 0 + if p.IsSetExt() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.MapBeginLength() + for k, v := range p.Ext { + _, _ = k, v + + l += thrift.Binary.StringLengthNocopy(k) + l += thrift.Binary.StringLengthNocopy(v) + } + } + return l +} + func (p *EvalTargetOutputData) DeepCopy(s interface{}) error { src, ok := s.(*EvalTargetOutputData) if !ok { @@ -2463,6 +2543,23 @@ func (p *EvalTargetOutputData) DeepCopy(s interface{}) error { p.TimeConsumingMs = &tmp } + if src.Ext != nil { + p.Ext = make(map[string]string, len(src.Ext)) + for key, val := range src.Ext { + var _key string + if key != "" { + _key = kutils.StringDeepCopy(key) + } + + var _val string + if val != "" { + _val = kutils.StringDeepCopy(val) + } + + p.Ext[_key] = _val + } + } + return nil } diff --git a/backend/kitex_gen/coze/loop/evaluation/eval_target/coze.loop.evaluation.eval_target.go b/backend/kitex_gen/coze/loop/evaluation/eval_target/coze.loop.evaluation.eval_target.go index b4b1e067c..37b312d03 100644 --- a/backend/kitex_gen/coze/loop/evaluation/eval_target/coze.loop.evaluation.eval_target.go +++ b/backend/kitex_gen/coze/loop/evaluation/eval_target/coze.loop.evaluation.eval_target.go @@ -342,6 +342,8 @@ type CreateEvalTargetParam struct { Region *eval_target.Region `thrift:"region,7,optional" frugal:"7,optional,string" form:"region" json:"region,omitempty" query:"region"` // 有环境限制需要填充这个字段 Env *string `thrift:"env,8,optional" frugal:"8,optional,string" form:"env" json:"env,omitempty" query:"env"` + // type=8时需填写,评测对象操作说明 + OperationInstruction *string `thrift:"operation_instruction,9,optional" frugal:"9,optional,string" form:"operation_instruction" json:"operation_instruction,omitempty" query:"operation_instruction"` } func NewCreateEvalTargetParam() *CreateEvalTargetParam { @@ -446,6 +448,18 @@ func (p *CreateEvalTargetParam) GetEnv() (v string) { } return *p.Env } + +var CreateEvalTargetParam_OperationInstruction_DEFAULT string + +func (p *CreateEvalTargetParam) GetOperationInstruction() (v string) { + if p == nil { + return + } + if !p.IsSetOperationInstruction() { + return CreateEvalTargetParam_OperationInstruction_DEFAULT + } + return *p.OperationInstruction +} func (p *CreateEvalTargetParam) SetSourceTargetID(val *string) { p.SourceTargetID = val } @@ -470,6 +484,9 @@ func (p *CreateEvalTargetParam) SetRegion(val *eval_target.Region) { func (p *CreateEvalTargetParam) SetEnv(val *string) { p.Env = val } +func (p *CreateEvalTargetParam) SetOperationInstruction(val *string) { + p.OperationInstruction = val +} var fieldIDToName_CreateEvalTargetParam = map[int16]string{ 1: "source_target_id", @@ -480,6 +497,7 @@ var fieldIDToName_CreateEvalTargetParam = map[int16]string{ 6: "custom_eval_target", 7: "region", 8: "env", + 9: "operation_instruction", } func (p *CreateEvalTargetParam) IsSetSourceTargetID() bool { @@ -514,6 +532,10 @@ func (p *CreateEvalTargetParam) IsSetEnv() bool { return p.Env != nil } +func (p *CreateEvalTargetParam) IsSetOperationInstruction() bool { + return p.OperationInstruction != nil +} + func (p *CreateEvalTargetParam) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -596,6 +618,14 @@ func (p *CreateEvalTargetParam) Read(iprot thrift.TProtocol) (err error) { } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 9: + if fieldTypeId == thrift.STRING { + if err = p.ReadField9(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } default: if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError @@ -712,6 +742,17 @@ func (p *CreateEvalTargetParam) ReadField8(iprot thrift.TProtocol) error { p.Env = _field return nil } +func (p *CreateEvalTargetParam) ReadField9(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.OperationInstruction = _field + return nil +} func (p *CreateEvalTargetParam) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 @@ -751,6 +792,10 @@ func (p *CreateEvalTargetParam) Write(oprot thrift.TProtocol) (err error) { fieldId = 8 goto WriteFieldError } + if err = p.writeField9(oprot); err != nil { + fieldId = 9 + goto WriteFieldError + } } if err = oprot.WriteFieldStop(); err != nil { goto WriteFieldStopError @@ -913,6 +958,24 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 8 end error: ", p), err) } +func (p *CreateEvalTargetParam) writeField9(oprot thrift.TProtocol) (err error) { + if p.IsSetOperationInstruction() { + if err = oprot.WriteFieldBegin("operation_instruction", thrift.STRING, 9); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.OperationInstruction); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 9 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 9 end error: ", p), err) +} func (p *CreateEvalTargetParam) String() string { if p == nil { @@ -952,6 +1015,9 @@ func (p *CreateEvalTargetParam) DeepEqual(ano *CreateEvalTargetParam) bool { if !p.Field8DeepEqual(ano.Env) { return false } + if !p.Field9DeepEqual(ano.OperationInstruction) { + return false + } return true } @@ -1046,6 +1112,18 @@ func (p *CreateEvalTargetParam) Field8DeepEqual(src *string) bool { } return true } +func (p *CreateEvalTargetParam) Field9DeepEqual(src *string) bool { + + if p.OperationInstruction == src { + return true + } else if p.OperationInstruction == nil || src == nil { + return false + } + if strings.Compare(*p.OperationInstruction, *src) != 0 { + return false + } + return true +} type CreateEvalTargetResponse struct { ID *int64 `thrift:"id,1,optional" frugal:"1,optional,i64" json:"id" form:"id" query:"id"` @@ -8728,132 +8806,119 @@ func (p *BatchGetSourceEvalTargetsResponse) Field255DeepEqual(src *base.BaseResp return true } -type ListSourceEvalTargetVersionsRequest struct { - WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" query:"workspace_id,required"` - SourceTargetID string `thrift:"source_target_id,2,required" frugal:"2,required,string" form:"source_target_id,required" json:"source_target_id,required" query:"source_target_id,required"` - TargetType *eval_target.EvalTargetType `thrift:"target_type,3,optional" frugal:"3,optional,EvalTargetType" form:"target_type" json:"target_type,omitempty" query:"target_type"` - PageSize *int32 `thrift:"page_size,100,optional" frugal:"100,optional,i32" form:"page_size" json:"page_size,omitempty" query:"page_size"` - PageToken *string `thrift:"page_token,101,optional" frugal:"101,optional,string" form:"page_token" json:"page_token,omitempty" query:"page_token"` - Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"Base" json:"Base,omitempty" query:"Base"` +type GetSourceEvalTargetVersionRequest struct { + WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" query:"workspace_id,required"` + SourceTargetID *string `thrift:"source_target_id,2,optional" frugal:"2,optional,string" form:"source_target_id" json:"source_target_id,omitempty" query:"source_target_id"` + SourceTargetVersion *string `thrift:"source_target_version,3,optional" frugal:"3,optional,string" form:"source_target_version" json:"source_target_version,omitempty" query:"source_target_version"` + TargetType *eval_target.EvalTargetType `thrift:"target_type,4,optional" frugal:"4,optional,EvalTargetType" form:"target_type" json:"target_type,omitempty" query:"target_type"` + Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"Base" json:"Base,omitempty" query:"Base"` } -func NewListSourceEvalTargetVersionsRequest() *ListSourceEvalTargetVersionsRequest { - return &ListSourceEvalTargetVersionsRequest{} +func NewGetSourceEvalTargetVersionRequest() *GetSourceEvalTargetVersionRequest { + return &GetSourceEvalTargetVersionRequest{} } -func (p *ListSourceEvalTargetVersionsRequest) InitDefault() { +func (p *GetSourceEvalTargetVersionRequest) InitDefault() { } -func (p *ListSourceEvalTargetVersionsRequest) GetWorkspaceID() (v int64) { +func (p *GetSourceEvalTargetVersionRequest) GetWorkspaceID() (v int64) { if p != nil { return p.WorkspaceID } return } -func (p *ListSourceEvalTargetVersionsRequest) GetSourceTargetID() (v string) { - if p != nil { - return p.SourceTargetID - } - return -} - -var ListSourceEvalTargetVersionsRequest_TargetType_DEFAULT eval_target.EvalTargetType +var GetSourceEvalTargetVersionRequest_SourceTargetID_DEFAULT string -func (p *ListSourceEvalTargetVersionsRequest) GetTargetType() (v eval_target.EvalTargetType) { +func (p *GetSourceEvalTargetVersionRequest) GetSourceTargetID() (v string) { if p == nil { return } - if !p.IsSetTargetType() { - return ListSourceEvalTargetVersionsRequest_TargetType_DEFAULT + if !p.IsSetSourceTargetID() { + return GetSourceEvalTargetVersionRequest_SourceTargetID_DEFAULT } - return *p.TargetType + return *p.SourceTargetID } -var ListSourceEvalTargetVersionsRequest_PageSize_DEFAULT int32 +var GetSourceEvalTargetVersionRequest_SourceTargetVersion_DEFAULT string -func (p *ListSourceEvalTargetVersionsRequest) GetPageSize() (v int32) { +func (p *GetSourceEvalTargetVersionRequest) GetSourceTargetVersion() (v string) { if p == nil { return } - if !p.IsSetPageSize() { - return ListSourceEvalTargetVersionsRequest_PageSize_DEFAULT + if !p.IsSetSourceTargetVersion() { + return GetSourceEvalTargetVersionRequest_SourceTargetVersion_DEFAULT } - return *p.PageSize + return *p.SourceTargetVersion } -var ListSourceEvalTargetVersionsRequest_PageToken_DEFAULT string +var GetSourceEvalTargetVersionRequest_TargetType_DEFAULT eval_target.EvalTargetType -func (p *ListSourceEvalTargetVersionsRequest) GetPageToken() (v string) { +func (p *GetSourceEvalTargetVersionRequest) GetTargetType() (v eval_target.EvalTargetType) { if p == nil { return } - if !p.IsSetPageToken() { - return ListSourceEvalTargetVersionsRequest_PageToken_DEFAULT + if !p.IsSetTargetType() { + return GetSourceEvalTargetVersionRequest_TargetType_DEFAULT } - return *p.PageToken + return *p.TargetType } -var ListSourceEvalTargetVersionsRequest_Base_DEFAULT *base.Base +var GetSourceEvalTargetVersionRequest_Base_DEFAULT *base.Base -func (p *ListSourceEvalTargetVersionsRequest) GetBase() (v *base.Base) { +func (p *GetSourceEvalTargetVersionRequest) GetBase() (v *base.Base) { if p == nil { return } if !p.IsSetBase() { - return ListSourceEvalTargetVersionsRequest_Base_DEFAULT + return GetSourceEvalTargetVersionRequest_Base_DEFAULT } return p.Base } -func (p *ListSourceEvalTargetVersionsRequest) SetWorkspaceID(val int64) { +func (p *GetSourceEvalTargetVersionRequest) SetWorkspaceID(val int64) { p.WorkspaceID = val } -func (p *ListSourceEvalTargetVersionsRequest) SetSourceTargetID(val string) { +func (p *GetSourceEvalTargetVersionRequest) SetSourceTargetID(val *string) { p.SourceTargetID = val } -func (p *ListSourceEvalTargetVersionsRequest) SetTargetType(val *eval_target.EvalTargetType) { - p.TargetType = val -} -func (p *ListSourceEvalTargetVersionsRequest) SetPageSize(val *int32) { - p.PageSize = val +func (p *GetSourceEvalTargetVersionRequest) SetSourceTargetVersion(val *string) { + p.SourceTargetVersion = val } -func (p *ListSourceEvalTargetVersionsRequest) SetPageToken(val *string) { - p.PageToken = val +func (p *GetSourceEvalTargetVersionRequest) SetTargetType(val *eval_target.EvalTargetType) { + p.TargetType = val } -func (p *ListSourceEvalTargetVersionsRequest) SetBase(val *base.Base) { +func (p *GetSourceEvalTargetVersionRequest) SetBase(val *base.Base) { p.Base = val } -var fieldIDToName_ListSourceEvalTargetVersionsRequest = map[int16]string{ +var fieldIDToName_GetSourceEvalTargetVersionRequest = map[int16]string{ 1: "workspace_id", 2: "source_target_id", - 3: "target_type", - 100: "page_size", - 101: "page_token", + 3: "source_target_version", + 4: "target_type", 255: "Base", } -func (p *ListSourceEvalTargetVersionsRequest) IsSetTargetType() bool { - return p.TargetType != nil +func (p *GetSourceEvalTargetVersionRequest) IsSetSourceTargetID() bool { + return p.SourceTargetID != nil } -func (p *ListSourceEvalTargetVersionsRequest) IsSetPageSize() bool { - return p.PageSize != nil +func (p *GetSourceEvalTargetVersionRequest) IsSetSourceTargetVersion() bool { + return p.SourceTargetVersion != nil } -func (p *ListSourceEvalTargetVersionsRequest) IsSetPageToken() bool { - return p.PageToken != nil +func (p *GetSourceEvalTargetVersionRequest) IsSetTargetType() bool { + return p.TargetType != nil } -func (p *ListSourceEvalTargetVersionsRequest) IsSetBase() bool { +func (p *GetSourceEvalTargetVersionRequest) IsSetBase() bool { return p.Base != nil } -func (p *ListSourceEvalTargetVersionsRequest) Read(iprot thrift.TProtocol) (err error) { +func (p *GetSourceEvalTargetVersionRequest) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 var issetWorkspaceID bool = false - var issetSourceTargetID bool = false if _, err = iprot.ReadStructBegin(); err != nil { goto ReadStructBeginError @@ -8883,29 +8948,20 @@ func (p *ListSourceEvalTargetVersionsRequest) Read(iprot thrift.TProtocol) (err if err = p.ReadField2(iprot); err != nil { goto ReadFieldError } - issetSourceTargetID = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } case 3: - if fieldTypeId == thrift.I32 { + if fieldTypeId == thrift.STRING { if err = p.ReadField3(iprot); err != nil { goto ReadFieldError } } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } - case 100: + case 4: if fieldTypeId == thrift.I32 { - if err = p.ReadField100(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 101: - if fieldTypeId == thrift.STRING { - if err = p.ReadField101(iprot); err != nil { + if err = p.ReadField4(iprot); err != nil { goto ReadFieldError } } else if err = iprot.Skip(fieldTypeId); err != nil { @@ -8936,18 +8992,13 @@ func (p *ListSourceEvalTargetVersionsRequest) Read(iprot thrift.TProtocol) (err fieldId = 1 goto RequiredFieldNotSetError } - - if !issetSourceTargetID { - fieldId = 2 - goto RequiredFieldNotSetError - } return nil ReadStructBeginError: return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ListSourceEvalTargetVersionsRequest[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_GetSourceEvalTargetVersionRequest[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -8956,10 +9007,10 @@ ReadFieldEndError: ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) RequiredFieldNotSetError: - return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_ListSourceEvalTargetVersionsRequest[fieldId])) + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_GetSourceEvalTargetVersionRequest[fieldId])) } -func (p *ListSourceEvalTargetVersionsRequest) ReadField1(iprot thrift.TProtocol) error { +func (p *GetSourceEvalTargetVersionRequest) ReadField1(iprot thrift.TProtocol) error { var _field int64 if v, err := iprot.ReadI64(); err != nil { @@ -8970,52 +9021,41 @@ func (p *ListSourceEvalTargetVersionsRequest) ReadField1(iprot thrift.TProtocol) p.WorkspaceID = _field return nil } -func (p *ListSourceEvalTargetVersionsRequest) ReadField2(iprot thrift.TProtocol) error { +func (p *GetSourceEvalTargetVersionRequest) ReadField2(iprot thrift.TProtocol) error { - var _field string + var _field *string if v, err := iprot.ReadString(); err != nil { return err } else { - _field = v + _field = &v } p.SourceTargetID = _field return nil } -func (p *ListSourceEvalTargetVersionsRequest) ReadField3(iprot thrift.TProtocol) error { - - var _field *eval_target.EvalTargetType - if v, err := iprot.ReadI32(); err != nil { - return err - } else { - tmp := eval_target.EvalTargetType(v) - _field = &tmp - } - p.TargetType = _field - return nil -} -func (p *ListSourceEvalTargetVersionsRequest) ReadField100(iprot thrift.TProtocol) error { +func (p *GetSourceEvalTargetVersionRequest) ReadField3(iprot thrift.TProtocol) error { - var _field *int32 - if v, err := iprot.ReadI32(); err != nil { + var _field *string + if v, err := iprot.ReadString(); err != nil { return err } else { _field = &v } - p.PageSize = _field + p.SourceTargetVersion = _field return nil } -func (p *ListSourceEvalTargetVersionsRequest) ReadField101(iprot thrift.TProtocol) error { +func (p *GetSourceEvalTargetVersionRequest) ReadField4(iprot thrift.TProtocol) error { - var _field *string - if v, err := iprot.ReadString(); err != nil { + var _field *eval_target.EvalTargetType + if v, err := iprot.ReadI32(); err != nil { return err } else { - _field = &v + tmp := eval_target.EvalTargetType(v) + _field = &tmp } - p.PageToken = _field + p.TargetType = _field return nil } -func (p *ListSourceEvalTargetVersionsRequest) ReadField255(iprot thrift.TProtocol) error { +func (p *GetSourceEvalTargetVersionRequest) ReadField255(iprot thrift.TProtocol) error { _field := base.NewBase() if err := _field.Read(iprot); err != nil { return err @@ -9024,9 +9064,9 @@ func (p *ListSourceEvalTargetVersionsRequest) ReadField255(iprot thrift.TProtoco return nil } -func (p *ListSourceEvalTargetVersionsRequest) Write(oprot thrift.TProtocol) (err error) { +func (p *GetSourceEvalTargetVersionRequest) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("ListSourceEvalTargetVersionsRequest"); err != nil { + if err = oprot.WriteStructBegin("GetSourceEvalTargetVersionRequest"); err != nil { goto WriteStructBeginError } if p != nil { @@ -9042,12 +9082,8 @@ func (p *ListSourceEvalTargetVersionsRequest) Write(oprot thrift.TProtocol) (err fieldId = 3 goto WriteFieldError } - if err = p.writeField100(oprot); err != nil { - fieldId = 100 - goto WriteFieldError - } - if err = p.writeField101(oprot); err != nil { - fieldId = 101 + if err = p.writeField4(oprot); err != nil { + fieldId = 4 goto WriteFieldError } if err = p.writeField255(oprot); err != nil { @@ -9072,7 +9108,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *ListSourceEvalTargetVersionsRequest) writeField1(oprot thrift.TProtocol) (err error) { +func (p *GetSourceEvalTargetVersionRequest) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("workspace_id", thrift.I64, 1); err != nil { goto WriteFieldBeginError } @@ -9088,28 +9124,12 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *ListSourceEvalTargetVersionsRequest) writeField2(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("source_target_id", thrift.STRING, 2); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteString(p.SourceTargetID); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) -} -func (p *ListSourceEvalTargetVersionsRequest) writeField3(oprot thrift.TProtocol) (err error) { - if p.IsSetTargetType() { - if err = oprot.WriteFieldBegin("target_type", thrift.I32, 3); err != nil { +func (p *GetSourceEvalTargetVersionRequest) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetSourceTargetID() { + if err = oprot.WriteFieldBegin("source_target_id", thrift.STRING, 2); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteI32(int32(*p.TargetType)); err != nil { + if err := oprot.WriteString(*p.SourceTargetID); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -9118,16 +9138,16 @@ func (p *ListSourceEvalTargetVersionsRequest) writeField3(oprot thrift.TProtocol } return nil WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) } -func (p *ListSourceEvalTargetVersionsRequest) writeField100(oprot thrift.TProtocol) (err error) { - if p.IsSetPageSize() { - if err = oprot.WriteFieldBegin("page_size", thrift.I32, 100); err != nil { +func (p *GetSourceEvalTargetVersionRequest) writeField3(oprot thrift.TProtocol) (err error) { + if p.IsSetSourceTargetVersion() { + if err = oprot.WriteFieldBegin("source_target_version", thrift.STRING, 3); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteI32(*p.PageSize); err != nil { + if err := oprot.WriteString(*p.SourceTargetVersion); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -9136,16 +9156,16 @@ func (p *ListSourceEvalTargetVersionsRequest) writeField100(oprot thrift.TProtoc } return nil WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 100 begin error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 100 end error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) } -func (p *ListSourceEvalTargetVersionsRequest) writeField101(oprot thrift.TProtocol) (err error) { - if p.IsSetPageToken() { - if err = oprot.WriteFieldBegin("page_token", thrift.STRING, 101); err != nil { +func (p *GetSourceEvalTargetVersionRequest) writeField4(oprot thrift.TProtocol) (err error) { + if p.IsSetTargetType() { + if err = oprot.WriteFieldBegin("target_type", thrift.I32, 4); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteString(*p.PageToken); err != nil { + if err := oprot.WriteI32(int32(*p.TargetType)); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -9154,11 +9174,11 @@ func (p *ListSourceEvalTargetVersionsRequest) writeField101(oprot thrift.TProtoc } return nil WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 101 begin error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 4 begin error: ", p), err) WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 101 end error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) } -func (p *ListSourceEvalTargetVersionsRequest) writeField255(oprot thrift.TProtocol) (err error) { +func (p *GetSourceEvalTargetVersionRequest) writeField255(oprot thrift.TProtocol) (err error) { if p.IsSetBase() { if err = oprot.WriteFieldBegin("Base", thrift.STRUCT, 255); err != nil { goto WriteFieldBeginError @@ -9177,15 +9197,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) } -func (p *ListSourceEvalTargetVersionsRequest) String() string { +func (p *GetSourceEvalTargetVersionRequest) String() string { if p == nil { return "" } - return fmt.Sprintf("ListSourceEvalTargetVersionsRequest(%+v)", *p) + return fmt.Sprintf("GetSourceEvalTargetVersionRequest(%+v)", *p) } -func (p *ListSourceEvalTargetVersionsRequest) DeepEqual(ano *ListSourceEvalTargetVersionsRequest) bool { +func (p *GetSourceEvalTargetVersionRequest) DeepEqual(ano *GetSourceEvalTargetVersionRequest) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -9197,13 +9217,10 @@ func (p *ListSourceEvalTargetVersionsRequest) DeepEqual(ano *ListSourceEvalTarge if !p.Field2DeepEqual(ano.SourceTargetID) { return false } - if !p.Field3DeepEqual(ano.TargetType) { - return false - } - if !p.Field100DeepEqual(ano.PageSize) { + if !p.Field3DeepEqual(ano.SourceTargetVersion) { return false } - if !p.Field101DeepEqual(ano.PageToken) { + if !p.Field4DeepEqual(ano.TargetType) { return false } if !p.Field255DeepEqual(ano.Base) { @@ -9212,57 +9229,50 @@ func (p *ListSourceEvalTargetVersionsRequest) DeepEqual(ano *ListSourceEvalTarge return true } -func (p *ListSourceEvalTargetVersionsRequest) Field1DeepEqual(src int64) bool { +func (p *GetSourceEvalTargetVersionRequest) Field1DeepEqual(src int64) bool { if p.WorkspaceID != src { return false } return true } -func (p *ListSourceEvalTargetVersionsRequest) Field2DeepEqual(src string) bool { +func (p *GetSourceEvalTargetVersionRequest) Field2DeepEqual(src *string) bool { - if strings.Compare(p.SourceTargetID, src) != 0 { + if p.SourceTargetID == src { + return true + } else if p.SourceTargetID == nil || src == nil { + return false + } + if strings.Compare(*p.SourceTargetID, *src) != 0 { return false } return true } -func (p *ListSourceEvalTargetVersionsRequest) Field3DeepEqual(src *eval_target.EvalTargetType) bool { +func (p *GetSourceEvalTargetVersionRequest) Field3DeepEqual(src *string) bool { - if p.TargetType == src { - return true - } else if p.TargetType == nil || src == nil { - return false - } - if *p.TargetType != *src { - return false - } - return true -} -func (p *ListSourceEvalTargetVersionsRequest) Field100DeepEqual(src *int32) bool { - - if p.PageSize == src { + if p.SourceTargetVersion == src { return true - } else if p.PageSize == nil || src == nil { + } else if p.SourceTargetVersion == nil || src == nil { return false } - if *p.PageSize != *src { + if strings.Compare(*p.SourceTargetVersion, *src) != 0 { return false } return true } -func (p *ListSourceEvalTargetVersionsRequest) Field101DeepEqual(src *string) bool { +func (p *GetSourceEvalTargetVersionRequest) Field4DeepEqual(src *eval_target.EvalTargetType) bool { - if p.PageToken == src { + if p.TargetType == src { return true - } else if p.PageToken == nil || src == nil { + } else if p.TargetType == nil || src == nil { return false } - if strings.Compare(*p.PageToken, *src) != 0 { + if *p.TargetType != *src { return false } return true } -func (p *ListSourceEvalTargetVersionsRequest) Field255DeepEqual(src *base.Base) bool { +func (p *GetSourceEvalTargetVersionRequest) Field255DeepEqual(src *base.Base) bool { if !p.Base.DeepEqual(src) { return false @@ -9270,104 +9280,62 @@ func (p *ListSourceEvalTargetVersionsRequest) Field255DeepEqual(src *base.Base) return true } -type ListSourceEvalTargetVersionsResponse struct { - Versions []*eval_target.EvalTargetVersion `thrift:"versions,1,optional" frugal:"1,optional,list" form:"versions" json:"versions,omitempty" query:"versions"` - NextPageToken *string `thrift:"next_page_token,100,optional" frugal:"100,optional,string" form:"next_page_token" json:"next_page_token,omitempty" query:"next_page_token"` - HasMore *bool `thrift:"has_more,101,optional" frugal:"101,optional,bool" form:"has_more" json:"has_more,omitempty" query:"has_more"` - BaseResp *base.BaseResp `thrift:"BaseResp,255" frugal:"255,default,base.BaseResp" form:"BaseResp" json:"BaseResp" query:"BaseResp"` -} - -func NewListSourceEvalTargetVersionsResponse() *ListSourceEvalTargetVersionsResponse { - return &ListSourceEvalTargetVersionsResponse{} -} - -func (p *ListSourceEvalTargetVersionsResponse) InitDefault() { +type GetSourceEvalTargetVersionResponse struct { + EvalTargetVersion *eval_target.EvalTargetVersion `thrift:"eval_target_version,1,optional" frugal:"1,optional,eval_target.EvalTargetVersion" form:"eval_target_version" json:"eval_target_version,omitempty" query:"eval_target_version"` + BaseResp *base.BaseResp `thrift:"BaseResp,255" frugal:"255,default,base.BaseResp" form:"BaseResp" json:"BaseResp" query:"BaseResp"` } -var ListSourceEvalTargetVersionsResponse_Versions_DEFAULT []*eval_target.EvalTargetVersion - -func (p *ListSourceEvalTargetVersionsResponse) GetVersions() (v []*eval_target.EvalTargetVersion) { - if p == nil { - return - } - if !p.IsSetVersions() { - return ListSourceEvalTargetVersionsResponse_Versions_DEFAULT - } - return p.Versions +func NewGetSourceEvalTargetVersionResponse() *GetSourceEvalTargetVersionResponse { + return &GetSourceEvalTargetVersionResponse{} } -var ListSourceEvalTargetVersionsResponse_NextPageToken_DEFAULT string - -func (p *ListSourceEvalTargetVersionsResponse) GetNextPageToken() (v string) { - if p == nil { - return - } - if !p.IsSetNextPageToken() { - return ListSourceEvalTargetVersionsResponse_NextPageToken_DEFAULT - } - return *p.NextPageToken +func (p *GetSourceEvalTargetVersionResponse) InitDefault() { } -var ListSourceEvalTargetVersionsResponse_HasMore_DEFAULT bool +var GetSourceEvalTargetVersionResponse_EvalTargetVersion_DEFAULT *eval_target.EvalTargetVersion -func (p *ListSourceEvalTargetVersionsResponse) GetHasMore() (v bool) { +func (p *GetSourceEvalTargetVersionResponse) GetEvalTargetVersion() (v *eval_target.EvalTargetVersion) { if p == nil { return } - if !p.IsSetHasMore() { - return ListSourceEvalTargetVersionsResponse_HasMore_DEFAULT + if !p.IsSetEvalTargetVersion() { + return GetSourceEvalTargetVersionResponse_EvalTargetVersion_DEFAULT } - return *p.HasMore + return p.EvalTargetVersion } -var ListSourceEvalTargetVersionsResponse_BaseResp_DEFAULT *base.BaseResp +var GetSourceEvalTargetVersionResponse_BaseResp_DEFAULT *base.BaseResp -func (p *ListSourceEvalTargetVersionsResponse) GetBaseResp() (v *base.BaseResp) { +func (p *GetSourceEvalTargetVersionResponse) GetBaseResp() (v *base.BaseResp) { if p == nil { return } if !p.IsSetBaseResp() { - return ListSourceEvalTargetVersionsResponse_BaseResp_DEFAULT + return GetSourceEvalTargetVersionResponse_BaseResp_DEFAULT } return p.BaseResp } -func (p *ListSourceEvalTargetVersionsResponse) SetVersions(val []*eval_target.EvalTargetVersion) { - p.Versions = val -} -func (p *ListSourceEvalTargetVersionsResponse) SetNextPageToken(val *string) { - p.NextPageToken = val -} -func (p *ListSourceEvalTargetVersionsResponse) SetHasMore(val *bool) { - p.HasMore = val +func (p *GetSourceEvalTargetVersionResponse) SetEvalTargetVersion(val *eval_target.EvalTargetVersion) { + p.EvalTargetVersion = val } -func (p *ListSourceEvalTargetVersionsResponse) SetBaseResp(val *base.BaseResp) { +func (p *GetSourceEvalTargetVersionResponse) SetBaseResp(val *base.BaseResp) { p.BaseResp = val } -var fieldIDToName_ListSourceEvalTargetVersionsResponse = map[int16]string{ - 1: "versions", - 100: "next_page_token", - 101: "has_more", +var fieldIDToName_GetSourceEvalTargetVersionResponse = map[int16]string{ + 1: "eval_target_version", 255: "BaseResp", } -func (p *ListSourceEvalTargetVersionsResponse) IsSetVersions() bool { - return p.Versions != nil -} - -func (p *ListSourceEvalTargetVersionsResponse) IsSetNextPageToken() bool { - return p.NextPageToken != nil -} - -func (p *ListSourceEvalTargetVersionsResponse) IsSetHasMore() bool { - return p.HasMore != nil +func (p *GetSourceEvalTargetVersionResponse) IsSetEvalTargetVersion() bool { + return p.EvalTargetVersion != nil } -func (p *ListSourceEvalTargetVersionsResponse) IsSetBaseResp() bool { +func (p *GetSourceEvalTargetVersionResponse) IsSetBaseResp() bool { return p.BaseResp != nil } -func (p *ListSourceEvalTargetVersionsResponse) Read(iprot thrift.TProtocol) (err error) { +func (p *GetSourceEvalTargetVersionResponse) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -9386,29 +9354,13 @@ func (p *ListSourceEvalTargetVersionsResponse) Read(iprot thrift.TProtocol) (err switch fieldId { case 1: - if fieldTypeId == thrift.LIST { + if fieldTypeId == thrift.STRUCT { if err = p.ReadField1(iprot); err != nil { goto ReadFieldError } } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } - case 100: - if fieldTypeId == thrift.STRING { - if err = p.ReadField100(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 101: - if fieldTypeId == thrift.BOOL { - if err = p.ReadField101(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } case 255: if fieldTypeId == thrift.STRUCT { if err = p.ReadField255(iprot); err != nil { @@ -9436,7 +9388,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ListSourceEvalTargetVersionsResponse[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_GetSourceEvalTargetVersionResponse[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -9446,52 +9398,15 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *ListSourceEvalTargetVersionsResponse) ReadField1(iprot thrift.TProtocol) error { - _, size, err := iprot.ReadListBegin() - if err != nil { - return err - } - _field := make([]*eval_target.EvalTargetVersion, 0, size) - values := make([]eval_target.EvalTargetVersion, size) - for i := 0; i < size; i++ { - _elem := &values[i] - _elem.InitDefault() - - if err := _elem.Read(iprot); err != nil { - return err - } - - _field = append(_field, _elem) - } - if err := iprot.ReadListEnd(); err != nil { - return err - } - p.Versions = _field - return nil -} -func (p *ListSourceEvalTargetVersionsResponse) ReadField100(iprot thrift.TProtocol) error { - - var _field *string - if v, err := iprot.ReadString(); err != nil { - return err - } else { - _field = &v - } - p.NextPageToken = _field - return nil -} -func (p *ListSourceEvalTargetVersionsResponse) ReadField101(iprot thrift.TProtocol) error { - - var _field *bool - if v, err := iprot.ReadBool(); err != nil { +func (p *GetSourceEvalTargetVersionResponse) ReadField1(iprot thrift.TProtocol) error { + _field := eval_target.NewEvalTargetVersion() + if err := _field.Read(iprot); err != nil { return err - } else { - _field = &v } - p.HasMore = _field + p.EvalTargetVersion = _field return nil } -func (p *ListSourceEvalTargetVersionsResponse) ReadField255(iprot thrift.TProtocol) error { +func (p *GetSourceEvalTargetVersionResponse) ReadField255(iprot thrift.TProtocol) error { _field := base.NewBaseResp() if err := _field.Read(iprot); err != nil { return err @@ -9500,9 +9415,9 @@ func (p *ListSourceEvalTargetVersionsResponse) ReadField255(iprot thrift.TProtoc return nil } -func (p *ListSourceEvalTargetVersionsResponse) Write(oprot thrift.TProtocol) (err error) { +func (p *GetSourceEvalTargetVersionResponse) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("ListSourceEvalTargetVersionsResponse"); err != nil { + if err = oprot.WriteStructBegin("GetSourceEvalTargetVersionResponse"); err != nil { goto WriteStructBeginError } if p != nil { @@ -9510,14 +9425,6 @@ func (p *ListSourceEvalTargetVersionsResponse) Write(oprot thrift.TProtocol) (er fieldId = 1 goto WriteFieldError } - if err = p.writeField100(oprot); err != nil { - fieldId = 100 - goto WriteFieldError - } - if err = p.writeField101(oprot); err != nil { - fieldId = 101 - goto WriteFieldError - } if err = p.writeField255(oprot); err != nil { fieldId = 255 goto WriteFieldError @@ -9540,20 +9447,12 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *ListSourceEvalTargetVersionsResponse) writeField1(oprot thrift.TProtocol) (err error) { - if p.IsSetVersions() { - if err = oprot.WriteFieldBegin("versions", thrift.LIST, 1); err != nil { +func (p *GetSourceEvalTargetVersionResponse) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetEvalTargetVersion() { + if err = oprot.WriteFieldBegin("eval_target_version", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteListBegin(thrift.STRUCT, len(p.Versions)); err != nil { - return err - } - for _, v := range p.Versions { - if err := v.Write(oprot); err != nil { - return err - } - } - if err := oprot.WriteListEnd(); err != nil { + if err := p.EvalTargetVersion.Write(oprot); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -9566,43 +9465,7 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *ListSourceEvalTargetVersionsResponse) writeField100(oprot thrift.TProtocol) (err error) { - if p.IsSetNextPageToken() { - if err = oprot.WriteFieldBegin("next_page_token", thrift.STRING, 100); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteString(*p.NextPageToken); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 100 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 100 end error: ", p), err) -} -func (p *ListSourceEvalTargetVersionsResponse) writeField101(oprot thrift.TProtocol) (err error) { - if p.IsSetHasMore() { - if err = oprot.WriteFieldBegin("has_more", thrift.BOOL, 101); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteBool(*p.HasMore); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 101 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 101 end error: ", p), err) -} -func (p *ListSourceEvalTargetVersionsResponse) writeField255(oprot thrift.TProtocol) (err error) { +func (p *GetSourceEvalTargetVersionResponse) writeField255(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("BaseResp", thrift.STRUCT, 255); err != nil { goto WriteFieldBeginError } @@ -9619,27 +9482,21 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) } -func (p *ListSourceEvalTargetVersionsResponse) String() string { +func (p *GetSourceEvalTargetVersionResponse) String() string { if p == nil { return "" } - return fmt.Sprintf("ListSourceEvalTargetVersionsResponse(%+v)", *p) + return fmt.Sprintf("GetSourceEvalTargetVersionResponse(%+v)", *p) } -func (p *ListSourceEvalTargetVersionsResponse) DeepEqual(ano *ListSourceEvalTargetVersionsResponse) bool { +func (p *GetSourceEvalTargetVersionResponse) DeepEqual(ano *GetSourceEvalTargetVersionResponse) bool { if p == ano { return true } else if p == nil || ano == nil { return false } - if !p.Field1DeepEqual(ano.Versions) { - return false - } - if !p.Field100DeepEqual(ano.NextPageToken) { - return false - } - if !p.Field101DeepEqual(ano.HasMore) { + if !p.Field1DeepEqual(ano.EvalTargetVersion) { return false } if !p.Field255DeepEqual(ano.BaseResp) { @@ -9648,44 +9505,14 @@ func (p *ListSourceEvalTargetVersionsResponse) DeepEqual(ano *ListSourceEvalTarg return true } -func (p *ListSourceEvalTargetVersionsResponse) Field1DeepEqual(src []*eval_target.EvalTargetVersion) bool { - - if len(p.Versions) != len(src) { - return false - } - for i, v := range p.Versions { - _src := src[i] - if !v.DeepEqual(_src) { - return false - } - } - return true -} -func (p *ListSourceEvalTargetVersionsResponse) Field100DeepEqual(src *string) bool { - - if p.NextPageToken == src { - return true - } else if p.NextPageToken == nil || src == nil { - return false - } - if strings.Compare(*p.NextPageToken, *src) != 0 { - return false - } - return true -} -func (p *ListSourceEvalTargetVersionsResponse) Field101DeepEqual(src *bool) bool { +func (p *GetSourceEvalTargetVersionResponse) Field1DeepEqual(src *eval_target.EvalTargetVersion) bool { - if p.HasMore == src { - return true - } else if p.HasMore == nil || src == nil { - return false - } - if *p.HasMore != *src { + if !p.EvalTargetVersion.DeepEqual(src) { return false } return true } -func (p *ListSourceEvalTargetVersionsResponse) Field255DeepEqual(src *base.BaseResp) bool { +func (p *GetSourceEvalTargetVersionResponse) Field255DeepEqual(src *base.BaseResp) bool { if !p.BaseResp.DeepEqual(src) { return false @@ -9693,217 +9520,132 @@ func (p *ListSourceEvalTargetVersionsResponse) Field255DeepEqual(src *base.BaseR return true } -type SearchCustomEvalTargetRequest struct { - // 空间ID - WorkspaceID *int64 `thrift:"workspace_id,1,optional" frugal:"1,optional,i64" json:"workspace_id" form:"workspace_id" query:"workspace_id"` - // 透传spi接口 - Keyword *string `thrift:"keyword,2,optional" frugal:"2,optional,string" form:"keyword" json:"keyword,omitempty" query:"keyword"` - // 应用ID,非必填,创建实验时传应用ID,会根据应用ID从应用模块获取自定义服务详情 - ApplicationID *int64 `thrift:"application_id,3,optional" frugal:"3,optional,i64" json:"application_id" form:"application_id" query:"application_id"` - // 自定义服务详情,非必填,应用注册调试时传 - CustomRPCServer *eval_target.CustomRPCServer `thrift:"custom_rpc_server,4,optional" frugal:"4,optional,eval_target.CustomRPCServer" form:"custom_rpc_server" json:"custom_rpc_server,omitempty" query:"custom_rpc_server"` - // 必填 - Region *eval_target.Region `thrift:"region,5,optional" frugal:"5,optional,string" form:"region" json:"region,omitempty" query:"region"` - // 环境 - Env *string `thrift:"env,6,optional" frugal:"6,optional,string" form:"env" json:"env,omitempty" query:"env"` - PageSize *int32 `thrift:"page_size,100,optional" frugal:"100,optional,i32" form:"page_size" json:"page_size,omitempty" query:"page_size"` - PageToken *string `thrift:"page_token,101,optional" frugal:"101,optional,string" form:"page_token" json:"page_token,omitempty" query:"page_token"` - Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"Base" json:"Base,omitempty" query:"Base"` -} - -func NewSearchCustomEvalTargetRequest() *SearchCustomEvalTargetRequest { - return &SearchCustomEvalTargetRequest{} -} - -func (p *SearchCustomEvalTargetRequest) InitDefault() { -} - -var SearchCustomEvalTargetRequest_WorkspaceID_DEFAULT int64 - -func (p *SearchCustomEvalTargetRequest) GetWorkspaceID() (v int64) { - if p == nil { - return - } - if !p.IsSetWorkspaceID() { - return SearchCustomEvalTargetRequest_WorkspaceID_DEFAULT - } - return *p.WorkspaceID +type ListSourceEvalTargetVersionsRequest struct { + WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" query:"workspace_id,required"` + SourceTargetID string `thrift:"source_target_id,2,required" frugal:"2,required,string" form:"source_target_id,required" json:"source_target_id,required" query:"source_target_id,required"` + TargetType *eval_target.EvalTargetType `thrift:"target_type,3,optional" frugal:"3,optional,EvalTargetType" form:"target_type" json:"target_type,omitempty" query:"target_type"` + PageSize *int32 `thrift:"page_size,100,optional" frugal:"100,optional,i32" form:"page_size" json:"page_size,omitempty" query:"page_size"` + PageToken *string `thrift:"page_token,101,optional" frugal:"101,optional,string" form:"page_token" json:"page_token,omitempty" query:"page_token"` + Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"Base" json:"Base,omitempty" query:"Base"` } -var SearchCustomEvalTargetRequest_Keyword_DEFAULT string - -func (p *SearchCustomEvalTargetRequest) GetKeyword() (v string) { - if p == nil { - return - } - if !p.IsSetKeyword() { - return SearchCustomEvalTargetRequest_Keyword_DEFAULT - } - return *p.Keyword +func NewListSourceEvalTargetVersionsRequest() *ListSourceEvalTargetVersionsRequest { + return &ListSourceEvalTargetVersionsRequest{} } -var SearchCustomEvalTargetRequest_ApplicationID_DEFAULT int64 - -func (p *SearchCustomEvalTargetRequest) GetApplicationID() (v int64) { - if p == nil { - return - } - if !p.IsSetApplicationID() { - return SearchCustomEvalTargetRequest_ApplicationID_DEFAULT - } - return *p.ApplicationID +func (p *ListSourceEvalTargetVersionsRequest) InitDefault() { } -var SearchCustomEvalTargetRequest_CustomRPCServer_DEFAULT *eval_target.CustomRPCServer - -func (p *SearchCustomEvalTargetRequest) GetCustomRPCServer() (v *eval_target.CustomRPCServer) { - if p == nil { - return - } - if !p.IsSetCustomRPCServer() { - return SearchCustomEvalTargetRequest_CustomRPCServer_DEFAULT +func (p *ListSourceEvalTargetVersionsRequest) GetWorkspaceID() (v int64) { + if p != nil { + return p.WorkspaceID } - return p.CustomRPCServer + return } -var SearchCustomEvalTargetRequest_Region_DEFAULT eval_target.Region - -func (p *SearchCustomEvalTargetRequest) GetRegion() (v eval_target.Region) { - if p == nil { - return - } - if !p.IsSetRegion() { - return SearchCustomEvalTargetRequest_Region_DEFAULT +func (p *ListSourceEvalTargetVersionsRequest) GetSourceTargetID() (v string) { + if p != nil { + return p.SourceTargetID } - return *p.Region + return } -var SearchCustomEvalTargetRequest_Env_DEFAULT string +var ListSourceEvalTargetVersionsRequest_TargetType_DEFAULT eval_target.EvalTargetType -func (p *SearchCustomEvalTargetRequest) GetEnv() (v string) { +func (p *ListSourceEvalTargetVersionsRequest) GetTargetType() (v eval_target.EvalTargetType) { if p == nil { return } - if !p.IsSetEnv() { - return SearchCustomEvalTargetRequest_Env_DEFAULT + if !p.IsSetTargetType() { + return ListSourceEvalTargetVersionsRequest_TargetType_DEFAULT } - return *p.Env + return *p.TargetType } -var SearchCustomEvalTargetRequest_PageSize_DEFAULT int32 +var ListSourceEvalTargetVersionsRequest_PageSize_DEFAULT int32 -func (p *SearchCustomEvalTargetRequest) GetPageSize() (v int32) { +func (p *ListSourceEvalTargetVersionsRequest) GetPageSize() (v int32) { if p == nil { return } if !p.IsSetPageSize() { - return SearchCustomEvalTargetRequest_PageSize_DEFAULT + return ListSourceEvalTargetVersionsRequest_PageSize_DEFAULT } return *p.PageSize } -var SearchCustomEvalTargetRequest_PageToken_DEFAULT string +var ListSourceEvalTargetVersionsRequest_PageToken_DEFAULT string -func (p *SearchCustomEvalTargetRequest) GetPageToken() (v string) { +func (p *ListSourceEvalTargetVersionsRequest) GetPageToken() (v string) { if p == nil { return } if !p.IsSetPageToken() { - return SearchCustomEvalTargetRequest_PageToken_DEFAULT + return ListSourceEvalTargetVersionsRequest_PageToken_DEFAULT } return *p.PageToken } -var SearchCustomEvalTargetRequest_Base_DEFAULT *base.Base +var ListSourceEvalTargetVersionsRequest_Base_DEFAULT *base.Base -func (p *SearchCustomEvalTargetRequest) GetBase() (v *base.Base) { +func (p *ListSourceEvalTargetVersionsRequest) GetBase() (v *base.Base) { if p == nil { return } if !p.IsSetBase() { - return SearchCustomEvalTargetRequest_Base_DEFAULT + return ListSourceEvalTargetVersionsRequest_Base_DEFAULT } return p.Base } -func (p *SearchCustomEvalTargetRequest) SetWorkspaceID(val *int64) { +func (p *ListSourceEvalTargetVersionsRequest) SetWorkspaceID(val int64) { p.WorkspaceID = val } -func (p *SearchCustomEvalTargetRequest) SetKeyword(val *string) { - p.Keyword = val -} -func (p *SearchCustomEvalTargetRequest) SetApplicationID(val *int64) { - p.ApplicationID = val -} -func (p *SearchCustomEvalTargetRequest) SetCustomRPCServer(val *eval_target.CustomRPCServer) { - p.CustomRPCServer = val -} -func (p *SearchCustomEvalTargetRequest) SetRegion(val *eval_target.Region) { - p.Region = val +func (p *ListSourceEvalTargetVersionsRequest) SetSourceTargetID(val string) { + p.SourceTargetID = val } -func (p *SearchCustomEvalTargetRequest) SetEnv(val *string) { - p.Env = val +func (p *ListSourceEvalTargetVersionsRequest) SetTargetType(val *eval_target.EvalTargetType) { + p.TargetType = val } -func (p *SearchCustomEvalTargetRequest) SetPageSize(val *int32) { +func (p *ListSourceEvalTargetVersionsRequest) SetPageSize(val *int32) { p.PageSize = val } -func (p *SearchCustomEvalTargetRequest) SetPageToken(val *string) { +func (p *ListSourceEvalTargetVersionsRequest) SetPageToken(val *string) { p.PageToken = val } -func (p *SearchCustomEvalTargetRequest) SetBase(val *base.Base) { +func (p *ListSourceEvalTargetVersionsRequest) SetBase(val *base.Base) { p.Base = val } -var fieldIDToName_SearchCustomEvalTargetRequest = map[int16]string{ +var fieldIDToName_ListSourceEvalTargetVersionsRequest = map[int16]string{ 1: "workspace_id", - 2: "keyword", - 3: "application_id", - 4: "custom_rpc_server", - 5: "region", - 6: "env", + 2: "source_target_id", + 3: "target_type", 100: "page_size", 101: "page_token", 255: "Base", } -func (p *SearchCustomEvalTargetRequest) IsSetWorkspaceID() bool { - return p.WorkspaceID != nil -} - -func (p *SearchCustomEvalTargetRequest) IsSetKeyword() bool { - return p.Keyword != nil -} - -func (p *SearchCustomEvalTargetRequest) IsSetApplicationID() bool { - return p.ApplicationID != nil -} - -func (p *SearchCustomEvalTargetRequest) IsSetCustomRPCServer() bool { - return p.CustomRPCServer != nil -} - -func (p *SearchCustomEvalTargetRequest) IsSetRegion() bool { - return p.Region != nil -} - -func (p *SearchCustomEvalTargetRequest) IsSetEnv() bool { - return p.Env != nil +func (p *ListSourceEvalTargetVersionsRequest) IsSetTargetType() bool { + return p.TargetType != nil } -func (p *SearchCustomEvalTargetRequest) IsSetPageSize() bool { +func (p *ListSourceEvalTargetVersionsRequest) IsSetPageSize() bool { return p.PageSize != nil } -func (p *SearchCustomEvalTargetRequest) IsSetPageToken() bool { +func (p *ListSourceEvalTargetVersionsRequest) IsSetPageToken() bool { return p.PageToken != nil } -func (p *SearchCustomEvalTargetRequest) IsSetBase() bool { +func (p *ListSourceEvalTargetVersionsRequest) IsSetBase() bool { return p.Base != nil } -func (p *SearchCustomEvalTargetRequest) Read(iprot thrift.TProtocol) (err error) { +func (p *ListSourceEvalTargetVersionsRequest) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 + var issetWorkspaceID bool = false + var issetSourceTargetID bool = false if _, err = iprot.ReadStructBegin(); err != nil { goto ReadStructBeginError @@ -9924,6 +9666,7 @@ func (p *SearchCustomEvalTargetRequest) Read(iprot thrift.TProtocol) (err error) if err = p.ReadField1(iprot); err != nil { goto ReadFieldError } + issetWorkspaceID = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } @@ -9932,41 +9675,18 @@ func (p *SearchCustomEvalTargetRequest) Read(iprot thrift.TProtocol) (err error) if err = p.ReadField2(iprot); err != nil { goto ReadFieldError } + issetSourceTargetID = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } case 3: - if fieldTypeId == thrift.I64 { + if fieldTypeId == thrift.I32 { if err = p.ReadField3(iprot); err != nil { goto ReadFieldError } } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } - case 4: - if fieldTypeId == thrift.STRUCT { - if err = p.ReadField4(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 5: - if fieldTypeId == thrift.STRING { - if err = p.ReadField5(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 6: - if fieldTypeId == thrift.STRING { - if err = p.ReadField6(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } case 100: if fieldTypeId == thrift.I32 { if err = p.ReadField100(iprot); err != nil { @@ -10004,13 +9724,22 @@ func (p *SearchCustomEvalTargetRequest) Read(iprot thrift.TProtocol) (err error) goto ReadStructEndError } + if !issetWorkspaceID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetSourceTargetID { + fieldId = 2 + goto RequiredFieldNotSetError + } return nil ReadStructBeginError: return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_SearchCustomEvalTargetRequest[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ListSourceEvalTargetVersionsRequest[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -10018,72 +9747,45 @@ ReadFieldEndError: return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_ListSourceEvalTargetVersionsRequest[fieldId])) } -func (p *SearchCustomEvalTargetRequest) ReadField1(iprot thrift.TProtocol) error { +func (p *ListSourceEvalTargetVersionsRequest) ReadField1(iprot thrift.TProtocol) error { - var _field *int64 + var _field int64 if v, err := iprot.ReadI64(); err != nil { return err } else { - _field = &v + _field = v } p.WorkspaceID = _field return nil } -func (p *SearchCustomEvalTargetRequest) ReadField2(iprot thrift.TProtocol) error { +func (p *ListSourceEvalTargetVersionsRequest) ReadField2(iprot thrift.TProtocol) error { - var _field *string + var _field string if v, err := iprot.ReadString(); err != nil { return err } else { - _field = &v + _field = v } - p.Keyword = _field + p.SourceTargetID = _field return nil } -func (p *SearchCustomEvalTargetRequest) ReadField3(iprot thrift.TProtocol) error { +func (p *ListSourceEvalTargetVersionsRequest) ReadField3(iprot thrift.TProtocol) error { - var _field *int64 - if v, err := iprot.ReadI64(); err != nil { + var _field *eval_target.EvalTargetType + if v, err := iprot.ReadI32(); err != nil { return err } else { - _field = &v + tmp := eval_target.EvalTargetType(v) + _field = &tmp } - p.ApplicationID = _field + p.TargetType = _field return nil } -func (p *SearchCustomEvalTargetRequest) ReadField4(iprot thrift.TProtocol) error { - _field := eval_target.NewCustomRPCServer() - if err := _field.Read(iprot); err != nil { - return err - } - p.CustomRPCServer = _field - return nil -} -func (p *SearchCustomEvalTargetRequest) ReadField5(iprot thrift.TProtocol) error { - - var _field *eval_target.Region - if v, err := iprot.ReadString(); err != nil { - return err - } else { - _field = &v - } - p.Region = _field - return nil -} -func (p *SearchCustomEvalTargetRequest) ReadField6(iprot thrift.TProtocol) error { - - var _field *string - if v, err := iprot.ReadString(); err != nil { - return err - } else { - _field = &v - } - p.Env = _field - return nil -} -func (p *SearchCustomEvalTargetRequest) ReadField100(iprot thrift.TProtocol) error { +func (p *ListSourceEvalTargetVersionsRequest) ReadField100(iprot thrift.TProtocol) error { var _field *int32 if v, err := iprot.ReadI32(); err != nil { @@ -10094,7 +9796,7 @@ func (p *SearchCustomEvalTargetRequest) ReadField100(iprot thrift.TProtocol) err p.PageSize = _field return nil } -func (p *SearchCustomEvalTargetRequest) ReadField101(iprot thrift.TProtocol) error { +func (p *ListSourceEvalTargetVersionsRequest) ReadField101(iprot thrift.TProtocol) error { var _field *string if v, err := iprot.ReadString(); err != nil { @@ -10105,7 +9807,7 @@ func (p *SearchCustomEvalTargetRequest) ReadField101(iprot thrift.TProtocol) err p.PageToken = _field return nil } -func (p *SearchCustomEvalTargetRequest) ReadField255(iprot thrift.TProtocol) error { +func (p *ListSourceEvalTargetVersionsRequest) ReadField255(iprot thrift.TProtocol) error { _field := base.NewBase() if err := _field.Read(iprot); err != nil { return err @@ -10114,9 +9816,9 @@ func (p *SearchCustomEvalTargetRequest) ReadField255(iprot thrift.TProtocol) err return nil } -func (p *SearchCustomEvalTargetRequest) Write(oprot thrift.TProtocol) (err error) { +func (p *ListSourceEvalTargetVersionsRequest) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("SearchCustomEvalTargetRequest"); err != nil { + if err = oprot.WriteStructBegin("ListSourceEvalTargetVersionsRequest"); err != nil { goto WriteStructBeginError } if p != nil { @@ -10132,18 +9834,6 @@ func (p *SearchCustomEvalTargetRequest) Write(oprot thrift.TProtocol) (err error fieldId = 3 goto WriteFieldError } - if err = p.writeField4(oprot); err != nil { - fieldId = 4 - goto WriteFieldError - } - if err = p.writeField5(oprot); err != nil { - fieldId = 5 - goto WriteFieldError - } - if err = p.writeField6(oprot); err != nil { - fieldId = 6 - goto WriteFieldError - } if err = p.writeField100(oprot); err != nil { fieldId = 100 goto WriteFieldError @@ -10174,17 +9864,15 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *SearchCustomEvalTargetRequest) writeField1(oprot thrift.TProtocol) (err error) { - if p.IsSetWorkspaceID() { - if err = oprot.WriteFieldBegin("workspace_id", thrift.I64, 1); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteI64(*p.WorkspaceID); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } +func (p *ListSourceEvalTargetVersionsRequest) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("workspace_id", thrift.I64, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.WorkspaceID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError } return nil WriteFieldBeginError: @@ -10192,17 +9880,15 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *SearchCustomEvalTargetRequest) writeField2(oprot thrift.TProtocol) (err error) { - if p.IsSetKeyword() { - if err = oprot.WriteFieldBegin("keyword", thrift.STRING, 2); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteString(*p.Keyword); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } +func (p *ListSourceEvalTargetVersionsRequest) writeField2(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("source_target_id", thrift.STRING, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(p.SourceTargetID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError } return nil WriteFieldBeginError: @@ -10210,12 +9896,12 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) } -func (p *SearchCustomEvalTargetRequest) writeField3(oprot thrift.TProtocol) (err error) { - if p.IsSetApplicationID() { - if err = oprot.WriteFieldBegin("application_id", thrift.I64, 3); err != nil { +func (p *ListSourceEvalTargetVersionsRequest) writeField3(oprot thrift.TProtocol) (err error) { + if p.IsSetTargetType() { + if err = oprot.WriteFieldBegin("target_type", thrift.I32, 3); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteI64(*p.ApplicationID); err != nil { + if err := oprot.WriteI32(int32(*p.TargetType)); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -10228,61 +9914,7 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) } -func (p *SearchCustomEvalTargetRequest) writeField4(oprot thrift.TProtocol) (err error) { - if p.IsSetCustomRPCServer() { - if err = oprot.WriteFieldBegin("custom_rpc_server", thrift.STRUCT, 4); err != nil { - goto WriteFieldBeginError - } - if err := p.CustomRPCServer.Write(oprot); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 4 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) -} -func (p *SearchCustomEvalTargetRequest) writeField5(oprot thrift.TProtocol) (err error) { - if p.IsSetRegion() { - if err = oprot.WriteFieldBegin("region", thrift.STRING, 5); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteString(*p.Region); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 5 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 5 end error: ", p), err) -} -func (p *SearchCustomEvalTargetRequest) writeField6(oprot thrift.TProtocol) (err error) { - if p.IsSetEnv() { - if err = oprot.WriteFieldBegin("env", thrift.STRING, 6); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteString(*p.Env); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 6 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 6 end error: ", p), err) -} -func (p *SearchCustomEvalTargetRequest) writeField100(oprot thrift.TProtocol) (err error) { +func (p *ListSourceEvalTargetVersionsRequest) writeField100(oprot thrift.TProtocol) (err error) { if p.IsSetPageSize() { if err = oprot.WriteFieldBegin("page_size", thrift.I32, 100); err != nil { goto WriteFieldBeginError @@ -10300,7 +9932,7 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 100 end error: ", p), err) } -func (p *SearchCustomEvalTargetRequest) writeField101(oprot thrift.TProtocol) (err error) { +func (p *ListSourceEvalTargetVersionsRequest) writeField101(oprot thrift.TProtocol) (err error) { if p.IsSetPageToken() { if err = oprot.WriteFieldBegin("page_token", thrift.STRING, 101); err != nil { goto WriteFieldBeginError @@ -10318,7 +9950,7 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 101 end error: ", p), err) } -func (p *SearchCustomEvalTargetRequest) writeField255(oprot thrift.TProtocol) (err error) { +func (p *ListSourceEvalTargetVersionsRequest) writeField255(oprot thrift.TProtocol) (err error) { if p.IsSetBase() { if err = oprot.WriteFieldBegin("Base", thrift.STRUCT, 255); err != nil { goto WriteFieldBeginError @@ -10337,15 +9969,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) } -func (p *SearchCustomEvalTargetRequest) String() string { +func (p *ListSourceEvalTargetVersionsRequest) String() string { if p == nil { return "" } - return fmt.Sprintf("SearchCustomEvalTargetRequest(%+v)", *p) + return fmt.Sprintf("ListSourceEvalTargetVersionsRequest(%+v)", *p) } -func (p *SearchCustomEvalTargetRequest) DeepEqual(ano *SearchCustomEvalTargetRequest) bool { +func (p *ListSourceEvalTargetVersionsRequest) DeepEqual(ano *ListSourceEvalTargetVersionsRequest) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -10354,19 +9986,10 @@ func (p *SearchCustomEvalTargetRequest) DeepEqual(ano *SearchCustomEvalTargetReq if !p.Field1DeepEqual(ano.WorkspaceID) { return false } - if !p.Field2DeepEqual(ano.Keyword) { - return false - } - if !p.Field3DeepEqual(ano.ApplicationID) { - return false - } - if !p.Field4DeepEqual(ano.CustomRPCServer) { - return false - } - if !p.Field5DeepEqual(ano.Region) { + if !p.Field2DeepEqual(ano.SourceTargetID) { return false } - if !p.Field6DeepEqual(ano.Env) { + if !p.Field3DeepEqual(ano.TargetType) { return false } if !p.Field100DeepEqual(ano.PageSize) { @@ -10381,74 +10004,33 @@ func (p *SearchCustomEvalTargetRequest) DeepEqual(ano *SearchCustomEvalTargetReq return true } -func (p *SearchCustomEvalTargetRequest) Field1DeepEqual(src *int64) bool { - - if p.WorkspaceID == src { - return true - } else if p.WorkspaceID == nil || src == nil { - return false - } - if *p.WorkspaceID != *src { - return false - } - return true -} -func (p *SearchCustomEvalTargetRequest) Field2DeepEqual(src *string) bool { - - if p.Keyword == src { - return true - } else if p.Keyword == nil || src == nil { - return false - } - if strings.Compare(*p.Keyword, *src) != 0 { - return false - } - return true -} -func (p *SearchCustomEvalTargetRequest) Field3DeepEqual(src *int64) bool { - - if p.ApplicationID == src { - return true - } else if p.ApplicationID == nil || src == nil { - return false - } - if *p.ApplicationID != *src { - return false - } - return true -} -func (p *SearchCustomEvalTargetRequest) Field4DeepEqual(src *eval_target.CustomRPCServer) bool { +func (p *ListSourceEvalTargetVersionsRequest) Field1DeepEqual(src int64) bool { - if !p.CustomRPCServer.DeepEqual(src) { + if p.WorkspaceID != src { return false } return true } -func (p *SearchCustomEvalTargetRequest) Field5DeepEqual(src *eval_target.Region) bool { +func (p *ListSourceEvalTargetVersionsRequest) Field2DeepEqual(src string) bool { - if p.Region == src { - return true - } else if p.Region == nil || src == nil { - return false - } - if strings.Compare(*p.Region, *src) != 0 { + if strings.Compare(p.SourceTargetID, src) != 0 { return false } return true } -func (p *SearchCustomEvalTargetRequest) Field6DeepEqual(src *string) bool { +func (p *ListSourceEvalTargetVersionsRequest) Field3DeepEqual(src *eval_target.EvalTargetType) bool { - if p.Env == src { + if p.TargetType == src { return true - } else if p.Env == nil || src == nil { + } else if p.TargetType == nil || src == nil { return false } - if strings.Compare(*p.Env, *src) != 0 { + if *p.TargetType != *src { return false } return true } -func (p *SearchCustomEvalTargetRequest) Field100DeepEqual(src *int32) bool { +func (p *ListSourceEvalTargetVersionsRequest) Field100DeepEqual(src *int32) bool { if p.PageSize == src { return true @@ -10460,7 +10042,7 @@ func (p *SearchCustomEvalTargetRequest) Field100DeepEqual(src *int32) bool { } return true } -func (p *SearchCustomEvalTargetRequest) Field101DeepEqual(src *string) bool { +func (p *ListSourceEvalTargetVersionsRequest) Field101DeepEqual(src *string) bool { if p.PageToken == src { return true @@ -10472,7 +10054,7 @@ func (p *SearchCustomEvalTargetRequest) Field101DeepEqual(src *string) bool { } return true } -func (p *SearchCustomEvalTargetRequest) Field255DeepEqual(src *base.Base) bool { +func (p *ListSourceEvalTargetVersionsRequest) Field255DeepEqual(src *base.Base) bool { if !p.Base.DeepEqual(src) { return false @@ -10480,95 +10062,104 @@ func (p *SearchCustomEvalTargetRequest) Field255DeepEqual(src *base.Base) bool { return true } -type SearchCustomEvalTargetResponse struct { - CustomEvalTargets []*eval_target.CustomEvalTarget `thrift:"custom_eval_targets,1" frugal:"1,default,list" form:"custom_eval_targets" json:"custom_eval_targets" query:"custom_eval_targets"` - NextPageToken *string `thrift:"next_page_token,100,optional" frugal:"100,optional,string" form:"next_page_token" json:"next_page_token,omitempty" query:"next_page_token"` - HasMore *bool `thrift:"has_more,101,optional" frugal:"101,optional,bool" form:"has_more" json:"has_more,omitempty" query:"has_more"` - BaseResp *base.BaseResp `thrift:"BaseResp,255" frugal:"255,default,base.BaseResp" form:"-" json:"-" query:"-"` +type ListSourceEvalTargetVersionsResponse struct { + Versions []*eval_target.EvalTargetVersion `thrift:"versions,1,optional" frugal:"1,optional,list" form:"versions" json:"versions,omitempty" query:"versions"` + NextPageToken *string `thrift:"next_page_token,100,optional" frugal:"100,optional,string" form:"next_page_token" json:"next_page_token,omitempty" query:"next_page_token"` + HasMore *bool `thrift:"has_more,101,optional" frugal:"101,optional,bool" form:"has_more" json:"has_more,omitempty" query:"has_more"` + BaseResp *base.BaseResp `thrift:"BaseResp,255" frugal:"255,default,base.BaseResp" form:"BaseResp" json:"BaseResp" query:"BaseResp"` } -func NewSearchCustomEvalTargetResponse() *SearchCustomEvalTargetResponse { - return &SearchCustomEvalTargetResponse{} +func NewListSourceEvalTargetVersionsResponse() *ListSourceEvalTargetVersionsResponse { + return &ListSourceEvalTargetVersionsResponse{} } -func (p *SearchCustomEvalTargetResponse) InitDefault() { +func (p *ListSourceEvalTargetVersionsResponse) InitDefault() { } -func (p *SearchCustomEvalTargetResponse) GetCustomEvalTargets() (v []*eval_target.CustomEvalTarget) { - if p != nil { - return p.CustomEvalTargets +var ListSourceEvalTargetVersionsResponse_Versions_DEFAULT []*eval_target.EvalTargetVersion + +func (p *ListSourceEvalTargetVersionsResponse) GetVersions() (v []*eval_target.EvalTargetVersion) { + if p == nil { + return } - return + if !p.IsSetVersions() { + return ListSourceEvalTargetVersionsResponse_Versions_DEFAULT + } + return p.Versions } -var SearchCustomEvalTargetResponse_NextPageToken_DEFAULT string +var ListSourceEvalTargetVersionsResponse_NextPageToken_DEFAULT string -func (p *SearchCustomEvalTargetResponse) GetNextPageToken() (v string) { +func (p *ListSourceEvalTargetVersionsResponse) GetNextPageToken() (v string) { if p == nil { return } if !p.IsSetNextPageToken() { - return SearchCustomEvalTargetResponse_NextPageToken_DEFAULT + return ListSourceEvalTargetVersionsResponse_NextPageToken_DEFAULT } return *p.NextPageToken } -var SearchCustomEvalTargetResponse_HasMore_DEFAULT bool +var ListSourceEvalTargetVersionsResponse_HasMore_DEFAULT bool -func (p *SearchCustomEvalTargetResponse) GetHasMore() (v bool) { +func (p *ListSourceEvalTargetVersionsResponse) GetHasMore() (v bool) { if p == nil { return } if !p.IsSetHasMore() { - return SearchCustomEvalTargetResponse_HasMore_DEFAULT + return ListSourceEvalTargetVersionsResponse_HasMore_DEFAULT } return *p.HasMore } -var SearchCustomEvalTargetResponse_BaseResp_DEFAULT *base.BaseResp +var ListSourceEvalTargetVersionsResponse_BaseResp_DEFAULT *base.BaseResp -func (p *SearchCustomEvalTargetResponse) GetBaseResp() (v *base.BaseResp) { +func (p *ListSourceEvalTargetVersionsResponse) GetBaseResp() (v *base.BaseResp) { if p == nil { return } if !p.IsSetBaseResp() { - return SearchCustomEvalTargetResponse_BaseResp_DEFAULT + return ListSourceEvalTargetVersionsResponse_BaseResp_DEFAULT } return p.BaseResp } -func (p *SearchCustomEvalTargetResponse) SetCustomEvalTargets(val []*eval_target.CustomEvalTarget) { - p.CustomEvalTargets = val +func (p *ListSourceEvalTargetVersionsResponse) SetVersions(val []*eval_target.EvalTargetVersion) { + p.Versions = val } -func (p *SearchCustomEvalTargetResponse) SetNextPageToken(val *string) { +func (p *ListSourceEvalTargetVersionsResponse) SetNextPageToken(val *string) { p.NextPageToken = val } -func (p *SearchCustomEvalTargetResponse) SetHasMore(val *bool) { +func (p *ListSourceEvalTargetVersionsResponse) SetHasMore(val *bool) { p.HasMore = val } -func (p *SearchCustomEvalTargetResponse) SetBaseResp(val *base.BaseResp) { +func (p *ListSourceEvalTargetVersionsResponse) SetBaseResp(val *base.BaseResp) { p.BaseResp = val } -var fieldIDToName_SearchCustomEvalTargetResponse = map[int16]string{ - 1: "custom_eval_targets", +var fieldIDToName_ListSourceEvalTargetVersionsResponse = map[int16]string{ + 1: "versions", 100: "next_page_token", 101: "has_more", 255: "BaseResp", } -func (p *SearchCustomEvalTargetResponse) IsSetNextPageToken() bool { +func (p *ListSourceEvalTargetVersionsResponse) IsSetVersions() bool { + return p.Versions != nil +} + +func (p *ListSourceEvalTargetVersionsResponse) IsSetNextPageToken() bool { return p.NextPageToken != nil } -func (p *SearchCustomEvalTargetResponse) IsSetHasMore() bool { +func (p *ListSourceEvalTargetVersionsResponse) IsSetHasMore() bool { return p.HasMore != nil } -func (p *SearchCustomEvalTargetResponse) IsSetBaseResp() bool { +func (p *ListSourceEvalTargetVersionsResponse) IsSetBaseResp() bool { return p.BaseResp != nil } -func (p *SearchCustomEvalTargetResponse) Read(iprot thrift.TProtocol) (err error) { +func (p *ListSourceEvalTargetVersionsResponse) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -10637,7 +10228,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_SearchCustomEvalTargetResponse[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_ListSourceEvalTargetVersionsResponse[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -10647,13 +10238,13 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *SearchCustomEvalTargetResponse) ReadField1(iprot thrift.TProtocol) error { +func (p *ListSourceEvalTargetVersionsResponse) ReadField1(iprot thrift.TProtocol) error { _, size, err := iprot.ReadListBegin() if err != nil { return err } - _field := make([]*eval_target.CustomEvalTarget, 0, size) - values := make([]eval_target.CustomEvalTarget, size) + _field := make([]*eval_target.EvalTargetVersion, 0, size) + values := make([]eval_target.EvalTargetVersion, size) for i := 0; i < size; i++ { _elem := &values[i] _elem.InitDefault() @@ -10667,10 +10258,10 @@ func (p *SearchCustomEvalTargetResponse) ReadField1(iprot thrift.TProtocol) erro if err := iprot.ReadListEnd(); err != nil { return err } - p.CustomEvalTargets = _field + p.Versions = _field return nil } -func (p *SearchCustomEvalTargetResponse) ReadField100(iprot thrift.TProtocol) error { +func (p *ListSourceEvalTargetVersionsResponse) ReadField100(iprot thrift.TProtocol) error { var _field *string if v, err := iprot.ReadString(); err != nil { @@ -10681,7 +10272,7 @@ func (p *SearchCustomEvalTargetResponse) ReadField100(iprot thrift.TProtocol) er p.NextPageToken = _field return nil } -func (p *SearchCustomEvalTargetResponse) ReadField101(iprot thrift.TProtocol) error { +func (p *ListSourceEvalTargetVersionsResponse) ReadField101(iprot thrift.TProtocol) error { var _field *bool if v, err := iprot.ReadBool(); err != nil { @@ -10692,7 +10283,7 @@ func (p *SearchCustomEvalTargetResponse) ReadField101(iprot thrift.TProtocol) er p.HasMore = _field return nil } -func (p *SearchCustomEvalTargetResponse) ReadField255(iprot thrift.TProtocol) error { +func (p *ListSourceEvalTargetVersionsResponse) ReadField255(iprot thrift.TProtocol) error { _field := base.NewBaseResp() if err := _field.Read(iprot); err != nil { return err @@ -10701,9 +10292,9 @@ func (p *SearchCustomEvalTargetResponse) ReadField255(iprot thrift.TProtocol) er return nil } -func (p *SearchCustomEvalTargetResponse) Write(oprot thrift.TProtocol) (err error) { +func (p *ListSourceEvalTargetVersionsResponse) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("SearchCustomEvalTargetResponse"); err != nil { + if err = oprot.WriteStructBegin("ListSourceEvalTargetVersionsResponse"); err != nil { goto WriteStructBeginError } if p != nil { @@ -10741,23 +10332,25 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *SearchCustomEvalTargetResponse) writeField1(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("custom_eval_targets", thrift.LIST, 1); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteListBegin(thrift.STRUCT, len(p.CustomEvalTargets)); err != nil { - return err - } - for _, v := range p.CustomEvalTargets { - if err := v.Write(oprot); err != nil { +func (p *ListSourceEvalTargetVersionsResponse) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetVersions() { + if err = oprot.WriteFieldBegin("versions", thrift.LIST, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteListBegin(thrift.STRUCT, len(p.Versions)); err != nil { return err } - } - if err := oprot.WriteListEnd(); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError + for _, v := range p.Versions { + if err := v.Write(oprot); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } } return nil WriteFieldBeginError: @@ -10765,7 +10358,7 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *SearchCustomEvalTargetResponse) writeField100(oprot thrift.TProtocol) (err error) { +func (p *ListSourceEvalTargetVersionsResponse) writeField100(oprot thrift.TProtocol) (err error) { if p.IsSetNextPageToken() { if err = oprot.WriteFieldBegin("next_page_token", thrift.STRING, 100); err != nil { goto WriteFieldBeginError @@ -10783,7 +10376,7 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 100 end error: ", p), err) } -func (p *SearchCustomEvalTargetResponse) writeField101(oprot thrift.TProtocol) (err error) { +func (p *ListSourceEvalTargetVersionsResponse) writeField101(oprot thrift.TProtocol) (err error) { if p.IsSetHasMore() { if err = oprot.WriteFieldBegin("has_more", thrift.BOOL, 101); err != nil { goto WriteFieldBeginError @@ -10801,7 +10394,7 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 101 end error: ", p), err) } -func (p *SearchCustomEvalTargetResponse) writeField255(oprot thrift.TProtocol) (err error) { +func (p *ListSourceEvalTargetVersionsResponse) writeField255(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("BaseResp", thrift.STRUCT, 255); err != nil { goto WriteFieldBeginError } @@ -10818,21 +10411,21 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) } -func (p *SearchCustomEvalTargetResponse) String() string { +func (p *ListSourceEvalTargetVersionsResponse) String() string { if p == nil { return "" } - return fmt.Sprintf("SearchCustomEvalTargetResponse(%+v)", *p) + return fmt.Sprintf("ListSourceEvalTargetVersionsResponse(%+v)", *p) } -func (p *SearchCustomEvalTargetResponse) DeepEqual(ano *SearchCustomEvalTargetResponse) bool { +func (p *ListSourceEvalTargetVersionsResponse) DeepEqual(ano *ListSourceEvalTargetVersionsResponse) bool { if p == ano { return true } else if p == nil || ano == nil { return false } - if !p.Field1DeepEqual(ano.CustomEvalTargets) { + if !p.Field1DeepEqual(ano.Versions) { return false } if !p.Field100DeepEqual(ano.NextPageToken) { @@ -10847,12 +10440,12 @@ func (p *SearchCustomEvalTargetResponse) DeepEqual(ano *SearchCustomEvalTargetRe return true } -func (p *SearchCustomEvalTargetResponse) Field1DeepEqual(src []*eval_target.CustomEvalTarget) bool { +func (p *ListSourceEvalTargetVersionsResponse) Field1DeepEqual(src []*eval_target.EvalTargetVersion) bool { - if len(p.CustomEvalTargets) != len(src) { + if len(p.Versions) != len(src) { return false } - for i, v := range p.CustomEvalTargets { + for i, v := range p.Versions { _src := src[i] if !v.DeepEqual(_src) { return false @@ -10860,7 +10453,7 @@ func (p *SearchCustomEvalTargetResponse) Field1DeepEqual(src []*eval_target.Cust } return true } -func (p *SearchCustomEvalTargetResponse) Field100DeepEqual(src *string) bool { +func (p *ListSourceEvalTargetVersionsResponse) Field100DeepEqual(src *string) bool { if p.NextPageToken == src { return true @@ -10872,7 +10465,7 @@ func (p *SearchCustomEvalTargetResponse) Field100DeepEqual(src *string) bool { } return true } -func (p *SearchCustomEvalTargetResponse) Field101DeepEqual(src *bool) bool { +func (p *ListSourceEvalTargetVersionsResponse) Field101DeepEqual(src *bool) bool { if p.HasMore == src { return true @@ -10884,7 +10477,7 @@ func (p *SearchCustomEvalTargetResponse) Field101DeepEqual(src *bool) bool { } return true } -func (p *SearchCustomEvalTargetResponse) Field255DeepEqual(src *base.BaseResp) bool { +func (p *ListSourceEvalTargetVersionsResponse) Field255DeepEqual(src *base.BaseResp) bool { if !p.BaseResp.DeepEqual(src) { return false @@ -10892,172 +10485,215 @@ func (p *SearchCustomEvalTargetResponse) Field255DeepEqual(src *base.BaseResp) b return true } -type DebugEvalTargetRequest struct { +type SearchCustomEvalTargetRequest struct { + // 空间ID WorkspaceID *int64 `thrift:"workspace_id,1,optional" frugal:"1,optional,i64" json:"workspace_id" form:"workspace_id" query:"workspace_id"` - // 类型 - EvalTargetType *eval_target.EvalTargetType `thrift:"eval_target_type,2,optional" frugal:"2,optional,EvalTargetType" form:"eval_target_type" json:"eval_target_type,omitempty" query:"eval_target_type"` - // 执行参数:如果type=6,则传spi request json序列化结果 - Param *string `thrift:"param,10,optional" frugal:"10,optional,string" form:"param" json:"param,omitempty" query:"param"` - // 动态参数 - TargetRuntimeParam *common.RuntimeParam `thrift:"target_runtime_param,11,optional" frugal:"11,optional,common.RuntimeParam" form:"target_runtime_param" json:"target_runtime_param,omitempty" query:"target_runtime_param"` + // 透传spi接口 + Keyword *string `thrift:"keyword,2,optional" frugal:"2,optional,string" form:"keyword" json:"keyword,omitempty" query:"keyword"` + // 应用ID,非必填,创建实验时传应用ID,会根据应用ID从应用模块获取自定义服务详情 + ApplicationID *int64 `thrift:"application_id,3,optional" frugal:"3,optional,i64" json:"application_id" form:"application_id" query:"application_id"` + // 自定义服务详情,非必填,应用注册调试时传 + CustomRPCServer *eval_target.CustomRPCServer `thrift:"custom_rpc_server,4,optional" frugal:"4,optional,eval_target.CustomRPCServer" form:"custom_rpc_server" json:"custom_rpc_server,omitempty" query:"custom_rpc_server"` + // 必填 + Region *eval_target.Region `thrift:"region,5,optional" frugal:"5,optional,string" form:"region" json:"region,omitempty" query:"region"` // 环境 - Env *string `thrift:"env,12,optional" frugal:"12,optional,string" form:"env" json:"env,omitempty" query:"env"` - // 如果type=6,需要前端传入自定义服务相关信息 - CustomRPCServer *eval_target.CustomRPCServer `thrift:"custom_rpc_server,50,optional" frugal:"50,optional,eval_target.CustomRPCServer" form:"custom_rpc_server" json:"custom_rpc_server,omitempty" query:"custom_rpc_server"` - Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"Base" json:"Base,omitempty" query:"Base"` + Env *string `thrift:"env,6,optional" frugal:"6,optional,string" form:"env" json:"env,omitempty" query:"env"` + PageSize *int32 `thrift:"page_size,100,optional" frugal:"100,optional,i32" form:"page_size" json:"page_size,omitempty" query:"page_size"` + PageToken *string `thrift:"page_token,101,optional" frugal:"101,optional,string" form:"page_token" json:"page_token,omitempty" query:"page_token"` + Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"Base" json:"Base,omitempty" query:"Base"` } -func NewDebugEvalTargetRequest() *DebugEvalTargetRequest { - return &DebugEvalTargetRequest{} +func NewSearchCustomEvalTargetRequest() *SearchCustomEvalTargetRequest { + return &SearchCustomEvalTargetRequest{} } -func (p *DebugEvalTargetRequest) InitDefault() { +func (p *SearchCustomEvalTargetRequest) InitDefault() { } -var DebugEvalTargetRequest_WorkspaceID_DEFAULT int64 +var SearchCustomEvalTargetRequest_WorkspaceID_DEFAULT int64 -func (p *DebugEvalTargetRequest) GetWorkspaceID() (v int64) { +func (p *SearchCustomEvalTargetRequest) GetWorkspaceID() (v int64) { if p == nil { return } if !p.IsSetWorkspaceID() { - return DebugEvalTargetRequest_WorkspaceID_DEFAULT + return SearchCustomEvalTargetRequest_WorkspaceID_DEFAULT } return *p.WorkspaceID } -var DebugEvalTargetRequest_EvalTargetType_DEFAULT eval_target.EvalTargetType +var SearchCustomEvalTargetRequest_Keyword_DEFAULT string -func (p *DebugEvalTargetRequest) GetEvalTargetType() (v eval_target.EvalTargetType) { +func (p *SearchCustomEvalTargetRequest) GetKeyword() (v string) { if p == nil { return } - if !p.IsSetEvalTargetType() { - return DebugEvalTargetRequest_EvalTargetType_DEFAULT + if !p.IsSetKeyword() { + return SearchCustomEvalTargetRequest_Keyword_DEFAULT } - return *p.EvalTargetType + return *p.Keyword } -var DebugEvalTargetRequest_Param_DEFAULT string +var SearchCustomEvalTargetRequest_ApplicationID_DEFAULT int64 -func (p *DebugEvalTargetRequest) GetParam() (v string) { +func (p *SearchCustomEvalTargetRequest) GetApplicationID() (v int64) { if p == nil { return } - if !p.IsSetParam() { - return DebugEvalTargetRequest_Param_DEFAULT + if !p.IsSetApplicationID() { + return SearchCustomEvalTargetRequest_ApplicationID_DEFAULT } - return *p.Param + return *p.ApplicationID } -var DebugEvalTargetRequest_TargetRuntimeParam_DEFAULT *common.RuntimeParam +var SearchCustomEvalTargetRequest_CustomRPCServer_DEFAULT *eval_target.CustomRPCServer -func (p *DebugEvalTargetRequest) GetTargetRuntimeParam() (v *common.RuntimeParam) { +func (p *SearchCustomEvalTargetRequest) GetCustomRPCServer() (v *eval_target.CustomRPCServer) { if p == nil { return } - if !p.IsSetTargetRuntimeParam() { - return DebugEvalTargetRequest_TargetRuntimeParam_DEFAULT + if !p.IsSetCustomRPCServer() { + return SearchCustomEvalTargetRequest_CustomRPCServer_DEFAULT } - return p.TargetRuntimeParam + return p.CustomRPCServer } -var DebugEvalTargetRequest_Env_DEFAULT string +var SearchCustomEvalTargetRequest_Region_DEFAULT eval_target.Region -func (p *DebugEvalTargetRequest) GetEnv() (v string) { +func (p *SearchCustomEvalTargetRequest) GetRegion() (v eval_target.Region) { + if p == nil { + return + } + if !p.IsSetRegion() { + return SearchCustomEvalTargetRequest_Region_DEFAULT + } + return *p.Region +} + +var SearchCustomEvalTargetRequest_Env_DEFAULT string + +func (p *SearchCustomEvalTargetRequest) GetEnv() (v string) { if p == nil { return } if !p.IsSetEnv() { - return DebugEvalTargetRequest_Env_DEFAULT + return SearchCustomEvalTargetRequest_Env_DEFAULT } return *p.Env } -var DebugEvalTargetRequest_CustomRPCServer_DEFAULT *eval_target.CustomRPCServer +var SearchCustomEvalTargetRequest_PageSize_DEFAULT int32 -func (p *DebugEvalTargetRequest) GetCustomRPCServer() (v *eval_target.CustomRPCServer) { +func (p *SearchCustomEvalTargetRequest) GetPageSize() (v int32) { if p == nil { return } - if !p.IsSetCustomRPCServer() { - return DebugEvalTargetRequest_CustomRPCServer_DEFAULT + if !p.IsSetPageSize() { + return SearchCustomEvalTargetRequest_PageSize_DEFAULT } - return p.CustomRPCServer + return *p.PageSize } -var DebugEvalTargetRequest_Base_DEFAULT *base.Base +var SearchCustomEvalTargetRequest_PageToken_DEFAULT string -func (p *DebugEvalTargetRequest) GetBase() (v *base.Base) { +func (p *SearchCustomEvalTargetRequest) GetPageToken() (v string) { + if p == nil { + return + } + if !p.IsSetPageToken() { + return SearchCustomEvalTargetRequest_PageToken_DEFAULT + } + return *p.PageToken +} + +var SearchCustomEvalTargetRequest_Base_DEFAULT *base.Base + +func (p *SearchCustomEvalTargetRequest) GetBase() (v *base.Base) { if p == nil { return } if !p.IsSetBase() { - return DebugEvalTargetRequest_Base_DEFAULT + return SearchCustomEvalTargetRequest_Base_DEFAULT } return p.Base } -func (p *DebugEvalTargetRequest) SetWorkspaceID(val *int64) { +func (p *SearchCustomEvalTargetRequest) SetWorkspaceID(val *int64) { p.WorkspaceID = val } -func (p *DebugEvalTargetRequest) SetEvalTargetType(val *eval_target.EvalTargetType) { - p.EvalTargetType = val -} -func (p *DebugEvalTargetRequest) SetParam(val *string) { - p.Param = val +func (p *SearchCustomEvalTargetRequest) SetKeyword(val *string) { + p.Keyword = val } -func (p *DebugEvalTargetRequest) SetTargetRuntimeParam(val *common.RuntimeParam) { - p.TargetRuntimeParam = val +func (p *SearchCustomEvalTargetRequest) SetApplicationID(val *int64) { + p.ApplicationID = val } -func (p *DebugEvalTargetRequest) SetEnv(val *string) { +func (p *SearchCustomEvalTargetRequest) SetCustomRPCServer(val *eval_target.CustomRPCServer) { + p.CustomRPCServer = val +} +func (p *SearchCustomEvalTargetRequest) SetRegion(val *eval_target.Region) { + p.Region = val +} +func (p *SearchCustomEvalTargetRequest) SetEnv(val *string) { p.Env = val } -func (p *DebugEvalTargetRequest) SetCustomRPCServer(val *eval_target.CustomRPCServer) { - p.CustomRPCServer = val +func (p *SearchCustomEvalTargetRequest) SetPageSize(val *int32) { + p.PageSize = val } -func (p *DebugEvalTargetRequest) SetBase(val *base.Base) { +func (p *SearchCustomEvalTargetRequest) SetPageToken(val *string) { + p.PageToken = val +} +func (p *SearchCustomEvalTargetRequest) SetBase(val *base.Base) { p.Base = val } -var fieldIDToName_DebugEvalTargetRequest = map[int16]string{ +var fieldIDToName_SearchCustomEvalTargetRequest = map[int16]string{ 1: "workspace_id", - 2: "eval_target_type", - 10: "param", - 11: "target_runtime_param", - 12: "env", - 50: "custom_rpc_server", + 2: "keyword", + 3: "application_id", + 4: "custom_rpc_server", + 5: "region", + 6: "env", + 100: "page_size", + 101: "page_token", 255: "Base", } -func (p *DebugEvalTargetRequest) IsSetWorkspaceID() bool { +func (p *SearchCustomEvalTargetRequest) IsSetWorkspaceID() bool { return p.WorkspaceID != nil } -func (p *DebugEvalTargetRequest) IsSetEvalTargetType() bool { - return p.EvalTargetType != nil +func (p *SearchCustomEvalTargetRequest) IsSetKeyword() bool { + return p.Keyword != nil } -func (p *DebugEvalTargetRequest) IsSetParam() bool { - return p.Param != nil +func (p *SearchCustomEvalTargetRequest) IsSetApplicationID() bool { + return p.ApplicationID != nil } -func (p *DebugEvalTargetRequest) IsSetTargetRuntimeParam() bool { - return p.TargetRuntimeParam != nil +func (p *SearchCustomEvalTargetRequest) IsSetCustomRPCServer() bool { + return p.CustomRPCServer != nil } -func (p *DebugEvalTargetRequest) IsSetEnv() bool { +func (p *SearchCustomEvalTargetRequest) IsSetRegion() bool { + return p.Region != nil +} + +func (p *SearchCustomEvalTargetRequest) IsSetEnv() bool { return p.Env != nil } -func (p *DebugEvalTargetRequest) IsSetCustomRPCServer() bool { - return p.CustomRPCServer != nil +func (p *SearchCustomEvalTargetRequest) IsSetPageSize() bool { + return p.PageSize != nil } -func (p *DebugEvalTargetRequest) IsSetBase() bool { +func (p *SearchCustomEvalTargetRequest) IsSetPageToken() bool { + return p.PageToken != nil +} + +func (p *SearchCustomEvalTargetRequest) IsSetBase() bool { return p.Base != nil } -func (p *DebugEvalTargetRequest) Read(iprot thrift.TProtocol) (err error) { +func (p *SearchCustomEvalTargetRequest) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -11084,40 +10720,56 @@ func (p *DebugEvalTargetRequest) Read(iprot thrift.TProtocol) (err error) { goto SkipFieldError } case 2: - if fieldTypeId == thrift.I32 { + if fieldTypeId == thrift.STRING { if err = p.ReadField2(iprot); err != nil { goto ReadFieldError } } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } - case 10: - if fieldTypeId == thrift.STRING { - if err = p.ReadField10(iprot); err != nil { + case 3: + if fieldTypeId == thrift.I64 { + if err = p.ReadField3(iprot); err != nil { goto ReadFieldError } } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } - case 11: + case 4: if fieldTypeId == thrift.STRUCT { - if err = p.ReadField11(iprot); err != nil { + if err = p.ReadField4(iprot); err != nil { goto ReadFieldError } } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } - case 12: + case 5: if fieldTypeId == thrift.STRING { - if err = p.ReadField12(iprot); err != nil { + if err = p.ReadField5(iprot); err != nil { goto ReadFieldError } } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } - case 50: - if fieldTypeId == thrift.STRUCT { - if err = p.ReadField50(iprot); err != nil { + case 6: + if fieldTypeId == thrift.STRING { + if err = p.ReadField6(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 100: + if fieldTypeId == thrift.I32 { + if err = p.ReadField100(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 101: + if fieldTypeId == thrift.STRING { + if err = p.ReadField101(iprot); err != nil { goto ReadFieldError } } else if err = iprot.Skip(fieldTypeId); err != nil { @@ -11150,7 +10802,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_DebugEvalTargetRequest[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_SearchCustomEvalTargetRequest[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -11160,7 +10812,7 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *DebugEvalTargetRequest) ReadField1(iprot thrift.TProtocol) error { +func (p *SearchCustomEvalTargetRequest) ReadField1(iprot thrift.TProtocol) error { var _field *int64 if v, err := iprot.ReadI64(); err != nil { @@ -11171,38 +10823,48 @@ func (p *DebugEvalTargetRequest) ReadField1(iprot thrift.TProtocol) error { p.WorkspaceID = _field return nil } -func (p *DebugEvalTargetRequest) ReadField2(iprot thrift.TProtocol) error { +func (p *SearchCustomEvalTargetRequest) ReadField2(iprot thrift.TProtocol) error { - var _field *eval_target.EvalTargetType - if v, err := iprot.ReadI32(); err != nil { + var _field *string + if v, err := iprot.ReadString(); err != nil { return err } else { - tmp := eval_target.EvalTargetType(v) - _field = &tmp + _field = &v } - p.EvalTargetType = _field + p.Keyword = _field return nil } -func (p *DebugEvalTargetRequest) ReadField10(iprot thrift.TProtocol) error { +func (p *SearchCustomEvalTargetRequest) ReadField3(iprot thrift.TProtocol) error { - var _field *string - if v, err := iprot.ReadString(); err != nil { + var _field *int64 + if v, err := iprot.ReadI64(); err != nil { return err } else { _field = &v } - p.Param = _field + p.ApplicationID = _field return nil } -func (p *DebugEvalTargetRequest) ReadField11(iprot thrift.TProtocol) error { - _field := common.NewRuntimeParam() +func (p *SearchCustomEvalTargetRequest) ReadField4(iprot thrift.TProtocol) error { + _field := eval_target.NewCustomRPCServer() if err := _field.Read(iprot); err != nil { return err } - p.TargetRuntimeParam = _field + p.CustomRPCServer = _field return nil } -func (p *DebugEvalTargetRequest) ReadField12(iprot thrift.TProtocol) error { +func (p *SearchCustomEvalTargetRequest) ReadField5(iprot thrift.TProtocol) error { + + var _field *eval_target.Region + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.Region = _field + return nil +} +func (p *SearchCustomEvalTargetRequest) ReadField6(iprot thrift.TProtocol) error { var _field *string if v, err := iprot.ReadString(); err != nil { @@ -11213,15 +10875,29 @@ func (p *DebugEvalTargetRequest) ReadField12(iprot thrift.TProtocol) error { p.Env = _field return nil } -func (p *DebugEvalTargetRequest) ReadField50(iprot thrift.TProtocol) error { - _field := eval_target.NewCustomRPCServer() - if err := _field.Read(iprot); err != nil { +func (p *SearchCustomEvalTargetRequest) ReadField100(iprot thrift.TProtocol) error { + + var _field *int32 + if v, err := iprot.ReadI32(); err != nil { return err + } else { + _field = &v } - p.CustomRPCServer = _field + p.PageSize = _field return nil } -func (p *DebugEvalTargetRequest) ReadField255(iprot thrift.TProtocol) error { +func (p *SearchCustomEvalTargetRequest) ReadField101(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.PageToken = _field + return nil +} +func (p *SearchCustomEvalTargetRequest) ReadField255(iprot thrift.TProtocol) error { _field := base.NewBase() if err := _field.Read(iprot); err != nil { return err @@ -11230,9 +10906,9 @@ func (p *DebugEvalTargetRequest) ReadField255(iprot thrift.TProtocol) error { return nil } -func (p *DebugEvalTargetRequest) Write(oprot thrift.TProtocol) (err error) { +func (p *SearchCustomEvalTargetRequest) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("DebugEvalTargetRequest"); err != nil { + if err = oprot.WriteStructBegin("SearchCustomEvalTargetRequest"); err != nil { goto WriteStructBeginError } if p != nil { @@ -11244,20 +10920,28 @@ func (p *DebugEvalTargetRequest) Write(oprot thrift.TProtocol) (err error) { fieldId = 2 goto WriteFieldError } - if err = p.writeField10(oprot); err != nil { - fieldId = 10 + if err = p.writeField3(oprot); err != nil { + fieldId = 3 goto WriteFieldError } - if err = p.writeField11(oprot); err != nil { - fieldId = 11 + if err = p.writeField4(oprot); err != nil { + fieldId = 4 goto WriteFieldError } - if err = p.writeField12(oprot); err != nil { - fieldId = 12 + if err = p.writeField5(oprot); err != nil { + fieldId = 5 goto WriteFieldError } - if err = p.writeField50(oprot); err != nil { - fieldId = 50 + if err = p.writeField6(oprot); err != nil { + fieldId = 6 + goto WriteFieldError + } + if err = p.writeField100(oprot); err != nil { + fieldId = 100 + goto WriteFieldError + } + if err = p.writeField101(oprot); err != nil { + fieldId = 101 goto WriteFieldError } if err = p.writeField255(oprot); err != nil { @@ -11282,7 +10966,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *DebugEvalTargetRequest) writeField1(oprot thrift.TProtocol) (err error) { +func (p *SearchCustomEvalTargetRequest) writeField1(oprot thrift.TProtocol) (err error) { if p.IsSetWorkspaceID() { if err = oprot.WriteFieldBegin("workspace_id", thrift.I64, 1); err != nil { goto WriteFieldBeginError @@ -11300,12 +10984,12 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *DebugEvalTargetRequest) writeField2(oprot thrift.TProtocol) (err error) { - if p.IsSetEvalTargetType() { - if err = oprot.WriteFieldBegin("eval_target_type", thrift.I32, 2); err != nil { +func (p *SearchCustomEvalTargetRequest) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetKeyword() { + if err = oprot.WriteFieldBegin("keyword", thrift.STRING, 2); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteI32(int32(*p.EvalTargetType)); err != nil { + if err := oprot.WriteString(*p.Keyword); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -11318,12 +11002,12 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) } -func (p *DebugEvalTargetRequest) writeField10(oprot thrift.TProtocol) (err error) { - if p.IsSetParam() { - if err = oprot.WriteFieldBegin("param", thrift.STRING, 10); err != nil { +func (p *SearchCustomEvalTargetRequest) writeField3(oprot thrift.TProtocol) (err error) { + if p.IsSetApplicationID() { + if err = oprot.WriteFieldBegin("application_id", thrift.I64, 3); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteString(*p.Param); err != nil { + if err := oprot.WriteI64(*p.ApplicationID); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -11332,16 +11016,16 @@ func (p *DebugEvalTargetRequest) writeField10(oprot thrift.TProtocol) (err error } return nil WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 10 begin error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 10 end error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) } -func (p *DebugEvalTargetRequest) writeField11(oprot thrift.TProtocol) (err error) { - if p.IsSetTargetRuntimeParam() { - if err = oprot.WriteFieldBegin("target_runtime_param", thrift.STRUCT, 11); err != nil { +func (p *SearchCustomEvalTargetRequest) writeField4(oprot thrift.TProtocol) (err error) { + if p.IsSetCustomRPCServer() { + if err = oprot.WriteFieldBegin("custom_rpc_server", thrift.STRUCT, 4); err != nil { goto WriteFieldBeginError } - if err := p.TargetRuntimeParam.Write(oprot); err != nil { + if err := p.CustomRPCServer.Write(oprot); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -11350,16 +11034,16 @@ func (p *DebugEvalTargetRequest) writeField11(oprot thrift.TProtocol) (err error } return nil WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 11 begin error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 4 begin error: ", p), err) WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 11 end error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) } -func (p *DebugEvalTargetRequest) writeField12(oprot thrift.TProtocol) (err error) { - if p.IsSetEnv() { - if err = oprot.WriteFieldBegin("env", thrift.STRING, 12); err != nil { +func (p *SearchCustomEvalTargetRequest) writeField5(oprot thrift.TProtocol) (err error) { + if p.IsSetRegion() { + if err = oprot.WriteFieldBegin("region", thrift.STRING, 5); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteString(*p.Env); err != nil { + if err := oprot.WriteString(*p.Region); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -11368,16 +11052,16 @@ func (p *DebugEvalTargetRequest) writeField12(oprot thrift.TProtocol) (err error } return nil WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 12 begin error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 5 begin error: ", p), err) WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 12 end error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 5 end error: ", p), err) } -func (p *DebugEvalTargetRequest) writeField50(oprot thrift.TProtocol) (err error) { - if p.IsSetCustomRPCServer() { - if err = oprot.WriteFieldBegin("custom_rpc_server", thrift.STRUCT, 50); err != nil { +func (p *SearchCustomEvalTargetRequest) writeField6(oprot thrift.TProtocol) (err error) { + if p.IsSetEnv() { + if err = oprot.WriteFieldBegin("env", thrift.STRING, 6); err != nil { goto WriteFieldBeginError } - if err := p.CustomRPCServer.Write(oprot); err != nil { + if err := oprot.WriteString(*p.Env); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -11386,11 +11070,47 @@ func (p *DebugEvalTargetRequest) writeField50(oprot thrift.TProtocol) (err error } return nil WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 50 begin error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 6 begin error: ", p), err) WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 50 end error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 6 end error: ", p), err) } -func (p *DebugEvalTargetRequest) writeField255(oprot thrift.TProtocol) (err error) { +func (p *SearchCustomEvalTargetRequest) writeField100(oprot thrift.TProtocol) (err error) { + if p.IsSetPageSize() { + if err = oprot.WriteFieldBegin("page_size", thrift.I32, 100); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI32(*p.PageSize); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 100 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 100 end error: ", p), err) +} +func (p *SearchCustomEvalTargetRequest) writeField101(oprot thrift.TProtocol) (err error) { + if p.IsSetPageToken() { + if err = oprot.WriteFieldBegin("page_token", thrift.STRING, 101); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.PageToken); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 101 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 101 end error: ", p), err) +} +func (p *SearchCustomEvalTargetRequest) writeField255(oprot thrift.TProtocol) (err error) { if p.IsSetBase() { if err = oprot.WriteFieldBegin("Base", thrift.STRUCT, 255); err != nil { goto WriteFieldBeginError @@ -11409,15 +11129,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) } -func (p *DebugEvalTargetRequest) String() string { +func (p *SearchCustomEvalTargetRequest) String() string { if p == nil { return "" } - return fmt.Sprintf("DebugEvalTargetRequest(%+v)", *p) + return fmt.Sprintf("SearchCustomEvalTargetRequest(%+v)", *p) } -func (p *DebugEvalTargetRequest) DeepEqual(ano *DebugEvalTargetRequest) bool { +func (p *SearchCustomEvalTargetRequest) DeepEqual(ano *SearchCustomEvalTargetRequest) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -11426,19 +11146,25 @@ func (p *DebugEvalTargetRequest) DeepEqual(ano *DebugEvalTargetRequest) bool { if !p.Field1DeepEqual(ano.WorkspaceID) { return false } - if !p.Field2DeepEqual(ano.EvalTargetType) { + if !p.Field2DeepEqual(ano.Keyword) { return false } - if !p.Field10DeepEqual(ano.Param) { + if !p.Field3DeepEqual(ano.ApplicationID) { return false } - if !p.Field11DeepEqual(ano.TargetRuntimeParam) { + if !p.Field4DeepEqual(ano.CustomRPCServer) { return false } - if !p.Field12DeepEqual(ano.Env) { + if !p.Field5DeepEqual(ano.Region) { return false } - if !p.Field50DeepEqual(ano.CustomRPCServer) { + if !p.Field6DeepEqual(ano.Env) { + return false + } + if !p.Field100DeepEqual(ano.PageSize) { + return false + } + if !p.Field101DeepEqual(ano.PageToken) { return false } if !p.Field255DeepEqual(ano.Base) { @@ -11447,7 +11173,7 @@ func (p *DebugEvalTargetRequest) DeepEqual(ano *DebugEvalTargetRequest) bool { return true } -func (p *DebugEvalTargetRequest) Field1DeepEqual(src *int64) bool { +func (p *SearchCustomEvalTargetRequest) Field1DeepEqual(src *int64) bool { if p.WorkspaceID == src { return true @@ -11459,38 +11185,50 @@ func (p *DebugEvalTargetRequest) Field1DeepEqual(src *int64) bool { } return true } -func (p *DebugEvalTargetRequest) Field2DeepEqual(src *eval_target.EvalTargetType) bool { +func (p *SearchCustomEvalTargetRequest) Field2DeepEqual(src *string) bool { - if p.EvalTargetType == src { + if p.Keyword == src { return true - } else if p.EvalTargetType == nil || src == nil { + } else if p.Keyword == nil || src == nil { return false } - if *p.EvalTargetType != *src { + if strings.Compare(*p.Keyword, *src) != 0 { return false } return true } -func (p *DebugEvalTargetRequest) Field10DeepEqual(src *string) bool { +func (p *SearchCustomEvalTargetRequest) Field3DeepEqual(src *int64) bool { - if p.Param == src { + if p.ApplicationID == src { return true - } else if p.Param == nil || src == nil { + } else if p.ApplicationID == nil || src == nil { return false } - if strings.Compare(*p.Param, *src) != 0 { + if *p.ApplicationID != *src { return false } return true } -func (p *DebugEvalTargetRequest) Field11DeepEqual(src *common.RuntimeParam) bool { +func (p *SearchCustomEvalTargetRequest) Field4DeepEqual(src *eval_target.CustomRPCServer) bool { - if !p.TargetRuntimeParam.DeepEqual(src) { + if !p.CustomRPCServer.DeepEqual(src) { return false } return true } -func (p *DebugEvalTargetRequest) Field12DeepEqual(src *string) bool { +func (p *SearchCustomEvalTargetRequest) Field5DeepEqual(src *eval_target.Region) bool { + + if p.Region == src { + return true + } else if p.Region == nil || src == nil { + return false + } + if strings.Compare(*p.Region, *src) != 0 { + return false + } + return true +} +func (p *SearchCustomEvalTargetRequest) Field6DeepEqual(src *string) bool { if p.Env == src { return true @@ -11502,14 +11240,31 @@ func (p *DebugEvalTargetRequest) Field12DeepEqual(src *string) bool { } return true } -func (p *DebugEvalTargetRequest) Field50DeepEqual(src *eval_target.CustomRPCServer) bool { +func (p *SearchCustomEvalTargetRequest) Field100DeepEqual(src *int32) bool { - if !p.CustomRPCServer.DeepEqual(src) { + if p.PageSize == src { + return true + } else if p.PageSize == nil || src == nil { + return false + } + if *p.PageSize != *src { return false } return true } -func (p *DebugEvalTargetRequest) Field255DeepEqual(src *base.Base) bool { +func (p *SearchCustomEvalTargetRequest) Field101DeepEqual(src *string) bool { + + if p.PageToken == src { + return true + } else if p.PageToken == nil || src == nil { + return false + } + if strings.Compare(*p.PageToken, *src) != 0 { + return false + } + return true +} +func (p *SearchCustomEvalTargetRequest) Field255DeepEqual(src *base.Base) bool { if !p.Base.DeepEqual(src) { return false @@ -11517,62 +11272,95 @@ func (p *DebugEvalTargetRequest) Field255DeepEqual(src *base.Base) bool { return true } -type DebugEvalTargetResponse struct { - EvalTargetRecord *eval_target.EvalTargetRecord `thrift:"eval_target_record,1,optional" frugal:"1,optional,eval_target.EvalTargetRecord" form:"eval_target_record" json:"eval_target_record,omitempty" query:"eval_target_record"` - BaseResp *base.BaseResp `thrift:"BaseResp,255" frugal:"255,default,base.BaseResp" form:"BaseResp" json:"BaseResp" query:"BaseResp"` +type SearchCustomEvalTargetResponse struct { + CustomEvalTargets []*eval_target.CustomEvalTarget `thrift:"custom_eval_targets,1" frugal:"1,default,list" form:"custom_eval_targets" json:"custom_eval_targets" query:"custom_eval_targets"` + NextPageToken *string `thrift:"next_page_token,100,optional" frugal:"100,optional,string" form:"next_page_token" json:"next_page_token,omitempty" query:"next_page_token"` + HasMore *bool `thrift:"has_more,101,optional" frugal:"101,optional,bool" form:"has_more" json:"has_more,omitempty" query:"has_more"` + BaseResp *base.BaseResp `thrift:"BaseResp,255" frugal:"255,default,base.BaseResp" form:"-" json:"-" query:"-"` } -func NewDebugEvalTargetResponse() *DebugEvalTargetResponse { - return &DebugEvalTargetResponse{} +func NewSearchCustomEvalTargetResponse() *SearchCustomEvalTargetResponse { + return &SearchCustomEvalTargetResponse{} } -func (p *DebugEvalTargetResponse) InitDefault() { +func (p *SearchCustomEvalTargetResponse) InitDefault() { } -var DebugEvalTargetResponse_EvalTargetRecord_DEFAULT *eval_target.EvalTargetRecord +func (p *SearchCustomEvalTargetResponse) GetCustomEvalTargets() (v []*eval_target.CustomEvalTarget) { + if p != nil { + return p.CustomEvalTargets + } + return +} -func (p *DebugEvalTargetResponse) GetEvalTargetRecord() (v *eval_target.EvalTargetRecord) { +var SearchCustomEvalTargetResponse_NextPageToken_DEFAULT string + +func (p *SearchCustomEvalTargetResponse) GetNextPageToken() (v string) { if p == nil { return } - if !p.IsSetEvalTargetRecord() { - return DebugEvalTargetResponse_EvalTargetRecord_DEFAULT + if !p.IsSetNextPageToken() { + return SearchCustomEvalTargetResponse_NextPageToken_DEFAULT } - return p.EvalTargetRecord + return *p.NextPageToken } -var DebugEvalTargetResponse_BaseResp_DEFAULT *base.BaseResp +var SearchCustomEvalTargetResponse_HasMore_DEFAULT bool -func (p *DebugEvalTargetResponse) GetBaseResp() (v *base.BaseResp) { +func (p *SearchCustomEvalTargetResponse) GetHasMore() (v bool) { + if p == nil { + return + } + if !p.IsSetHasMore() { + return SearchCustomEvalTargetResponse_HasMore_DEFAULT + } + return *p.HasMore +} + +var SearchCustomEvalTargetResponse_BaseResp_DEFAULT *base.BaseResp + +func (p *SearchCustomEvalTargetResponse) GetBaseResp() (v *base.BaseResp) { if p == nil { return } if !p.IsSetBaseResp() { - return DebugEvalTargetResponse_BaseResp_DEFAULT + return SearchCustomEvalTargetResponse_BaseResp_DEFAULT } return p.BaseResp } -func (p *DebugEvalTargetResponse) SetEvalTargetRecord(val *eval_target.EvalTargetRecord) { - p.EvalTargetRecord = val +func (p *SearchCustomEvalTargetResponse) SetCustomEvalTargets(val []*eval_target.CustomEvalTarget) { + p.CustomEvalTargets = val } -func (p *DebugEvalTargetResponse) SetBaseResp(val *base.BaseResp) { +func (p *SearchCustomEvalTargetResponse) SetNextPageToken(val *string) { + p.NextPageToken = val +} +func (p *SearchCustomEvalTargetResponse) SetHasMore(val *bool) { + p.HasMore = val +} +func (p *SearchCustomEvalTargetResponse) SetBaseResp(val *base.BaseResp) { p.BaseResp = val } -var fieldIDToName_DebugEvalTargetResponse = map[int16]string{ - 1: "eval_target_record", +var fieldIDToName_SearchCustomEvalTargetResponse = map[int16]string{ + 1: "custom_eval_targets", + 100: "next_page_token", + 101: "has_more", 255: "BaseResp", } -func (p *DebugEvalTargetResponse) IsSetEvalTargetRecord() bool { - return p.EvalTargetRecord != nil +func (p *SearchCustomEvalTargetResponse) IsSetNextPageToken() bool { + return p.NextPageToken != nil } -func (p *DebugEvalTargetResponse) IsSetBaseResp() bool { +func (p *SearchCustomEvalTargetResponse) IsSetHasMore() bool { + return p.HasMore != nil +} + +func (p *SearchCustomEvalTargetResponse) IsSetBaseResp() bool { return p.BaseResp != nil } -func (p *DebugEvalTargetResponse) Read(iprot thrift.TProtocol) (err error) { +func (p *SearchCustomEvalTargetResponse) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -11591,13 +11379,29 @@ func (p *DebugEvalTargetResponse) Read(iprot thrift.TProtocol) (err error) { switch fieldId { case 1: - if fieldTypeId == thrift.STRUCT { + if fieldTypeId == thrift.LIST { if err = p.ReadField1(iprot); err != nil { goto ReadFieldError } } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 100: + if fieldTypeId == thrift.STRING { + if err = p.ReadField100(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 101: + if fieldTypeId == thrift.BOOL { + if err = p.ReadField101(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } case 255: if fieldTypeId == thrift.STRUCT { if err = p.ReadField255(iprot); err != nil { @@ -11625,7 +11429,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_DebugEvalTargetResponse[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_SearchCustomEvalTargetResponse[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -11635,26 +11439,63 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *DebugEvalTargetResponse) ReadField1(iprot thrift.TProtocol) error { - _field := eval_target.NewEvalTargetRecord() - if err := _field.Read(iprot); err != nil { +func (p *SearchCustomEvalTargetResponse) ReadField1(iprot thrift.TProtocol) error { + _, size, err := iprot.ReadListBegin() + if err != nil { return err } - p.EvalTargetRecord = _field + _field := make([]*eval_target.CustomEvalTarget, 0, size) + values := make([]eval_target.CustomEvalTarget, size) + for i := 0; i < size; i++ { + _elem := &values[i] + _elem.InitDefault() + + if err := _elem.Read(iprot); err != nil { + return err + } + + _field = append(_field, _elem) + } + if err := iprot.ReadListEnd(); err != nil { + return err + } + p.CustomEvalTargets = _field return nil } -func (p *DebugEvalTargetResponse) ReadField255(iprot thrift.TProtocol) error { - _field := base.NewBaseResp() - if err := _field.Read(iprot); err != nil { +func (p *SearchCustomEvalTargetResponse) ReadField100(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { return err + } else { + _field = &v } - p.BaseResp = _field + p.NextPageToken = _field return nil } +func (p *SearchCustomEvalTargetResponse) ReadField101(iprot thrift.TProtocol) error { -func (p *DebugEvalTargetResponse) Write(oprot thrift.TProtocol) (err error) { - var fieldId int16 - if err = oprot.WriteStructBegin("DebugEvalTargetResponse"); err != nil { + var _field *bool + if v, err := iprot.ReadBool(); err != nil { + return err + } else { + _field = &v + } + p.HasMore = _field + return nil +} +func (p *SearchCustomEvalTargetResponse) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBaseResp() + if err := _field.Read(iprot); err != nil { + return err + } + p.BaseResp = _field + return nil +} + +func (p *SearchCustomEvalTargetResponse) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("SearchCustomEvalTargetResponse"); err != nil { goto WriteStructBeginError } if p != nil { @@ -11662,6 +11503,14 @@ func (p *DebugEvalTargetResponse) Write(oprot thrift.TProtocol) (err error) { fieldId = 1 goto WriteFieldError } + if err = p.writeField100(oprot); err != nil { + fieldId = 100 + goto WriteFieldError + } + if err = p.writeField101(oprot); err != nil { + fieldId = 101 + goto WriteFieldError + } if err = p.writeField255(oprot); err != nil { fieldId = 255 goto WriteFieldError @@ -11684,12 +11533,36 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *DebugEvalTargetResponse) writeField1(oprot thrift.TProtocol) (err error) { - if p.IsSetEvalTargetRecord() { - if err = oprot.WriteFieldBegin("eval_target_record", thrift.STRUCT, 1); err != nil { +func (p *SearchCustomEvalTargetResponse) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("custom_eval_targets", thrift.LIST, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteListBegin(thrift.STRUCT, len(p.CustomEvalTargets)); err != nil { + return err + } + for _, v := range p.CustomEvalTargets { + if err := v.Write(oprot); err != nil { + return err + } + } + if err := oprot.WriteListEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *SearchCustomEvalTargetResponse) writeField100(oprot thrift.TProtocol) (err error) { + if p.IsSetNextPageToken() { + if err = oprot.WriteFieldBegin("next_page_token", thrift.STRING, 100); err != nil { goto WriteFieldBeginError } - if err := p.EvalTargetRecord.Write(oprot); err != nil { + if err := oprot.WriteString(*p.NextPageToken); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -11698,11 +11571,29 @@ func (p *DebugEvalTargetResponse) writeField1(oprot thrift.TProtocol) (err error } return nil WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 100 begin error: ", p), err) WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 100 end error: ", p), err) } -func (p *DebugEvalTargetResponse) writeField255(oprot thrift.TProtocol) (err error) { +func (p *SearchCustomEvalTargetResponse) writeField101(oprot thrift.TProtocol) (err error) { + if p.IsSetHasMore() { + if err = oprot.WriteFieldBegin("has_more", thrift.BOOL, 101); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteBool(*p.HasMore); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 101 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 101 end error: ", p), err) +} +func (p *SearchCustomEvalTargetResponse) writeField255(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("BaseResp", thrift.STRUCT, 255); err != nil { goto WriteFieldBeginError } @@ -11719,21 +11610,27 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) } -func (p *DebugEvalTargetResponse) String() string { +func (p *SearchCustomEvalTargetResponse) String() string { if p == nil { return "" } - return fmt.Sprintf("DebugEvalTargetResponse(%+v)", *p) + return fmt.Sprintf("SearchCustomEvalTargetResponse(%+v)", *p) } -func (p *DebugEvalTargetResponse) DeepEqual(ano *DebugEvalTargetResponse) bool { +func (p *SearchCustomEvalTargetResponse) DeepEqual(ano *SearchCustomEvalTargetResponse) bool { if p == ano { return true } else if p == nil || ano == nil { return false } - if !p.Field1DeepEqual(ano.EvalTargetRecord) { + if !p.Field1DeepEqual(ano.CustomEvalTargets) { + return false + } + if !p.Field100DeepEqual(ano.NextPageToken) { + return false + } + if !p.Field101DeepEqual(ano.HasMore) { return false } if !p.Field255DeepEqual(ano.BaseResp) { @@ -11742,14 +11639,44 @@ func (p *DebugEvalTargetResponse) DeepEqual(ano *DebugEvalTargetResponse) bool { return true } -func (p *DebugEvalTargetResponse) Field1DeepEqual(src *eval_target.EvalTargetRecord) bool { +func (p *SearchCustomEvalTargetResponse) Field1DeepEqual(src []*eval_target.CustomEvalTarget) bool { - if !p.EvalTargetRecord.DeepEqual(src) { + if len(p.CustomEvalTargets) != len(src) { return false } + for i, v := range p.CustomEvalTargets { + _src := src[i] + if !v.DeepEqual(_src) { + return false + } + } return true } -func (p *DebugEvalTargetResponse) Field255DeepEqual(src *base.BaseResp) bool { +func (p *SearchCustomEvalTargetResponse) Field100DeepEqual(src *string) bool { + + if p.NextPageToken == src { + return true + } else if p.NextPageToken == nil || src == nil { + return false + } + if strings.Compare(*p.NextPageToken, *src) != 0 { + return false + } + return true +} +func (p *SearchCustomEvalTargetResponse) Field101DeepEqual(src *bool) bool { + + if p.HasMore == src { + return true + } else if p.HasMore == nil || src == nil { + return false + } + if *p.HasMore != *src { + return false + } + return true +} +func (p *SearchCustomEvalTargetResponse) Field255DeepEqual(src *base.BaseResp) bool { if !p.BaseResp.DeepEqual(src) { return false @@ -11757,7 +11684,7 @@ func (p *DebugEvalTargetResponse) Field255DeepEqual(src *base.BaseResp) bool { return true } -type AsyncDebugEvalTargetRequest struct { +type DebugEvalTargetRequest struct { WorkspaceID *int64 `thrift:"workspace_id,1,optional" frugal:"1,optional,i64" json:"workspace_id" form:"workspace_id" query:"workspace_id"` // 类型 EvalTargetType *eval_target.EvalTargetType `thrift:"eval_target_type,2,optional" frugal:"2,optional,EvalTargetType" form:"eval_target_type" json:"eval_target_type,omitempty" query:"eval_target_type"` @@ -11772,119 +11699,119 @@ type AsyncDebugEvalTargetRequest struct { Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"Base" json:"Base,omitempty" query:"Base"` } -func NewAsyncDebugEvalTargetRequest() *AsyncDebugEvalTargetRequest { - return &AsyncDebugEvalTargetRequest{} +func NewDebugEvalTargetRequest() *DebugEvalTargetRequest { + return &DebugEvalTargetRequest{} } -func (p *AsyncDebugEvalTargetRequest) InitDefault() { +func (p *DebugEvalTargetRequest) InitDefault() { } -var AsyncDebugEvalTargetRequest_WorkspaceID_DEFAULT int64 +var DebugEvalTargetRequest_WorkspaceID_DEFAULT int64 -func (p *AsyncDebugEvalTargetRequest) GetWorkspaceID() (v int64) { +func (p *DebugEvalTargetRequest) GetWorkspaceID() (v int64) { if p == nil { return } if !p.IsSetWorkspaceID() { - return AsyncDebugEvalTargetRequest_WorkspaceID_DEFAULT + return DebugEvalTargetRequest_WorkspaceID_DEFAULT } return *p.WorkspaceID } -var AsyncDebugEvalTargetRequest_EvalTargetType_DEFAULT eval_target.EvalTargetType +var DebugEvalTargetRequest_EvalTargetType_DEFAULT eval_target.EvalTargetType -func (p *AsyncDebugEvalTargetRequest) GetEvalTargetType() (v eval_target.EvalTargetType) { +func (p *DebugEvalTargetRequest) GetEvalTargetType() (v eval_target.EvalTargetType) { if p == nil { return } if !p.IsSetEvalTargetType() { - return AsyncDebugEvalTargetRequest_EvalTargetType_DEFAULT + return DebugEvalTargetRequest_EvalTargetType_DEFAULT } return *p.EvalTargetType } -var AsyncDebugEvalTargetRequest_Param_DEFAULT string +var DebugEvalTargetRequest_Param_DEFAULT string -func (p *AsyncDebugEvalTargetRequest) GetParam() (v string) { +func (p *DebugEvalTargetRequest) GetParam() (v string) { if p == nil { return } if !p.IsSetParam() { - return AsyncDebugEvalTargetRequest_Param_DEFAULT + return DebugEvalTargetRequest_Param_DEFAULT } return *p.Param } -var AsyncDebugEvalTargetRequest_TargetRuntimeParam_DEFAULT *common.RuntimeParam +var DebugEvalTargetRequest_TargetRuntimeParam_DEFAULT *common.RuntimeParam -func (p *AsyncDebugEvalTargetRequest) GetTargetRuntimeParam() (v *common.RuntimeParam) { +func (p *DebugEvalTargetRequest) GetTargetRuntimeParam() (v *common.RuntimeParam) { if p == nil { return } if !p.IsSetTargetRuntimeParam() { - return AsyncDebugEvalTargetRequest_TargetRuntimeParam_DEFAULT + return DebugEvalTargetRequest_TargetRuntimeParam_DEFAULT } return p.TargetRuntimeParam } -var AsyncDebugEvalTargetRequest_Env_DEFAULT string +var DebugEvalTargetRequest_Env_DEFAULT string -func (p *AsyncDebugEvalTargetRequest) GetEnv() (v string) { +func (p *DebugEvalTargetRequest) GetEnv() (v string) { if p == nil { return } if !p.IsSetEnv() { - return AsyncDebugEvalTargetRequest_Env_DEFAULT + return DebugEvalTargetRequest_Env_DEFAULT } return *p.Env } -var AsyncDebugEvalTargetRequest_CustomRPCServer_DEFAULT *eval_target.CustomRPCServer +var DebugEvalTargetRequest_CustomRPCServer_DEFAULT *eval_target.CustomRPCServer -func (p *AsyncDebugEvalTargetRequest) GetCustomRPCServer() (v *eval_target.CustomRPCServer) { +func (p *DebugEvalTargetRequest) GetCustomRPCServer() (v *eval_target.CustomRPCServer) { if p == nil { return } if !p.IsSetCustomRPCServer() { - return AsyncDebugEvalTargetRequest_CustomRPCServer_DEFAULT + return DebugEvalTargetRequest_CustomRPCServer_DEFAULT } return p.CustomRPCServer } -var AsyncDebugEvalTargetRequest_Base_DEFAULT *base.Base +var DebugEvalTargetRequest_Base_DEFAULT *base.Base -func (p *AsyncDebugEvalTargetRequest) GetBase() (v *base.Base) { +func (p *DebugEvalTargetRequest) GetBase() (v *base.Base) { if p == nil { return } if !p.IsSetBase() { - return AsyncDebugEvalTargetRequest_Base_DEFAULT + return DebugEvalTargetRequest_Base_DEFAULT } return p.Base } -func (p *AsyncDebugEvalTargetRequest) SetWorkspaceID(val *int64) { +func (p *DebugEvalTargetRequest) SetWorkspaceID(val *int64) { p.WorkspaceID = val } -func (p *AsyncDebugEvalTargetRequest) SetEvalTargetType(val *eval_target.EvalTargetType) { +func (p *DebugEvalTargetRequest) SetEvalTargetType(val *eval_target.EvalTargetType) { p.EvalTargetType = val } -func (p *AsyncDebugEvalTargetRequest) SetParam(val *string) { +func (p *DebugEvalTargetRequest) SetParam(val *string) { p.Param = val } -func (p *AsyncDebugEvalTargetRequest) SetTargetRuntimeParam(val *common.RuntimeParam) { +func (p *DebugEvalTargetRequest) SetTargetRuntimeParam(val *common.RuntimeParam) { p.TargetRuntimeParam = val } -func (p *AsyncDebugEvalTargetRequest) SetEnv(val *string) { +func (p *DebugEvalTargetRequest) SetEnv(val *string) { p.Env = val } -func (p *AsyncDebugEvalTargetRequest) SetCustomRPCServer(val *eval_target.CustomRPCServer) { +func (p *DebugEvalTargetRequest) SetCustomRPCServer(val *eval_target.CustomRPCServer) { p.CustomRPCServer = val } -func (p *AsyncDebugEvalTargetRequest) SetBase(val *base.Base) { +func (p *DebugEvalTargetRequest) SetBase(val *base.Base) { p.Base = val } -var fieldIDToName_AsyncDebugEvalTargetRequest = map[int16]string{ +var fieldIDToName_DebugEvalTargetRequest = map[int16]string{ 1: "workspace_id", 2: "eval_target_type", 10: "param", @@ -11894,35 +11821,35 @@ var fieldIDToName_AsyncDebugEvalTargetRequest = map[int16]string{ 255: "Base", } -func (p *AsyncDebugEvalTargetRequest) IsSetWorkspaceID() bool { +func (p *DebugEvalTargetRequest) IsSetWorkspaceID() bool { return p.WorkspaceID != nil } -func (p *AsyncDebugEvalTargetRequest) IsSetEvalTargetType() bool { +func (p *DebugEvalTargetRequest) IsSetEvalTargetType() bool { return p.EvalTargetType != nil } -func (p *AsyncDebugEvalTargetRequest) IsSetParam() bool { +func (p *DebugEvalTargetRequest) IsSetParam() bool { return p.Param != nil } -func (p *AsyncDebugEvalTargetRequest) IsSetTargetRuntimeParam() bool { +func (p *DebugEvalTargetRequest) IsSetTargetRuntimeParam() bool { return p.TargetRuntimeParam != nil } -func (p *AsyncDebugEvalTargetRequest) IsSetEnv() bool { +func (p *DebugEvalTargetRequest) IsSetEnv() bool { return p.Env != nil } -func (p *AsyncDebugEvalTargetRequest) IsSetCustomRPCServer() bool { +func (p *DebugEvalTargetRequest) IsSetCustomRPCServer() bool { return p.CustomRPCServer != nil } -func (p *AsyncDebugEvalTargetRequest) IsSetBase() bool { +func (p *DebugEvalTargetRequest) IsSetBase() bool { return p.Base != nil } -func (p *AsyncDebugEvalTargetRequest) Read(iprot thrift.TProtocol) (err error) { +func (p *DebugEvalTargetRequest) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -12015,7 +11942,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_AsyncDebugEvalTargetRequest[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_DebugEvalTargetRequest[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -12025,7 +11952,7 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *AsyncDebugEvalTargetRequest) ReadField1(iprot thrift.TProtocol) error { +func (p *DebugEvalTargetRequest) ReadField1(iprot thrift.TProtocol) error { var _field *int64 if v, err := iprot.ReadI64(); err != nil { @@ -12036,7 +11963,7 @@ func (p *AsyncDebugEvalTargetRequest) ReadField1(iprot thrift.TProtocol) error { p.WorkspaceID = _field return nil } -func (p *AsyncDebugEvalTargetRequest) ReadField2(iprot thrift.TProtocol) error { +func (p *DebugEvalTargetRequest) ReadField2(iprot thrift.TProtocol) error { var _field *eval_target.EvalTargetType if v, err := iprot.ReadI32(); err != nil { @@ -12048,7 +11975,7 @@ func (p *AsyncDebugEvalTargetRequest) ReadField2(iprot thrift.TProtocol) error { p.EvalTargetType = _field return nil } -func (p *AsyncDebugEvalTargetRequest) ReadField10(iprot thrift.TProtocol) error { +func (p *DebugEvalTargetRequest) ReadField10(iprot thrift.TProtocol) error { var _field *string if v, err := iprot.ReadString(); err != nil { @@ -12059,7 +11986,7 @@ func (p *AsyncDebugEvalTargetRequest) ReadField10(iprot thrift.TProtocol) error p.Param = _field return nil } -func (p *AsyncDebugEvalTargetRequest) ReadField11(iprot thrift.TProtocol) error { +func (p *DebugEvalTargetRequest) ReadField11(iprot thrift.TProtocol) error { _field := common.NewRuntimeParam() if err := _field.Read(iprot); err != nil { return err @@ -12067,7 +11994,7 @@ func (p *AsyncDebugEvalTargetRequest) ReadField11(iprot thrift.TProtocol) error p.TargetRuntimeParam = _field return nil } -func (p *AsyncDebugEvalTargetRequest) ReadField12(iprot thrift.TProtocol) error { +func (p *DebugEvalTargetRequest) ReadField12(iprot thrift.TProtocol) error { var _field *string if v, err := iprot.ReadString(); err != nil { @@ -12078,7 +12005,7 @@ func (p *AsyncDebugEvalTargetRequest) ReadField12(iprot thrift.TProtocol) error p.Env = _field return nil } -func (p *AsyncDebugEvalTargetRequest) ReadField50(iprot thrift.TProtocol) error { +func (p *DebugEvalTargetRequest) ReadField50(iprot thrift.TProtocol) error { _field := eval_target.NewCustomRPCServer() if err := _field.Read(iprot); err != nil { return err @@ -12086,7 +12013,7 @@ func (p *AsyncDebugEvalTargetRequest) ReadField50(iprot thrift.TProtocol) error p.CustomRPCServer = _field return nil } -func (p *AsyncDebugEvalTargetRequest) ReadField255(iprot thrift.TProtocol) error { +func (p *DebugEvalTargetRequest) ReadField255(iprot thrift.TProtocol) error { _field := base.NewBase() if err := _field.Read(iprot); err != nil { return err @@ -12095,9 +12022,9 @@ func (p *AsyncDebugEvalTargetRequest) ReadField255(iprot thrift.TProtocol) error return nil } -func (p *AsyncDebugEvalTargetRequest) Write(oprot thrift.TProtocol) (err error) { +func (p *DebugEvalTargetRequest) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("AsyncDebugEvalTargetRequest"); err != nil { + if err = oprot.WriteStructBegin("DebugEvalTargetRequest"); err != nil { goto WriteStructBeginError } if p != nil { @@ -12147,7 +12074,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *AsyncDebugEvalTargetRequest) writeField1(oprot thrift.TProtocol) (err error) { +func (p *DebugEvalTargetRequest) writeField1(oprot thrift.TProtocol) (err error) { if p.IsSetWorkspaceID() { if err = oprot.WriteFieldBegin("workspace_id", thrift.I64, 1); err != nil { goto WriteFieldBeginError @@ -12165,7 +12092,7 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *AsyncDebugEvalTargetRequest) writeField2(oprot thrift.TProtocol) (err error) { +func (p *DebugEvalTargetRequest) writeField2(oprot thrift.TProtocol) (err error) { if p.IsSetEvalTargetType() { if err = oprot.WriteFieldBegin("eval_target_type", thrift.I32, 2); err != nil { goto WriteFieldBeginError @@ -12183,7 +12110,7 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) } -func (p *AsyncDebugEvalTargetRequest) writeField10(oprot thrift.TProtocol) (err error) { +func (p *DebugEvalTargetRequest) writeField10(oprot thrift.TProtocol) (err error) { if p.IsSetParam() { if err = oprot.WriteFieldBegin("param", thrift.STRING, 10); err != nil { goto WriteFieldBeginError @@ -12201,7 +12128,7 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 10 end error: ", p), err) } -func (p *AsyncDebugEvalTargetRequest) writeField11(oprot thrift.TProtocol) (err error) { +func (p *DebugEvalTargetRequest) writeField11(oprot thrift.TProtocol) (err error) { if p.IsSetTargetRuntimeParam() { if err = oprot.WriteFieldBegin("target_runtime_param", thrift.STRUCT, 11); err != nil { goto WriteFieldBeginError @@ -12219,7 +12146,7 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 11 end error: ", p), err) } -func (p *AsyncDebugEvalTargetRequest) writeField12(oprot thrift.TProtocol) (err error) { +func (p *DebugEvalTargetRequest) writeField12(oprot thrift.TProtocol) (err error) { if p.IsSetEnv() { if err = oprot.WriteFieldBegin("env", thrift.STRING, 12); err != nil { goto WriteFieldBeginError @@ -12237,7 +12164,7 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 12 end error: ", p), err) } -func (p *AsyncDebugEvalTargetRequest) writeField50(oprot thrift.TProtocol) (err error) { +func (p *DebugEvalTargetRequest) writeField50(oprot thrift.TProtocol) (err error) { if p.IsSetCustomRPCServer() { if err = oprot.WriteFieldBegin("custom_rpc_server", thrift.STRUCT, 50); err != nil { goto WriteFieldBeginError @@ -12255,7 +12182,7 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 50 end error: ", p), err) } -func (p *AsyncDebugEvalTargetRequest) writeField255(oprot thrift.TProtocol) (err error) { +func (p *DebugEvalTargetRequest) writeField255(oprot thrift.TProtocol) (err error) { if p.IsSetBase() { if err = oprot.WriteFieldBegin("Base", thrift.STRUCT, 255); err != nil { goto WriteFieldBeginError @@ -12274,15 +12201,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) } -func (p *AsyncDebugEvalTargetRequest) String() string { +func (p *DebugEvalTargetRequest) String() string { if p == nil { return "" } - return fmt.Sprintf("AsyncDebugEvalTargetRequest(%+v)", *p) + return fmt.Sprintf("DebugEvalTargetRequest(%+v)", *p) } -func (p *AsyncDebugEvalTargetRequest) DeepEqual(ano *AsyncDebugEvalTargetRequest) bool { +func (p *DebugEvalTargetRequest) DeepEqual(ano *DebugEvalTargetRequest) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -12312,7 +12239,7 @@ func (p *AsyncDebugEvalTargetRequest) DeepEqual(ano *AsyncDebugEvalTargetRequest return true } -func (p *AsyncDebugEvalTargetRequest) Field1DeepEqual(src *int64) bool { +func (p *DebugEvalTargetRequest) Field1DeepEqual(src *int64) bool { if p.WorkspaceID == src { return true @@ -12324,7 +12251,7 @@ func (p *AsyncDebugEvalTargetRequest) Field1DeepEqual(src *int64) bool { } return true } -func (p *AsyncDebugEvalTargetRequest) Field2DeepEqual(src *eval_target.EvalTargetType) bool { +func (p *DebugEvalTargetRequest) Field2DeepEqual(src *eval_target.EvalTargetType) bool { if p.EvalTargetType == src { return true @@ -12336,7 +12263,7 @@ func (p *AsyncDebugEvalTargetRequest) Field2DeepEqual(src *eval_target.EvalTarge } return true } -func (p *AsyncDebugEvalTargetRequest) Field10DeepEqual(src *string) bool { +func (p *DebugEvalTargetRequest) Field10DeepEqual(src *string) bool { if p.Param == src { return true @@ -12348,14 +12275,14 @@ func (p *AsyncDebugEvalTargetRequest) Field10DeepEqual(src *string) bool { } return true } -func (p *AsyncDebugEvalTargetRequest) Field11DeepEqual(src *common.RuntimeParam) bool { +func (p *DebugEvalTargetRequest) Field11DeepEqual(src *common.RuntimeParam) bool { if !p.TargetRuntimeParam.DeepEqual(src) { return false } return true } -func (p *AsyncDebugEvalTargetRequest) Field12DeepEqual(src *string) bool { +func (p *DebugEvalTargetRequest) Field12DeepEqual(src *string) bool { if p.Env == src { return true @@ -12367,14 +12294,14 @@ func (p *AsyncDebugEvalTargetRequest) Field12DeepEqual(src *string) bool { } return true } -func (p *AsyncDebugEvalTargetRequest) Field50DeepEqual(src *eval_target.CustomRPCServer) bool { +func (p *DebugEvalTargetRequest) Field50DeepEqual(src *eval_target.CustomRPCServer) bool { if !p.CustomRPCServer.DeepEqual(src) { return false } return true } -func (p *AsyncDebugEvalTargetRequest) Field255DeepEqual(src *base.Base) bool { +func (p *DebugEvalTargetRequest) Field255DeepEqual(src *base.Base) bool { if !p.Base.DeepEqual(src) { return false @@ -12382,96 +12309,64 @@ func (p *AsyncDebugEvalTargetRequest) Field255DeepEqual(src *base.Base) bool { return true } -type MockEvalTargetOutputRequest struct { - WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" query:"workspace_id,required"` - // EvalTargetID参数实际上为SourceTargetID - SourceTargetID int64 `thrift:"source_target_id,2,required" frugal:"2,required,i64" json:"source_target_id" form:"source_target_id,required" query:"source_target_id,required"` - EvalTargetVersion string `thrift:"eval_target_version,3,required" frugal:"3,required,string" form:"eval_target_version,required" json:"eval_target_version,required" query:"eval_target_version,required"` - TargetType eval_target.EvalTargetType `thrift:"target_type,4,required" frugal:"4,required,EvalTargetType" form:"target_type,required" json:"target_type,required" query:"target_type,required"` - Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"Base" json:"Base,omitempty" query:"Base"` -} - -func NewMockEvalTargetOutputRequest() *MockEvalTargetOutputRequest { - return &MockEvalTargetOutputRequest{} +type DebugEvalTargetResponse struct { + EvalTargetRecord *eval_target.EvalTargetRecord `thrift:"eval_target_record,1,optional" frugal:"1,optional,eval_target.EvalTargetRecord" form:"eval_target_record" json:"eval_target_record,omitempty" query:"eval_target_record"` + BaseResp *base.BaseResp `thrift:"BaseResp,255" frugal:"255,default,base.BaseResp" form:"BaseResp" json:"BaseResp" query:"BaseResp"` } -func (p *MockEvalTargetOutputRequest) InitDefault() { +func NewDebugEvalTargetResponse() *DebugEvalTargetResponse { + return &DebugEvalTargetResponse{} } -func (p *MockEvalTargetOutputRequest) GetWorkspaceID() (v int64) { - if p != nil { - return p.WorkspaceID - } - return +func (p *DebugEvalTargetResponse) InitDefault() { } -func (p *MockEvalTargetOutputRequest) GetSourceTargetID() (v int64) { - if p != nil { - return p.SourceTargetID - } - return -} +var DebugEvalTargetResponse_EvalTargetRecord_DEFAULT *eval_target.EvalTargetRecord -func (p *MockEvalTargetOutputRequest) GetEvalTargetVersion() (v string) { - if p != nil { - return p.EvalTargetVersion +func (p *DebugEvalTargetResponse) GetEvalTargetRecord() (v *eval_target.EvalTargetRecord) { + if p == nil { + return } - return -} - -func (p *MockEvalTargetOutputRequest) GetTargetType() (v eval_target.EvalTargetType) { - if p != nil { - return p.TargetType + if !p.IsSetEvalTargetRecord() { + return DebugEvalTargetResponse_EvalTargetRecord_DEFAULT } - return + return p.EvalTargetRecord } -var MockEvalTargetOutputRequest_Base_DEFAULT *base.Base +var DebugEvalTargetResponse_BaseResp_DEFAULT *base.BaseResp -func (p *MockEvalTargetOutputRequest) GetBase() (v *base.Base) { +func (p *DebugEvalTargetResponse) GetBaseResp() (v *base.BaseResp) { if p == nil { return } - if !p.IsSetBase() { - return MockEvalTargetOutputRequest_Base_DEFAULT + if !p.IsSetBaseResp() { + return DebugEvalTargetResponse_BaseResp_DEFAULT } - return p.Base -} -func (p *MockEvalTargetOutputRequest) SetWorkspaceID(val int64) { - p.WorkspaceID = val -} -func (p *MockEvalTargetOutputRequest) SetSourceTargetID(val int64) { - p.SourceTargetID = val + return p.BaseResp } -func (p *MockEvalTargetOutputRequest) SetEvalTargetVersion(val string) { - p.EvalTargetVersion = val +func (p *DebugEvalTargetResponse) SetEvalTargetRecord(val *eval_target.EvalTargetRecord) { + p.EvalTargetRecord = val } -func (p *MockEvalTargetOutputRequest) SetTargetType(val eval_target.EvalTargetType) { - p.TargetType = val +func (p *DebugEvalTargetResponse) SetBaseResp(val *base.BaseResp) { + p.BaseResp = val } -func (p *MockEvalTargetOutputRequest) SetBase(val *base.Base) { - p.Base = val + +var fieldIDToName_DebugEvalTargetResponse = map[int16]string{ + 1: "eval_target_record", + 255: "BaseResp", } -var fieldIDToName_MockEvalTargetOutputRequest = map[int16]string{ - 1: "workspace_id", - 2: "source_target_id", - 3: "eval_target_version", - 4: "target_type", - 255: "Base", +func (p *DebugEvalTargetResponse) IsSetEvalTargetRecord() bool { + return p.EvalTargetRecord != nil } -func (p *MockEvalTargetOutputRequest) IsSetBase() bool { - return p.Base != nil +func (p *DebugEvalTargetResponse) IsSetBaseResp() bool { + return p.BaseResp != nil } -func (p *MockEvalTargetOutputRequest) Read(iprot thrift.TProtocol) (err error) { +func (p *DebugEvalTargetResponse) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 - var issetWorkspaceID bool = false - var issetSourceTargetID bool = false - var issetEvalTargetVersion bool = false - var issetTargetType bool = false if _, err = iprot.ReadStructBegin(); err != nil { goto ReadStructBeginError @@ -12488,38 +12383,10 @@ func (p *MockEvalTargetOutputRequest) Read(iprot thrift.TProtocol) (err error) { switch fieldId { case 1: - if fieldTypeId == thrift.I64 { + if fieldTypeId == thrift.STRUCT { if err = p.ReadField1(iprot); err != nil { goto ReadFieldError } - issetWorkspaceID = true - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 2: - if fieldTypeId == thrift.I64 { - if err = p.ReadField2(iprot); err != nil { - goto ReadFieldError - } - issetSourceTargetID = true - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 3: - if fieldTypeId == thrift.STRING { - if err = p.ReadField3(iprot); err != nil { - goto ReadFieldError - } - issetEvalTargetVersion = true - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 4: - if fieldTypeId == thrift.I32 { - if err = p.ReadField4(iprot); err != nil { - goto ReadFieldError - } - issetTargetType = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } @@ -12544,32 +12411,13 @@ func (p *MockEvalTargetOutputRequest) Read(iprot thrift.TProtocol) (err error) { goto ReadStructEndError } - if !issetWorkspaceID { - fieldId = 1 - goto RequiredFieldNotSetError - } - - if !issetSourceTargetID { - fieldId = 2 - goto RequiredFieldNotSetError - } - - if !issetEvalTargetVersion { - fieldId = 3 - goto RequiredFieldNotSetError - } - - if !issetTargetType { - fieldId = 4 - goto RequiredFieldNotSetError - } return nil ReadStructBeginError: return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_MockEvalTargetOutputRequest[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_DebugEvalTargetResponse[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -12577,66 +12425,28 @@ ReadFieldEndError: return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) -RequiredFieldNotSetError: - return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_MockEvalTargetOutputRequest[fieldId])) -} - -func (p *MockEvalTargetOutputRequest) ReadField1(iprot thrift.TProtocol) error { - - var _field int64 - if v, err := iprot.ReadI64(); err != nil { - return err - } else { - _field = v - } - p.WorkspaceID = _field - return nil -} -func (p *MockEvalTargetOutputRequest) ReadField2(iprot thrift.TProtocol) error { - - var _field int64 - if v, err := iprot.ReadI64(); err != nil { - return err - } else { - _field = v - } - p.SourceTargetID = _field - return nil -} -func (p *MockEvalTargetOutputRequest) ReadField3(iprot thrift.TProtocol) error { - - var _field string - if v, err := iprot.ReadString(); err != nil { - return err - } else { - _field = v - } - p.EvalTargetVersion = _field - return nil } -func (p *MockEvalTargetOutputRequest) ReadField4(iprot thrift.TProtocol) error { - var _field eval_target.EvalTargetType - if v, err := iprot.ReadI32(); err != nil { +func (p *DebugEvalTargetResponse) ReadField1(iprot thrift.TProtocol) error { + _field := eval_target.NewEvalTargetRecord() + if err := _field.Read(iprot); err != nil { return err - } else { - _field = eval_target.EvalTargetType(v) } - p.TargetType = _field + p.EvalTargetRecord = _field return nil } -func (p *MockEvalTargetOutputRequest) ReadField255(iprot thrift.TProtocol) error { - _field := base.NewBase() +func (p *DebugEvalTargetResponse) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBaseResp() if err := _field.Read(iprot); err != nil { return err } - p.Base = _field + p.BaseResp = _field return nil } -func (p *MockEvalTargetOutputRequest) Write(oprot thrift.TProtocol) (err error) { +func (p *DebugEvalTargetResponse) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("MockEvalTargetOutputRequest"); err != nil { + if err = oprot.WriteStructBegin("DebugEvalTargetResponse"); err != nil { goto WriteStructBeginError } if p != nil { @@ -12644,18 +12454,6 @@ func (p *MockEvalTargetOutputRequest) Write(oprot thrift.TProtocol) (err error) fieldId = 1 goto WriteFieldError } - if err = p.writeField2(oprot); err != nil { - fieldId = 2 - goto WriteFieldError - } - if err = p.writeField3(oprot); err != nil { - fieldId = 3 - goto WriteFieldError - } - if err = p.writeField4(oprot); err != nil { - fieldId = 4 - goto WriteFieldError - } if err = p.writeField255(oprot); err != nil { fieldId = 255 goto WriteFieldError @@ -12678,15 +12476,17 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *MockEvalTargetOutputRequest) writeField1(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("workspace_id", thrift.I64, 1); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteI64(p.WorkspaceID); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError +func (p *DebugEvalTargetResponse) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetEvalTargetRecord() { + if err = oprot.WriteFieldBegin("eval_target_record", thrift.STRUCT, 1); err != nil { + goto WriteFieldBeginError + } + if err := p.EvalTargetRecord.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } } return nil WriteFieldBeginError: @@ -12694,212 +12494,229 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *MockEvalTargetOutputRequest) writeField2(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("source_target_id", thrift.I64, 2); err != nil { +func (p *DebugEvalTargetResponse) writeField255(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("BaseResp", thrift.STRUCT, 255); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteI64(p.SourceTargetID); err != nil { + if err := p.BaseResp.Write(oprot); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { goto WriteFieldEndError } return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) -} -func (p *MockEvalTargetOutputRequest) writeField3(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("eval_target_version", thrift.STRING, 3); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteString(p.EvalTargetVersion); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) -} -func (p *MockEvalTargetOutputRequest) writeField4(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("target_type", thrift.I32, 4); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteI32(int32(p.TargetType)); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 4 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) -} -func (p *MockEvalTargetOutputRequest) writeField255(oprot thrift.TProtocol) (err error) { - if p.IsSetBase() { - if err = oprot.WriteFieldBegin("Base", thrift.STRUCT, 255); err != nil { - goto WriteFieldBeginError - } - if err := p.Base.Write(oprot); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - } - return nil WriteFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) } -func (p *MockEvalTargetOutputRequest) String() string { +func (p *DebugEvalTargetResponse) String() string { if p == nil { return "" } - return fmt.Sprintf("MockEvalTargetOutputRequest(%+v)", *p) + return fmt.Sprintf("DebugEvalTargetResponse(%+v)", *p) } -func (p *MockEvalTargetOutputRequest) DeepEqual(ano *MockEvalTargetOutputRequest) bool { +func (p *DebugEvalTargetResponse) DeepEqual(ano *DebugEvalTargetResponse) bool { if p == ano { return true } else if p == nil || ano == nil { return false } - if !p.Field1DeepEqual(ano.WorkspaceID) { - return false - } - if !p.Field2DeepEqual(ano.SourceTargetID) { - return false - } - if !p.Field3DeepEqual(ano.EvalTargetVersion) { - return false - } - if !p.Field4DeepEqual(ano.TargetType) { + if !p.Field1DeepEqual(ano.EvalTargetRecord) { return false } - if !p.Field255DeepEqual(ano.Base) { + if !p.Field255DeepEqual(ano.BaseResp) { return false } return true } -func (p *MockEvalTargetOutputRequest) Field1DeepEqual(src int64) bool { +func (p *DebugEvalTargetResponse) Field1DeepEqual(src *eval_target.EvalTargetRecord) bool { - if p.WorkspaceID != src { + if !p.EvalTargetRecord.DeepEqual(src) { return false } return true } -func (p *MockEvalTargetOutputRequest) Field2DeepEqual(src int64) bool { +func (p *DebugEvalTargetResponse) Field255DeepEqual(src *base.BaseResp) bool { - if p.SourceTargetID != src { + if !p.BaseResp.DeepEqual(src) { return false } return true } -func (p *MockEvalTargetOutputRequest) Field3DeepEqual(src string) bool { - if strings.Compare(p.EvalTargetVersion, src) != 0 { - return false - } - return true +type AsyncDebugEvalTargetRequest struct { + WorkspaceID *int64 `thrift:"workspace_id,1,optional" frugal:"1,optional,i64" json:"workspace_id" form:"workspace_id" query:"workspace_id"` + // 类型 + EvalTargetType *eval_target.EvalTargetType `thrift:"eval_target_type,2,optional" frugal:"2,optional,EvalTargetType" form:"eval_target_type" json:"eval_target_type,omitempty" query:"eval_target_type"` + // 执行参数:如果type=6,则传spi request json序列化结果 + Param *string `thrift:"param,10,optional" frugal:"10,optional,string" form:"param" json:"param,omitempty" query:"param"` + // 动态参数 + TargetRuntimeParam *common.RuntimeParam `thrift:"target_runtime_param,11,optional" frugal:"11,optional,common.RuntimeParam" form:"target_runtime_param" json:"target_runtime_param,omitempty" query:"target_runtime_param"` + // 环境 + Env *string `thrift:"env,12,optional" frugal:"12,optional,string" form:"env" json:"env,omitempty" query:"env"` + // 如果type=6,需要前端传入自定义服务相关信息 + CustomRPCServer *eval_target.CustomRPCServer `thrift:"custom_rpc_server,50,optional" frugal:"50,optional,eval_target.CustomRPCServer" form:"custom_rpc_server" json:"custom_rpc_server,omitempty" query:"custom_rpc_server"` + Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"Base" json:"Base,omitempty" query:"Base"` } -func (p *MockEvalTargetOutputRequest) Field4DeepEqual(src eval_target.EvalTargetType) bool { - if p.TargetType != src { - return false - } - return true +func NewAsyncDebugEvalTargetRequest() *AsyncDebugEvalTargetRequest { + return &AsyncDebugEvalTargetRequest{} } -func (p *MockEvalTargetOutputRequest) Field255DeepEqual(src *base.Base) bool { - if !p.Base.DeepEqual(src) { - return false +func (p *AsyncDebugEvalTargetRequest) InitDefault() { +} + +var AsyncDebugEvalTargetRequest_WorkspaceID_DEFAULT int64 + +func (p *AsyncDebugEvalTargetRequest) GetWorkspaceID() (v int64) { + if p == nil { + return } - return true + if !p.IsSetWorkspaceID() { + return AsyncDebugEvalTargetRequest_WorkspaceID_DEFAULT + } + return *p.WorkspaceID } -type AsyncDebugEvalTargetResponse struct { - InvokeID int64 `thrift:"invoke_id,1,required" frugal:"1,required,i64" json:"invoke_id" form:"invoke_id,required" query:"invoke_id,required"` - Callee *string `thrift:"callee,2,optional" frugal:"2,optional,string" form:"callee" json:"callee,omitempty" query:"callee"` - BaseResp *base.BaseResp `thrift:"BaseResp,255" frugal:"255,default,base.BaseResp" form:"BaseResp" json:"BaseResp" query:"BaseResp"` +var AsyncDebugEvalTargetRequest_EvalTargetType_DEFAULT eval_target.EvalTargetType + +func (p *AsyncDebugEvalTargetRequest) GetEvalTargetType() (v eval_target.EvalTargetType) { + if p == nil { + return + } + if !p.IsSetEvalTargetType() { + return AsyncDebugEvalTargetRequest_EvalTargetType_DEFAULT + } + return *p.EvalTargetType } -func NewAsyncDebugEvalTargetResponse() *AsyncDebugEvalTargetResponse { - return &AsyncDebugEvalTargetResponse{} +var AsyncDebugEvalTargetRequest_Param_DEFAULT string + +func (p *AsyncDebugEvalTargetRequest) GetParam() (v string) { + if p == nil { + return + } + if !p.IsSetParam() { + return AsyncDebugEvalTargetRequest_Param_DEFAULT + } + return *p.Param } -func (p *AsyncDebugEvalTargetResponse) InitDefault() { +var AsyncDebugEvalTargetRequest_TargetRuntimeParam_DEFAULT *common.RuntimeParam + +func (p *AsyncDebugEvalTargetRequest) GetTargetRuntimeParam() (v *common.RuntimeParam) { + if p == nil { + return + } + if !p.IsSetTargetRuntimeParam() { + return AsyncDebugEvalTargetRequest_TargetRuntimeParam_DEFAULT + } + return p.TargetRuntimeParam } -func (p *AsyncDebugEvalTargetResponse) GetInvokeID() (v int64) { - if p != nil { - return p.InvokeID +var AsyncDebugEvalTargetRequest_Env_DEFAULT string + +func (p *AsyncDebugEvalTargetRequest) GetEnv() (v string) { + if p == nil { + return } - return + if !p.IsSetEnv() { + return AsyncDebugEvalTargetRequest_Env_DEFAULT + } + return *p.Env } -var AsyncDebugEvalTargetResponse_Callee_DEFAULT string +var AsyncDebugEvalTargetRequest_CustomRPCServer_DEFAULT *eval_target.CustomRPCServer -func (p *AsyncDebugEvalTargetResponse) GetCallee() (v string) { +func (p *AsyncDebugEvalTargetRequest) GetCustomRPCServer() (v *eval_target.CustomRPCServer) { if p == nil { return } - if !p.IsSetCallee() { - return AsyncDebugEvalTargetResponse_Callee_DEFAULT + if !p.IsSetCustomRPCServer() { + return AsyncDebugEvalTargetRequest_CustomRPCServer_DEFAULT } - return *p.Callee + return p.CustomRPCServer } -var AsyncDebugEvalTargetResponse_BaseResp_DEFAULT *base.BaseResp +var AsyncDebugEvalTargetRequest_Base_DEFAULT *base.Base -func (p *AsyncDebugEvalTargetResponse) GetBaseResp() (v *base.BaseResp) { +func (p *AsyncDebugEvalTargetRequest) GetBase() (v *base.Base) { if p == nil { return } - if !p.IsSetBaseResp() { - return AsyncDebugEvalTargetResponse_BaseResp_DEFAULT + if !p.IsSetBase() { + return AsyncDebugEvalTargetRequest_Base_DEFAULT } - return p.BaseResp + return p.Base } -func (p *AsyncDebugEvalTargetResponse) SetInvokeID(val int64) { - p.InvokeID = val +func (p *AsyncDebugEvalTargetRequest) SetWorkspaceID(val *int64) { + p.WorkspaceID = val } -func (p *AsyncDebugEvalTargetResponse) SetCallee(val *string) { - p.Callee = val +func (p *AsyncDebugEvalTargetRequest) SetEvalTargetType(val *eval_target.EvalTargetType) { + p.EvalTargetType = val } -func (p *AsyncDebugEvalTargetResponse) SetBaseResp(val *base.BaseResp) { - p.BaseResp = val +func (p *AsyncDebugEvalTargetRequest) SetParam(val *string) { + p.Param = val +} +func (p *AsyncDebugEvalTargetRequest) SetTargetRuntimeParam(val *common.RuntimeParam) { + p.TargetRuntimeParam = val +} +func (p *AsyncDebugEvalTargetRequest) SetEnv(val *string) { + p.Env = val +} +func (p *AsyncDebugEvalTargetRequest) SetCustomRPCServer(val *eval_target.CustomRPCServer) { + p.CustomRPCServer = val +} +func (p *AsyncDebugEvalTargetRequest) SetBase(val *base.Base) { + p.Base = val } -var fieldIDToName_AsyncDebugEvalTargetResponse = map[int16]string{ - 1: "invoke_id", - 2: "callee", - 255: "BaseResp", +var fieldIDToName_AsyncDebugEvalTargetRequest = map[int16]string{ + 1: "workspace_id", + 2: "eval_target_type", + 10: "param", + 11: "target_runtime_param", + 12: "env", + 50: "custom_rpc_server", + 255: "Base", } -func (p *AsyncDebugEvalTargetResponse) IsSetCallee() bool { - return p.Callee != nil +func (p *AsyncDebugEvalTargetRequest) IsSetWorkspaceID() bool { + return p.WorkspaceID != nil } -func (p *AsyncDebugEvalTargetResponse) IsSetBaseResp() bool { - return p.BaseResp != nil +func (p *AsyncDebugEvalTargetRequest) IsSetEvalTargetType() bool { + return p.EvalTargetType != nil } -func (p *AsyncDebugEvalTargetResponse) Read(iprot thrift.TProtocol) (err error) { +func (p *AsyncDebugEvalTargetRequest) IsSetParam() bool { + return p.Param != nil +} + +func (p *AsyncDebugEvalTargetRequest) IsSetTargetRuntimeParam() bool { + return p.TargetRuntimeParam != nil +} + +func (p *AsyncDebugEvalTargetRequest) IsSetEnv() bool { + return p.Env != nil +} + +func (p *AsyncDebugEvalTargetRequest) IsSetCustomRPCServer() bool { + return p.CustomRPCServer != nil +} + +func (p *AsyncDebugEvalTargetRequest) IsSetBase() bool { + return p.Base != nil +} + +func (p *AsyncDebugEvalTargetRequest) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 - var issetInvokeID bool = false if _, err = iprot.ReadStructBegin(); err != nil { goto ReadStructBeginError @@ -12920,18 +12737,49 @@ func (p *AsyncDebugEvalTargetResponse) Read(iprot thrift.TProtocol) (err error) if err = p.ReadField1(iprot); err != nil { goto ReadFieldError } - issetInvokeID = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } case 2: - if fieldTypeId == thrift.STRING { + if fieldTypeId == thrift.I32 { if err = p.ReadField2(iprot); err != nil { goto ReadFieldError } } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 10: + if fieldTypeId == thrift.STRING { + if err = p.ReadField10(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 11: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField11(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 12: + if fieldTypeId == thrift.STRING { + if err = p.ReadField12(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 50: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField50(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } case 255: if fieldTypeId == thrift.STRUCT { if err = p.ReadField255(iprot); err != nil { @@ -12953,17 +12801,13 @@ func (p *AsyncDebugEvalTargetResponse) Read(iprot thrift.TProtocol) (err error) goto ReadStructEndError } - if !issetInvokeID { - fieldId = 1 - goto RequiredFieldNotSetError - } return nil ReadStructBeginError: return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_AsyncDebugEvalTargetResponse[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_AsyncDebugEvalTargetRequest[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -12971,22 +12815,32 @@ ReadFieldEndError: return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) -RequiredFieldNotSetError: - return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_AsyncDebugEvalTargetResponse[fieldId])) } -func (p *AsyncDebugEvalTargetResponse) ReadField1(iprot thrift.TProtocol) error { +func (p *AsyncDebugEvalTargetRequest) ReadField1(iprot thrift.TProtocol) error { - var _field int64 + var _field *int64 if v, err := iprot.ReadI64(); err != nil { return err } else { - _field = v + _field = &v } - p.InvokeID = _field + p.WorkspaceID = _field return nil } -func (p *AsyncDebugEvalTargetResponse) ReadField2(iprot thrift.TProtocol) error { +func (p *AsyncDebugEvalTargetRequest) ReadField2(iprot thrift.TProtocol) error { + + var _field *eval_target.EvalTargetType + if v, err := iprot.ReadI32(); err != nil { + return err + } else { + tmp := eval_target.EvalTargetType(v) + _field = &tmp + } + p.EvalTargetType = _field + return nil +} +func (p *AsyncDebugEvalTargetRequest) ReadField10(iprot thrift.TProtocol) error { var _field *string if v, err := iprot.ReadString(); err != nil { @@ -12994,21 +12848,48 @@ func (p *AsyncDebugEvalTargetResponse) ReadField2(iprot thrift.TProtocol) error } else { _field = &v } - p.Callee = _field + p.Param = _field return nil } -func (p *AsyncDebugEvalTargetResponse) ReadField255(iprot thrift.TProtocol) error { - _field := base.NewBaseResp() +func (p *AsyncDebugEvalTargetRequest) ReadField11(iprot thrift.TProtocol) error { + _field := common.NewRuntimeParam() if err := _field.Read(iprot); err != nil { return err } - p.BaseResp = _field + p.TargetRuntimeParam = _field return nil } +func (p *AsyncDebugEvalTargetRequest) ReadField12(iprot thrift.TProtocol) error { -func (p *AsyncDebugEvalTargetResponse) Write(oprot thrift.TProtocol) (err error) { + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.Env = _field + return nil +} +func (p *AsyncDebugEvalTargetRequest) ReadField50(iprot thrift.TProtocol) error { + _field := eval_target.NewCustomRPCServer() + if err := _field.Read(iprot); err != nil { + return err + } + p.CustomRPCServer = _field + return nil +} +func (p *AsyncDebugEvalTargetRequest) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBase() + if err := _field.Read(iprot); err != nil { + return err + } + p.Base = _field + return nil +} + +func (p *AsyncDebugEvalTargetRequest) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("AsyncDebugEvalTargetResponse"); err != nil { + if err = oprot.WriteStructBegin("AsyncDebugEvalTargetRequest"); err != nil { goto WriteStructBeginError } if p != nil { @@ -13020,6 +12901,22 @@ func (p *AsyncDebugEvalTargetResponse) Write(oprot thrift.TProtocol) (err error) fieldId = 2 goto WriteFieldError } + if err = p.writeField10(oprot); err != nil { + fieldId = 10 + goto WriteFieldError + } + if err = p.writeField11(oprot); err != nil { + fieldId = 11 + goto WriteFieldError + } + if err = p.writeField12(oprot); err != nil { + fieldId = 12 + goto WriteFieldError + } + if err = p.writeField50(oprot); err != nil { + fieldId = 50 + goto WriteFieldError + } if err = p.writeField255(oprot); err != nil { fieldId = 255 goto WriteFieldError @@ -13042,15 +12939,17 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *AsyncDebugEvalTargetResponse) writeField1(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("invoke_id", thrift.I64, 1); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteI64(p.InvokeID); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError +func (p *AsyncDebugEvalTargetRequest) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetWorkspaceID() { + if err = oprot.WriteFieldBegin("workspace_id", thrift.I64, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(*p.WorkspaceID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } } return nil WriteFieldBeginError: @@ -13058,12 +12957,12 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *AsyncDebugEvalTargetResponse) writeField2(oprot thrift.TProtocol) (err error) { - if p.IsSetCallee() { - if err = oprot.WriteFieldBegin("callee", thrift.STRING, 2); err != nil { +func (p *AsyncDebugEvalTargetRequest) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetEvalTargetType() { + if err = oprot.WriteFieldBegin("eval_target_type", thrift.I32, 2); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteString(*p.Callee); err != nil { + if err := oprot.WriteI32(int32(*p.EvalTargetType)); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -13076,15 +12975,89 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) } -func (p *AsyncDebugEvalTargetResponse) writeField255(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("BaseResp", thrift.STRUCT, 255); err != nil { - goto WriteFieldBeginError +func (p *AsyncDebugEvalTargetRequest) writeField10(oprot thrift.TProtocol) (err error) { + if p.IsSetParam() { + if err = oprot.WriteFieldBegin("param", thrift.STRING, 10); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.Param); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } } - if err := p.BaseResp.Write(oprot); err != nil { - return err + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 10 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 10 end error: ", p), err) +} +func (p *AsyncDebugEvalTargetRequest) writeField11(oprot thrift.TProtocol) (err error) { + if p.IsSetTargetRuntimeParam() { + if err = oprot.WriteFieldBegin("target_runtime_param", thrift.STRUCT, 11); err != nil { + goto WriteFieldBeginError + } + if err := p.TargetRuntimeParam.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 11 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 11 end error: ", p), err) +} +func (p *AsyncDebugEvalTargetRequest) writeField12(oprot thrift.TProtocol) (err error) { + if p.IsSetEnv() { + if err = oprot.WriteFieldBegin("env", thrift.STRING, 12); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.Env); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 12 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 12 end error: ", p), err) +} +func (p *AsyncDebugEvalTargetRequest) writeField50(oprot thrift.TProtocol) (err error) { + if p.IsSetCustomRPCServer() { + if err = oprot.WriteFieldBegin("custom_rpc_server", thrift.STRUCT, 50); err != nil { + goto WriteFieldBeginError + } + if err := p.CustomRPCServer.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 50 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 50 end error: ", p), err) +} +func (p *AsyncDebugEvalTargetRequest) writeField255(oprot thrift.TProtocol) (err error) { + if p.IsSetBase() { + if err = oprot.WriteFieldBegin("Base", thrift.STRUCT, 255); err != nil { + goto WriteFieldBeginError + } + if err := p.Base.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } } return nil WriteFieldBeginError: @@ -13093,138 +13066,204 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) } -func (p *AsyncDebugEvalTargetResponse) String() string { +func (p *AsyncDebugEvalTargetRequest) String() string { if p == nil { return "" } - return fmt.Sprintf("AsyncDebugEvalTargetResponse(%+v)", *p) + return fmt.Sprintf("AsyncDebugEvalTargetRequest(%+v)", *p) } -func (p *AsyncDebugEvalTargetResponse) DeepEqual(ano *AsyncDebugEvalTargetResponse) bool { +func (p *AsyncDebugEvalTargetRequest) DeepEqual(ano *AsyncDebugEvalTargetRequest) bool { if p == ano { return true } else if p == nil || ano == nil { return false } - if !p.Field1DeepEqual(ano.InvokeID) { + if !p.Field1DeepEqual(ano.WorkspaceID) { return false } - if !p.Field2DeepEqual(ano.Callee) { + if !p.Field2DeepEqual(ano.EvalTargetType) { return false } - if !p.Field255DeepEqual(ano.BaseResp) { + if !p.Field10DeepEqual(ano.Param) { return false } - return true -} - -func (p *AsyncDebugEvalTargetResponse) Field1DeepEqual(src int64) bool { - - if p.InvokeID != src { + if !p.Field11DeepEqual(ano.TargetRuntimeParam) { return false } - return true -} -func (p *AsyncDebugEvalTargetResponse) Field2DeepEqual(src *string) bool { + if !p.Field12DeepEqual(ano.Env) { + return false + } + if !p.Field50DeepEqual(ano.CustomRPCServer) { + return false + } + if !p.Field255DeepEqual(ano.Base) { + return false + } + return true +} - if p.Callee == src { +func (p *AsyncDebugEvalTargetRequest) Field1DeepEqual(src *int64) bool { + + if p.WorkspaceID == src { return true - } else if p.Callee == nil || src == nil { + } else if p.WorkspaceID == nil || src == nil { return false } - if strings.Compare(*p.Callee, *src) != 0 { + if *p.WorkspaceID != *src { return false } return true } -func (p *AsyncDebugEvalTargetResponse) Field255DeepEqual(src *base.BaseResp) bool { +func (p *AsyncDebugEvalTargetRequest) Field2DeepEqual(src *eval_target.EvalTargetType) bool { - if !p.BaseResp.DeepEqual(src) { + if p.EvalTargetType == src { + return true + } else if p.EvalTargetType == nil || src == nil { + return false + } + if *p.EvalTargetType != *src { return false } return true } +func (p *AsyncDebugEvalTargetRequest) Field10DeepEqual(src *string) bool { -type MockEvalTargetOutputResponse struct { - EvalTarget *eval_target.EvalTarget `thrift:"eval_target,1,optional" frugal:"1,optional,eval_target.EvalTarget" form:"eval_target" json:"eval_target,omitempty" query:"eval_target"` - MockOutput map[string]string `thrift:"mock_output,2,optional" frugal:"2,optional,map" form:"mock_output" json:"mock_output,omitempty" query:"mock_output"` - BaseResp *base.BaseResp `thrift:"BaseResp,255" frugal:"255,default,base.BaseResp" form:"BaseResp" json:"BaseResp" query:"BaseResp"` + if p.Param == src { + return true + } else if p.Param == nil || src == nil { + return false + } + if strings.Compare(*p.Param, *src) != 0 { + return false + } + return true } +func (p *AsyncDebugEvalTargetRequest) Field11DeepEqual(src *common.RuntimeParam) bool { -func NewMockEvalTargetOutputResponse() *MockEvalTargetOutputResponse { - return &MockEvalTargetOutputResponse{} + if !p.TargetRuntimeParam.DeepEqual(src) { + return false + } + return true } +func (p *AsyncDebugEvalTargetRequest) Field12DeepEqual(src *string) bool { -func (p *MockEvalTargetOutputResponse) InitDefault() { + if p.Env == src { + return true + } else if p.Env == nil || src == nil { + return false + } + if strings.Compare(*p.Env, *src) != 0 { + return false + } + return true } +func (p *AsyncDebugEvalTargetRequest) Field50DeepEqual(src *eval_target.CustomRPCServer) bool { -var MockEvalTargetOutputResponse_EvalTarget_DEFAULT *eval_target.EvalTarget + if !p.CustomRPCServer.DeepEqual(src) { + return false + } + return true +} +func (p *AsyncDebugEvalTargetRequest) Field255DeepEqual(src *base.Base) bool { -func (p *MockEvalTargetOutputResponse) GetEvalTarget() (v *eval_target.EvalTarget) { - if p == nil { - return + if !p.Base.DeepEqual(src) { + return false } - if !p.IsSetEvalTarget() { - return MockEvalTargetOutputResponse_EvalTarget_DEFAULT + return true +} + +type MockEvalTargetOutputRequest struct { + WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" query:"workspace_id,required"` + // EvalTargetID参数实际上为SourceTargetID + SourceTargetID int64 `thrift:"source_target_id,2,required" frugal:"2,required,i64" json:"source_target_id" form:"source_target_id,required" query:"source_target_id,required"` + EvalTargetVersion string `thrift:"eval_target_version,3,required" frugal:"3,required,string" form:"eval_target_version,required" json:"eval_target_version,required" query:"eval_target_version,required"` + TargetType eval_target.EvalTargetType `thrift:"target_type,4,required" frugal:"4,required,EvalTargetType" form:"target_type,required" json:"target_type,required" query:"target_type,required"` + Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"Base" json:"Base,omitempty" query:"Base"` +} + +func NewMockEvalTargetOutputRequest() *MockEvalTargetOutputRequest { + return &MockEvalTargetOutputRequest{} +} + +func (p *MockEvalTargetOutputRequest) InitDefault() { +} + +func (p *MockEvalTargetOutputRequest) GetWorkspaceID() (v int64) { + if p != nil { + return p.WorkspaceID } - return p.EvalTarget + return } -var MockEvalTargetOutputResponse_MockOutput_DEFAULT map[string]string +func (p *MockEvalTargetOutputRequest) GetSourceTargetID() (v int64) { + if p != nil { + return p.SourceTargetID + } + return +} -func (p *MockEvalTargetOutputResponse) GetMockOutput() (v map[string]string) { - if p == nil { - return +func (p *MockEvalTargetOutputRequest) GetEvalTargetVersion() (v string) { + if p != nil { + return p.EvalTargetVersion } - if !p.IsSetMockOutput() { - return MockEvalTargetOutputResponse_MockOutput_DEFAULT + return +} + +func (p *MockEvalTargetOutputRequest) GetTargetType() (v eval_target.EvalTargetType) { + if p != nil { + return p.TargetType } - return p.MockOutput + return } -var MockEvalTargetOutputResponse_BaseResp_DEFAULT *base.BaseResp +var MockEvalTargetOutputRequest_Base_DEFAULT *base.Base -func (p *MockEvalTargetOutputResponse) GetBaseResp() (v *base.BaseResp) { +func (p *MockEvalTargetOutputRequest) GetBase() (v *base.Base) { if p == nil { return } - if !p.IsSetBaseResp() { - return MockEvalTargetOutputResponse_BaseResp_DEFAULT + if !p.IsSetBase() { + return MockEvalTargetOutputRequest_Base_DEFAULT } - return p.BaseResp + return p.Base } -func (p *MockEvalTargetOutputResponse) SetEvalTarget(val *eval_target.EvalTarget) { - p.EvalTarget = val +func (p *MockEvalTargetOutputRequest) SetWorkspaceID(val int64) { + p.WorkspaceID = val } -func (p *MockEvalTargetOutputResponse) SetMockOutput(val map[string]string) { - p.MockOutput = val +func (p *MockEvalTargetOutputRequest) SetSourceTargetID(val int64) { + p.SourceTargetID = val } -func (p *MockEvalTargetOutputResponse) SetBaseResp(val *base.BaseResp) { - p.BaseResp = val +func (p *MockEvalTargetOutputRequest) SetEvalTargetVersion(val string) { + p.EvalTargetVersion = val } - -var fieldIDToName_MockEvalTargetOutputResponse = map[int16]string{ - 1: "eval_target", - 2: "mock_output", - 255: "BaseResp", +func (p *MockEvalTargetOutputRequest) SetTargetType(val eval_target.EvalTargetType) { + p.TargetType = val } - -func (p *MockEvalTargetOutputResponse) IsSetEvalTarget() bool { - return p.EvalTarget != nil +func (p *MockEvalTargetOutputRequest) SetBase(val *base.Base) { + p.Base = val } -func (p *MockEvalTargetOutputResponse) IsSetMockOutput() bool { - return p.MockOutput != nil +var fieldIDToName_MockEvalTargetOutputRequest = map[int16]string{ + 1: "workspace_id", + 2: "source_target_id", + 3: "eval_target_version", + 4: "target_type", + 255: "Base", } -func (p *MockEvalTargetOutputResponse) IsSetBaseResp() bool { - return p.BaseResp != nil +func (p *MockEvalTargetOutputRequest) IsSetBase() bool { + return p.Base != nil } -func (p *MockEvalTargetOutputResponse) Read(iprot thrift.TProtocol) (err error) { +func (p *MockEvalTargetOutputRequest) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 + var issetWorkspaceID bool = false + var issetSourceTargetID bool = false + var issetEvalTargetVersion bool = false + var issetTargetType bool = false if _, err = iprot.ReadStructBegin(); err != nil { goto ReadStructBeginError @@ -13241,18 +13280,38 @@ func (p *MockEvalTargetOutputResponse) Read(iprot thrift.TProtocol) (err error) switch fieldId { case 1: - if fieldTypeId == thrift.STRUCT { + if fieldTypeId == thrift.I64 { if err = p.ReadField1(iprot); err != nil { goto ReadFieldError } + issetWorkspaceID = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } case 2: - if fieldTypeId == thrift.MAP { + if fieldTypeId == thrift.I64 { if err = p.ReadField2(iprot); err != nil { goto ReadFieldError } + issetSourceTargetID = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 3: + if fieldTypeId == thrift.STRING { + if err = p.ReadField3(iprot); err != nil { + goto ReadFieldError + } + issetEvalTargetVersion = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 4: + if fieldTypeId == thrift.I32 { + if err = p.ReadField4(iprot); err != nil { + goto ReadFieldError + } + issetTargetType = true } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } @@ -13277,13 +13336,32 @@ func (p *MockEvalTargetOutputResponse) Read(iprot thrift.TProtocol) (err error) goto ReadStructEndError } + if !issetWorkspaceID { + fieldId = 1 + goto RequiredFieldNotSetError + } + + if !issetSourceTargetID { + fieldId = 2 + goto RequiredFieldNotSetError + } + + if !issetEvalTargetVersion { + fieldId = 3 + goto RequiredFieldNotSetError + } + + if !issetTargetType { + fieldId = 4 + goto RequiredFieldNotSetError + } return nil ReadStructBeginError: return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_MockEvalTargetOutputResponse[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_MockEvalTargetOutputRequest[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -13291,57 +13369,66 @@ ReadFieldEndError: return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_MockEvalTargetOutputRequest[fieldId])) } -func (p *MockEvalTargetOutputResponse) ReadField1(iprot thrift.TProtocol) error { - _field := eval_target.NewEvalTarget() - if err := _field.Read(iprot); err != nil { +func (p *MockEvalTargetOutputRequest) ReadField1(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { return err + } else { + _field = v } - p.EvalTarget = _field + p.WorkspaceID = _field return nil } -func (p *MockEvalTargetOutputResponse) ReadField2(iprot thrift.TProtocol) error { - _, _, size, err := iprot.ReadMapBegin() - if err != nil { +func (p *MockEvalTargetOutputRequest) ReadField2(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { return err + } else { + _field = v } - _field := make(map[string]string, size) - for i := 0; i < size; i++ { - var _key string - if v, err := iprot.ReadString(); err != nil { - return err - } else { - _key = v - } + p.SourceTargetID = _field + return nil +} +func (p *MockEvalTargetOutputRequest) ReadField3(iprot thrift.TProtocol) error { - var _val string - if v, err := iprot.ReadString(); err != nil { - return err - } else { - _val = v - } - - _field[_key] = _val + var _field string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = v } - if err := iprot.ReadMapEnd(); err != nil { + p.EvalTargetVersion = _field + return nil +} +func (p *MockEvalTargetOutputRequest) ReadField4(iprot thrift.TProtocol) error { + + var _field eval_target.EvalTargetType + if v, err := iprot.ReadI32(); err != nil { return err + } else { + _field = eval_target.EvalTargetType(v) } - p.MockOutput = _field + p.TargetType = _field return nil } -func (p *MockEvalTargetOutputResponse) ReadField255(iprot thrift.TProtocol) error { - _field := base.NewBaseResp() +func (p *MockEvalTargetOutputRequest) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBase() if err := _field.Read(iprot); err != nil { return err } - p.BaseResp = _field + p.Base = _field return nil } -func (p *MockEvalTargetOutputResponse) Write(oprot thrift.TProtocol) (err error) { +func (p *MockEvalTargetOutputRequest) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("MockEvalTargetOutputResponse"); err != nil { + if err = oprot.WriteStructBegin("MockEvalTargetOutputRequest"); err != nil { goto WriteStructBeginError } if p != nil { @@ -13353,6 +13440,14 @@ func (p *MockEvalTargetOutputResponse) Write(oprot thrift.TProtocol) (err error) fieldId = 2 goto WriteFieldError } + if err = p.writeField3(oprot); err != nil { + fieldId = 3 + goto WriteFieldError + } + if err = p.writeField4(oprot); err != nil { + fieldId = 4 + goto WriteFieldError + } if err = p.writeField255(oprot); err != nil { fieldId = 255 goto WriteFieldError @@ -13375,17 +13470,15 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *MockEvalTargetOutputResponse) writeField1(oprot thrift.TProtocol) (err error) { - if p.IsSetEvalTarget() { - if err = oprot.WriteFieldBegin("eval_target", thrift.STRUCT, 1); err != nil { - goto WriteFieldBeginError - } - if err := p.EvalTarget.Write(oprot); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } +func (p *MockEvalTargetOutputRequest) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("workspace_id", thrift.I64, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.WorkspaceID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError } return nil WriteFieldBeginError: @@ -13393,28 +13486,15 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *MockEvalTargetOutputResponse) writeField2(oprot thrift.TProtocol) (err error) { - if p.IsSetMockOutput() { - if err = oprot.WriteFieldBegin("mock_output", thrift.MAP, 2); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteMapBegin(thrift.STRING, thrift.STRING, len(p.MockOutput)); err != nil { - return err - } - for k, v := range p.MockOutput { - if err := oprot.WriteString(k); err != nil { - return err - } - if err := oprot.WriteString(v); err != nil { - return err - } - } - if err := oprot.WriteMapEnd(); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } +func (p *MockEvalTargetOutputRequest) writeField2(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("source_target_id", thrift.I64, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.SourceTargetID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError } return nil WriteFieldBeginError: @@ -13422,148 +13502,862 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) } -func (p *MockEvalTargetOutputResponse) writeField255(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("BaseResp", thrift.STRUCT, 255); err != nil { +func (p *MockEvalTargetOutputRequest) writeField3(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("eval_target_version", thrift.STRING, 3); err != nil { goto WriteFieldBeginError } - if err := p.BaseResp.Write(oprot); err != nil { + if err := oprot.WriteString(p.EvalTargetVersion); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} +func (p *MockEvalTargetOutputRequest) writeField4(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("target_type", thrift.I32, 4); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI32(int32(p.TargetType)); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { goto WriteFieldEndError } return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) +} +func (p *MockEvalTargetOutputRequest) writeField255(oprot thrift.TProtocol) (err error) { + if p.IsSetBase() { + if err = oprot.WriteFieldBegin("Base", thrift.STRUCT, 255); err != nil { + goto WriteFieldBeginError + } + if err := p.Base.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil WriteFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) } -func (p *MockEvalTargetOutputResponse) String() string { +func (p *MockEvalTargetOutputRequest) String() string { if p == nil { return "" } - return fmt.Sprintf("MockEvalTargetOutputResponse(%+v)", *p) + return fmt.Sprintf("MockEvalTargetOutputRequest(%+v)", *p) } -func (p *MockEvalTargetOutputResponse) DeepEqual(ano *MockEvalTargetOutputResponse) bool { +func (p *MockEvalTargetOutputRequest) DeepEqual(ano *MockEvalTargetOutputRequest) bool { if p == ano { return true } else if p == nil || ano == nil { return false } - if !p.Field1DeepEqual(ano.EvalTarget) { + if !p.Field1DeepEqual(ano.WorkspaceID) { return false } - if !p.Field2DeepEqual(ano.MockOutput) { + if !p.Field2DeepEqual(ano.SourceTargetID) { return false } - if !p.Field255DeepEqual(ano.BaseResp) { + if !p.Field3DeepEqual(ano.EvalTargetVersion) { + return false + } + if !p.Field4DeepEqual(ano.TargetType) { + return false + } + if !p.Field255DeepEqual(ano.Base) { return false } return true } -func (p *MockEvalTargetOutputResponse) Field1DeepEqual(src *eval_target.EvalTarget) bool { +func (p *MockEvalTargetOutputRequest) Field1DeepEqual(src int64) bool { - if !p.EvalTarget.DeepEqual(src) { + if p.WorkspaceID != src { return false } return true } -func (p *MockEvalTargetOutputResponse) Field2DeepEqual(src map[string]string) bool { +func (p *MockEvalTargetOutputRequest) Field2DeepEqual(src int64) bool { - if len(p.MockOutput) != len(src) { + if p.SourceTargetID != src { return false } - for k, v := range p.MockOutput { - _src := src[k] - if strings.Compare(v, _src) != 0 { - return false - } - } return true } -func (p *MockEvalTargetOutputResponse) Field255DeepEqual(src *base.BaseResp) bool { +func (p *MockEvalTargetOutputRequest) Field3DeepEqual(src string) bool { - if !p.BaseResp.DeepEqual(src) { + if strings.Compare(p.EvalTargetVersion, src) != 0 { return false } return true } +func (p *MockEvalTargetOutputRequest) Field4DeepEqual(src eval_target.EvalTargetType) bool { -type EvalTargetService interface { - // 创建评测对象 - CreateEvalTarget(ctx context.Context, request *CreateEvalTargetRequest) (r *CreateEvalTargetResponse, err error) - // 根据source target获取评测对象信息 - BatchGetEvalTargetsBySource(ctx context.Context, request *BatchGetEvalTargetsBySourceRequest) (r *BatchGetEvalTargetsBySourceResponse, err error) - // 获取评测对象+版本 - GetEvalTargetVersion(ctx context.Context, request *GetEvalTargetVersionRequest) (r *GetEvalTargetVersionResponse, err error) - // 批量获取+版本 - BatchGetEvalTargetVersions(ctx context.Context, request *BatchGetEvalTargetVersionsRequest) (r *BatchGetEvalTargetVersionsResponse, err error) - // Source评测对象列表 - ListSourceEvalTargets(ctx context.Context, request *ListSourceEvalTargetsRequest) (r *ListSourceEvalTargetsResponse, err error) - // Source评测对象版本列表 - ListSourceEvalTargetVersions(ctx context.Context, request *ListSourceEvalTargetVersionsRequest) (r *ListSourceEvalTargetVersionsResponse, err error) - - BatchGetSourceEvalTargets(ctx context.Context, request *BatchGetSourceEvalTargetsRequest) (r *BatchGetSourceEvalTargetsResponse, err error) - // 搜索自定义评测对象 - SearchCustomEvalTarget(ctx context.Context, req *SearchCustomEvalTargetRequest) (r *SearchCustomEvalTargetResponse, err error) - // 执行 - ExecuteEvalTarget(ctx context.Context, request *ExecuteEvalTargetRequest) (r *ExecuteEvalTargetResponse, err error) - - AsyncExecuteEvalTarget(ctx context.Context, request *AsyncExecuteEvalTargetRequest) (r *AsyncExecuteEvalTargetResponse, err error) - - GetEvalTargetRecord(ctx context.Context, request *GetEvalTargetRecordRequest) (r *GetEvalTargetRecordResponse, err error) + if p.TargetType != src { + return false + } + return true +} +func (p *MockEvalTargetOutputRequest) Field255DeepEqual(src *base.Base) bool { - BatchGetEvalTargetRecords(ctx context.Context, request *BatchGetEvalTargetRecordsRequest) (r *BatchGetEvalTargetRecordsResponse, err error) - // 按需查询 output 中大对象的完整内容 - GetEvalTargetOutputFieldContent(ctx context.Context, request *GetEvalTargetOutputFieldContentRequest) (r *GetEvalTargetOutputFieldContentResponse, err error) - // debug - DebugEvalTarget(ctx context.Context, request *DebugEvalTargetRequest) (r *DebugEvalTargetResponse, err error) + if !p.Base.DeepEqual(src) { + return false + } + return true +} - AsyncDebugEvalTarget(ctx context.Context, request *AsyncDebugEvalTargetRequest) (r *AsyncDebugEvalTargetResponse, err error) - // mock输出数据 - MockEvalTargetOutput(ctx context.Context, request *MockEvalTargetOutputRequest) (r *MockEvalTargetOutputResponse, err error) +type AsyncDebugEvalTargetResponse struct { + InvokeID int64 `thrift:"invoke_id,1,required" frugal:"1,required,i64" json:"invoke_id" form:"invoke_id,required" query:"invoke_id,required"` + Callee *string `thrift:"callee,2,optional" frugal:"2,optional,string" form:"callee" json:"callee,omitempty" query:"callee"` + BaseResp *base.BaseResp `thrift:"BaseResp,255" frugal:"255,default,base.BaseResp" form:"BaseResp" json:"BaseResp" query:"BaseResp"` } -type EvalTargetServiceClient struct { - c thrift.TClient +func NewAsyncDebugEvalTargetResponse() *AsyncDebugEvalTargetResponse { + return &AsyncDebugEvalTargetResponse{} } -func NewEvalTargetServiceClientFactory(t thrift.TTransport, f thrift.TProtocolFactory) *EvalTargetServiceClient { - return &EvalTargetServiceClient{ - c: thrift.NewTStandardClient(f.GetProtocol(t), f.GetProtocol(t)), - } +func (p *AsyncDebugEvalTargetResponse) InitDefault() { } -func NewEvalTargetServiceClientProtocol(t thrift.TTransport, iprot thrift.TProtocol, oprot thrift.TProtocol) *EvalTargetServiceClient { - return &EvalTargetServiceClient{ - c: thrift.NewTStandardClient(iprot, oprot), +func (p *AsyncDebugEvalTargetResponse) GetInvokeID() (v int64) { + if p != nil { + return p.InvokeID } + return } -func NewEvalTargetServiceClient(c thrift.TClient) *EvalTargetServiceClient { - return &EvalTargetServiceClient{ - c: c, +var AsyncDebugEvalTargetResponse_Callee_DEFAULT string + +func (p *AsyncDebugEvalTargetResponse) GetCallee() (v string) { + if p == nil { + return + } + if !p.IsSetCallee() { + return AsyncDebugEvalTargetResponse_Callee_DEFAULT } + return *p.Callee } -func (p *EvalTargetServiceClient) Client_() thrift.TClient { - return p.c -} +var AsyncDebugEvalTargetResponse_BaseResp_DEFAULT *base.BaseResp -func (p *EvalTargetServiceClient) CreateEvalTarget(ctx context.Context, request *CreateEvalTargetRequest) (r *CreateEvalTargetResponse, err error) { - var _args EvalTargetServiceCreateEvalTargetArgs - _args.Request = request - var _result EvalTargetServiceCreateEvalTargetResult - if err = p.Client_().Call(ctx, "CreateEvalTarget", &_args, &_result); err != nil { +func (p *AsyncDebugEvalTargetResponse) GetBaseResp() (v *base.BaseResp) { + if p == nil { return } - return _result.GetSuccess(), nil -} -func (p *EvalTargetServiceClient) BatchGetEvalTargetsBySource(ctx context.Context, request *BatchGetEvalTargetsBySourceRequest) (r *BatchGetEvalTargetsBySourceResponse, err error) { + if !p.IsSetBaseResp() { + return AsyncDebugEvalTargetResponse_BaseResp_DEFAULT + } + return p.BaseResp +} +func (p *AsyncDebugEvalTargetResponse) SetInvokeID(val int64) { + p.InvokeID = val +} +func (p *AsyncDebugEvalTargetResponse) SetCallee(val *string) { + p.Callee = val +} +func (p *AsyncDebugEvalTargetResponse) SetBaseResp(val *base.BaseResp) { + p.BaseResp = val +} + +var fieldIDToName_AsyncDebugEvalTargetResponse = map[int16]string{ + 1: "invoke_id", + 2: "callee", + 255: "BaseResp", +} + +func (p *AsyncDebugEvalTargetResponse) IsSetCallee() bool { + return p.Callee != nil +} + +func (p *AsyncDebugEvalTargetResponse) IsSetBaseResp() bool { + return p.BaseResp != nil +} + +func (p *AsyncDebugEvalTargetResponse) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + var issetInvokeID bool = false + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + issetInvokeID = true + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.STRING { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 255: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField255(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + if !issetInvokeID { + fieldId = 1 + goto RequiredFieldNotSetError + } + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_AsyncDebugEvalTargetResponse[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +RequiredFieldNotSetError: + return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("required field %s is not set", fieldIDToName_AsyncDebugEvalTargetResponse[fieldId])) +} + +func (p *AsyncDebugEvalTargetResponse) ReadField1(iprot thrift.TProtocol) error { + + var _field int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = v + } + p.InvokeID = _field + return nil +} +func (p *AsyncDebugEvalTargetResponse) ReadField2(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.Callee = _field + return nil +} +func (p *AsyncDebugEvalTargetResponse) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBaseResp() + if err := _field.Read(iprot); err != nil { + return err + } + p.BaseResp = _field + return nil +} + +func (p *AsyncDebugEvalTargetResponse) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("AsyncDebugEvalTargetResponse"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField255(oprot); err != nil { + fieldId = 255 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *AsyncDebugEvalTargetResponse) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("invoke_id", thrift.I64, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.InvokeID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *AsyncDebugEvalTargetResponse) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetCallee() { + if err = oprot.WriteFieldBegin("callee", thrift.STRING, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.Callee); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *AsyncDebugEvalTargetResponse) writeField255(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("BaseResp", thrift.STRUCT, 255); err != nil { + goto WriteFieldBeginError + } + if err := p.BaseResp.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) +} + +func (p *AsyncDebugEvalTargetResponse) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("AsyncDebugEvalTargetResponse(%+v)", *p) + +} + +func (p *AsyncDebugEvalTargetResponse) DeepEqual(ano *AsyncDebugEvalTargetResponse) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.InvokeID) { + return false + } + if !p.Field2DeepEqual(ano.Callee) { + return false + } + if !p.Field255DeepEqual(ano.BaseResp) { + return false + } + return true +} + +func (p *AsyncDebugEvalTargetResponse) Field1DeepEqual(src int64) bool { + + if p.InvokeID != src { + return false + } + return true +} +func (p *AsyncDebugEvalTargetResponse) Field2DeepEqual(src *string) bool { + + if p.Callee == src { + return true + } else if p.Callee == nil || src == nil { + return false + } + if strings.Compare(*p.Callee, *src) != 0 { + return false + } + return true +} +func (p *AsyncDebugEvalTargetResponse) Field255DeepEqual(src *base.BaseResp) bool { + + if !p.BaseResp.DeepEqual(src) { + return false + } + return true +} + +type MockEvalTargetOutputResponse struct { + EvalTarget *eval_target.EvalTarget `thrift:"eval_target,1,optional" frugal:"1,optional,eval_target.EvalTarget" form:"eval_target" json:"eval_target,omitempty" query:"eval_target"` + MockOutput map[string]string `thrift:"mock_output,2,optional" frugal:"2,optional,map" form:"mock_output" json:"mock_output,omitempty" query:"mock_output"` + BaseResp *base.BaseResp `thrift:"BaseResp,255" frugal:"255,default,base.BaseResp" form:"BaseResp" json:"BaseResp" query:"BaseResp"` +} + +func NewMockEvalTargetOutputResponse() *MockEvalTargetOutputResponse { + return &MockEvalTargetOutputResponse{} +} + +func (p *MockEvalTargetOutputResponse) InitDefault() { +} + +var MockEvalTargetOutputResponse_EvalTarget_DEFAULT *eval_target.EvalTarget + +func (p *MockEvalTargetOutputResponse) GetEvalTarget() (v *eval_target.EvalTarget) { + if p == nil { + return + } + if !p.IsSetEvalTarget() { + return MockEvalTargetOutputResponse_EvalTarget_DEFAULT + } + return p.EvalTarget +} + +var MockEvalTargetOutputResponse_MockOutput_DEFAULT map[string]string + +func (p *MockEvalTargetOutputResponse) GetMockOutput() (v map[string]string) { + if p == nil { + return + } + if !p.IsSetMockOutput() { + return MockEvalTargetOutputResponse_MockOutput_DEFAULT + } + return p.MockOutput +} + +var MockEvalTargetOutputResponse_BaseResp_DEFAULT *base.BaseResp + +func (p *MockEvalTargetOutputResponse) GetBaseResp() (v *base.BaseResp) { + if p == nil { + return + } + if !p.IsSetBaseResp() { + return MockEvalTargetOutputResponse_BaseResp_DEFAULT + } + return p.BaseResp +} +func (p *MockEvalTargetOutputResponse) SetEvalTarget(val *eval_target.EvalTarget) { + p.EvalTarget = val +} +func (p *MockEvalTargetOutputResponse) SetMockOutput(val map[string]string) { + p.MockOutput = val +} +func (p *MockEvalTargetOutputResponse) SetBaseResp(val *base.BaseResp) { + p.BaseResp = val +} + +var fieldIDToName_MockEvalTargetOutputResponse = map[int16]string{ + 1: "eval_target", + 2: "mock_output", + 255: "BaseResp", +} + +func (p *MockEvalTargetOutputResponse) IsSetEvalTarget() bool { + return p.EvalTarget != nil +} + +func (p *MockEvalTargetOutputResponse) IsSetMockOutput() bool { + return p.MockOutput != nil +} + +func (p *MockEvalTargetOutputResponse) IsSetBaseResp() bool { + return p.BaseResp != nil +} + +func (p *MockEvalTargetOutputResponse) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.MAP { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 255: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField255(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_MockEvalTargetOutputResponse[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *MockEvalTargetOutputResponse) ReadField1(iprot thrift.TProtocol) error { + _field := eval_target.NewEvalTarget() + if err := _field.Read(iprot); err != nil { + return err + } + p.EvalTarget = _field + return nil +} +func (p *MockEvalTargetOutputResponse) ReadField2(iprot thrift.TProtocol) error { + _, _, size, err := iprot.ReadMapBegin() + if err != nil { + return err + } + _field := make(map[string]string, size) + for i := 0; i < size; i++ { + var _key string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _key = v + } + + var _val string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _val = v + } + + _field[_key] = _val + } + if err := iprot.ReadMapEnd(); err != nil { + return err + } + p.MockOutput = _field + return nil +} +func (p *MockEvalTargetOutputResponse) ReadField255(iprot thrift.TProtocol) error { + _field := base.NewBaseResp() + if err := _field.Read(iprot); err != nil { + return err + } + p.BaseResp = _field + return nil +} + +func (p *MockEvalTargetOutputResponse) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("MockEvalTargetOutputResponse"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField255(oprot); err != nil { + fieldId = 255 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *MockEvalTargetOutputResponse) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetEvalTarget() { + if err = oprot.WriteFieldBegin("eval_target", thrift.STRUCT, 1); err != nil { + goto WriteFieldBeginError + } + if err := p.EvalTarget.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *MockEvalTargetOutputResponse) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetMockOutput() { + if err = oprot.WriteFieldBegin("mock_output", thrift.MAP, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteMapBegin(thrift.STRING, thrift.STRING, len(p.MockOutput)); err != nil { + return err + } + for k, v := range p.MockOutput { + if err := oprot.WriteString(k); err != nil { + return err + } + if err := oprot.WriteString(v); err != nil { + return err + } + } + if err := oprot.WriteMapEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *MockEvalTargetOutputResponse) writeField255(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("BaseResp", thrift.STRUCT, 255); err != nil { + goto WriteFieldBeginError + } + if err := p.BaseResp.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 255 end error: ", p), err) +} + +func (p *MockEvalTargetOutputResponse) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("MockEvalTargetOutputResponse(%+v)", *p) + +} + +func (p *MockEvalTargetOutputResponse) DeepEqual(ano *MockEvalTargetOutputResponse) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.EvalTarget) { + return false + } + if !p.Field2DeepEqual(ano.MockOutput) { + return false + } + if !p.Field255DeepEqual(ano.BaseResp) { + return false + } + return true +} + +func (p *MockEvalTargetOutputResponse) Field1DeepEqual(src *eval_target.EvalTarget) bool { + + if !p.EvalTarget.DeepEqual(src) { + return false + } + return true +} +func (p *MockEvalTargetOutputResponse) Field2DeepEqual(src map[string]string) bool { + + if len(p.MockOutput) != len(src) { + return false + } + for k, v := range p.MockOutput { + _src := src[k] + if strings.Compare(v, _src) != 0 { + return false + } + } + return true +} +func (p *MockEvalTargetOutputResponse) Field255DeepEqual(src *base.BaseResp) bool { + + if !p.BaseResp.DeepEqual(src) { + return false + } + return true +} + +type EvalTargetService interface { + // 创建评测对象 + CreateEvalTarget(ctx context.Context, request *CreateEvalTargetRequest) (r *CreateEvalTargetResponse, err error) + // 根据source target获取评测对象信息 + BatchGetEvalTargetsBySource(ctx context.Context, request *BatchGetEvalTargetsBySourceRequest) (r *BatchGetEvalTargetsBySourceResponse, err error) + // 获取评测对象+版本 + GetEvalTargetVersion(ctx context.Context, request *GetEvalTargetVersionRequest) (r *GetEvalTargetVersionResponse, err error) + // 批量获取+版本 + BatchGetEvalTargetVersions(ctx context.Context, request *BatchGetEvalTargetVersionsRequest) (r *BatchGetEvalTargetVersionsResponse, err error) + // Source评测对象列表 + ListSourceEvalTargets(ctx context.Context, request *ListSourceEvalTargetsRequest) (r *ListSourceEvalTargetsResponse, err error) + // Source评测对象版本列表 + ListSourceEvalTargetVersions(ctx context.Context, request *ListSourceEvalTargetVersionsRequest) (r *ListSourceEvalTargetVersionsResponse, err error) + + BatchGetSourceEvalTargets(ctx context.Context, request *BatchGetSourceEvalTargetsRequest) (r *BatchGetSourceEvalTargetsResponse, err error) + // 获取Source评测对象版本的详情 + GetSourceEvalTargetVersion(ctx context.Context, request *GetSourceEvalTargetVersionRequest) (r *GetSourceEvalTargetVersionResponse, err error) + // 搜索自定义评测对象 + SearchCustomEvalTarget(ctx context.Context, req *SearchCustomEvalTargetRequest) (r *SearchCustomEvalTargetResponse, err error) + // 执行 + ExecuteEvalTarget(ctx context.Context, request *ExecuteEvalTargetRequest) (r *ExecuteEvalTargetResponse, err error) + + AsyncExecuteEvalTarget(ctx context.Context, request *AsyncExecuteEvalTargetRequest) (r *AsyncExecuteEvalTargetResponse, err error) + + GetEvalTargetRecord(ctx context.Context, request *GetEvalTargetRecordRequest) (r *GetEvalTargetRecordResponse, err error) + + BatchGetEvalTargetRecords(ctx context.Context, request *BatchGetEvalTargetRecordsRequest) (r *BatchGetEvalTargetRecordsResponse, err error) + // 按需查询 output 中大对象的完整内容 + GetEvalTargetOutputFieldContent(ctx context.Context, request *GetEvalTargetOutputFieldContentRequest) (r *GetEvalTargetOutputFieldContentResponse, err error) + // debug + DebugEvalTarget(ctx context.Context, request *DebugEvalTargetRequest) (r *DebugEvalTargetResponse, err error) + + AsyncDebugEvalTarget(ctx context.Context, request *AsyncDebugEvalTargetRequest) (r *AsyncDebugEvalTargetResponse, err error) + // mock输出数据 + MockEvalTargetOutput(ctx context.Context, request *MockEvalTargetOutputRequest) (r *MockEvalTargetOutputResponse, err error) +} + +type EvalTargetServiceClient struct { + c thrift.TClient +} + +func NewEvalTargetServiceClientFactory(t thrift.TTransport, f thrift.TProtocolFactory) *EvalTargetServiceClient { + return &EvalTargetServiceClient{ + c: thrift.NewTStandardClient(f.GetProtocol(t), f.GetProtocol(t)), + } +} + +func NewEvalTargetServiceClientProtocol(t thrift.TTransport, iprot thrift.TProtocol, oprot thrift.TProtocol) *EvalTargetServiceClient { + return &EvalTargetServiceClient{ + c: thrift.NewTStandardClient(iprot, oprot), + } +} + +func NewEvalTargetServiceClient(c thrift.TClient) *EvalTargetServiceClient { + return &EvalTargetServiceClient{ + c: c, + } +} + +func (p *EvalTargetServiceClient) Client_() thrift.TClient { + return p.c +} + +func (p *EvalTargetServiceClient) CreateEvalTarget(ctx context.Context, request *CreateEvalTargetRequest) (r *CreateEvalTargetResponse, err error) { + var _args EvalTargetServiceCreateEvalTargetArgs + _args.Request = request + var _result EvalTargetServiceCreateEvalTargetResult + if err = p.Client_().Call(ctx, "CreateEvalTarget", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *EvalTargetServiceClient) BatchGetEvalTargetsBySource(ctx context.Context, request *BatchGetEvalTargetsBySourceRequest) (r *BatchGetEvalTargetsBySourceResponse, err error) { var _args EvalTargetServiceBatchGetEvalTargetsBySourceArgs _args.Request = request var _result EvalTargetServiceBatchGetEvalTargetsBySourceResult @@ -13617,6 +14411,15 @@ func (p *EvalTargetServiceClient) BatchGetSourceEvalTargets(ctx context.Context, } return _result.GetSuccess(), nil } +func (p *EvalTargetServiceClient) GetSourceEvalTargetVersion(ctx context.Context, request *GetSourceEvalTargetVersionRequest) (r *GetSourceEvalTargetVersionResponse, err error) { + var _args EvalTargetServiceGetSourceEvalTargetVersionArgs + _args.Request = request + var _result EvalTargetServiceGetSourceEvalTargetVersionResult + if err = p.Client_().Call(ctx, "GetSourceEvalTargetVersion", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} func (p *EvalTargetServiceClient) SearchCustomEvalTarget(ctx context.Context, req *SearchCustomEvalTargetRequest) (r *SearchCustomEvalTargetResponse, err error) { var _args EvalTargetServiceSearchCustomEvalTargetArgs _args.Req = req @@ -13726,6 +14529,7 @@ func NewEvalTargetServiceProcessor(handler EvalTargetService) *EvalTargetService self.AddToProcessorMap("ListSourceEvalTargets", &evalTargetServiceProcessorListSourceEvalTargets{handler: handler}) self.AddToProcessorMap("ListSourceEvalTargetVersions", &evalTargetServiceProcessorListSourceEvalTargetVersions{handler: handler}) self.AddToProcessorMap("BatchGetSourceEvalTargets", &evalTargetServiceProcessorBatchGetSourceEvalTargets{handler: handler}) + self.AddToProcessorMap("GetSourceEvalTargetVersion", &evalTargetServiceProcessorGetSourceEvalTargetVersion{handler: handler}) self.AddToProcessorMap("SearchCustomEvalTarget", &evalTargetServiceProcessorSearchCustomEvalTarget{handler: handler}) self.AddToProcessorMap("ExecuteEvalTarget", &evalTargetServiceProcessorExecuteEvalTarget{handler: handler}) self.AddToProcessorMap("AsyncExecuteEvalTarget", &evalTargetServiceProcessorAsyncExecuteEvalTarget{handler: handler}) @@ -14091,6 +14895,54 @@ func (p *evalTargetServiceProcessorBatchGetSourceEvalTargets) Process(ctx contex return true, err } +type evalTargetServiceProcessorGetSourceEvalTargetVersion struct { + handler EvalTargetService +} + +func (p *evalTargetServiceProcessorGetSourceEvalTargetVersion) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := EvalTargetServiceGetSourceEvalTargetVersionArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("GetSourceEvalTargetVersion", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := EvalTargetServiceGetSourceEvalTargetVersionResult{} + var retval *GetSourceEvalTargetVersionResponse + if retval, err2 = p.handler.GetSourceEvalTargetVersion(ctx, args.Request); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing GetSourceEvalTargetVersion: "+err2.Error()) + oprot.WriteMessageBegin("GetSourceEvalTargetVersion", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("GetSourceEvalTargetVersion", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + type evalTargetServiceProcessorSearchCustomEvalTarget struct { handler EvalTargetService } @@ -14361,7 +15213,103 @@ func (p *evalTargetServiceProcessorGetEvalTargetOutputFieldContent) Process(ctx } else { result.Success = retval } - if err2 = oprot.WriteMessageBegin("GetEvalTargetOutputFieldContent", thrift.REPLY, seqId); err2 != nil { + if err2 = oprot.WriteMessageBegin("GetEvalTargetOutputFieldContent", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type evalTargetServiceProcessorDebugEvalTarget struct { + handler EvalTargetService +} + +func (p *evalTargetServiceProcessorDebugEvalTarget) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := EvalTargetServiceDebugEvalTargetArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("DebugEvalTarget", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := EvalTargetServiceDebugEvalTargetResult{} + var retval *DebugEvalTargetResponse + if retval, err2 = p.handler.DebugEvalTarget(ctx, args.Request); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing DebugEvalTarget: "+err2.Error()) + oprot.WriteMessageBegin("DebugEvalTarget", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("DebugEvalTarget", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + +type evalTargetServiceProcessorAsyncDebugEvalTarget struct { + handler EvalTargetService +} + +func (p *evalTargetServiceProcessorAsyncDebugEvalTarget) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := EvalTargetServiceAsyncDebugEvalTargetArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("AsyncDebugEvalTarget", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := EvalTargetServiceAsyncDebugEvalTargetResult{} + var retval *AsyncDebugEvalTargetResponse + if retval, err2 = p.handler.AsyncDebugEvalTarget(ctx, args.Request); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing AsyncDebugEvalTarget: "+err2.Error()) + oprot.WriteMessageBegin("AsyncDebugEvalTarget", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("AsyncDebugEvalTarget", thrift.REPLY, seqId); err2 != nil { err = err2 } if err2 = result.Write(oprot); err == nil && err2 != nil { @@ -14379,16 +15327,16 @@ func (p *evalTargetServiceProcessorGetEvalTargetOutputFieldContent) Process(ctx return true, err } -type evalTargetServiceProcessorDebugEvalTarget struct { +type evalTargetServiceProcessorMockEvalTargetOutput struct { handler EvalTargetService } -func (p *evalTargetServiceProcessorDebugEvalTarget) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := EvalTargetServiceDebugEvalTargetArgs{} +func (p *evalTargetServiceProcessorMockEvalTargetOutput) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := EvalTargetServiceMockEvalTargetOutputArgs{} if err = args.Read(iprot); err != nil { iprot.ReadMessageEnd() x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("DebugEvalTarget", thrift.EXCEPTION, seqId) + oprot.WriteMessageBegin("MockEvalTargetOutput", thrift.EXCEPTION, seqId) x.Write(oprot) oprot.WriteMessageEnd() oprot.Flush(ctx) @@ -14397,11 +15345,11 @@ func (p *evalTargetServiceProcessorDebugEvalTarget) Process(ctx context.Context, iprot.ReadMessageEnd() var err2 error - result := EvalTargetServiceDebugEvalTargetResult{} - var retval *DebugEvalTargetResponse - if retval, err2 = p.handler.DebugEvalTarget(ctx, args.Request); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing DebugEvalTarget: "+err2.Error()) - oprot.WriteMessageBegin("DebugEvalTarget", thrift.EXCEPTION, seqId) + result := EvalTargetServiceMockEvalTargetOutputResult{} + var retval *MockEvalTargetOutputResponse + if retval, err2 = p.handler.MockEvalTargetOutput(ctx, args.Request); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing MockEvalTargetOutput: "+err2.Error()) + oprot.WriteMessageBegin("MockEvalTargetOutput", thrift.EXCEPTION, seqId) x.Write(oprot) oprot.WriteMessageEnd() oprot.Flush(ctx) @@ -14409,7 +15357,7 @@ func (p *evalTargetServiceProcessorDebugEvalTarget) Process(ctx context.Context, } else { result.Success = retval } - if err2 = oprot.WriteMessageBegin("DebugEvalTarget", thrift.REPLY, seqId); err2 != nil { + if err2 = oprot.WriteMessageBegin("MockEvalTargetOutput", thrift.REPLY, seqId); err2 != nil { err = err2 } if err2 = result.Write(oprot); err == nil && err2 != nil { @@ -14421,143 +15369,391 @@ func (p *evalTargetServiceProcessorDebugEvalTarget) Process(ctx context.Context, if err2 = oprot.Flush(ctx); err == nil && err2 != nil { err = err2 } - if err != nil { - return + if err != nil { + return + } + return true, err +} + +type EvalTargetServiceCreateEvalTargetArgs struct { + Request *CreateEvalTargetRequest `thrift:"request,1" frugal:"1,default,CreateEvalTargetRequest"` +} + +func NewEvalTargetServiceCreateEvalTargetArgs() *EvalTargetServiceCreateEvalTargetArgs { + return &EvalTargetServiceCreateEvalTargetArgs{} +} + +func (p *EvalTargetServiceCreateEvalTargetArgs) InitDefault() { +} + +var EvalTargetServiceCreateEvalTargetArgs_Request_DEFAULT *CreateEvalTargetRequest + +func (p *EvalTargetServiceCreateEvalTargetArgs) GetRequest() (v *CreateEvalTargetRequest) { + if p == nil { + return + } + if !p.IsSetRequest() { + return EvalTargetServiceCreateEvalTargetArgs_Request_DEFAULT + } + return p.Request +} +func (p *EvalTargetServiceCreateEvalTargetArgs) SetRequest(val *CreateEvalTargetRequest) { + p.Request = val +} + +var fieldIDToName_EvalTargetServiceCreateEvalTargetArgs = map[int16]string{ + 1: "request", +} + +func (p *EvalTargetServiceCreateEvalTargetArgs) IsSetRequest() bool { + return p.Request != nil +} + +func (p *EvalTargetServiceCreateEvalTargetArgs) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EvalTargetServiceCreateEvalTargetArgs[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *EvalTargetServiceCreateEvalTargetArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewCreateEvalTargetRequest() + if err := _field.Read(iprot); err != nil { + return err + } + p.Request = _field + return nil +} + +func (p *EvalTargetServiceCreateEvalTargetArgs) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("CreateEvalTarget_args"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *EvalTargetServiceCreateEvalTargetArgs) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("request", thrift.STRUCT, 1); err != nil { + goto WriteFieldBeginError + } + if err := p.Request.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} + +func (p *EvalTargetServiceCreateEvalTargetArgs) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("EvalTargetServiceCreateEvalTargetArgs(%+v)", *p) + +} + +func (p *EvalTargetServiceCreateEvalTargetArgs) DeepEqual(ano *EvalTargetServiceCreateEvalTargetArgs) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.Request) { + return false + } + return true +} + +func (p *EvalTargetServiceCreateEvalTargetArgs) Field1DeepEqual(src *CreateEvalTargetRequest) bool { + + if !p.Request.DeepEqual(src) { + return false + } + return true +} + +type EvalTargetServiceCreateEvalTargetResult struct { + Success *CreateEvalTargetResponse `thrift:"success,0,optional" frugal:"0,optional,CreateEvalTargetResponse"` +} + +func NewEvalTargetServiceCreateEvalTargetResult() *EvalTargetServiceCreateEvalTargetResult { + return &EvalTargetServiceCreateEvalTargetResult{} +} + +func (p *EvalTargetServiceCreateEvalTargetResult) InitDefault() { +} + +var EvalTargetServiceCreateEvalTargetResult_Success_DEFAULT *CreateEvalTargetResponse + +func (p *EvalTargetServiceCreateEvalTargetResult) GetSuccess() (v *CreateEvalTargetResponse) { + if p == nil { + return + } + if !p.IsSetSuccess() { + return EvalTargetServiceCreateEvalTargetResult_Success_DEFAULT + } + return p.Success +} +func (p *EvalTargetServiceCreateEvalTargetResult) SetSuccess(x interface{}) { + p.Success = x.(*CreateEvalTargetResponse) +} + +var fieldIDToName_EvalTargetServiceCreateEvalTargetResult = map[int16]string{ + 0: "success", +} + +func (p *EvalTargetServiceCreateEvalTargetResult) IsSetSuccess() bool { + return p.Success != nil +} + +func (p *EvalTargetServiceCreateEvalTargetResult) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 0: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField0(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError } - return true, err -} -type evalTargetServiceProcessorAsyncDebugEvalTarget struct { - handler EvalTargetService + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EvalTargetServiceCreateEvalTargetResult[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *evalTargetServiceProcessorAsyncDebugEvalTarget) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := EvalTargetServiceAsyncDebugEvalTargetArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("AsyncDebugEvalTarget", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err +func (p *EvalTargetServiceCreateEvalTargetResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewCreateEvalTargetResponse() + if err := _field.Read(iprot); err != nil { + return err } + p.Success = _field + return nil +} - iprot.ReadMessageEnd() - var err2 error - result := EvalTargetServiceAsyncDebugEvalTargetResult{} - var retval *AsyncDebugEvalTargetResponse - if retval, err2 = p.handler.AsyncDebugEvalTarget(ctx, args.Request); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing AsyncDebugEvalTarget: "+err2.Error()) - oprot.WriteMessageBegin("AsyncDebugEvalTarget", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("AsyncDebugEvalTarget", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 +func (p *EvalTargetServiceCreateEvalTargetResult) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("CreateEvalTarget_result"); err != nil { + goto WriteStructBeginError } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 + if p != nil { + if err = p.writeField0(oprot); err != nil { + fieldId = 0 + goto WriteFieldError + } } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError } - if err != nil { - return + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError } - return true, err + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -type evalTargetServiceProcessorMockEvalTargetOutput struct { - handler EvalTargetService +func (p *EvalTargetServiceCreateEvalTargetResult) writeField0(oprot thrift.TProtocol) (err error) { + if p.IsSetSuccess() { + if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { + goto WriteFieldBeginError + } + if err := p.Success.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 0 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *evalTargetServiceProcessorMockEvalTargetOutput) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { - args := EvalTargetServiceMockEvalTargetOutputArgs{} - if err = args.Read(iprot); err != nil { - iprot.ReadMessageEnd() - x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) - oprot.WriteMessageBegin("MockEvalTargetOutput", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return false, err +func (p *EvalTargetServiceCreateEvalTargetResult) String() string { + if p == nil { + return "" } + return fmt.Sprintf("EvalTargetServiceCreateEvalTargetResult(%+v)", *p) - iprot.ReadMessageEnd() - var err2 error - result := EvalTargetServiceMockEvalTargetOutputResult{} - var retval *MockEvalTargetOutputResponse - if retval, err2 = p.handler.MockEvalTargetOutput(ctx, args.Request); err2 != nil { - x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing MockEvalTargetOutput: "+err2.Error()) - oprot.WriteMessageBegin("MockEvalTargetOutput", thrift.EXCEPTION, seqId) - x.Write(oprot) - oprot.WriteMessageEnd() - oprot.Flush(ctx) - return true, err2 - } else { - result.Success = retval - } - if err2 = oprot.WriteMessageBegin("MockEvalTargetOutput", thrift.REPLY, seqId); err2 != nil { - err = err2 - } - if err2 = result.Write(oprot); err == nil && err2 != nil { - err = err2 - } - if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { - err = err2 +} + +func (p *EvalTargetServiceCreateEvalTargetResult) DeepEqual(ano *EvalTargetServiceCreateEvalTargetResult) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false } - if err2 = oprot.Flush(ctx); err == nil && err2 != nil { - err = err2 + if !p.Field0DeepEqual(ano.Success) { + return false } - if err != nil { - return + return true +} + +func (p *EvalTargetServiceCreateEvalTargetResult) Field0DeepEqual(src *CreateEvalTargetResponse) bool { + + if !p.Success.DeepEqual(src) { + return false } - return true, err + return true } -type EvalTargetServiceCreateEvalTargetArgs struct { - Request *CreateEvalTargetRequest `thrift:"request,1" frugal:"1,default,CreateEvalTargetRequest"` +type EvalTargetServiceBatchGetEvalTargetsBySourceArgs struct { + Request *BatchGetEvalTargetsBySourceRequest `thrift:"request,1" frugal:"1,default,BatchGetEvalTargetsBySourceRequest"` } -func NewEvalTargetServiceCreateEvalTargetArgs() *EvalTargetServiceCreateEvalTargetArgs { - return &EvalTargetServiceCreateEvalTargetArgs{} +func NewEvalTargetServiceBatchGetEvalTargetsBySourceArgs() *EvalTargetServiceBatchGetEvalTargetsBySourceArgs { + return &EvalTargetServiceBatchGetEvalTargetsBySourceArgs{} } -func (p *EvalTargetServiceCreateEvalTargetArgs) InitDefault() { +func (p *EvalTargetServiceBatchGetEvalTargetsBySourceArgs) InitDefault() { } -var EvalTargetServiceCreateEvalTargetArgs_Request_DEFAULT *CreateEvalTargetRequest +var EvalTargetServiceBatchGetEvalTargetsBySourceArgs_Request_DEFAULT *BatchGetEvalTargetsBySourceRequest -func (p *EvalTargetServiceCreateEvalTargetArgs) GetRequest() (v *CreateEvalTargetRequest) { +func (p *EvalTargetServiceBatchGetEvalTargetsBySourceArgs) GetRequest() (v *BatchGetEvalTargetsBySourceRequest) { if p == nil { return } if !p.IsSetRequest() { - return EvalTargetServiceCreateEvalTargetArgs_Request_DEFAULT + return EvalTargetServiceBatchGetEvalTargetsBySourceArgs_Request_DEFAULT } return p.Request } -func (p *EvalTargetServiceCreateEvalTargetArgs) SetRequest(val *CreateEvalTargetRequest) { +func (p *EvalTargetServiceBatchGetEvalTargetsBySourceArgs) SetRequest(val *BatchGetEvalTargetsBySourceRequest) { p.Request = val } -var fieldIDToName_EvalTargetServiceCreateEvalTargetArgs = map[int16]string{ +var fieldIDToName_EvalTargetServiceBatchGetEvalTargetsBySourceArgs = map[int16]string{ 1: "request", } -func (p *EvalTargetServiceCreateEvalTargetArgs) IsSetRequest() bool { +func (p *EvalTargetServiceBatchGetEvalTargetsBySourceArgs) IsSetRequest() bool { return p.Request != nil } -func (p *EvalTargetServiceCreateEvalTargetArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceBatchGetEvalTargetsBySourceArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -14602,7 +15798,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EvalTargetServiceCreateEvalTargetArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EvalTargetServiceBatchGetEvalTargetsBySourceArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -14612,8 +15808,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *EvalTargetServiceCreateEvalTargetArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewCreateEvalTargetRequest() +func (p *EvalTargetServiceBatchGetEvalTargetsBySourceArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewBatchGetEvalTargetsBySourceRequest() if err := _field.Read(iprot); err != nil { return err } @@ -14621,9 +15817,9 @@ func (p *EvalTargetServiceCreateEvalTargetArgs) ReadField1(iprot thrift.TProtoco return nil } -func (p *EvalTargetServiceCreateEvalTargetArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceBatchGetEvalTargetsBySourceArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("CreateEvalTarget_args"); err != nil { + if err = oprot.WriteStructBegin("BatchGetEvalTargetsBySource_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -14649,7 +15845,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *EvalTargetServiceCreateEvalTargetArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceBatchGetEvalTargetsBySourceArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("request", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -14666,15 +15862,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *EvalTargetServiceCreateEvalTargetArgs) String() string { +func (p *EvalTargetServiceBatchGetEvalTargetsBySourceArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("EvalTargetServiceCreateEvalTargetArgs(%+v)", *p) + return fmt.Sprintf("EvalTargetServiceBatchGetEvalTargetsBySourceArgs(%+v)", *p) } -func (p *EvalTargetServiceCreateEvalTargetArgs) DeepEqual(ano *EvalTargetServiceCreateEvalTargetArgs) bool { +func (p *EvalTargetServiceBatchGetEvalTargetsBySourceArgs) DeepEqual(ano *EvalTargetServiceBatchGetEvalTargetsBySourceArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -14686,7 +15882,7 @@ func (p *EvalTargetServiceCreateEvalTargetArgs) DeepEqual(ano *EvalTargetService return true } -func (p *EvalTargetServiceCreateEvalTargetArgs) Field1DeepEqual(src *CreateEvalTargetRequest) bool { +func (p *EvalTargetServiceBatchGetEvalTargetsBySourceArgs) Field1DeepEqual(src *BatchGetEvalTargetsBySourceRequest) bool { if !p.Request.DeepEqual(src) { return false @@ -14694,41 +15890,41 @@ func (p *EvalTargetServiceCreateEvalTargetArgs) Field1DeepEqual(src *CreateEvalT return true } -type EvalTargetServiceCreateEvalTargetResult struct { - Success *CreateEvalTargetResponse `thrift:"success,0,optional" frugal:"0,optional,CreateEvalTargetResponse"` +type EvalTargetServiceBatchGetEvalTargetsBySourceResult struct { + Success *BatchGetEvalTargetsBySourceResponse `thrift:"success,0,optional" frugal:"0,optional,BatchGetEvalTargetsBySourceResponse"` } -func NewEvalTargetServiceCreateEvalTargetResult() *EvalTargetServiceCreateEvalTargetResult { - return &EvalTargetServiceCreateEvalTargetResult{} +func NewEvalTargetServiceBatchGetEvalTargetsBySourceResult() *EvalTargetServiceBatchGetEvalTargetsBySourceResult { + return &EvalTargetServiceBatchGetEvalTargetsBySourceResult{} } -func (p *EvalTargetServiceCreateEvalTargetResult) InitDefault() { +func (p *EvalTargetServiceBatchGetEvalTargetsBySourceResult) InitDefault() { } -var EvalTargetServiceCreateEvalTargetResult_Success_DEFAULT *CreateEvalTargetResponse +var EvalTargetServiceBatchGetEvalTargetsBySourceResult_Success_DEFAULT *BatchGetEvalTargetsBySourceResponse -func (p *EvalTargetServiceCreateEvalTargetResult) GetSuccess() (v *CreateEvalTargetResponse) { +func (p *EvalTargetServiceBatchGetEvalTargetsBySourceResult) GetSuccess() (v *BatchGetEvalTargetsBySourceResponse) { if p == nil { return } if !p.IsSetSuccess() { - return EvalTargetServiceCreateEvalTargetResult_Success_DEFAULT + return EvalTargetServiceBatchGetEvalTargetsBySourceResult_Success_DEFAULT } return p.Success } -func (p *EvalTargetServiceCreateEvalTargetResult) SetSuccess(x interface{}) { - p.Success = x.(*CreateEvalTargetResponse) +func (p *EvalTargetServiceBatchGetEvalTargetsBySourceResult) SetSuccess(x interface{}) { + p.Success = x.(*BatchGetEvalTargetsBySourceResponse) } -var fieldIDToName_EvalTargetServiceCreateEvalTargetResult = map[int16]string{ +var fieldIDToName_EvalTargetServiceBatchGetEvalTargetsBySourceResult = map[int16]string{ 0: "success", } -func (p *EvalTargetServiceCreateEvalTargetResult) IsSetSuccess() bool { +func (p *EvalTargetServiceBatchGetEvalTargetsBySourceResult) IsSetSuccess() bool { return p.Success != nil } -func (p *EvalTargetServiceCreateEvalTargetResult) Read(iprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceBatchGetEvalTargetsBySourceResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -14773,7 +15969,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EvalTargetServiceCreateEvalTargetResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EvalTargetServiceBatchGetEvalTargetsBySourceResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -14782,9 +15978,9 @@ ReadFieldEndError: ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } - -func (p *EvalTargetServiceCreateEvalTargetResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewCreateEvalTargetResponse() + +func (p *EvalTargetServiceBatchGetEvalTargetsBySourceResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewBatchGetEvalTargetsBySourceResponse() if err := _field.Read(iprot); err != nil { return err } @@ -14792,9 +15988,9 @@ func (p *EvalTargetServiceCreateEvalTargetResult) ReadField0(iprot thrift.TProto return nil } -func (p *EvalTargetServiceCreateEvalTargetResult) Write(oprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceBatchGetEvalTargetsBySourceResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("CreateEvalTarget_result"); err != nil { + if err = oprot.WriteStructBegin("BatchGetEvalTargetsBySource_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -14820,7 +16016,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *EvalTargetServiceCreateEvalTargetResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceBatchGetEvalTargetsBySourceResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -14839,15 +16035,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *EvalTargetServiceCreateEvalTargetResult) String() string { +func (p *EvalTargetServiceBatchGetEvalTargetsBySourceResult) String() string { if p == nil { return "" } - return fmt.Sprintf("EvalTargetServiceCreateEvalTargetResult(%+v)", *p) + return fmt.Sprintf("EvalTargetServiceBatchGetEvalTargetsBySourceResult(%+v)", *p) } -func (p *EvalTargetServiceCreateEvalTargetResult) DeepEqual(ano *EvalTargetServiceCreateEvalTargetResult) bool { +func (p *EvalTargetServiceBatchGetEvalTargetsBySourceResult) DeepEqual(ano *EvalTargetServiceBatchGetEvalTargetsBySourceResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -14859,7 +16055,7 @@ func (p *EvalTargetServiceCreateEvalTargetResult) DeepEqual(ano *EvalTargetServi return true } -func (p *EvalTargetServiceCreateEvalTargetResult) Field0DeepEqual(src *CreateEvalTargetResponse) bool { +func (p *EvalTargetServiceBatchGetEvalTargetsBySourceResult) Field0DeepEqual(src *BatchGetEvalTargetsBySourceResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -14867,41 +16063,41 @@ func (p *EvalTargetServiceCreateEvalTargetResult) Field0DeepEqual(src *CreateEva return true } -type EvalTargetServiceBatchGetEvalTargetsBySourceArgs struct { - Request *BatchGetEvalTargetsBySourceRequest `thrift:"request,1" frugal:"1,default,BatchGetEvalTargetsBySourceRequest"` +type EvalTargetServiceGetEvalTargetVersionArgs struct { + Request *GetEvalTargetVersionRequest `thrift:"request,1" frugal:"1,default,GetEvalTargetVersionRequest"` } -func NewEvalTargetServiceBatchGetEvalTargetsBySourceArgs() *EvalTargetServiceBatchGetEvalTargetsBySourceArgs { - return &EvalTargetServiceBatchGetEvalTargetsBySourceArgs{} +func NewEvalTargetServiceGetEvalTargetVersionArgs() *EvalTargetServiceGetEvalTargetVersionArgs { + return &EvalTargetServiceGetEvalTargetVersionArgs{} } -func (p *EvalTargetServiceBatchGetEvalTargetsBySourceArgs) InitDefault() { +func (p *EvalTargetServiceGetEvalTargetVersionArgs) InitDefault() { } -var EvalTargetServiceBatchGetEvalTargetsBySourceArgs_Request_DEFAULT *BatchGetEvalTargetsBySourceRequest +var EvalTargetServiceGetEvalTargetVersionArgs_Request_DEFAULT *GetEvalTargetVersionRequest -func (p *EvalTargetServiceBatchGetEvalTargetsBySourceArgs) GetRequest() (v *BatchGetEvalTargetsBySourceRequest) { +func (p *EvalTargetServiceGetEvalTargetVersionArgs) GetRequest() (v *GetEvalTargetVersionRequest) { if p == nil { return } if !p.IsSetRequest() { - return EvalTargetServiceBatchGetEvalTargetsBySourceArgs_Request_DEFAULT + return EvalTargetServiceGetEvalTargetVersionArgs_Request_DEFAULT } return p.Request } -func (p *EvalTargetServiceBatchGetEvalTargetsBySourceArgs) SetRequest(val *BatchGetEvalTargetsBySourceRequest) { +func (p *EvalTargetServiceGetEvalTargetVersionArgs) SetRequest(val *GetEvalTargetVersionRequest) { p.Request = val } -var fieldIDToName_EvalTargetServiceBatchGetEvalTargetsBySourceArgs = map[int16]string{ +var fieldIDToName_EvalTargetServiceGetEvalTargetVersionArgs = map[int16]string{ 1: "request", } -func (p *EvalTargetServiceBatchGetEvalTargetsBySourceArgs) IsSetRequest() bool { +func (p *EvalTargetServiceGetEvalTargetVersionArgs) IsSetRequest() bool { return p.Request != nil } -func (p *EvalTargetServiceBatchGetEvalTargetsBySourceArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceGetEvalTargetVersionArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -14946,7 +16142,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EvalTargetServiceBatchGetEvalTargetsBySourceArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EvalTargetServiceGetEvalTargetVersionArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -14956,8 +16152,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *EvalTargetServiceBatchGetEvalTargetsBySourceArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewBatchGetEvalTargetsBySourceRequest() +func (p *EvalTargetServiceGetEvalTargetVersionArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewGetEvalTargetVersionRequest() if err := _field.Read(iprot); err != nil { return err } @@ -14965,9 +16161,9 @@ func (p *EvalTargetServiceBatchGetEvalTargetsBySourceArgs) ReadField1(iprot thri return nil } -func (p *EvalTargetServiceBatchGetEvalTargetsBySourceArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceGetEvalTargetVersionArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("BatchGetEvalTargetsBySource_args"); err != nil { + if err = oprot.WriteStructBegin("GetEvalTargetVersion_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -14993,7 +16189,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *EvalTargetServiceBatchGetEvalTargetsBySourceArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceGetEvalTargetVersionArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("request", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -15010,15 +16206,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *EvalTargetServiceBatchGetEvalTargetsBySourceArgs) String() string { +func (p *EvalTargetServiceGetEvalTargetVersionArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("EvalTargetServiceBatchGetEvalTargetsBySourceArgs(%+v)", *p) + return fmt.Sprintf("EvalTargetServiceGetEvalTargetVersionArgs(%+v)", *p) } -func (p *EvalTargetServiceBatchGetEvalTargetsBySourceArgs) DeepEqual(ano *EvalTargetServiceBatchGetEvalTargetsBySourceArgs) bool { +func (p *EvalTargetServiceGetEvalTargetVersionArgs) DeepEqual(ano *EvalTargetServiceGetEvalTargetVersionArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -15030,7 +16226,7 @@ func (p *EvalTargetServiceBatchGetEvalTargetsBySourceArgs) DeepEqual(ano *EvalTa return true } -func (p *EvalTargetServiceBatchGetEvalTargetsBySourceArgs) Field1DeepEqual(src *BatchGetEvalTargetsBySourceRequest) bool { +func (p *EvalTargetServiceGetEvalTargetVersionArgs) Field1DeepEqual(src *GetEvalTargetVersionRequest) bool { if !p.Request.DeepEqual(src) { return false @@ -15038,41 +16234,41 @@ func (p *EvalTargetServiceBatchGetEvalTargetsBySourceArgs) Field1DeepEqual(src * return true } -type EvalTargetServiceBatchGetEvalTargetsBySourceResult struct { - Success *BatchGetEvalTargetsBySourceResponse `thrift:"success,0,optional" frugal:"0,optional,BatchGetEvalTargetsBySourceResponse"` +type EvalTargetServiceGetEvalTargetVersionResult struct { + Success *GetEvalTargetVersionResponse `thrift:"success,0,optional" frugal:"0,optional,GetEvalTargetVersionResponse"` } -func NewEvalTargetServiceBatchGetEvalTargetsBySourceResult() *EvalTargetServiceBatchGetEvalTargetsBySourceResult { - return &EvalTargetServiceBatchGetEvalTargetsBySourceResult{} +func NewEvalTargetServiceGetEvalTargetVersionResult() *EvalTargetServiceGetEvalTargetVersionResult { + return &EvalTargetServiceGetEvalTargetVersionResult{} } -func (p *EvalTargetServiceBatchGetEvalTargetsBySourceResult) InitDefault() { +func (p *EvalTargetServiceGetEvalTargetVersionResult) InitDefault() { } -var EvalTargetServiceBatchGetEvalTargetsBySourceResult_Success_DEFAULT *BatchGetEvalTargetsBySourceResponse +var EvalTargetServiceGetEvalTargetVersionResult_Success_DEFAULT *GetEvalTargetVersionResponse -func (p *EvalTargetServiceBatchGetEvalTargetsBySourceResult) GetSuccess() (v *BatchGetEvalTargetsBySourceResponse) { +func (p *EvalTargetServiceGetEvalTargetVersionResult) GetSuccess() (v *GetEvalTargetVersionResponse) { if p == nil { return } if !p.IsSetSuccess() { - return EvalTargetServiceBatchGetEvalTargetsBySourceResult_Success_DEFAULT + return EvalTargetServiceGetEvalTargetVersionResult_Success_DEFAULT } return p.Success } -func (p *EvalTargetServiceBatchGetEvalTargetsBySourceResult) SetSuccess(x interface{}) { - p.Success = x.(*BatchGetEvalTargetsBySourceResponse) +func (p *EvalTargetServiceGetEvalTargetVersionResult) SetSuccess(x interface{}) { + p.Success = x.(*GetEvalTargetVersionResponse) } -var fieldIDToName_EvalTargetServiceBatchGetEvalTargetsBySourceResult = map[int16]string{ +var fieldIDToName_EvalTargetServiceGetEvalTargetVersionResult = map[int16]string{ 0: "success", } -func (p *EvalTargetServiceBatchGetEvalTargetsBySourceResult) IsSetSuccess() bool { +func (p *EvalTargetServiceGetEvalTargetVersionResult) IsSetSuccess() bool { return p.Success != nil } -func (p *EvalTargetServiceBatchGetEvalTargetsBySourceResult) Read(iprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceGetEvalTargetVersionResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -15117,7 +16313,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EvalTargetServiceBatchGetEvalTargetsBySourceResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EvalTargetServiceGetEvalTargetVersionResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -15127,8 +16323,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *EvalTargetServiceBatchGetEvalTargetsBySourceResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewBatchGetEvalTargetsBySourceResponse() +func (p *EvalTargetServiceGetEvalTargetVersionResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewGetEvalTargetVersionResponse() if err := _field.Read(iprot); err != nil { return err } @@ -15136,9 +16332,9 @@ func (p *EvalTargetServiceBatchGetEvalTargetsBySourceResult) ReadField0(iprot th return nil } -func (p *EvalTargetServiceBatchGetEvalTargetsBySourceResult) Write(oprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceGetEvalTargetVersionResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("BatchGetEvalTargetsBySource_result"); err != nil { + if err = oprot.WriteStructBegin("GetEvalTargetVersion_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -15164,7 +16360,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *EvalTargetServiceBatchGetEvalTargetsBySourceResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceGetEvalTargetVersionResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -15183,15 +16379,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *EvalTargetServiceBatchGetEvalTargetsBySourceResult) String() string { +func (p *EvalTargetServiceGetEvalTargetVersionResult) String() string { if p == nil { return "" } - return fmt.Sprintf("EvalTargetServiceBatchGetEvalTargetsBySourceResult(%+v)", *p) + return fmt.Sprintf("EvalTargetServiceGetEvalTargetVersionResult(%+v)", *p) } -func (p *EvalTargetServiceBatchGetEvalTargetsBySourceResult) DeepEqual(ano *EvalTargetServiceBatchGetEvalTargetsBySourceResult) bool { +func (p *EvalTargetServiceGetEvalTargetVersionResult) DeepEqual(ano *EvalTargetServiceGetEvalTargetVersionResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -15203,7 +16399,7 @@ func (p *EvalTargetServiceBatchGetEvalTargetsBySourceResult) DeepEqual(ano *Eval return true } -func (p *EvalTargetServiceBatchGetEvalTargetsBySourceResult) Field0DeepEqual(src *BatchGetEvalTargetsBySourceResponse) bool { +func (p *EvalTargetServiceGetEvalTargetVersionResult) Field0DeepEqual(src *GetEvalTargetVersionResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -15211,41 +16407,41 @@ func (p *EvalTargetServiceBatchGetEvalTargetsBySourceResult) Field0DeepEqual(src return true } -type EvalTargetServiceGetEvalTargetVersionArgs struct { - Request *GetEvalTargetVersionRequest `thrift:"request,1" frugal:"1,default,GetEvalTargetVersionRequest"` +type EvalTargetServiceBatchGetEvalTargetVersionsArgs struct { + Request *BatchGetEvalTargetVersionsRequest `thrift:"request,1" frugal:"1,default,BatchGetEvalTargetVersionsRequest"` } -func NewEvalTargetServiceGetEvalTargetVersionArgs() *EvalTargetServiceGetEvalTargetVersionArgs { - return &EvalTargetServiceGetEvalTargetVersionArgs{} +func NewEvalTargetServiceBatchGetEvalTargetVersionsArgs() *EvalTargetServiceBatchGetEvalTargetVersionsArgs { + return &EvalTargetServiceBatchGetEvalTargetVersionsArgs{} } -func (p *EvalTargetServiceGetEvalTargetVersionArgs) InitDefault() { +func (p *EvalTargetServiceBatchGetEvalTargetVersionsArgs) InitDefault() { } -var EvalTargetServiceGetEvalTargetVersionArgs_Request_DEFAULT *GetEvalTargetVersionRequest +var EvalTargetServiceBatchGetEvalTargetVersionsArgs_Request_DEFAULT *BatchGetEvalTargetVersionsRequest -func (p *EvalTargetServiceGetEvalTargetVersionArgs) GetRequest() (v *GetEvalTargetVersionRequest) { +func (p *EvalTargetServiceBatchGetEvalTargetVersionsArgs) GetRequest() (v *BatchGetEvalTargetVersionsRequest) { if p == nil { return } if !p.IsSetRequest() { - return EvalTargetServiceGetEvalTargetVersionArgs_Request_DEFAULT + return EvalTargetServiceBatchGetEvalTargetVersionsArgs_Request_DEFAULT } return p.Request } -func (p *EvalTargetServiceGetEvalTargetVersionArgs) SetRequest(val *GetEvalTargetVersionRequest) { +func (p *EvalTargetServiceBatchGetEvalTargetVersionsArgs) SetRequest(val *BatchGetEvalTargetVersionsRequest) { p.Request = val } -var fieldIDToName_EvalTargetServiceGetEvalTargetVersionArgs = map[int16]string{ +var fieldIDToName_EvalTargetServiceBatchGetEvalTargetVersionsArgs = map[int16]string{ 1: "request", } -func (p *EvalTargetServiceGetEvalTargetVersionArgs) IsSetRequest() bool { +func (p *EvalTargetServiceBatchGetEvalTargetVersionsArgs) IsSetRequest() bool { return p.Request != nil } -func (p *EvalTargetServiceGetEvalTargetVersionArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceBatchGetEvalTargetVersionsArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -15290,7 +16486,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EvalTargetServiceGetEvalTargetVersionArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EvalTargetServiceBatchGetEvalTargetVersionsArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -15300,8 +16496,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *EvalTargetServiceGetEvalTargetVersionArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewGetEvalTargetVersionRequest() +func (p *EvalTargetServiceBatchGetEvalTargetVersionsArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewBatchGetEvalTargetVersionsRequest() if err := _field.Read(iprot); err != nil { return err } @@ -15309,9 +16505,9 @@ func (p *EvalTargetServiceGetEvalTargetVersionArgs) ReadField1(iprot thrift.TPro return nil } -func (p *EvalTargetServiceGetEvalTargetVersionArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceBatchGetEvalTargetVersionsArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("GetEvalTargetVersion_args"); err != nil { + if err = oprot.WriteStructBegin("BatchGetEvalTargetVersions_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -15337,7 +16533,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *EvalTargetServiceGetEvalTargetVersionArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceBatchGetEvalTargetVersionsArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("request", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -15354,15 +16550,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *EvalTargetServiceGetEvalTargetVersionArgs) String() string { +func (p *EvalTargetServiceBatchGetEvalTargetVersionsArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("EvalTargetServiceGetEvalTargetVersionArgs(%+v)", *p) + return fmt.Sprintf("EvalTargetServiceBatchGetEvalTargetVersionsArgs(%+v)", *p) } -func (p *EvalTargetServiceGetEvalTargetVersionArgs) DeepEqual(ano *EvalTargetServiceGetEvalTargetVersionArgs) bool { +func (p *EvalTargetServiceBatchGetEvalTargetVersionsArgs) DeepEqual(ano *EvalTargetServiceBatchGetEvalTargetVersionsArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -15374,7 +16570,7 @@ func (p *EvalTargetServiceGetEvalTargetVersionArgs) DeepEqual(ano *EvalTargetSer return true } -func (p *EvalTargetServiceGetEvalTargetVersionArgs) Field1DeepEqual(src *GetEvalTargetVersionRequest) bool { +func (p *EvalTargetServiceBatchGetEvalTargetVersionsArgs) Field1DeepEqual(src *BatchGetEvalTargetVersionsRequest) bool { if !p.Request.DeepEqual(src) { return false @@ -15382,41 +16578,41 @@ func (p *EvalTargetServiceGetEvalTargetVersionArgs) Field1DeepEqual(src *GetEval return true } -type EvalTargetServiceGetEvalTargetVersionResult struct { - Success *GetEvalTargetVersionResponse `thrift:"success,0,optional" frugal:"0,optional,GetEvalTargetVersionResponse"` +type EvalTargetServiceBatchGetEvalTargetVersionsResult struct { + Success *BatchGetEvalTargetVersionsResponse `thrift:"success,0,optional" frugal:"0,optional,BatchGetEvalTargetVersionsResponse"` } -func NewEvalTargetServiceGetEvalTargetVersionResult() *EvalTargetServiceGetEvalTargetVersionResult { - return &EvalTargetServiceGetEvalTargetVersionResult{} +func NewEvalTargetServiceBatchGetEvalTargetVersionsResult() *EvalTargetServiceBatchGetEvalTargetVersionsResult { + return &EvalTargetServiceBatchGetEvalTargetVersionsResult{} } -func (p *EvalTargetServiceGetEvalTargetVersionResult) InitDefault() { +func (p *EvalTargetServiceBatchGetEvalTargetVersionsResult) InitDefault() { } -var EvalTargetServiceGetEvalTargetVersionResult_Success_DEFAULT *GetEvalTargetVersionResponse +var EvalTargetServiceBatchGetEvalTargetVersionsResult_Success_DEFAULT *BatchGetEvalTargetVersionsResponse -func (p *EvalTargetServiceGetEvalTargetVersionResult) GetSuccess() (v *GetEvalTargetVersionResponse) { +func (p *EvalTargetServiceBatchGetEvalTargetVersionsResult) GetSuccess() (v *BatchGetEvalTargetVersionsResponse) { if p == nil { return } if !p.IsSetSuccess() { - return EvalTargetServiceGetEvalTargetVersionResult_Success_DEFAULT + return EvalTargetServiceBatchGetEvalTargetVersionsResult_Success_DEFAULT } return p.Success } -func (p *EvalTargetServiceGetEvalTargetVersionResult) SetSuccess(x interface{}) { - p.Success = x.(*GetEvalTargetVersionResponse) +func (p *EvalTargetServiceBatchGetEvalTargetVersionsResult) SetSuccess(x interface{}) { + p.Success = x.(*BatchGetEvalTargetVersionsResponse) } -var fieldIDToName_EvalTargetServiceGetEvalTargetVersionResult = map[int16]string{ +var fieldIDToName_EvalTargetServiceBatchGetEvalTargetVersionsResult = map[int16]string{ 0: "success", } -func (p *EvalTargetServiceGetEvalTargetVersionResult) IsSetSuccess() bool { +func (p *EvalTargetServiceBatchGetEvalTargetVersionsResult) IsSetSuccess() bool { return p.Success != nil } -func (p *EvalTargetServiceGetEvalTargetVersionResult) Read(iprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceBatchGetEvalTargetVersionsResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -15461,7 +16657,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EvalTargetServiceGetEvalTargetVersionResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EvalTargetServiceBatchGetEvalTargetVersionsResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -15471,8 +16667,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *EvalTargetServiceGetEvalTargetVersionResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewGetEvalTargetVersionResponse() +func (p *EvalTargetServiceBatchGetEvalTargetVersionsResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewBatchGetEvalTargetVersionsResponse() if err := _field.Read(iprot); err != nil { return err } @@ -15480,9 +16676,9 @@ func (p *EvalTargetServiceGetEvalTargetVersionResult) ReadField0(iprot thrift.TP return nil } -func (p *EvalTargetServiceGetEvalTargetVersionResult) Write(oprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceBatchGetEvalTargetVersionsResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("GetEvalTargetVersion_result"); err != nil { + if err = oprot.WriteStructBegin("BatchGetEvalTargetVersions_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -15508,7 +16704,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *EvalTargetServiceGetEvalTargetVersionResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceBatchGetEvalTargetVersionsResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -15527,15 +16723,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *EvalTargetServiceGetEvalTargetVersionResult) String() string { +func (p *EvalTargetServiceBatchGetEvalTargetVersionsResult) String() string { if p == nil { return "" } - return fmt.Sprintf("EvalTargetServiceGetEvalTargetVersionResult(%+v)", *p) + return fmt.Sprintf("EvalTargetServiceBatchGetEvalTargetVersionsResult(%+v)", *p) } -func (p *EvalTargetServiceGetEvalTargetVersionResult) DeepEqual(ano *EvalTargetServiceGetEvalTargetVersionResult) bool { +func (p *EvalTargetServiceBatchGetEvalTargetVersionsResult) DeepEqual(ano *EvalTargetServiceBatchGetEvalTargetVersionsResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -15547,7 +16743,7 @@ func (p *EvalTargetServiceGetEvalTargetVersionResult) DeepEqual(ano *EvalTargetS return true } -func (p *EvalTargetServiceGetEvalTargetVersionResult) Field0DeepEqual(src *GetEvalTargetVersionResponse) bool { +func (p *EvalTargetServiceBatchGetEvalTargetVersionsResult) Field0DeepEqual(src *BatchGetEvalTargetVersionsResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -15555,41 +16751,41 @@ func (p *EvalTargetServiceGetEvalTargetVersionResult) Field0DeepEqual(src *GetEv return true } -type EvalTargetServiceBatchGetEvalTargetVersionsArgs struct { - Request *BatchGetEvalTargetVersionsRequest `thrift:"request,1" frugal:"1,default,BatchGetEvalTargetVersionsRequest"` +type EvalTargetServiceListSourceEvalTargetsArgs struct { + Request *ListSourceEvalTargetsRequest `thrift:"request,1" frugal:"1,default,ListSourceEvalTargetsRequest"` } -func NewEvalTargetServiceBatchGetEvalTargetVersionsArgs() *EvalTargetServiceBatchGetEvalTargetVersionsArgs { - return &EvalTargetServiceBatchGetEvalTargetVersionsArgs{} +func NewEvalTargetServiceListSourceEvalTargetsArgs() *EvalTargetServiceListSourceEvalTargetsArgs { + return &EvalTargetServiceListSourceEvalTargetsArgs{} } -func (p *EvalTargetServiceBatchGetEvalTargetVersionsArgs) InitDefault() { +func (p *EvalTargetServiceListSourceEvalTargetsArgs) InitDefault() { } -var EvalTargetServiceBatchGetEvalTargetVersionsArgs_Request_DEFAULT *BatchGetEvalTargetVersionsRequest +var EvalTargetServiceListSourceEvalTargetsArgs_Request_DEFAULT *ListSourceEvalTargetsRequest -func (p *EvalTargetServiceBatchGetEvalTargetVersionsArgs) GetRequest() (v *BatchGetEvalTargetVersionsRequest) { +func (p *EvalTargetServiceListSourceEvalTargetsArgs) GetRequest() (v *ListSourceEvalTargetsRequest) { if p == nil { return } if !p.IsSetRequest() { - return EvalTargetServiceBatchGetEvalTargetVersionsArgs_Request_DEFAULT + return EvalTargetServiceListSourceEvalTargetsArgs_Request_DEFAULT } return p.Request } -func (p *EvalTargetServiceBatchGetEvalTargetVersionsArgs) SetRequest(val *BatchGetEvalTargetVersionsRequest) { +func (p *EvalTargetServiceListSourceEvalTargetsArgs) SetRequest(val *ListSourceEvalTargetsRequest) { p.Request = val } -var fieldIDToName_EvalTargetServiceBatchGetEvalTargetVersionsArgs = map[int16]string{ +var fieldIDToName_EvalTargetServiceListSourceEvalTargetsArgs = map[int16]string{ 1: "request", } -func (p *EvalTargetServiceBatchGetEvalTargetVersionsArgs) IsSetRequest() bool { +func (p *EvalTargetServiceListSourceEvalTargetsArgs) IsSetRequest() bool { return p.Request != nil } -func (p *EvalTargetServiceBatchGetEvalTargetVersionsArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceListSourceEvalTargetsArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -15634,7 +16830,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EvalTargetServiceBatchGetEvalTargetVersionsArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EvalTargetServiceListSourceEvalTargetsArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -15644,8 +16840,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *EvalTargetServiceBatchGetEvalTargetVersionsArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewBatchGetEvalTargetVersionsRequest() +func (p *EvalTargetServiceListSourceEvalTargetsArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewListSourceEvalTargetsRequest() if err := _field.Read(iprot); err != nil { return err } @@ -15653,9 +16849,9 @@ func (p *EvalTargetServiceBatchGetEvalTargetVersionsArgs) ReadField1(iprot thrif return nil } -func (p *EvalTargetServiceBatchGetEvalTargetVersionsArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceListSourceEvalTargetsArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("BatchGetEvalTargetVersions_args"); err != nil { + if err = oprot.WriteStructBegin("ListSourceEvalTargets_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -15681,7 +16877,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *EvalTargetServiceBatchGetEvalTargetVersionsArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceListSourceEvalTargetsArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("request", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -15698,15 +16894,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *EvalTargetServiceBatchGetEvalTargetVersionsArgs) String() string { +func (p *EvalTargetServiceListSourceEvalTargetsArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("EvalTargetServiceBatchGetEvalTargetVersionsArgs(%+v)", *p) + return fmt.Sprintf("EvalTargetServiceListSourceEvalTargetsArgs(%+v)", *p) } -func (p *EvalTargetServiceBatchGetEvalTargetVersionsArgs) DeepEqual(ano *EvalTargetServiceBatchGetEvalTargetVersionsArgs) bool { +func (p *EvalTargetServiceListSourceEvalTargetsArgs) DeepEqual(ano *EvalTargetServiceListSourceEvalTargetsArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -15718,7 +16914,7 @@ func (p *EvalTargetServiceBatchGetEvalTargetVersionsArgs) DeepEqual(ano *EvalTar return true } -func (p *EvalTargetServiceBatchGetEvalTargetVersionsArgs) Field1DeepEqual(src *BatchGetEvalTargetVersionsRequest) bool { +func (p *EvalTargetServiceListSourceEvalTargetsArgs) Field1DeepEqual(src *ListSourceEvalTargetsRequest) bool { if !p.Request.DeepEqual(src) { return false @@ -15726,41 +16922,41 @@ func (p *EvalTargetServiceBatchGetEvalTargetVersionsArgs) Field1DeepEqual(src *B return true } -type EvalTargetServiceBatchGetEvalTargetVersionsResult struct { - Success *BatchGetEvalTargetVersionsResponse `thrift:"success,0,optional" frugal:"0,optional,BatchGetEvalTargetVersionsResponse"` +type EvalTargetServiceListSourceEvalTargetsResult struct { + Success *ListSourceEvalTargetsResponse `thrift:"success,0,optional" frugal:"0,optional,ListSourceEvalTargetsResponse"` } -func NewEvalTargetServiceBatchGetEvalTargetVersionsResult() *EvalTargetServiceBatchGetEvalTargetVersionsResult { - return &EvalTargetServiceBatchGetEvalTargetVersionsResult{} +func NewEvalTargetServiceListSourceEvalTargetsResult() *EvalTargetServiceListSourceEvalTargetsResult { + return &EvalTargetServiceListSourceEvalTargetsResult{} } -func (p *EvalTargetServiceBatchGetEvalTargetVersionsResult) InitDefault() { +func (p *EvalTargetServiceListSourceEvalTargetsResult) InitDefault() { } -var EvalTargetServiceBatchGetEvalTargetVersionsResult_Success_DEFAULT *BatchGetEvalTargetVersionsResponse +var EvalTargetServiceListSourceEvalTargetsResult_Success_DEFAULT *ListSourceEvalTargetsResponse -func (p *EvalTargetServiceBatchGetEvalTargetVersionsResult) GetSuccess() (v *BatchGetEvalTargetVersionsResponse) { +func (p *EvalTargetServiceListSourceEvalTargetsResult) GetSuccess() (v *ListSourceEvalTargetsResponse) { if p == nil { return } if !p.IsSetSuccess() { - return EvalTargetServiceBatchGetEvalTargetVersionsResult_Success_DEFAULT + return EvalTargetServiceListSourceEvalTargetsResult_Success_DEFAULT } return p.Success } -func (p *EvalTargetServiceBatchGetEvalTargetVersionsResult) SetSuccess(x interface{}) { - p.Success = x.(*BatchGetEvalTargetVersionsResponse) +func (p *EvalTargetServiceListSourceEvalTargetsResult) SetSuccess(x interface{}) { + p.Success = x.(*ListSourceEvalTargetsResponse) } -var fieldIDToName_EvalTargetServiceBatchGetEvalTargetVersionsResult = map[int16]string{ +var fieldIDToName_EvalTargetServiceListSourceEvalTargetsResult = map[int16]string{ 0: "success", } -func (p *EvalTargetServiceBatchGetEvalTargetVersionsResult) IsSetSuccess() bool { +func (p *EvalTargetServiceListSourceEvalTargetsResult) IsSetSuccess() bool { return p.Success != nil } -func (p *EvalTargetServiceBatchGetEvalTargetVersionsResult) Read(iprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceListSourceEvalTargetsResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -15805,7 +17001,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EvalTargetServiceBatchGetEvalTargetVersionsResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EvalTargetServiceListSourceEvalTargetsResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -15815,8 +17011,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *EvalTargetServiceBatchGetEvalTargetVersionsResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewBatchGetEvalTargetVersionsResponse() +func (p *EvalTargetServiceListSourceEvalTargetsResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewListSourceEvalTargetsResponse() if err := _field.Read(iprot); err != nil { return err } @@ -15824,9 +17020,9 @@ func (p *EvalTargetServiceBatchGetEvalTargetVersionsResult) ReadField0(iprot thr return nil } -func (p *EvalTargetServiceBatchGetEvalTargetVersionsResult) Write(oprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceListSourceEvalTargetsResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("BatchGetEvalTargetVersions_result"); err != nil { + if err = oprot.WriteStructBegin("ListSourceEvalTargets_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -15852,7 +17048,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *EvalTargetServiceBatchGetEvalTargetVersionsResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceListSourceEvalTargetsResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -15871,15 +17067,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *EvalTargetServiceBatchGetEvalTargetVersionsResult) String() string { +func (p *EvalTargetServiceListSourceEvalTargetsResult) String() string { if p == nil { return "" } - return fmt.Sprintf("EvalTargetServiceBatchGetEvalTargetVersionsResult(%+v)", *p) + return fmt.Sprintf("EvalTargetServiceListSourceEvalTargetsResult(%+v)", *p) } -func (p *EvalTargetServiceBatchGetEvalTargetVersionsResult) DeepEqual(ano *EvalTargetServiceBatchGetEvalTargetVersionsResult) bool { +func (p *EvalTargetServiceListSourceEvalTargetsResult) DeepEqual(ano *EvalTargetServiceListSourceEvalTargetsResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -15891,7 +17087,7 @@ func (p *EvalTargetServiceBatchGetEvalTargetVersionsResult) DeepEqual(ano *EvalT return true } -func (p *EvalTargetServiceBatchGetEvalTargetVersionsResult) Field0DeepEqual(src *BatchGetEvalTargetVersionsResponse) bool { +func (p *EvalTargetServiceListSourceEvalTargetsResult) Field0DeepEqual(src *ListSourceEvalTargetsResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -15899,41 +17095,41 @@ func (p *EvalTargetServiceBatchGetEvalTargetVersionsResult) Field0DeepEqual(src return true } -type EvalTargetServiceListSourceEvalTargetsArgs struct { - Request *ListSourceEvalTargetsRequest `thrift:"request,1" frugal:"1,default,ListSourceEvalTargetsRequest"` +type EvalTargetServiceListSourceEvalTargetVersionsArgs struct { + Request *ListSourceEvalTargetVersionsRequest `thrift:"request,1" frugal:"1,default,ListSourceEvalTargetVersionsRequest"` } -func NewEvalTargetServiceListSourceEvalTargetsArgs() *EvalTargetServiceListSourceEvalTargetsArgs { - return &EvalTargetServiceListSourceEvalTargetsArgs{} +func NewEvalTargetServiceListSourceEvalTargetVersionsArgs() *EvalTargetServiceListSourceEvalTargetVersionsArgs { + return &EvalTargetServiceListSourceEvalTargetVersionsArgs{} } -func (p *EvalTargetServiceListSourceEvalTargetsArgs) InitDefault() { +func (p *EvalTargetServiceListSourceEvalTargetVersionsArgs) InitDefault() { } -var EvalTargetServiceListSourceEvalTargetsArgs_Request_DEFAULT *ListSourceEvalTargetsRequest +var EvalTargetServiceListSourceEvalTargetVersionsArgs_Request_DEFAULT *ListSourceEvalTargetVersionsRequest -func (p *EvalTargetServiceListSourceEvalTargetsArgs) GetRequest() (v *ListSourceEvalTargetsRequest) { +func (p *EvalTargetServiceListSourceEvalTargetVersionsArgs) GetRequest() (v *ListSourceEvalTargetVersionsRequest) { if p == nil { return } if !p.IsSetRequest() { - return EvalTargetServiceListSourceEvalTargetsArgs_Request_DEFAULT + return EvalTargetServiceListSourceEvalTargetVersionsArgs_Request_DEFAULT } return p.Request } -func (p *EvalTargetServiceListSourceEvalTargetsArgs) SetRequest(val *ListSourceEvalTargetsRequest) { +func (p *EvalTargetServiceListSourceEvalTargetVersionsArgs) SetRequest(val *ListSourceEvalTargetVersionsRequest) { p.Request = val } -var fieldIDToName_EvalTargetServiceListSourceEvalTargetsArgs = map[int16]string{ +var fieldIDToName_EvalTargetServiceListSourceEvalTargetVersionsArgs = map[int16]string{ 1: "request", } -func (p *EvalTargetServiceListSourceEvalTargetsArgs) IsSetRequest() bool { +func (p *EvalTargetServiceListSourceEvalTargetVersionsArgs) IsSetRequest() bool { return p.Request != nil } -func (p *EvalTargetServiceListSourceEvalTargetsArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceListSourceEvalTargetVersionsArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -15978,7 +17174,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EvalTargetServiceListSourceEvalTargetsArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EvalTargetServiceListSourceEvalTargetVersionsArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -15988,8 +17184,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *EvalTargetServiceListSourceEvalTargetsArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewListSourceEvalTargetsRequest() +func (p *EvalTargetServiceListSourceEvalTargetVersionsArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewListSourceEvalTargetVersionsRequest() if err := _field.Read(iprot); err != nil { return err } @@ -15997,9 +17193,9 @@ func (p *EvalTargetServiceListSourceEvalTargetsArgs) ReadField1(iprot thrift.TPr return nil } -func (p *EvalTargetServiceListSourceEvalTargetsArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceListSourceEvalTargetVersionsArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("ListSourceEvalTargets_args"); err != nil { + if err = oprot.WriteStructBegin("ListSourceEvalTargetVersions_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -16025,7 +17221,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *EvalTargetServiceListSourceEvalTargetsArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceListSourceEvalTargetVersionsArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("request", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -16042,15 +17238,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *EvalTargetServiceListSourceEvalTargetsArgs) String() string { +func (p *EvalTargetServiceListSourceEvalTargetVersionsArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("EvalTargetServiceListSourceEvalTargetsArgs(%+v)", *p) + return fmt.Sprintf("EvalTargetServiceListSourceEvalTargetVersionsArgs(%+v)", *p) } -func (p *EvalTargetServiceListSourceEvalTargetsArgs) DeepEqual(ano *EvalTargetServiceListSourceEvalTargetsArgs) bool { +func (p *EvalTargetServiceListSourceEvalTargetVersionsArgs) DeepEqual(ano *EvalTargetServiceListSourceEvalTargetVersionsArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -16062,7 +17258,7 @@ func (p *EvalTargetServiceListSourceEvalTargetsArgs) DeepEqual(ano *EvalTargetSe return true } -func (p *EvalTargetServiceListSourceEvalTargetsArgs) Field1DeepEqual(src *ListSourceEvalTargetsRequest) bool { +func (p *EvalTargetServiceListSourceEvalTargetVersionsArgs) Field1DeepEqual(src *ListSourceEvalTargetVersionsRequest) bool { if !p.Request.DeepEqual(src) { return false @@ -16070,41 +17266,41 @@ func (p *EvalTargetServiceListSourceEvalTargetsArgs) Field1DeepEqual(src *ListSo return true } -type EvalTargetServiceListSourceEvalTargetsResult struct { - Success *ListSourceEvalTargetsResponse `thrift:"success,0,optional" frugal:"0,optional,ListSourceEvalTargetsResponse"` +type EvalTargetServiceListSourceEvalTargetVersionsResult struct { + Success *ListSourceEvalTargetVersionsResponse `thrift:"success,0,optional" frugal:"0,optional,ListSourceEvalTargetVersionsResponse"` } -func NewEvalTargetServiceListSourceEvalTargetsResult() *EvalTargetServiceListSourceEvalTargetsResult { - return &EvalTargetServiceListSourceEvalTargetsResult{} +func NewEvalTargetServiceListSourceEvalTargetVersionsResult() *EvalTargetServiceListSourceEvalTargetVersionsResult { + return &EvalTargetServiceListSourceEvalTargetVersionsResult{} } -func (p *EvalTargetServiceListSourceEvalTargetsResult) InitDefault() { +func (p *EvalTargetServiceListSourceEvalTargetVersionsResult) InitDefault() { } -var EvalTargetServiceListSourceEvalTargetsResult_Success_DEFAULT *ListSourceEvalTargetsResponse +var EvalTargetServiceListSourceEvalTargetVersionsResult_Success_DEFAULT *ListSourceEvalTargetVersionsResponse -func (p *EvalTargetServiceListSourceEvalTargetsResult) GetSuccess() (v *ListSourceEvalTargetsResponse) { +func (p *EvalTargetServiceListSourceEvalTargetVersionsResult) GetSuccess() (v *ListSourceEvalTargetVersionsResponse) { if p == nil { return } if !p.IsSetSuccess() { - return EvalTargetServiceListSourceEvalTargetsResult_Success_DEFAULT + return EvalTargetServiceListSourceEvalTargetVersionsResult_Success_DEFAULT } return p.Success } -func (p *EvalTargetServiceListSourceEvalTargetsResult) SetSuccess(x interface{}) { - p.Success = x.(*ListSourceEvalTargetsResponse) +func (p *EvalTargetServiceListSourceEvalTargetVersionsResult) SetSuccess(x interface{}) { + p.Success = x.(*ListSourceEvalTargetVersionsResponse) } -var fieldIDToName_EvalTargetServiceListSourceEvalTargetsResult = map[int16]string{ +var fieldIDToName_EvalTargetServiceListSourceEvalTargetVersionsResult = map[int16]string{ 0: "success", } -func (p *EvalTargetServiceListSourceEvalTargetsResult) IsSetSuccess() bool { +func (p *EvalTargetServiceListSourceEvalTargetVersionsResult) IsSetSuccess() bool { return p.Success != nil } -func (p *EvalTargetServiceListSourceEvalTargetsResult) Read(iprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceListSourceEvalTargetVersionsResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -16149,7 +17345,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EvalTargetServiceListSourceEvalTargetsResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EvalTargetServiceListSourceEvalTargetVersionsResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -16159,8 +17355,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *EvalTargetServiceListSourceEvalTargetsResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewListSourceEvalTargetsResponse() +func (p *EvalTargetServiceListSourceEvalTargetVersionsResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewListSourceEvalTargetVersionsResponse() if err := _field.Read(iprot); err != nil { return err } @@ -16168,9 +17364,9 @@ func (p *EvalTargetServiceListSourceEvalTargetsResult) ReadField0(iprot thrift.T return nil } -func (p *EvalTargetServiceListSourceEvalTargetsResult) Write(oprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceListSourceEvalTargetVersionsResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("ListSourceEvalTargets_result"); err != nil { + if err = oprot.WriteStructBegin("ListSourceEvalTargetVersions_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -16196,7 +17392,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *EvalTargetServiceListSourceEvalTargetsResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceListSourceEvalTargetVersionsResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -16215,15 +17411,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *EvalTargetServiceListSourceEvalTargetsResult) String() string { +func (p *EvalTargetServiceListSourceEvalTargetVersionsResult) String() string { if p == nil { return "" } - return fmt.Sprintf("EvalTargetServiceListSourceEvalTargetsResult(%+v)", *p) + return fmt.Sprintf("EvalTargetServiceListSourceEvalTargetVersionsResult(%+v)", *p) } -func (p *EvalTargetServiceListSourceEvalTargetsResult) DeepEqual(ano *EvalTargetServiceListSourceEvalTargetsResult) bool { +func (p *EvalTargetServiceListSourceEvalTargetVersionsResult) DeepEqual(ano *EvalTargetServiceListSourceEvalTargetVersionsResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -16235,7 +17431,7 @@ func (p *EvalTargetServiceListSourceEvalTargetsResult) DeepEqual(ano *EvalTarget return true } -func (p *EvalTargetServiceListSourceEvalTargetsResult) Field0DeepEqual(src *ListSourceEvalTargetsResponse) bool { +func (p *EvalTargetServiceListSourceEvalTargetVersionsResult) Field0DeepEqual(src *ListSourceEvalTargetVersionsResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -16243,41 +17439,41 @@ func (p *EvalTargetServiceListSourceEvalTargetsResult) Field0DeepEqual(src *List return true } -type EvalTargetServiceListSourceEvalTargetVersionsArgs struct { - Request *ListSourceEvalTargetVersionsRequest `thrift:"request,1" frugal:"1,default,ListSourceEvalTargetVersionsRequest"` +type EvalTargetServiceBatchGetSourceEvalTargetsArgs struct { + Request *BatchGetSourceEvalTargetsRequest `thrift:"request,1" frugal:"1,default,BatchGetSourceEvalTargetsRequest"` } -func NewEvalTargetServiceListSourceEvalTargetVersionsArgs() *EvalTargetServiceListSourceEvalTargetVersionsArgs { - return &EvalTargetServiceListSourceEvalTargetVersionsArgs{} +func NewEvalTargetServiceBatchGetSourceEvalTargetsArgs() *EvalTargetServiceBatchGetSourceEvalTargetsArgs { + return &EvalTargetServiceBatchGetSourceEvalTargetsArgs{} } -func (p *EvalTargetServiceListSourceEvalTargetVersionsArgs) InitDefault() { +func (p *EvalTargetServiceBatchGetSourceEvalTargetsArgs) InitDefault() { } -var EvalTargetServiceListSourceEvalTargetVersionsArgs_Request_DEFAULT *ListSourceEvalTargetVersionsRequest +var EvalTargetServiceBatchGetSourceEvalTargetsArgs_Request_DEFAULT *BatchGetSourceEvalTargetsRequest -func (p *EvalTargetServiceListSourceEvalTargetVersionsArgs) GetRequest() (v *ListSourceEvalTargetVersionsRequest) { +func (p *EvalTargetServiceBatchGetSourceEvalTargetsArgs) GetRequest() (v *BatchGetSourceEvalTargetsRequest) { if p == nil { return } if !p.IsSetRequest() { - return EvalTargetServiceListSourceEvalTargetVersionsArgs_Request_DEFAULT + return EvalTargetServiceBatchGetSourceEvalTargetsArgs_Request_DEFAULT } return p.Request } -func (p *EvalTargetServiceListSourceEvalTargetVersionsArgs) SetRequest(val *ListSourceEvalTargetVersionsRequest) { +func (p *EvalTargetServiceBatchGetSourceEvalTargetsArgs) SetRequest(val *BatchGetSourceEvalTargetsRequest) { p.Request = val } -var fieldIDToName_EvalTargetServiceListSourceEvalTargetVersionsArgs = map[int16]string{ +var fieldIDToName_EvalTargetServiceBatchGetSourceEvalTargetsArgs = map[int16]string{ 1: "request", } -func (p *EvalTargetServiceListSourceEvalTargetVersionsArgs) IsSetRequest() bool { +func (p *EvalTargetServiceBatchGetSourceEvalTargetsArgs) IsSetRequest() bool { return p.Request != nil } -func (p *EvalTargetServiceListSourceEvalTargetVersionsArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceBatchGetSourceEvalTargetsArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -16322,7 +17518,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EvalTargetServiceListSourceEvalTargetVersionsArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EvalTargetServiceBatchGetSourceEvalTargetsArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -16332,8 +17528,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *EvalTargetServiceListSourceEvalTargetVersionsArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewListSourceEvalTargetVersionsRequest() +func (p *EvalTargetServiceBatchGetSourceEvalTargetsArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewBatchGetSourceEvalTargetsRequest() if err := _field.Read(iprot); err != nil { return err } @@ -16341,9 +17537,9 @@ func (p *EvalTargetServiceListSourceEvalTargetVersionsArgs) ReadField1(iprot thr return nil } -func (p *EvalTargetServiceListSourceEvalTargetVersionsArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceBatchGetSourceEvalTargetsArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("ListSourceEvalTargetVersions_args"); err != nil { + if err = oprot.WriteStructBegin("BatchGetSourceEvalTargets_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -16369,7 +17565,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *EvalTargetServiceListSourceEvalTargetVersionsArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceBatchGetSourceEvalTargetsArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("request", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -16386,15 +17582,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *EvalTargetServiceListSourceEvalTargetVersionsArgs) String() string { +func (p *EvalTargetServiceBatchGetSourceEvalTargetsArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("EvalTargetServiceListSourceEvalTargetVersionsArgs(%+v)", *p) + return fmt.Sprintf("EvalTargetServiceBatchGetSourceEvalTargetsArgs(%+v)", *p) } -func (p *EvalTargetServiceListSourceEvalTargetVersionsArgs) DeepEqual(ano *EvalTargetServiceListSourceEvalTargetVersionsArgs) bool { +func (p *EvalTargetServiceBatchGetSourceEvalTargetsArgs) DeepEqual(ano *EvalTargetServiceBatchGetSourceEvalTargetsArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -16406,7 +17602,7 @@ func (p *EvalTargetServiceListSourceEvalTargetVersionsArgs) DeepEqual(ano *EvalT return true } -func (p *EvalTargetServiceListSourceEvalTargetVersionsArgs) Field1DeepEqual(src *ListSourceEvalTargetVersionsRequest) bool { +func (p *EvalTargetServiceBatchGetSourceEvalTargetsArgs) Field1DeepEqual(src *BatchGetSourceEvalTargetsRequest) bool { if !p.Request.DeepEqual(src) { return false @@ -16414,41 +17610,41 @@ func (p *EvalTargetServiceListSourceEvalTargetVersionsArgs) Field1DeepEqual(src return true } -type EvalTargetServiceListSourceEvalTargetVersionsResult struct { - Success *ListSourceEvalTargetVersionsResponse `thrift:"success,0,optional" frugal:"0,optional,ListSourceEvalTargetVersionsResponse"` +type EvalTargetServiceBatchGetSourceEvalTargetsResult struct { + Success *BatchGetSourceEvalTargetsResponse `thrift:"success,0,optional" frugal:"0,optional,BatchGetSourceEvalTargetsResponse"` } -func NewEvalTargetServiceListSourceEvalTargetVersionsResult() *EvalTargetServiceListSourceEvalTargetVersionsResult { - return &EvalTargetServiceListSourceEvalTargetVersionsResult{} +func NewEvalTargetServiceBatchGetSourceEvalTargetsResult() *EvalTargetServiceBatchGetSourceEvalTargetsResult { + return &EvalTargetServiceBatchGetSourceEvalTargetsResult{} } -func (p *EvalTargetServiceListSourceEvalTargetVersionsResult) InitDefault() { +func (p *EvalTargetServiceBatchGetSourceEvalTargetsResult) InitDefault() { } -var EvalTargetServiceListSourceEvalTargetVersionsResult_Success_DEFAULT *ListSourceEvalTargetVersionsResponse +var EvalTargetServiceBatchGetSourceEvalTargetsResult_Success_DEFAULT *BatchGetSourceEvalTargetsResponse -func (p *EvalTargetServiceListSourceEvalTargetVersionsResult) GetSuccess() (v *ListSourceEvalTargetVersionsResponse) { +func (p *EvalTargetServiceBatchGetSourceEvalTargetsResult) GetSuccess() (v *BatchGetSourceEvalTargetsResponse) { if p == nil { return } if !p.IsSetSuccess() { - return EvalTargetServiceListSourceEvalTargetVersionsResult_Success_DEFAULT + return EvalTargetServiceBatchGetSourceEvalTargetsResult_Success_DEFAULT } return p.Success } -func (p *EvalTargetServiceListSourceEvalTargetVersionsResult) SetSuccess(x interface{}) { - p.Success = x.(*ListSourceEvalTargetVersionsResponse) +func (p *EvalTargetServiceBatchGetSourceEvalTargetsResult) SetSuccess(x interface{}) { + p.Success = x.(*BatchGetSourceEvalTargetsResponse) } -var fieldIDToName_EvalTargetServiceListSourceEvalTargetVersionsResult = map[int16]string{ +var fieldIDToName_EvalTargetServiceBatchGetSourceEvalTargetsResult = map[int16]string{ 0: "success", } -func (p *EvalTargetServiceListSourceEvalTargetVersionsResult) IsSetSuccess() bool { +func (p *EvalTargetServiceBatchGetSourceEvalTargetsResult) IsSetSuccess() bool { return p.Success != nil } -func (p *EvalTargetServiceListSourceEvalTargetVersionsResult) Read(iprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceBatchGetSourceEvalTargetsResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -16493,7 +17689,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EvalTargetServiceListSourceEvalTargetVersionsResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EvalTargetServiceBatchGetSourceEvalTargetsResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -16503,8 +17699,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *EvalTargetServiceListSourceEvalTargetVersionsResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewListSourceEvalTargetVersionsResponse() +func (p *EvalTargetServiceBatchGetSourceEvalTargetsResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewBatchGetSourceEvalTargetsResponse() if err := _field.Read(iprot); err != nil { return err } @@ -16512,9 +17708,9 @@ func (p *EvalTargetServiceListSourceEvalTargetVersionsResult) ReadField0(iprot t return nil } -func (p *EvalTargetServiceListSourceEvalTargetVersionsResult) Write(oprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceBatchGetSourceEvalTargetsResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("ListSourceEvalTargetVersions_result"); err != nil { + if err = oprot.WriteStructBegin("BatchGetSourceEvalTargets_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -16540,7 +17736,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *EvalTargetServiceListSourceEvalTargetVersionsResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceBatchGetSourceEvalTargetsResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -16559,15 +17755,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *EvalTargetServiceListSourceEvalTargetVersionsResult) String() string { +func (p *EvalTargetServiceBatchGetSourceEvalTargetsResult) String() string { if p == nil { return "" } - return fmt.Sprintf("EvalTargetServiceListSourceEvalTargetVersionsResult(%+v)", *p) + return fmt.Sprintf("EvalTargetServiceBatchGetSourceEvalTargetsResult(%+v)", *p) } -func (p *EvalTargetServiceListSourceEvalTargetVersionsResult) DeepEqual(ano *EvalTargetServiceListSourceEvalTargetVersionsResult) bool { +func (p *EvalTargetServiceBatchGetSourceEvalTargetsResult) DeepEqual(ano *EvalTargetServiceBatchGetSourceEvalTargetsResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -16579,7 +17775,7 @@ func (p *EvalTargetServiceListSourceEvalTargetVersionsResult) DeepEqual(ano *Eva return true } -func (p *EvalTargetServiceListSourceEvalTargetVersionsResult) Field0DeepEqual(src *ListSourceEvalTargetVersionsResponse) bool { +func (p *EvalTargetServiceBatchGetSourceEvalTargetsResult) Field0DeepEqual(src *BatchGetSourceEvalTargetsResponse) bool { if !p.Success.DeepEqual(src) { return false @@ -16587,41 +17783,41 @@ func (p *EvalTargetServiceListSourceEvalTargetVersionsResult) Field0DeepEqual(sr return true } -type EvalTargetServiceBatchGetSourceEvalTargetsArgs struct { - Request *BatchGetSourceEvalTargetsRequest `thrift:"request,1" frugal:"1,default,BatchGetSourceEvalTargetsRequest"` +type EvalTargetServiceGetSourceEvalTargetVersionArgs struct { + Request *GetSourceEvalTargetVersionRequest `thrift:"request,1" frugal:"1,default,GetSourceEvalTargetVersionRequest"` } -func NewEvalTargetServiceBatchGetSourceEvalTargetsArgs() *EvalTargetServiceBatchGetSourceEvalTargetsArgs { - return &EvalTargetServiceBatchGetSourceEvalTargetsArgs{} +func NewEvalTargetServiceGetSourceEvalTargetVersionArgs() *EvalTargetServiceGetSourceEvalTargetVersionArgs { + return &EvalTargetServiceGetSourceEvalTargetVersionArgs{} } -func (p *EvalTargetServiceBatchGetSourceEvalTargetsArgs) InitDefault() { +func (p *EvalTargetServiceGetSourceEvalTargetVersionArgs) InitDefault() { } -var EvalTargetServiceBatchGetSourceEvalTargetsArgs_Request_DEFAULT *BatchGetSourceEvalTargetsRequest +var EvalTargetServiceGetSourceEvalTargetVersionArgs_Request_DEFAULT *GetSourceEvalTargetVersionRequest -func (p *EvalTargetServiceBatchGetSourceEvalTargetsArgs) GetRequest() (v *BatchGetSourceEvalTargetsRequest) { +func (p *EvalTargetServiceGetSourceEvalTargetVersionArgs) GetRequest() (v *GetSourceEvalTargetVersionRequest) { if p == nil { return } if !p.IsSetRequest() { - return EvalTargetServiceBatchGetSourceEvalTargetsArgs_Request_DEFAULT + return EvalTargetServiceGetSourceEvalTargetVersionArgs_Request_DEFAULT } return p.Request } -func (p *EvalTargetServiceBatchGetSourceEvalTargetsArgs) SetRequest(val *BatchGetSourceEvalTargetsRequest) { +func (p *EvalTargetServiceGetSourceEvalTargetVersionArgs) SetRequest(val *GetSourceEvalTargetVersionRequest) { p.Request = val } -var fieldIDToName_EvalTargetServiceBatchGetSourceEvalTargetsArgs = map[int16]string{ +var fieldIDToName_EvalTargetServiceGetSourceEvalTargetVersionArgs = map[int16]string{ 1: "request", } -func (p *EvalTargetServiceBatchGetSourceEvalTargetsArgs) IsSetRequest() bool { +func (p *EvalTargetServiceGetSourceEvalTargetVersionArgs) IsSetRequest() bool { return p.Request != nil } -func (p *EvalTargetServiceBatchGetSourceEvalTargetsArgs) Read(iprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceGetSourceEvalTargetVersionArgs) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -16666,7 +17862,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EvalTargetServiceBatchGetSourceEvalTargetsArgs[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EvalTargetServiceGetSourceEvalTargetVersionArgs[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -16676,8 +17872,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *EvalTargetServiceBatchGetSourceEvalTargetsArgs) ReadField1(iprot thrift.TProtocol) error { - _field := NewBatchGetSourceEvalTargetsRequest() +func (p *EvalTargetServiceGetSourceEvalTargetVersionArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewGetSourceEvalTargetVersionRequest() if err := _field.Read(iprot); err != nil { return err } @@ -16685,9 +17881,9 @@ func (p *EvalTargetServiceBatchGetSourceEvalTargetsArgs) ReadField1(iprot thrift return nil } -func (p *EvalTargetServiceBatchGetSourceEvalTargetsArgs) Write(oprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceGetSourceEvalTargetVersionArgs) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("BatchGetSourceEvalTargets_args"); err != nil { + if err = oprot.WriteStructBegin("GetSourceEvalTargetVersion_args"); err != nil { goto WriteStructBeginError } if p != nil { @@ -16713,7 +17909,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *EvalTargetServiceBatchGetSourceEvalTargetsArgs) writeField1(oprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceGetSourceEvalTargetVersionArgs) writeField1(oprot thrift.TProtocol) (err error) { if err = oprot.WriteFieldBegin("request", thrift.STRUCT, 1); err != nil { goto WriteFieldBeginError } @@ -16730,15 +17926,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } -func (p *EvalTargetServiceBatchGetSourceEvalTargetsArgs) String() string { +func (p *EvalTargetServiceGetSourceEvalTargetVersionArgs) String() string { if p == nil { return "" } - return fmt.Sprintf("EvalTargetServiceBatchGetSourceEvalTargetsArgs(%+v)", *p) + return fmt.Sprintf("EvalTargetServiceGetSourceEvalTargetVersionArgs(%+v)", *p) } -func (p *EvalTargetServiceBatchGetSourceEvalTargetsArgs) DeepEqual(ano *EvalTargetServiceBatchGetSourceEvalTargetsArgs) bool { +func (p *EvalTargetServiceGetSourceEvalTargetVersionArgs) DeepEqual(ano *EvalTargetServiceGetSourceEvalTargetVersionArgs) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -16750,7 +17946,7 @@ func (p *EvalTargetServiceBatchGetSourceEvalTargetsArgs) DeepEqual(ano *EvalTarg return true } -func (p *EvalTargetServiceBatchGetSourceEvalTargetsArgs) Field1DeepEqual(src *BatchGetSourceEvalTargetsRequest) bool { +func (p *EvalTargetServiceGetSourceEvalTargetVersionArgs) Field1DeepEqual(src *GetSourceEvalTargetVersionRequest) bool { if !p.Request.DeepEqual(src) { return false @@ -16758,41 +17954,41 @@ func (p *EvalTargetServiceBatchGetSourceEvalTargetsArgs) Field1DeepEqual(src *Ba return true } -type EvalTargetServiceBatchGetSourceEvalTargetsResult struct { - Success *BatchGetSourceEvalTargetsResponse `thrift:"success,0,optional" frugal:"0,optional,BatchGetSourceEvalTargetsResponse"` +type EvalTargetServiceGetSourceEvalTargetVersionResult struct { + Success *GetSourceEvalTargetVersionResponse `thrift:"success,0,optional" frugal:"0,optional,GetSourceEvalTargetVersionResponse"` } -func NewEvalTargetServiceBatchGetSourceEvalTargetsResult() *EvalTargetServiceBatchGetSourceEvalTargetsResult { - return &EvalTargetServiceBatchGetSourceEvalTargetsResult{} +func NewEvalTargetServiceGetSourceEvalTargetVersionResult() *EvalTargetServiceGetSourceEvalTargetVersionResult { + return &EvalTargetServiceGetSourceEvalTargetVersionResult{} } -func (p *EvalTargetServiceBatchGetSourceEvalTargetsResult) InitDefault() { +func (p *EvalTargetServiceGetSourceEvalTargetVersionResult) InitDefault() { } -var EvalTargetServiceBatchGetSourceEvalTargetsResult_Success_DEFAULT *BatchGetSourceEvalTargetsResponse +var EvalTargetServiceGetSourceEvalTargetVersionResult_Success_DEFAULT *GetSourceEvalTargetVersionResponse -func (p *EvalTargetServiceBatchGetSourceEvalTargetsResult) GetSuccess() (v *BatchGetSourceEvalTargetsResponse) { +func (p *EvalTargetServiceGetSourceEvalTargetVersionResult) GetSuccess() (v *GetSourceEvalTargetVersionResponse) { if p == nil { return } if !p.IsSetSuccess() { - return EvalTargetServiceBatchGetSourceEvalTargetsResult_Success_DEFAULT + return EvalTargetServiceGetSourceEvalTargetVersionResult_Success_DEFAULT } return p.Success } -func (p *EvalTargetServiceBatchGetSourceEvalTargetsResult) SetSuccess(x interface{}) { - p.Success = x.(*BatchGetSourceEvalTargetsResponse) +func (p *EvalTargetServiceGetSourceEvalTargetVersionResult) SetSuccess(x interface{}) { + p.Success = x.(*GetSourceEvalTargetVersionResponse) } -var fieldIDToName_EvalTargetServiceBatchGetSourceEvalTargetsResult = map[int16]string{ +var fieldIDToName_EvalTargetServiceGetSourceEvalTargetVersionResult = map[int16]string{ 0: "success", } -func (p *EvalTargetServiceBatchGetSourceEvalTargetsResult) IsSetSuccess() bool { +func (p *EvalTargetServiceGetSourceEvalTargetVersionResult) IsSetSuccess() bool { return p.Success != nil } -func (p *EvalTargetServiceBatchGetSourceEvalTargetsResult) Read(iprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceGetSourceEvalTargetVersionResult) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -16837,7 +18033,7 @@ ReadStructBeginError: ReadFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EvalTargetServiceBatchGetSourceEvalTargetsResult[fieldId]), err) + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EvalTargetServiceGetSourceEvalTargetVersionResult[fieldId]), err) SkipFieldError: return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) @@ -16847,8 +18043,8 @@ ReadStructEndError: return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) } -func (p *EvalTargetServiceBatchGetSourceEvalTargetsResult) ReadField0(iprot thrift.TProtocol) error { - _field := NewBatchGetSourceEvalTargetsResponse() +func (p *EvalTargetServiceGetSourceEvalTargetVersionResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewGetSourceEvalTargetVersionResponse() if err := _field.Read(iprot); err != nil { return err } @@ -16856,9 +18052,9 @@ func (p *EvalTargetServiceBatchGetSourceEvalTargetsResult) ReadField0(iprot thri return nil } -func (p *EvalTargetServiceBatchGetSourceEvalTargetsResult) Write(oprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceGetSourceEvalTargetVersionResult) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("BatchGetSourceEvalTargets_result"); err != nil { + if err = oprot.WriteStructBegin("GetSourceEvalTargetVersion_result"); err != nil { goto WriteStructBeginError } if p != nil { @@ -16884,7 +18080,7 @@ WriteStructEndError: return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) } -func (p *EvalTargetServiceBatchGetSourceEvalTargetsResult) writeField0(oprot thrift.TProtocol) (err error) { +func (p *EvalTargetServiceGetSourceEvalTargetVersionResult) writeField0(oprot thrift.TProtocol) (err error) { if p.IsSetSuccess() { if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { goto WriteFieldBeginError @@ -16903,15 +18099,15 @@ WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) } -func (p *EvalTargetServiceBatchGetSourceEvalTargetsResult) String() string { +func (p *EvalTargetServiceGetSourceEvalTargetVersionResult) String() string { if p == nil { return "" } - return fmt.Sprintf("EvalTargetServiceBatchGetSourceEvalTargetsResult(%+v)", *p) + return fmt.Sprintf("EvalTargetServiceGetSourceEvalTargetVersionResult(%+v)", *p) } -func (p *EvalTargetServiceBatchGetSourceEvalTargetsResult) DeepEqual(ano *EvalTargetServiceBatchGetSourceEvalTargetsResult) bool { +func (p *EvalTargetServiceGetSourceEvalTargetVersionResult) DeepEqual(ano *EvalTargetServiceGetSourceEvalTargetVersionResult) bool { if p == ano { return true } else if p == nil || ano == nil { @@ -16923,7 +18119,7 @@ func (p *EvalTargetServiceBatchGetSourceEvalTargetsResult) DeepEqual(ano *EvalTa return true } -func (p *EvalTargetServiceBatchGetSourceEvalTargetsResult) Field0DeepEqual(src *BatchGetSourceEvalTargetsResponse) bool { +func (p *EvalTargetServiceGetSourceEvalTargetVersionResult) Field0DeepEqual(src *GetSourceEvalTargetVersionResponse) bool { if !p.Success.DeepEqual(src) { return false diff --git a/backend/kitex_gen/coze/loop/evaluation/eval_target/coze.loop.evaluation.eval_target_validator.go b/backend/kitex_gen/coze/loop/evaluation/eval_target/coze.loop.evaluation.eval_target_validator.go index a24a946d7..bbdc49849 100644 --- a/backend/kitex_gen/coze/loop/evaluation/eval_target/coze.loop.evaluation.eval_target_validator.go +++ b/backend/kitex_gen/coze/loop/evaluation/eval_target/coze.loop.evaluation.eval_target_validator.go @@ -248,6 +248,27 @@ func (p *BatchGetSourceEvalTargetsResponse) IsValid() error { } return nil } +func (p *GetSourceEvalTargetVersionRequest) IsValid() error { + if p.Base != nil { + if err := p.Base.IsValid(); err != nil { + return fmt.Errorf("field Base not valid, %w", err) + } + } + return nil +} +func (p *GetSourceEvalTargetVersionResponse) IsValid() error { + if p.EvalTargetVersion != nil { + if err := p.EvalTargetVersion.IsValid(); err != nil { + return fmt.Errorf("field EvalTargetVersion not valid, %w", err) + } + } + if p.BaseResp != nil { + if err := p.BaseResp.IsValid(); err != nil { + return fmt.Errorf("field BaseResp not valid, %w", err) + } + } + return nil +} func (p *ListSourceEvalTargetVersionsRequest) IsValid() error { if p.Base != nil { if err := p.Base.IsValid(); err != nil { diff --git a/backend/kitex_gen/coze/loop/evaluation/eval_target/evaltargetservice/client.go b/backend/kitex_gen/coze/loop/evaluation/eval_target/evaltargetservice/client.go index f17584f58..e254bd476 100644 --- a/backend/kitex_gen/coze/loop/evaluation/eval_target/evaltargetservice/client.go +++ b/backend/kitex_gen/coze/loop/evaluation/eval_target/evaltargetservice/client.go @@ -18,6 +18,7 @@ type Client interface { ListSourceEvalTargets(ctx context.Context, request *eval_target.ListSourceEvalTargetsRequest, callOptions ...callopt.Option) (r *eval_target.ListSourceEvalTargetsResponse, err error) ListSourceEvalTargetVersions(ctx context.Context, request *eval_target.ListSourceEvalTargetVersionsRequest, callOptions ...callopt.Option) (r *eval_target.ListSourceEvalTargetVersionsResponse, err error) BatchGetSourceEvalTargets(ctx context.Context, request *eval_target.BatchGetSourceEvalTargetsRequest, callOptions ...callopt.Option) (r *eval_target.BatchGetSourceEvalTargetsResponse, err error) + GetSourceEvalTargetVersion(ctx context.Context, request *eval_target.GetSourceEvalTargetVersionRequest, callOptions ...callopt.Option) (r *eval_target.GetSourceEvalTargetVersionResponse, err error) SearchCustomEvalTarget(ctx context.Context, req *eval_target.SearchCustomEvalTargetRequest, callOptions ...callopt.Option) (r *eval_target.SearchCustomEvalTargetResponse, err error) ExecuteEvalTarget(ctx context.Context, request *eval_target.ExecuteEvalTargetRequest, callOptions ...callopt.Option) (r *eval_target.ExecuteEvalTargetResponse, err error) AsyncExecuteEvalTarget(ctx context.Context, request *eval_target.AsyncExecuteEvalTargetRequest, callOptions ...callopt.Option) (r *eval_target.AsyncExecuteEvalTargetResponse, err error) @@ -93,6 +94,11 @@ func (p *kEvalTargetServiceClient) BatchGetSourceEvalTargets(ctx context.Context return p.kClient.BatchGetSourceEvalTargets(ctx, request) } +func (p *kEvalTargetServiceClient) GetSourceEvalTargetVersion(ctx context.Context, request *eval_target.GetSourceEvalTargetVersionRequest, callOptions ...callopt.Option) (r *eval_target.GetSourceEvalTargetVersionResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.GetSourceEvalTargetVersion(ctx, request) +} + func (p *kEvalTargetServiceClient) SearchCustomEvalTarget(ctx context.Context, req *eval_target.SearchCustomEvalTargetRequest, callOptions ...callopt.Option) (r *eval_target.SearchCustomEvalTargetResponse, err error) { ctx = client.NewCtxWithCallOptions(ctx, callOptions) return p.kClient.SearchCustomEvalTarget(ctx, req) diff --git a/backend/kitex_gen/coze/loop/evaluation/eval_target/evaltargetservice/evaltargetservice.go b/backend/kitex_gen/coze/loop/evaluation/eval_target/evaltargetservice/evaltargetservice.go index 3bd115564..00c7676f9 100644 --- a/backend/kitex_gen/coze/loop/evaluation/eval_target/evaltargetservice/evaltargetservice.go +++ b/backend/kitex_gen/coze/loop/evaluation/eval_target/evaltargetservice/evaltargetservice.go @@ -62,6 +62,13 @@ var serviceMethods = map[string]kitex.MethodInfo{ false, kitex.WithStreamingMode(kitex.StreamingNone), ), + "GetSourceEvalTargetVersion": kitex.NewMethodInfo( + getSourceEvalTargetVersionHandler, + newEvalTargetServiceGetSourceEvalTargetVersionArgs, + newEvalTargetServiceGetSourceEvalTargetVersionResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), "SearchCustomEvalTarget": kitex.NewMethodInfo( searchCustomEvalTargetHandler, newEvalTargetServiceSearchCustomEvalTargetArgs, @@ -291,6 +298,25 @@ func newEvalTargetServiceBatchGetSourceEvalTargetsResult() interface{} { return eval_target.NewEvalTargetServiceBatchGetSourceEvalTargetsResult() } +func getSourceEvalTargetVersionHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*eval_target.EvalTargetServiceGetSourceEvalTargetVersionArgs) + realResult := result.(*eval_target.EvalTargetServiceGetSourceEvalTargetVersionResult) + success, err := handler.(eval_target.EvalTargetService).GetSourceEvalTargetVersion(ctx, realArg.Request) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newEvalTargetServiceGetSourceEvalTargetVersionArgs() interface{} { + return eval_target.NewEvalTargetServiceGetSourceEvalTargetVersionArgs() +} + +func newEvalTargetServiceGetSourceEvalTargetVersionResult() interface{} { + return eval_target.NewEvalTargetServiceGetSourceEvalTargetVersionResult() +} + func searchCustomEvalTargetHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { realArg := arg.(*eval_target.EvalTargetServiceSearchCustomEvalTargetArgs) realResult := result.(*eval_target.EvalTargetServiceSearchCustomEvalTargetResult) @@ -544,6 +570,16 @@ func (p *kClient) BatchGetSourceEvalTargets(ctx context.Context, request *eval_t return _result.GetSuccess(), nil } +func (p *kClient) GetSourceEvalTargetVersion(ctx context.Context, request *eval_target.GetSourceEvalTargetVersionRequest) (r *eval_target.GetSourceEvalTargetVersionResponse, err error) { + var _args eval_target.EvalTargetServiceGetSourceEvalTargetVersionArgs + _args.Request = request + var _result eval_target.EvalTargetServiceGetSourceEvalTargetVersionResult + if err = p.c.Call(ctx, "GetSourceEvalTargetVersion", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + func (p *kClient) SearchCustomEvalTarget(ctx context.Context, req *eval_target.SearchCustomEvalTargetRequest) (r *eval_target.SearchCustomEvalTargetResponse, err error) { var _args eval_target.EvalTargetServiceSearchCustomEvalTargetArgs _args.Req = req diff --git a/backend/kitex_gen/coze/loop/evaluation/eval_target/k-coze.loop.evaluation.eval_target.go b/backend/kitex_gen/coze/loop/evaluation/eval_target/k-coze.loop.evaluation.eval_target.go index e12b2002f..d136e19e3 100644 --- a/backend/kitex_gen/coze/loop/evaluation/eval_target/k-coze.loop.evaluation.eval_target.go +++ b/backend/kitex_gen/coze/loop/evaluation/eval_target/k-coze.loop.evaluation.eval_target.go @@ -390,6 +390,20 @@ func (p *CreateEvalTargetParam) FastRead(buf []byte) (int, error) { goto SkipFieldError } } + case 9: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField9(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } default: l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -522,6 +536,20 @@ func (p *CreateEvalTargetParam) FastReadField8(buf []byte) (int, error) { return offset, nil } +func (p *CreateEvalTargetParam) FastReadField9(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.OperationInstruction = _field + return offset, nil +} + func (p *CreateEvalTargetParam) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } @@ -537,6 +565,7 @@ func (p *CreateEvalTargetParam) FastWriteNocopy(buf []byte, w thrift.NocopyWrite offset += p.fastWriteField6(buf[offset:], w) offset += p.fastWriteField7(buf[offset:], w) offset += p.fastWriteField8(buf[offset:], w) + offset += p.fastWriteField9(buf[offset:], w) } offset += thrift.Binary.WriteFieldStop(buf[offset:]) return offset @@ -553,6 +582,7 @@ func (p *CreateEvalTargetParam) BLength() int { l += p.field6Length() l += p.field7Length() l += p.field8Length() + l += p.field9Length() } l += thrift.Binary.FieldStopLength() return l @@ -630,6 +660,15 @@ func (p *CreateEvalTargetParam) fastWriteField8(buf []byte, w thrift.NocopyWrite return offset } +func (p *CreateEvalTargetParam) fastWriteField9(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetOperationInstruction() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 9) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.OperationInstruction) + } + return offset +} + func (p *CreateEvalTargetParam) field1Length() int { l := 0 if p.IsSetSourceTargetID() { @@ -702,6 +741,15 @@ func (p *CreateEvalTargetParam) field8Length() int { return l } +func (p *CreateEvalTargetParam) field9Length() int { + l := 0 + if p.IsSetOperationInstruction() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.OperationInstruction) + } + return l +} + func (p *CreateEvalTargetParam) DeepCopy(s interface{}) error { src, ok := s.(*CreateEvalTargetParam) if !ok { @@ -764,6 +812,14 @@ func (p *CreateEvalTargetParam) DeepCopy(s interface{}) error { p.Env = &tmp } + if src.OperationInstruction != nil { + var tmp string + if *src.OperationInstruction != "" { + tmp = kutils.StringDeepCopy(*src.OperationInstruction) + } + p.OperationInstruction = &tmp + } + return nil } @@ -6264,11 +6320,538 @@ func (p *BatchGetSourceEvalTargetsResponse) FastReadField1(buf []byte) (int, err _field = append(_field, _elem) } - p.EvalTargets = _field + p.EvalTargets = _field + return offset, nil +} + +func (p *BatchGetSourceEvalTargetsResponse) FastReadField255(buf []byte) (int, error) { + offset := 0 + _field := base.NewBaseResp() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.BaseResp = _field + return offset, nil +} + +func (p *BatchGetSourceEvalTargetsResponse) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *BatchGetSourceEvalTargetsResponse) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField255(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *BatchGetSourceEvalTargetsResponse) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field255Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *BatchGetSourceEvalTargetsResponse) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetEvalTargets() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 1) + listBeginOffset := offset + offset += thrift.Binary.ListBeginLength() + var length int + for _, v := range p.EvalTargets { + length++ + offset += v.FastWriteNocopy(buf[offset:], w) + } + thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) + } + return offset +} + +func (p *BatchGetSourceEvalTargetsResponse) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) + offset += p.BaseResp.FastWriteNocopy(buf[offset:], w) + return offset +} + +func (p *BatchGetSourceEvalTargetsResponse) field1Length() int { + l := 0 + if p.IsSetEvalTargets() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.ListBeginLength() + for _, v := range p.EvalTargets { + _ = v + l += v.BLength() + } + } + return l +} + +func (p *BatchGetSourceEvalTargetsResponse) field255Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += p.BaseResp.BLength() + return l +} + +func (p *BatchGetSourceEvalTargetsResponse) DeepCopy(s interface{}) error { + src, ok := s.(*BatchGetSourceEvalTargetsResponse) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.EvalTargets != nil { + p.EvalTargets = make([]*eval_target.EvalTarget, 0, len(src.EvalTargets)) + for _, elem := range src.EvalTargets { + var _elem *eval_target.EvalTarget + if elem != nil { + _elem = &eval_target.EvalTarget{} + if err := _elem.DeepCopy(elem); err != nil { + return err + } + } + + p.EvalTargets = append(p.EvalTargets, _elem) + } + } + + var _baseResp *base.BaseResp + if src.BaseResp != nil { + _baseResp = &base.BaseResp{} + if err := _baseResp.DeepCopy(src.BaseResp); err != nil { + return err + } + } + p.BaseResp = _baseResp + + return nil +} + +func (p *GetSourceEvalTargetVersionRequest) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + var issetWorkspaceID bool = false + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + issetWorkspaceID = true + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 3: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField3(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 4: + if fieldTypeId == thrift.I32 { + l, err = p.FastReadField4(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 255: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField255(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + if !issetWorkspaceID { + fieldId = 1 + goto RequiredFieldNotSetError + } + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_GetSourceEvalTargetVersionRequest[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +RequiredFieldNotSetError: + return offset, thrift.NewProtocolException(thrift.INVALID_DATA, fmt.Sprintf("required field %s is not set", fieldIDToName_GetSourceEvalTargetVersionRequest[fieldId])) +} + +func (p *GetSourceEvalTargetVersionRequest) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = v + } + p.WorkspaceID = _field + return offset, nil +} + +func (p *GetSourceEvalTargetVersionRequest) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.SourceTargetID = _field + return offset, nil +} + +func (p *GetSourceEvalTargetVersionRequest) FastReadField3(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.SourceTargetVersion = _field + return offset, nil +} + +func (p *GetSourceEvalTargetVersionRequest) FastReadField4(buf []byte) (int, error) { + offset := 0 + + var _field *eval_target.EvalTargetType + if v, l, err := thrift.Binary.ReadI32(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + + tmp := eval_target.EvalTargetType(v) + _field = &tmp + } + p.TargetType = _field + return offset, nil +} + +func (p *GetSourceEvalTargetVersionRequest) FastReadField255(buf []byte) (int, error) { + offset := 0 + _field := base.NewBase() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Base = _field + return offset, nil +} + +func (p *GetSourceEvalTargetVersionRequest) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *GetSourceEvalTargetVersionRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField3(buf[offset:], w) + offset += p.fastWriteField4(buf[offset:], w) + offset += p.fastWriteField255(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *GetSourceEvalTargetVersionRequest) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + l += p.field3Length() + l += p.field4Length() + l += p.field255Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *GetSourceEvalTargetVersionRequest) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 1) + offset += thrift.Binary.WriteI64(buf[offset:], p.WorkspaceID) + return offset +} + +func (p *GetSourceEvalTargetVersionRequest) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetSourceTargetID() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.SourceTargetID) + } + return offset +} + +func (p *GetSourceEvalTargetVersionRequest) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetSourceTargetVersion() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 3) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.SourceTargetVersion) + } + return offset +} + +func (p *GetSourceEvalTargetVersionRequest) fastWriteField4(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetTargetType() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I32, 4) + offset += thrift.Binary.WriteI32(buf[offset:], int32(*p.TargetType)) + } + return offset +} + +func (p *GetSourceEvalTargetVersionRequest) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetBase() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) + offset += p.Base.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *GetSourceEvalTargetVersionRequest) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + return l +} + +func (p *GetSourceEvalTargetVersionRequest) field2Length() int { + l := 0 + if p.IsSetSourceTargetID() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.SourceTargetID) + } + return l +} + +func (p *GetSourceEvalTargetVersionRequest) field3Length() int { + l := 0 + if p.IsSetSourceTargetVersion() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.SourceTargetVersion) + } + return l +} + +func (p *GetSourceEvalTargetVersionRequest) field4Length() int { + l := 0 + if p.IsSetTargetType() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I32Length() + } + return l +} + +func (p *GetSourceEvalTargetVersionRequest) field255Length() int { + l := 0 + if p.IsSetBase() { + l += thrift.Binary.FieldBeginLength() + l += p.Base.BLength() + } + return l +} + +func (p *GetSourceEvalTargetVersionRequest) DeepCopy(s interface{}) error { + src, ok := s.(*GetSourceEvalTargetVersionRequest) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + p.WorkspaceID = src.WorkspaceID + + if src.SourceTargetID != nil { + var tmp string + if *src.SourceTargetID != "" { + tmp = kutils.StringDeepCopy(*src.SourceTargetID) + } + p.SourceTargetID = &tmp + } + + if src.SourceTargetVersion != nil { + var tmp string + if *src.SourceTargetVersion != "" { + tmp = kutils.StringDeepCopy(*src.SourceTargetVersion) + } + p.SourceTargetVersion = &tmp + } + + if src.TargetType != nil { + tmp := *src.TargetType + p.TargetType = &tmp + } + + var _base *base.Base + if src.Base != nil { + _base = &base.Base{} + if err := _base.DeepCopy(src.Base); err != nil { + return err + } + } + p.Base = _base + + return nil +} + +func (p *GetSourceEvalTargetVersionResponse) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 255: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField255(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_GetSourceEvalTargetVersionResponse[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *GetSourceEvalTargetVersionResponse) FastReadField1(buf []byte) (int, error) { + offset := 0 + _field := eval_target.NewEvalTargetVersion() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.EvalTargetVersion = _field return offset, nil } -func (p *BatchGetSourceEvalTargetsResponse) FastReadField255(buf []byte) (int, error) { +func (p *GetSourceEvalTargetVersionResponse) FastReadField255(buf []byte) (int, error) { offset := 0 _field := base.NewBaseResp() if l, err := _field.FastRead(buf[offset:]); err != nil { @@ -6280,11 +6863,11 @@ func (p *BatchGetSourceEvalTargetsResponse) FastReadField255(buf []byte) (int, e return offset, nil } -func (p *BatchGetSourceEvalTargetsResponse) FastWrite(buf []byte) int { +func (p *GetSourceEvalTargetVersionResponse) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } -func (p *BatchGetSourceEvalTargetsResponse) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { +func (p *GetSourceEvalTargetVersionResponse) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) @@ -6294,7 +6877,7 @@ func (p *BatchGetSourceEvalTargetsResponse) FastWriteNocopy(buf []byte, w thrift return offset } -func (p *BatchGetSourceEvalTargetsResponse) BLength() int { +func (p *GetSourceEvalTargetVersionResponse) BLength() int { l := 0 if p != nil { l += p.field1Length() @@ -6304,69 +6887,52 @@ func (p *BatchGetSourceEvalTargetsResponse) BLength() int { return l } -func (p *BatchGetSourceEvalTargetsResponse) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { +func (p *GetSourceEvalTargetVersionResponse) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { offset := 0 - if p.IsSetEvalTargets() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.LIST, 1) - listBeginOffset := offset - offset += thrift.Binary.ListBeginLength() - var length int - for _, v := range p.EvalTargets { - length++ - offset += v.FastWriteNocopy(buf[offset:], w) - } - thrift.Binary.WriteListBegin(buf[listBeginOffset:], thrift.STRUCT, length) + if p.IsSetEvalTargetVersion() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) + offset += p.EvalTargetVersion.FastWriteNocopy(buf[offset:], w) } return offset } -func (p *BatchGetSourceEvalTargetsResponse) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { +func (p *GetSourceEvalTargetVersionResponse) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { offset := 0 offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 255) offset += p.BaseResp.FastWriteNocopy(buf[offset:], w) return offset } -func (p *BatchGetSourceEvalTargetsResponse) field1Length() int { +func (p *GetSourceEvalTargetVersionResponse) field1Length() int { l := 0 - if p.IsSetEvalTargets() { + if p.IsSetEvalTargetVersion() { l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.ListBeginLength() - for _, v := range p.EvalTargets { - _ = v - l += v.BLength() - } + l += p.EvalTargetVersion.BLength() } return l } -func (p *BatchGetSourceEvalTargetsResponse) field255Length() int { +func (p *GetSourceEvalTargetVersionResponse) field255Length() int { l := 0 l += thrift.Binary.FieldBeginLength() l += p.BaseResp.BLength() return l } -func (p *BatchGetSourceEvalTargetsResponse) DeepCopy(s interface{}) error { - src, ok := s.(*BatchGetSourceEvalTargetsResponse) +func (p *GetSourceEvalTargetVersionResponse) DeepCopy(s interface{}) error { + src, ok := s.(*GetSourceEvalTargetVersionResponse) if !ok { return fmt.Errorf("%T's type not matched %T", s, p) } - if src.EvalTargets != nil { - p.EvalTargets = make([]*eval_target.EvalTarget, 0, len(src.EvalTargets)) - for _, elem := range src.EvalTargets { - var _elem *eval_target.EvalTarget - if elem != nil { - _elem = &eval_target.EvalTarget{} - if err := _elem.DeepCopy(elem); err != nil { - return err - } - } - - p.EvalTargets = append(p.EvalTargets, _elem) + var _evalTargetVersion *eval_target.EvalTargetVersion + if src.EvalTargetVersion != nil { + _evalTargetVersion = &eval_target.EvalTargetVersion{} + if err := _evalTargetVersion.DeepCopy(src.EvalTargetVersion); err != nil { + return err } } + p.EvalTargetVersion = _evalTargetVersion var _baseResp *base.BaseResp if src.BaseResp != nil { @@ -11473,6 +12039,240 @@ func (p *EvalTargetServiceBatchGetSourceEvalTargetsResult) DeepCopy(s interface{ return nil } +func (p *EvalTargetServiceGetSourceEvalTargetVersionArgs) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EvalTargetServiceGetSourceEvalTargetVersionArgs[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *EvalTargetServiceGetSourceEvalTargetVersionArgs) FastReadField1(buf []byte) (int, error) { + offset := 0 + _field := NewGetSourceEvalTargetVersionRequest() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Request = _field + return offset, nil +} + +func (p *EvalTargetServiceGetSourceEvalTargetVersionArgs) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *EvalTargetServiceGetSourceEvalTargetVersionArgs) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *EvalTargetServiceGetSourceEvalTargetVersionArgs) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *EvalTargetServiceGetSourceEvalTargetVersionArgs) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) + offset += p.Request.FastWriteNocopy(buf[offset:], w) + return offset +} + +func (p *EvalTargetServiceGetSourceEvalTargetVersionArgs) field1Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += p.Request.BLength() + return l +} + +func (p *EvalTargetServiceGetSourceEvalTargetVersionArgs) DeepCopy(s interface{}) error { + src, ok := s.(*EvalTargetServiceGetSourceEvalTargetVersionArgs) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _request *GetSourceEvalTargetVersionRequest + if src.Request != nil { + _request = &GetSourceEvalTargetVersionRequest{} + if err := _request.DeepCopy(src.Request); err != nil { + return err + } + } + p.Request = _request + + return nil +} + +func (p *EvalTargetServiceGetSourceEvalTargetVersionResult) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 0: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField0(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EvalTargetServiceGetSourceEvalTargetVersionResult[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *EvalTargetServiceGetSourceEvalTargetVersionResult) FastReadField0(buf []byte) (int, error) { + offset := 0 + _field := NewGetSourceEvalTargetVersionResponse() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.Success = _field + return offset, nil +} + +func (p *EvalTargetServiceGetSourceEvalTargetVersionResult) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *EvalTargetServiceGetSourceEvalTargetVersionResult) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField0(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *EvalTargetServiceGetSourceEvalTargetVersionResult) BLength() int { + l := 0 + if p != nil { + l += p.field0Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *EvalTargetServiceGetSourceEvalTargetVersionResult) fastWriteField0(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetSuccess() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 0) + offset += p.Success.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *EvalTargetServiceGetSourceEvalTargetVersionResult) field0Length() int { + l := 0 + if p.IsSetSuccess() { + l += thrift.Binary.FieldBeginLength() + l += p.Success.BLength() + } + return l +} + +func (p *EvalTargetServiceGetSourceEvalTargetVersionResult) DeepCopy(s interface{}) error { + src, ok := s.(*EvalTargetServiceGetSourceEvalTargetVersionResult) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + var _success *GetSourceEvalTargetVersionResponse + if src.Success != nil { + _success = &GetSourceEvalTargetVersionResponse{} + if err := _success.DeepCopy(src.Success); err != nil { + return err + } + } + p.Success = _success + + return nil +} + func (p *EvalTargetServiceSearchCustomEvalTargetArgs) FastRead(buf []byte) (int, error) { var err error @@ -13635,6 +14435,14 @@ func (p *EvalTargetServiceBatchGetSourceEvalTargetsResult) GetResult() interface return p.Success } +func (p *EvalTargetServiceGetSourceEvalTargetVersionArgs) GetFirstArgument() interface{} { + return p.Request +} + +func (p *EvalTargetServiceGetSourceEvalTargetVersionResult) GetResult() interface{} { + return p.Success +} + func (p *EvalTargetServiceSearchCustomEvalTargetArgs) GetFirstArgument() interface{} { return p.Req } diff --git a/backend/kitex_gen/coze/loop/evaluation/evaltargetservice/client.go b/backend/kitex_gen/coze/loop/evaluation/evaltargetservice/client.go index f17584f58..e254bd476 100644 --- a/backend/kitex_gen/coze/loop/evaluation/evaltargetservice/client.go +++ b/backend/kitex_gen/coze/loop/evaluation/evaltargetservice/client.go @@ -18,6 +18,7 @@ type Client interface { ListSourceEvalTargets(ctx context.Context, request *eval_target.ListSourceEvalTargetsRequest, callOptions ...callopt.Option) (r *eval_target.ListSourceEvalTargetsResponse, err error) ListSourceEvalTargetVersions(ctx context.Context, request *eval_target.ListSourceEvalTargetVersionsRequest, callOptions ...callopt.Option) (r *eval_target.ListSourceEvalTargetVersionsResponse, err error) BatchGetSourceEvalTargets(ctx context.Context, request *eval_target.BatchGetSourceEvalTargetsRequest, callOptions ...callopt.Option) (r *eval_target.BatchGetSourceEvalTargetsResponse, err error) + GetSourceEvalTargetVersion(ctx context.Context, request *eval_target.GetSourceEvalTargetVersionRequest, callOptions ...callopt.Option) (r *eval_target.GetSourceEvalTargetVersionResponse, err error) SearchCustomEvalTarget(ctx context.Context, req *eval_target.SearchCustomEvalTargetRequest, callOptions ...callopt.Option) (r *eval_target.SearchCustomEvalTargetResponse, err error) ExecuteEvalTarget(ctx context.Context, request *eval_target.ExecuteEvalTargetRequest, callOptions ...callopt.Option) (r *eval_target.ExecuteEvalTargetResponse, err error) AsyncExecuteEvalTarget(ctx context.Context, request *eval_target.AsyncExecuteEvalTargetRequest, callOptions ...callopt.Option) (r *eval_target.AsyncExecuteEvalTargetResponse, err error) @@ -93,6 +94,11 @@ func (p *kEvalTargetServiceClient) BatchGetSourceEvalTargets(ctx context.Context return p.kClient.BatchGetSourceEvalTargets(ctx, request) } +func (p *kEvalTargetServiceClient) GetSourceEvalTargetVersion(ctx context.Context, request *eval_target.GetSourceEvalTargetVersionRequest, callOptions ...callopt.Option) (r *eval_target.GetSourceEvalTargetVersionResponse, err error) { + ctx = client.NewCtxWithCallOptions(ctx, callOptions) + return p.kClient.GetSourceEvalTargetVersion(ctx, request) +} + func (p *kEvalTargetServiceClient) SearchCustomEvalTarget(ctx context.Context, req *eval_target.SearchCustomEvalTargetRequest, callOptions ...callopt.Option) (r *eval_target.SearchCustomEvalTargetResponse, err error) { ctx = client.NewCtxWithCallOptions(ctx, callOptions) return p.kClient.SearchCustomEvalTarget(ctx, req) diff --git a/backend/kitex_gen/coze/loop/evaluation/evaltargetservice/evaltargetservice.go b/backend/kitex_gen/coze/loop/evaluation/evaltargetservice/evaltargetservice.go index 3ea0074dc..15afc71f8 100644 --- a/backend/kitex_gen/coze/loop/evaluation/evaltargetservice/evaltargetservice.go +++ b/backend/kitex_gen/coze/loop/evaluation/evaltargetservice/evaltargetservice.go @@ -63,6 +63,13 @@ var serviceMethods = map[string]kitex.MethodInfo{ false, kitex.WithStreamingMode(kitex.StreamingNone), ), + "GetSourceEvalTargetVersion": kitex.NewMethodInfo( + getSourceEvalTargetVersionHandler, + newEvalTargetServiceGetSourceEvalTargetVersionArgs, + newEvalTargetServiceGetSourceEvalTargetVersionResult, + false, + kitex.WithStreamingMode(kitex.StreamingNone), + ), "SearchCustomEvalTarget": kitex.NewMethodInfo( searchCustomEvalTargetHandler, newEvalTargetServiceSearchCustomEvalTargetArgs, @@ -292,6 +299,25 @@ func newEvalTargetServiceBatchGetSourceEvalTargetsResult() interface{} { return eval_target.NewEvalTargetServiceBatchGetSourceEvalTargetsResult() } +func getSourceEvalTargetVersionHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { + realArg := arg.(*eval_target.EvalTargetServiceGetSourceEvalTargetVersionArgs) + realResult := result.(*eval_target.EvalTargetServiceGetSourceEvalTargetVersionResult) + success, err := handler.(eval_target.EvalTargetService).GetSourceEvalTargetVersion(ctx, realArg.Request) + if err != nil { + return err + } + realResult.Success = success + return nil +} + +func newEvalTargetServiceGetSourceEvalTargetVersionArgs() interface{} { + return eval_target.NewEvalTargetServiceGetSourceEvalTargetVersionArgs() +} + +func newEvalTargetServiceGetSourceEvalTargetVersionResult() interface{} { + return eval_target.NewEvalTargetServiceGetSourceEvalTargetVersionResult() +} + func searchCustomEvalTargetHandler(ctx context.Context, handler interface{}, arg, result interface{}) error { realArg := arg.(*eval_target.EvalTargetServiceSearchCustomEvalTargetArgs) realResult := result.(*eval_target.EvalTargetServiceSearchCustomEvalTargetResult) @@ -545,6 +571,16 @@ func (p *kClient) BatchGetSourceEvalTargets(ctx context.Context, request *eval_t return _result.GetSuccess(), nil } +func (p *kClient) GetSourceEvalTargetVersion(ctx context.Context, request *eval_target.GetSourceEvalTargetVersionRequest) (r *eval_target.GetSourceEvalTargetVersionResponse, err error) { + var _args eval_target.EvalTargetServiceGetSourceEvalTargetVersionArgs + _args.Request = request + var _result eval_target.EvalTargetServiceGetSourceEvalTargetVersionResult + if err = p.c.Call(ctx, "GetSourceEvalTargetVersion", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} + func (p *kClient) SearchCustomEvalTarget(ctx context.Context, req *eval_target.SearchCustomEvalTargetRequest) (r *eval_target.SearchCustomEvalTargetResponse, err error) { var _args eval_target.EvalTargetServiceSearchCustomEvalTargetArgs _args.Req = req diff --git a/backend/kitex_gen/coze/loop/evaluation/expt/coze.loop.evaluation.expt.go b/backend/kitex_gen/coze/loop/evaluation/expt/coze.loop.evaluation.expt.go index ab991a949..b99cfd775 100644 --- a/backend/kitex_gen/coze/loop/evaluation/expt/coze.loop.evaluation.expt.go +++ b/backend/kitex_gen/coze/loop/evaluation/expt/coze.loop.evaluation.expt.go @@ -27,14 +27,16 @@ const ( type UpsertExptTurnResultFilterType = string type CreateExperimentRequest struct { - WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` - EvalSetVersionID *int64 `thrift:"eval_set_version_id,2,optional" frugal:"2,optional,i64" json:"eval_set_version_id" form:"eval_set_version_id" ` - TargetVersionID *int64 `thrift:"target_version_id,3,optional" frugal:"3,optional,i64" json:"target_version_id" form:"target_version_id" ` - EvaluatorVersionIds []int64 `thrift:"evaluator_version_ids,4,optional" frugal:"4,optional,list" json:"evaluator_version_ids" form:"evaluator_version_ids" ` - Name *string `thrift:"name,5,optional" frugal:"5,optional,string" form:"name" json:"name,omitempty"` - Desc *string `thrift:"desc,6,optional" frugal:"6,optional,string" form:"desc" json:"desc,omitempty"` - EvalSetID *int64 `thrift:"eval_set_id,7,optional" frugal:"7,optional,i64" json:"eval_set_id" form:"eval_set_id" ` - TargetID *int64 `thrift:"target_id,8,optional" frugal:"8,optional,i64" json:"target_id" form:"target_id" ` + WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` + EvalSetVersionID *int64 `thrift:"eval_set_version_id,2,optional" frugal:"2,optional,i64" json:"eval_set_version_id" form:"eval_set_version_id" ` + TargetVersionID *int64 `thrift:"target_version_id,3,optional" frugal:"3,optional,i64" json:"target_version_id" form:"target_version_id" ` + EvaluatorVersionIds []int64 `thrift:"evaluator_version_ids,4,optional" frugal:"4,optional,list" json:"evaluator_version_ids" form:"evaluator_version_ids" ` + Name *string `thrift:"name,5,optional" frugal:"5,optional,string" form:"name" json:"name,omitempty"` + Desc *string `thrift:"desc,6,optional" frugal:"6,optional,string" form:"desc" json:"desc,omitempty"` + EvalSetID *int64 `thrift:"eval_set_id,7,optional" frugal:"7,optional,i64" json:"eval_set_id" form:"eval_set_id" ` + TargetID *int64 `thrift:"target_id,8,optional" frugal:"8,optional,i64" json:"target_id" form:"target_id" ` + // 实验模板可见性,默认为空,可见 + Visibility *expt.Visibility `thrift:"visibility,9,optional" frugal:"9,optional,string" form:"visibility" json:"visibility,omitempty"` TargetFieldMapping *expt.TargetFieldMapping `thrift:"target_field_mapping,20,optional" frugal:"20,optional,expt.TargetFieldMapping" form:"target_field_mapping" json:"target_field_mapping,omitempty"` EvaluatorFieldMapping []*expt.EvaluatorFieldMapping `thrift:"evaluator_field_mapping,21,optional" frugal:"21,optional,list" form:"evaluator_field_mapping" json:"evaluator_field_mapping,omitempty"` ItemConcurNum *int32 `thrift:"item_concur_num,22,optional" frugal:"22,optional,i32" form:"item_concur_num" json:"item_concur_num,omitempty"` @@ -48,13 +50,17 @@ type CreateExperimentRequest struct { // 补充的评估器id+version关联评估器方式,和evaluator_version_ids共同使用,兼容老逻辑 EvaluatorIDVersionList []*evaluator.EvaluatorIDVersionItem `thrift:"evaluator_id_version_list,40,optional" frugal:"40,optional,list" form:"evaluator_id_version_list" json:"evaluator_id_version_list,omitempty"` // 是否启用评估器得分加权汇总,以及各评估器的权重配置(key 为 evaluator_version_id,value 为权重) - EnableWeightedScore *bool `thrift:"enable_weighted_score,41,optional" frugal:"41,optional,bool" json:"enable_weighted_score" form:"enable_weighted_score" ` - EvaluatorScoreWeights map[int64]float64 `thrift:"evaluator_score_weights,42,optional" frugal:"42,optional,map" json:"evaluator_score_weights" form:"evaluator_score_weights" ` - ExptTemplateID *int64 `thrift:"expt_template_id,43,optional" frugal:"43,optional,i64" json:"expt_template_id" form:"expt_template_id" ` - ItemRetryNum *int32 `thrift:"item_retry_num,45,optional" frugal:"45,optional,i32" form:"item_retry_num" json:"item_retry_num,omitempty"` - TriggerType *expt.ExptTriggerType `thrift:"trigger_type,50,optional" frugal:"50,optional,string" form:"trigger_type" json:"trigger_type,omitempty" query:"trigger_type"` - Session *common.Session `thrift:"session,200,optional" frugal:"200,optional,common.Session" form:"session" json:"session,omitempty" query:"session"` - Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"Base" json:"Base,omitempty" query:"Base"` + EnableWeightedScore *bool `thrift:"enable_weighted_score,41,optional" frugal:"41,optional,bool" json:"enable_weighted_score" form:"enable_weighted_score" ` + EvaluatorScoreWeights map[int64]float64 `thrift:"evaluator_score_weights,42,optional" frugal:"42,optional,map" json:"evaluator_score_weights" form:"evaluator_score_weights" ` + ExptTemplateID *int64 `thrift:"expt_template_id,43,optional" frugal:"43,optional,i64" json:"expt_template_id" form:"expt_template_id" ` + ItemRetryNum *int32 `thrift:"item_retry_num,45,optional" frugal:"45,optional,i32" form:"item_retry_num" json:"item_retry_num,omitempty"` + // 试运行行数 + TrialRunItemCount *int64 `thrift:"trial_run_item_count,46,optional" frugal:"46,optional,i64" form:"trial_run_item_count" json:"trial_run_item_count,omitempty"` + // 关联的智能评测会话ID + ThreadID *string `thrift:"thread_id,60,optional" frugal:"60,optional,string" form:"thread_id" json:"thread_id,omitempty"` + TriggerType *expt.ExptTriggerType `thrift:"trigger_type,50,optional" frugal:"50,optional,string" form:"trigger_type" json:"trigger_type,omitempty" query:"trigger_type"` + Session *common.Session `thrift:"session,200,optional" frugal:"200,optional,common.Session" form:"session" json:"session,omitempty" query:"session"` + Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"Base" json:"Base,omitempty" query:"Base"` } func NewCreateExperimentRequest() *CreateExperimentRequest { @@ -155,6 +161,18 @@ func (p *CreateExperimentRequest) GetTargetID() (v int64) { return *p.TargetID } +var CreateExperimentRequest_Visibility_DEFAULT expt.Visibility + +func (p *CreateExperimentRequest) GetVisibility() (v expt.Visibility) { + if p == nil { + return + } + if !p.IsSetVisibility() { + return CreateExperimentRequest_Visibility_DEFAULT + } + return *p.Visibility +} + var CreateExperimentRequest_TargetFieldMapping_DEFAULT *expt.TargetFieldMapping func (p *CreateExperimentRequest) GetTargetFieldMapping() (v *expt.TargetFieldMapping) { @@ -335,6 +353,30 @@ func (p *CreateExperimentRequest) GetItemRetryNum() (v int32) { return *p.ItemRetryNum } +var CreateExperimentRequest_TrialRunItemCount_DEFAULT int64 + +func (p *CreateExperimentRequest) GetTrialRunItemCount() (v int64) { + if p == nil { + return + } + if !p.IsSetTrialRunItemCount() { + return CreateExperimentRequest_TrialRunItemCount_DEFAULT + } + return *p.TrialRunItemCount +} + +var CreateExperimentRequest_ThreadID_DEFAULT string + +func (p *CreateExperimentRequest) GetThreadID() (v string) { + if p == nil { + return + } + if !p.IsSetThreadID() { + return CreateExperimentRequest_ThreadID_DEFAULT + } + return *p.ThreadID +} + var CreateExperimentRequest_TriggerType_DEFAULT expt.ExptTriggerType func (p *CreateExperimentRequest) GetTriggerType() (v expt.ExptTriggerType) { @@ -394,6 +436,9 @@ func (p *CreateExperimentRequest) SetEvalSetID(val *int64) { func (p *CreateExperimentRequest) SetTargetID(val *int64) { p.TargetID = val } +func (p *CreateExperimentRequest) SetVisibility(val *expt.Visibility) { + p.Visibility = val +} func (p *CreateExperimentRequest) SetTargetFieldMapping(val *expt.TargetFieldMapping) { p.TargetFieldMapping = val } @@ -439,6 +484,12 @@ func (p *CreateExperimentRequest) SetExptTemplateID(val *int64) { func (p *CreateExperimentRequest) SetItemRetryNum(val *int32) { p.ItemRetryNum = val } +func (p *CreateExperimentRequest) SetTrialRunItemCount(val *int64) { + p.TrialRunItemCount = val +} +func (p *CreateExperimentRequest) SetThreadID(val *string) { + p.ThreadID = val +} func (p *CreateExperimentRequest) SetTriggerType(val *expt.ExptTriggerType) { p.TriggerType = val } @@ -458,6 +509,7 @@ var fieldIDToName_CreateExperimentRequest = map[int16]string{ 6: "desc", 7: "eval_set_id", 8: "target_id", + 9: "visibility", 20: "target_field_mapping", 21: "evaluator_field_mapping", 22: "item_concur_num", @@ -473,6 +525,8 @@ var fieldIDToName_CreateExperimentRequest = map[int16]string{ 42: "evaluator_score_weights", 43: "expt_template_id", 45: "item_retry_num", + 46: "trial_run_item_count", + 60: "thread_id", 50: "trigger_type", 200: "session", 255: "Base", @@ -506,6 +560,10 @@ func (p *CreateExperimentRequest) IsSetTargetID() bool { return p.TargetID != nil } +func (p *CreateExperimentRequest) IsSetVisibility() bool { + return p.Visibility != nil +} + func (p *CreateExperimentRequest) IsSetTargetFieldMapping() bool { return p.TargetFieldMapping != nil } @@ -566,6 +624,14 @@ func (p *CreateExperimentRequest) IsSetItemRetryNum() bool { return p.ItemRetryNum != nil } +func (p *CreateExperimentRequest) IsSetTrialRunItemCount() bool { + return p.TrialRunItemCount != nil +} + +func (p *CreateExperimentRequest) IsSetThreadID() bool { + return p.ThreadID != nil +} + func (p *CreateExperimentRequest) IsSetTriggerType() bool { return p.TriggerType != nil } @@ -662,6 +728,14 @@ func (p *CreateExperimentRequest) Read(iprot thrift.TProtocol) (err error) { } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 9: + if fieldTypeId == thrift.STRING { + if err = p.ReadField9(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } case 20: if fieldTypeId == thrift.STRUCT { if err = p.ReadField20(iprot); err != nil { @@ -782,6 +856,22 @@ func (p *CreateExperimentRequest) Read(iprot thrift.TProtocol) (err error) { } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 46: + if fieldTypeId == thrift.I64 { + if err = p.ReadField46(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 60: + if fieldTypeId == thrift.STRING { + if err = p.ReadField60(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } case 50: if fieldTypeId == thrift.STRING { if err = p.ReadField50(iprot); err != nil { @@ -941,6 +1031,17 @@ func (p *CreateExperimentRequest) ReadField8(iprot thrift.TProtocol) error { p.TargetID = _field return nil } +func (p *CreateExperimentRequest) ReadField9(iprot thrift.TProtocol) error { + + var _field *expt.Visibility + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.Visibility = _field + return nil +} func (p *CreateExperimentRequest) ReadField20(iprot thrift.TProtocol) error { _field := expt.NewTargetFieldMapping() if err := _field.Read(iprot); err != nil { @@ -1141,6 +1242,28 @@ func (p *CreateExperimentRequest) ReadField45(iprot thrift.TProtocol) error { p.ItemRetryNum = _field return nil } +func (p *CreateExperimentRequest) ReadField46(iprot thrift.TProtocol) error { + + var _field *int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = &v + } + p.TrialRunItemCount = _field + return nil +} +func (p *CreateExperimentRequest) ReadField60(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.ThreadID = _field + return nil +} func (p *CreateExperimentRequest) ReadField50(iprot thrift.TProtocol) error { var _field *expt.ExptTriggerType @@ -1207,6 +1330,10 @@ func (p *CreateExperimentRequest) Write(oprot thrift.TProtocol) (err error) { fieldId = 8 goto WriteFieldError } + if err = p.writeField9(oprot); err != nil { + fieldId = 9 + goto WriteFieldError + } if err = p.writeField20(oprot); err != nil { fieldId = 20 goto WriteFieldError @@ -1267,6 +1394,14 @@ func (p *CreateExperimentRequest) Write(oprot thrift.TProtocol) (err error) { fieldId = 45 goto WriteFieldError } + if err = p.writeField46(oprot); err != nil { + fieldId = 46 + goto WriteFieldError + } + if err = p.writeField60(oprot); err != nil { + fieldId = 60 + goto WriteFieldError + } if err = p.writeField50(oprot); err != nil { fieldId = 50 goto WriteFieldError @@ -1447,6 +1582,24 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 8 end error: ", p), err) } +func (p *CreateExperimentRequest) writeField9(oprot thrift.TProtocol) (err error) { + if p.IsSetVisibility() { + if err = oprot.WriteFieldBegin("visibility", thrift.STRING, 9); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.Visibility); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 9 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 9 end error: ", p), err) +} func (p *CreateExperimentRequest) writeField20(oprot thrift.TProtocol) (err error) { if p.IsSetTargetFieldMapping() { if err = oprot.WriteFieldBegin("target_field_mapping", thrift.STRUCT, 20); err != nil { @@ -1744,6 +1897,42 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 45 end error: ", p), err) } +func (p *CreateExperimentRequest) writeField46(oprot thrift.TProtocol) (err error) { + if p.IsSetTrialRunItemCount() { + if err = oprot.WriteFieldBegin("trial_run_item_count", thrift.I64, 46); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(*p.TrialRunItemCount); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 46 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 46 end error: ", p), err) +} +func (p *CreateExperimentRequest) writeField60(oprot thrift.TProtocol) (err error) { + if p.IsSetThreadID() { + if err = oprot.WriteFieldBegin("thread_id", thrift.STRING, 60); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.ThreadID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 60 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 60 end error: ", p), err) +} func (p *CreateExperimentRequest) writeField50(oprot thrift.TProtocol) (err error) { if p.IsSetTriggerType() { if err = oprot.WriteFieldBegin("trigger_type", thrift.STRING, 50); err != nil { @@ -1837,6 +2026,9 @@ func (p *CreateExperimentRequest) DeepEqual(ano *CreateExperimentRequest) bool { if !p.Field8DeepEqual(ano.TargetID) { return false } + if !p.Field9DeepEqual(ano.Visibility) { + return false + } if !p.Field20DeepEqual(ano.TargetFieldMapping) { return false } @@ -1882,6 +2074,12 @@ func (p *CreateExperimentRequest) DeepEqual(ano *CreateExperimentRequest) bool { if !p.Field45DeepEqual(ano.ItemRetryNum) { return false } + if !p.Field46DeepEqual(ano.TrialRunItemCount) { + return false + } + if !p.Field60DeepEqual(ano.ThreadID) { + return false + } if !p.Field50DeepEqual(ano.TriggerType) { return false } @@ -1986,6 +2184,18 @@ func (p *CreateExperimentRequest) Field8DeepEqual(src *int64) bool { } return true } +func (p *CreateExperimentRequest) Field9DeepEqual(src *expt.Visibility) bool { + + if p.Visibility == src { + return true + } else if p.Visibility == nil || src == nil { + return false + } + if strings.Compare(*p.Visibility, *src) != 0 { + return false + } + return true +} func (p *CreateExperimentRequest) Field20DeepEqual(src *expt.TargetFieldMapping) bool { if !p.TargetFieldMapping.DeepEqual(src) { @@ -2154,6 +2364,30 @@ func (p *CreateExperimentRequest) Field45DeepEqual(src *int32) bool { } return true } +func (p *CreateExperimentRequest) Field46DeepEqual(src *int64) bool { + + if p.TrialRunItemCount == src { + return true + } else if p.TrialRunItemCount == nil || src == nil { + return false + } + if *p.TrialRunItemCount != *src { + return false + } + return true +} +func (p *CreateExperimentRequest) Field60DeepEqual(src *string) bool { + + if p.ThreadID == src { + return true + } else if p.ThreadID == nil || src == nil { + return false + } + if strings.Compare(*p.ThreadID, *src) != 0 { + return false + } + return true +} func (p *CreateExperimentRequest) Field50DeepEqual(src *expt.ExptTriggerType) bool { if p.TriggerType == src { @@ -2422,14 +2656,16 @@ func (p *CreateExperimentResponse) Field255DeepEqual(src *base.BaseResp) bool { } type SubmitExperimentRequest struct { - WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` - EvalSetVersionID *int64 `thrift:"eval_set_version_id,2,optional" frugal:"2,optional,i64" json:"eval_set_version_id" form:"eval_set_version_id" ` - TargetVersionID *int64 `thrift:"target_version_id,3,optional" frugal:"3,optional,i64" json:"target_version_id" form:"target_version_id" ` - EvaluatorVersionIds []int64 `thrift:"evaluator_version_ids,4,optional" frugal:"4,optional,list" json:"evaluator_version_ids" form:"evaluator_version_ids" ` - Name *string `thrift:"name,5,optional" frugal:"5,optional,string" form:"name" json:"name,omitempty"` - Desc *string `thrift:"desc,6,optional" frugal:"6,optional,string" form:"desc" json:"desc,omitempty"` - EvalSetID *int64 `thrift:"eval_set_id,7,optional" frugal:"7,optional,i64" json:"eval_set_id" form:"eval_set_id" ` - TargetID *int64 `thrift:"target_id,8,optional" frugal:"8,optional,i64" json:"target_id" form:"target_id" ` + WorkspaceID int64 `thrift:"workspace_id,1,required" frugal:"1,required,i64" json:"workspace_id" form:"workspace_id,required" ` + EvalSetVersionID *int64 `thrift:"eval_set_version_id,2,optional" frugal:"2,optional,i64" json:"eval_set_version_id" form:"eval_set_version_id" ` + TargetVersionID *int64 `thrift:"target_version_id,3,optional" frugal:"3,optional,i64" json:"target_version_id" form:"target_version_id" ` + EvaluatorVersionIds []int64 `thrift:"evaluator_version_ids,4,optional" frugal:"4,optional,list" json:"evaluator_version_ids" form:"evaluator_version_ids" ` + Name *string `thrift:"name,5,optional" frugal:"5,optional,string" form:"name" json:"name,omitempty"` + Desc *string `thrift:"desc,6,optional" frugal:"6,optional,string" form:"desc" json:"desc,omitempty"` + EvalSetID *int64 `thrift:"eval_set_id,7,optional" frugal:"7,optional,i64" json:"eval_set_id" form:"eval_set_id" ` + TargetID *int64 `thrift:"target_id,8,optional" frugal:"8,optional,i64" json:"target_id" form:"target_id" ` + // 实验模板可见性,默认为空,可见 + Visibility *expt.Visibility `thrift:"visibility,9,optional" frugal:"9,optional,string" form:"visibility" json:"visibility,omitempty"` TargetFieldMapping *expt.TargetFieldMapping `thrift:"target_field_mapping,20,optional" frugal:"20,optional,expt.TargetFieldMapping" form:"target_field_mapping" json:"target_field_mapping,omitempty"` EvaluatorFieldMapping []*expt.EvaluatorFieldMapping `thrift:"evaluator_field_mapping,21,optional" frugal:"21,optional,list" form:"evaluator_field_mapping" json:"evaluator_field_mapping,omitempty"` ItemConcurNum *int32 `thrift:"item_concur_num,22,optional" frugal:"22,optional,i32" form:"item_concur_num" json:"item_concur_num,omitempty"` @@ -2443,14 +2679,18 @@ type SubmitExperimentRequest struct { // 补充的评估器id+version关联评估器方式,和evaluator_version_ids共同使用,兼容老逻辑 EvaluatorIDVersionList []*evaluator.EvaluatorIDVersionItem `thrift:"evaluator_id_version_list,40,optional" frugal:"40,optional,list" form:"evaluator_id_version_list" json:"evaluator_id_version_list,omitempty"` // 是否启用评估器得分加权汇总,以及各评估器的权重配置(key 为 evaluator_version_id,value 为权重) - EnableWeightedScore *bool `thrift:"enable_weighted_score,41,optional" frugal:"41,optional,bool" json:"enable_weighted_score" form:"enable_weighted_score" ` - ExptTemplateID *int64 `thrift:"expt_template_id,42,optional" frugal:"42,optional,i64" json:"expt_template_id" form:"expt_template_id" ` - ItemRetryNum *int32 `thrift:"item_retry_num,45,optional" frugal:"45,optional,i32" form:"item_retry_num" json:"item_retry_num,omitempty"` - TriggerType *expt.ExptTriggerType `thrift:"trigger_type,50,optional" frugal:"50,optional,string" form:"trigger_type" json:"trigger_type,omitempty" query:"trigger_type"` - TimeRange *expt.TaskTimeRange `thrift:"time_range,51,optional" frugal:"51,optional,expt.TaskTimeRange" form:"time_range" json:"time_range,omitempty"` - Ext map[string]string `thrift:"ext,100,optional" frugal:"100,optional,map" form:"ext" json:"ext,omitempty"` - Session *common.Session `thrift:"session,200,optional" frugal:"200,optional,common.Session" form:"session" json:"session,omitempty" query:"session"` - Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"Base" json:"Base,omitempty" query:"Base"` + EnableWeightedScore *bool `thrift:"enable_weighted_score,41,optional" frugal:"41,optional,bool" json:"enable_weighted_score" form:"enable_weighted_score" ` + ExptTemplateID *int64 `thrift:"expt_template_id,42,optional" frugal:"42,optional,i64" json:"expt_template_id" form:"expt_template_id" ` + ItemRetryNum *int32 `thrift:"item_retry_num,45,optional" frugal:"45,optional,i32" form:"item_retry_num" json:"item_retry_num,omitempty"` + // 试运行行数 + TrialRunItemCount *int64 `thrift:"trial_run_item_count,46,optional" frugal:"46,optional,i64" form:"trial_run_item_count" json:"trial_run_item_count,omitempty"` + // 智能评测相关 + ThreadID *string `thrift:"thread_id,60,optional" frugal:"60,optional,string" form:"thread_id" json:"thread_id,omitempty"` + TriggerType *expt.ExptTriggerType `thrift:"trigger_type,50,optional" frugal:"50,optional,string" form:"trigger_type" json:"trigger_type,omitempty" query:"trigger_type"` + TimeRange *expt.TaskTimeRange `thrift:"time_range,51,optional" frugal:"51,optional,expt.TaskTimeRange" form:"time_range" json:"time_range,omitempty"` + Ext map[string]string `thrift:"ext,100,optional" frugal:"100,optional,map" form:"ext" json:"ext,omitempty"` + Session *common.Session `thrift:"session,200,optional" frugal:"200,optional,common.Session" form:"session" json:"session,omitempty" query:"session"` + Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"Base" json:"Base,omitempty" query:"Base"` } func NewSubmitExperimentRequest() *SubmitExperimentRequest { @@ -2551,6 +2791,18 @@ func (p *SubmitExperimentRequest) GetTargetID() (v int64) { return *p.TargetID } +var SubmitExperimentRequest_Visibility_DEFAULT expt.Visibility + +func (p *SubmitExperimentRequest) GetVisibility() (v expt.Visibility) { + if p == nil { + return + } + if !p.IsSetVisibility() { + return SubmitExperimentRequest_Visibility_DEFAULT + } + return *p.Visibility +} + var SubmitExperimentRequest_TargetFieldMapping_DEFAULT *expt.TargetFieldMapping func (p *SubmitExperimentRequest) GetTargetFieldMapping() (v *expt.TargetFieldMapping) { @@ -2719,6 +2971,30 @@ func (p *SubmitExperimentRequest) GetItemRetryNum() (v int32) { return *p.ItemRetryNum } +var SubmitExperimentRequest_TrialRunItemCount_DEFAULT int64 + +func (p *SubmitExperimentRequest) GetTrialRunItemCount() (v int64) { + if p == nil { + return + } + if !p.IsSetTrialRunItemCount() { + return SubmitExperimentRequest_TrialRunItemCount_DEFAULT + } + return *p.TrialRunItemCount +} + +var SubmitExperimentRequest_ThreadID_DEFAULT string + +func (p *SubmitExperimentRequest) GetThreadID() (v string) { + if p == nil { + return + } + if !p.IsSetThreadID() { + return SubmitExperimentRequest_ThreadID_DEFAULT + } + return *p.ThreadID +} + var SubmitExperimentRequest_TriggerType_DEFAULT expt.ExptTriggerType func (p *SubmitExperimentRequest) GetTriggerType() (v expt.ExptTriggerType) { @@ -2802,6 +3078,9 @@ func (p *SubmitExperimentRequest) SetEvalSetID(val *int64) { func (p *SubmitExperimentRequest) SetTargetID(val *int64) { p.TargetID = val } +func (p *SubmitExperimentRequest) SetVisibility(val *expt.Visibility) { + p.Visibility = val +} func (p *SubmitExperimentRequest) SetTargetFieldMapping(val *expt.TargetFieldMapping) { p.TargetFieldMapping = val } @@ -2844,6 +3123,12 @@ func (p *SubmitExperimentRequest) SetExptTemplateID(val *int64) { func (p *SubmitExperimentRequest) SetItemRetryNum(val *int32) { p.ItemRetryNum = val } +func (p *SubmitExperimentRequest) SetTrialRunItemCount(val *int64) { + p.TrialRunItemCount = val +} +func (p *SubmitExperimentRequest) SetThreadID(val *string) { + p.ThreadID = val +} func (p *SubmitExperimentRequest) SetTriggerType(val *expt.ExptTriggerType) { p.TriggerType = val } @@ -2869,6 +3154,7 @@ var fieldIDToName_SubmitExperimentRequest = map[int16]string{ 6: "desc", 7: "eval_set_id", 8: "target_id", + 9: "visibility", 20: "target_field_mapping", 21: "evaluator_field_mapping", 22: "item_concur_num", @@ -2883,6 +3169,8 @@ var fieldIDToName_SubmitExperimentRequest = map[int16]string{ 41: "enable_weighted_score", 42: "expt_template_id", 45: "item_retry_num", + 46: "trial_run_item_count", + 60: "thread_id", 50: "trigger_type", 51: "time_range", 100: "ext", @@ -2918,6 +3206,10 @@ func (p *SubmitExperimentRequest) IsSetTargetID() bool { return p.TargetID != nil } +func (p *SubmitExperimentRequest) IsSetVisibility() bool { + return p.Visibility != nil +} + func (p *SubmitExperimentRequest) IsSetTargetFieldMapping() bool { return p.TargetFieldMapping != nil } @@ -2974,6 +3266,14 @@ func (p *SubmitExperimentRequest) IsSetItemRetryNum() bool { return p.ItemRetryNum != nil } +func (p *SubmitExperimentRequest) IsSetTrialRunItemCount() bool { + return p.TrialRunItemCount != nil +} + +func (p *SubmitExperimentRequest) IsSetThreadID() bool { + return p.ThreadID != nil +} + func (p *SubmitExperimentRequest) IsSetTriggerType() bool { return p.TriggerType != nil } @@ -3078,6 +3378,14 @@ func (p *SubmitExperimentRequest) Read(iprot thrift.TProtocol) (err error) { } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 9: + if fieldTypeId == thrift.STRING { + if err = p.ReadField9(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } case 20: if fieldTypeId == thrift.STRUCT { if err = p.ReadField20(iprot); err != nil { @@ -3190,6 +3498,22 @@ func (p *SubmitExperimentRequest) Read(iprot thrift.TProtocol) (err error) { } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 46: + if fieldTypeId == thrift.I64 { + if err = p.ReadField46(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 60: + if fieldTypeId == thrift.STRING { + if err = p.ReadField60(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } case 50: if fieldTypeId == thrift.STRING { if err = p.ReadField50(iprot); err != nil { @@ -3365,6 +3689,17 @@ func (p *SubmitExperimentRequest) ReadField8(iprot thrift.TProtocol) error { p.TargetID = _field return nil } +func (p *SubmitExperimentRequest) ReadField9(iprot thrift.TProtocol) error { + + var _field *expt.Visibility + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.Visibility = _field + return nil +} func (p *SubmitExperimentRequest) ReadField20(iprot thrift.TProtocol) error { _field := expt.NewTargetFieldMapping() if err := _field.Read(iprot); err != nil { @@ -3536,6 +3871,28 @@ func (p *SubmitExperimentRequest) ReadField45(iprot thrift.TProtocol) error { p.ItemRetryNum = _field return nil } +func (p *SubmitExperimentRequest) ReadField46(iprot thrift.TProtocol) error { + + var _field *int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = &v + } + p.TrialRunItemCount = _field + return nil +} +func (p *SubmitExperimentRequest) ReadField60(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.ThreadID = _field + return nil +} func (p *SubmitExperimentRequest) ReadField50(iprot thrift.TProtocol) error { var _field *expt.ExptTriggerType @@ -3639,6 +3996,10 @@ func (p *SubmitExperimentRequest) Write(oprot thrift.TProtocol) (err error) { fieldId = 8 goto WriteFieldError } + if err = p.writeField9(oprot); err != nil { + fieldId = 9 + goto WriteFieldError + } if err = p.writeField20(oprot); err != nil { fieldId = 20 goto WriteFieldError @@ -3695,6 +4056,14 @@ func (p *SubmitExperimentRequest) Write(oprot thrift.TProtocol) (err error) { fieldId = 45 goto WriteFieldError } + if err = p.writeField46(oprot); err != nil { + fieldId = 46 + goto WriteFieldError + } + if err = p.writeField60(oprot); err != nil { + fieldId = 60 + goto WriteFieldError + } if err = p.writeField50(oprot); err != nil { fieldId = 50 goto WriteFieldError @@ -3883,6 +4252,24 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 8 end error: ", p), err) } +func (p *SubmitExperimentRequest) writeField9(oprot thrift.TProtocol) (err error) { + if p.IsSetVisibility() { + if err = oprot.WriteFieldBegin("visibility", thrift.STRING, 9); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.Visibility); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 9 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 9 end error: ", p), err) +} func (p *SubmitExperimentRequest) writeField20(oprot thrift.TProtocol) (err error) { if p.IsSetTargetFieldMapping() { if err = oprot.WriteFieldBegin("target_field_mapping", thrift.STRUCT, 20); err != nil { @@ -4151,6 +4538,42 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 45 end error: ", p), err) } +func (p *SubmitExperimentRequest) writeField46(oprot thrift.TProtocol) (err error) { + if p.IsSetTrialRunItemCount() { + if err = oprot.WriteFieldBegin("trial_run_item_count", thrift.I64, 46); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(*p.TrialRunItemCount); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 46 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 46 end error: ", p), err) +} +func (p *SubmitExperimentRequest) writeField60(oprot thrift.TProtocol) (err error) { + if p.IsSetThreadID() { + if err = oprot.WriteFieldBegin("thread_id", thrift.STRING, 60); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.ThreadID); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 60 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 60 end error: ", p), err) +} func (p *SubmitExperimentRequest) writeField50(oprot thrift.TProtocol) (err error) { if p.IsSetTriggerType() { if err = oprot.WriteFieldBegin("trigger_type", thrift.STRING, 50); err != nil { @@ -4291,6 +4714,9 @@ func (p *SubmitExperimentRequest) DeepEqual(ano *SubmitExperimentRequest) bool { if !p.Field8DeepEqual(ano.TargetID) { return false } + if !p.Field9DeepEqual(ano.Visibility) { + return false + } if !p.Field20DeepEqual(ano.TargetFieldMapping) { return false } @@ -4333,6 +4759,12 @@ func (p *SubmitExperimentRequest) DeepEqual(ano *SubmitExperimentRequest) bool { if !p.Field45DeepEqual(ano.ItemRetryNum) { return false } + if !p.Field46DeepEqual(ano.TrialRunItemCount) { + return false + } + if !p.Field60DeepEqual(ano.ThreadID) { + return false + } if !p.Field50DeepEqual(ano.TriggerType) { return false } @@ -4443,6 +4875,18 @@ func (p *SubmitExperimentRequest) Field8DeepEqual(src *int64) bool { } return true } +func (p *SubmitExperimentRequest) Field9DeepEqual(src *expt.Visibility) bool { + + if p.Visibility == src { + return true + } else if p.Visibility == nil || src == nil { + return false + } + if strings.Compare(*p.Visibility, *src) != 0 { + return false + } + return true +} func (p *SubmitExperimentRequest) Field20DeepEqual(src *expt.TargetFieldMapping) bool { if !p.TargetFieldMapping.DeepEqual(src) { @@ -4598,6 +5042,30 @@ func (p *SubmitExperimentRequest) Field45DeepEqual(src *int32) bool { } return true } +func (p *SubmitExperimentRequest) Field46DeepEqual(src *int64) bool { + + if p.TrialRunItemCount == src { + return true + } else if p.TrialRunItemCount == nil || src == nil { + return false + } + if *p.TrialRunItemCount != *src { + return false + } + return true +} +func (p *SubmitExperimentRequest) Field60DeepEqual(src *string) bool { + + if p.ThreadID == src { + return true + } else if p.ThreadID == nil || src == nil { + return false + } + if strings.Compare(*p.ThreadID, *src) != 0 { + return false + } + return true +} func (p *SubmitExperimentRequest) Field50DeepEqual(src *expt.ExptTriggerType) bool { if p.TriggerType == src { @@ -8169,14 +8637,16 @@ func (p *BatchDeleteExperimentsResponse) Field255DeepEqual(src *base.BaseResp) b } type RunExperimentRequest struct { - WorkspaceID *int64 `thrift:"workspace_id,1,optional" frugal:"1,optional,i64" json:"workspace_id" form:"workspace_id" ` - ExptID *int64 `thrift:"expt_id,2,optional" frugal:"2,optional,i64" json:"expt_id" form:"expt_id" ` - ItemIds []int64 `thrift:"item_ids,3,optional" frugal:"3,optional,list" json:"item_ids" form:"item_ids" ` - ExptType *expt.ExptType `thrift:"expt_type,10,optional" frugal:"10,optional,ExptType" form:"expt_type" json:"expt_type,omitempty"` - ItemRetryNum *int32 `thrift:"item_retry_num,11,optional" frugal:"11,optional,i32" form:"item_retry_num" json:"item_retry_num,omitempty"` - Ext map[string]string `thrift:"ext,100,optional" frugal:"100,optional,map" form:"ext" json:"ext,omitempty"` - Session *common.Session `thrift:"session,200,optional" frugal:"200,optional,common.Session" form:"session" json:"session,omitempty" query:"session"` - Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"Base" json:"Base,omitempty" query:"Base"` + WorkspaceID *int64 `thrift:"workspace_id,1,optional" frugal:"1,optional,i64" json:"workspace_id" form:"workspace_id" ` + ExptID *int64 `thrift:"expt_id,2,optional" frugal:"2,optional,i64" json:"expt_id" form:"expt_id" ` + ItemIds []int64 `thrift:"item_ids,3,optional" frugal:"3,optional,list" json:"item_ids" form:"item_ids" ` + ExptType *expt.ExptType `thrift:"expt_type,10,optional" frugal:"10,optional,ExptType" form:"expt_type" json:"expt_type,omitempty"` + ItemRetryNum *int32 `thrift:"item_retry_num,11,optional" frugal:"11,optional,i32" form:"item_retry_num" json:"item_retry_num,omitempty"` + // 试运行行数 + TrialRunItemCount *int64 `thrift:"trial_run_item_count,12,optional" frugal:"12,optional,i64" form:"trial_run_item_count" json:"trial_run_item_count,omitempty"` + Ext map[string]string `thrift:"ext,100,optional" frugal:"100,optional,map" form:"ext" json:"ext,omitempty"` + Session *common.Session `thrift:"session,200,optional" frugal:"200,optional,common.Session" form:"session" json:"session,omitempty" query:"session"` + Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"Base" json:"Base,omitempty" query:"Base"` } func NewRunExperimentRequest() *RunExperimentRequest { @@ -8246,6 +8716,18 @@ func (p *RunExperimentRequest) GetItemRetryNum() (v int32) { return *p.ItemRetryNum } +var RunExperimentRequest_TrialRunItemCount_DEFAULT int64 + +func (p *RunExperimentRequest) GetTrialRunItemCount() (v int64) { + if p == nil { + return + } + if !p.IsSetTrialRunItemCount() { + return RunExperimentRequest_TrialRunItemCount_DEFAULT + } + return *p.TrialRunItemCount +} + var RunExperimentRequest_Ext_DEFAULT map[string]string func (p *RunExperimentRequest) GetExt() (v map[string]string) { @@ -8296,6 +8778,9 @@ func (p *RunExperimentRequest) SetExptType(val *expt.ExptType) { func (p *RunExperimentRequest) SetItemRetryNum(val *int32) { p.ItemRetryNum = val } +func (p *RunExperimentRequest) SetTrialRunItemCount(val *int64) { + p.TrialRunItemCount = val +} func (p *RunExperimentRequest) SetExt(val map[string]string) { p.Ext = val } @@ -8312,6 +8797,7 @@ var fieldIDToName_RunExperimentRequest = map[int16]string{ 3: "item_ids", 10: "expt_type", 11: "item_retry_num", + 12: "trial_run_item_count", 100: "ext", 200: "session", 255: "Base", @@ -8337,6 +8823,10 @@ func (p *RunExperimentRequest) IsSetItemRetryNum() bool { return p.ItemRetryNum != nil } +func (p *RunExperimentRequest) IsSetTrialRunItemCount() bool { + return p.TrialRunItemCount != nil +} + func (p *RunExperimentRequest) IsSetExt() bool { return p.Ext != nil } @@ -8407,6 +8897,14 @@ func (p *RunExperimentRequest) Read(iprot thrift.TProtocol) (err error) { } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 12: + if fieldTypeId == thrift.I64 { + if err = p.ReadField12(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } case 100: if fieldTypeId == thrift.MAP { if err = p.ReadField100(iprot); err != nil { @@ -8528,6 +9026,17 @@ func (p *RunExperimentRequest) ReadField11(iprot thrift.TProtocol) error { p.ItemRetryNum = _field return nil } +func (p *RunExperimentRequest) ReadField12(iprot thrift.TProtocol) error { + + var _field *int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = &v + } + p.TrialRunItemCount = _field + return nil +} func (p *RunExperimentRequest) ReadField100(iprot thrift.TProtocol) error { _, _, size, err := iprot.ReadMapBegin() if err != nil { @@ -8600,6 +9109,10 @@ func (p *RunExperimentRequest) Write(oprot thrift.TProtocol) (err error) { fieldId = 11 goto WriteFieldError } + if err = p.writeField12(oprot); err != nil { + fieldId = 12 + goto WriteFieldError + } if err = p.writeField100(oprot); err != nil { fieldId = 100 goto WriteFieldError @@ -8728,6 +9241,24 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 11 end error: ", p), err) } +func (p *RunExperimentRequest) writeField12(oprot thrift.TProtocol) (err error) { + if p.IsSetTrialRunItemCount() { + if err = oprot.WriteFieldBegin("trial_run_item_count", thrift.I64, 12); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(*p.TrialRunItemCount); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 12 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 12 end error: ", p), err) +} func (p *RunExperimentRequest) writeField100(oprot thrift.TProtocol) (err error) { if p.IsSetExt() { if err = oprot.WriteFieldBegin("ext", thrift.MAP, 100); err != nil { @@ -8823,6 +9354,9 @@ func (p *RunExperimentRequest) DeepEqual(ano *RunExperimentRequest) bool { if !p.Field11DeepEqual(ano.ItemRetryNum) { return false } + if !p.Field12DeepEqual(ano.TrialRunItemCount) { + return false + } if !p.Field100DeepEqual(ano.Ext) { return false } @@ -8896,6 +9430,18 @@ func (p *RunExperimentRequest) Field11DeepEqual(src *int32) bool { } return true } +func (p *RunExperimentRequest) Field12DeepEqual(src *int64) bool { + + if p.TrialRunItemCount == src { + return true + } else if p.TrialRunItemCount == nil || src == nil { + return false + } + if *p.TrialRunItemCount != *src { + return false + } + return true +} func (p *RunExperimentRequest) Field100DeepEqual(src map[string]string) bool { if len(p.Ext) != len(src) { diff --git a/backend/kitex_gen/coze/loop/evaluation/expt/k-coze.loop.evaluation.expt.go b/backend/kitex_gen/coze/loop/evaluation/expt/k-coze.loop.evaluation.expt.go index 93e7c5970..ac6c15562 100644 --- a/backend/kitex_gen/coze/loop/evaluation/expt/k-coze.loop.evaluation.expt.go +++ b/backend/kitex_gen/coze/loop/evaluation/expt/k-coze.loop.evaluation.expt.go @@ -170,6 +170,20 @@ func (p *CreateExperimentRequest) FastRead(buf []byte) (int, error) { goto SkipFieldError } } + case 9: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField9(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } case 20: if fieldTypeId == thrift.STRUCT { l, err = p.FastReadField20(buf[offset:]) @@ -380,6 +394,34 @@ func (p *CreateExperimentRequest) FastRead(buf []byte) (int, error) { goto SkipFieldError } } + case 46: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField46(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 60: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField60(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } case 50: if fieldTypeId == thrift.STRING { l, err = p.FastReadField50(buf[offset:]) @@ -568,6 +610,20 @@ func (p *CreateExperimentRequest) FastReadField8(buf []byte) (int, error) { return offset, nil } +func (p *CreateExperimentRequest) FastReadField9(buf []byte) (int, error) { + offset := 0 + + var _field *expt.Visibility + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Visibility = _field + return offset, nil +} + func (p *CreateExperimentRequest) FastReadField20(buf []byte) (int, error) { offset := 0 _field := expt.NewTargetFieldMapping() @@ -816,6 +872,34 @@ func (p *CreateExperimentRequest) FastReadField45(buf []byte) (int, error) { return offset, nil } +func (p *CreateExperimentRequest) FastReadField46(buf []byte) (int, error) { + offset := 0 + + var _field *int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.TrialRunItemCount = _field + return offset, nil +} + +func (p *CreateExperimentRequest) FastReadField60(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.ThreadID = _field + return offset, nil +} + func (p *CreateExperimentRequest) FastReadField50(buf []byte) (int, error) { offset := 0 @@ -872,9 +956,11 @@ func (p *CreateExperimentRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWri offset += p.fastWriteField41(buf[offset:], w) offset += p.fastWriteField43(buf[offset:], w) offset += p.fastWriteField45(buf[offset:], w) + offset += p.fastWriteField46(buf[offset:], w) offset += p.fastWriteField4(buf[offset:], w) offset += p.fastWriteField5(buf[offset:], w) offset += p.fastWriteField6(buf[offset:], w) + offset += p.fastWriteField9(buf[offset:], w) offset += p.fastWriteField20(buf[offset:], w) offset += p.fastWriteField21(buf[offset:], w) offset += p.fastWriteField24(buf[offset:], w) @@ -884,6 +970,7 @@ func (p *CreateExperimentRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWri offset += p.fastWriteField33(buf[offset:], w) offset += p.fastWriteField40(buf[offset:], w) offset += p.fastWriteField42(buf[offset:], w) + offset += p.fastWriteField60(buf[offset:], w) offset += p.fastWriteField50(buf[offset:], w) offset += p.fastWriteField200(buf[offset:], w) offset += p.fastWriteField255(buf[offset:], w) @@ -903,6 +990,7 @@ func (p *CreateExperimentRequest) BLength() int { l += p.field6Length() l += p.field7Length() l += p.field8Length() + l += p.field9Length() l += p.field20Length() l += p.field21Length() l += p.field22Length() @@ -918,6 +1006,8 @@ func (p *CreateExperimentRequest) BLength() int { l += p.field42Length() l += p.field43Length() l += p.field45Length() + l += p.field46Length() + l += p.field60Length() l += p.field50Length() l += p.field200Length() l += p.field255Length() @@ -1003,6 +1093,15 @@ func (p *CreateExperimentRequest) fastWriteField8(buf []byte, w thrift.NocopyWri return offset } +func (p *CreateExperimentRequest) fastWriteField9(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetVisibility() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 9) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Visibility) + } + return offset +} + func (p *CreateExperimentRequest) fastWriteField20(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetTargetFieldMapping() { @@ -1160,6 +1259,24 @@ func (p *CreateExperimentRequest) fastWriteField45(buf []byte, w thrift.NocopyWr return offset } +func (p *CreateExperimentRequest) fastWriteField46(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetTrialRunItemCount() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 46) + offset += thrift.Binary.WriteI64(buf[offset:], *p.TrialRunItemCount) + } + return offset +} + +func (p *CreateExperimentRequest) fastWriteField60(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetThreadID() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 60) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.ThreadID) + } + return offset +} + func (p *CreateExperimentRequest) fastWriteField50(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetTriggerType() { @@ -1259,6 +1376,15 @@ func (p *CreateExperimentRequest) field8Length() int { return l } +func (p *CreateExperimentRequest) field9Length() int { + l := 0 + if p.IsSetVisibility() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.Visibility) + } + return l +} + func (p *CreateExperimentRequest) field20Length() int { l := 0 if p.IsSetTargetFieldMapping() { @@ -1404,6 +1530,24 @@ func (p *CreateExperimentRequest) field45Length() int { return l } +func (p *CreateExperimentRequest) field46Length() int { + l := 0 + if p.IsSetTrialRunItemCount() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + } + return l +} + +func (p *CreateExperimentRequest) field60Length() int { + l := 0 + if p.IsSetThreadID() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.ThreadID) + } + return l +} + func (p *CreateExperimentRequest) field50Length() int { l := 0 if p.IsSetTriggerType() { @@ -1484,6 +1628,11 @@ func (p *CreateExperimentRequest) DeepCopy(s interface{}) error { p.TargetID = &tmp } + if src.Visibility != nil { + tmp := *src.Visibility + p.Visibility = &tmp + } + var _targetFieldMapping *expt.TargetFieldMapping if src.TargetFieldMapping != nil { _targetFieldMapping = &expt.TargetFieldMapping{} @@ -1602,6 +1751,19 @@ func (p *CreateExperimentRequest) DeepCopy(s interface{}) error { p.ItemRetryNum = &tmp } + if src.TrialRunItemCount != nil { + tmp := *src.TrialRunItemCount + p.TrialRunItemCount = &tmp + } + + if src.ThreadID != nil { + var tmp string + if *src.ThreadID != "" { + tmp = kutils.StringDeepCopy(*src.ThreadID) + } + p.ThreadID = &tmp + } + if src.TriggerType != nil { tmp := *src.TriggerType p.TriggerType = &tmp @@ -1929,6 +2091,20 @@ func (p *SubmitExperimentRequest) FastRead(buf []byte) (int, error) { goto SkipFieldError } } + case 9: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField9(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } case 20: if fieldTypeId == thrift.STRUCT { l, err = p.FastReadField20(buf[offset:]) @@ -2125,6 +2301,34 @@ func (p *SubmitExperimentRequest) FastRead(buf []byte) (int, error) { goto SkipFieldError } } + case 46: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField46(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 60: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField60(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } case 50: if fieldTypeId == thrift.STRING { l, err = p.FastReadField50(buf[offset:]) @@ -2341,6 +2545,20 @@ func (p *SubmitExperimentRequest) FastReadField8(buf []byte) (int, error) { return offset, nil } +func (p *SubmitExperimentRequest) FastReadField9(buf []byte) (int, error) { + offset := 0 + + var _field *expt.Visibility + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Visibility = _field + return offset, nil +} + func (p *SubmitExperimentRequest) FastReadField20(buf []byte) (int, error) { offset := 0 _field := expt.NewTargetFieldMapping() @@ -2557,6 +2775,34 @@ func (p *SubmitExperimentRequest) FastReadField45(buf []byte) (int, error) { return offset, nil } +func (p *SubmitExperimentRequest) FastReadField46(buf []byte) (int, error) { + offset := 0 + + var _field *int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.TrialRunItemCount = _field + return offset, nil +} + +func (p *SubmitExperimentRequest) FastReadField60(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.ThreadID = _field + return offset, nil +} + func (p *SubmitExperimentRequest) FastReadField50(buf []byte) (int, error) { offset := 0 @@ -2657,9 +2903,11 @@ func (p *SubmitExperimentRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWri offset += p.fastWriteField41(buf[offset:], w) offset += p.fastWriteField42(buf[offset:], w) offset += p.fastWriteField45(buf[offset:], w) + offset += p.fastWriteField46(buf[offset:], w) offset += p.fastWriteField4(buf[offset:], w) offset += p.fastWriteField5(buf[offset:], w) offset += p.fastWriteField6(buf[offset:], w) + offset += p.fastWriteField9(buf[offset:], w) offset += p.fastWriteField20(buf[offset:], w) offset += p.fastWriteField21(buf[offset:], w) offset += p.fastWriteField24(buf[offset:], w) @@ -2668,6 +2916,7 @@ func (p *SubmitExperimentRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWri offset += p.fastWriteField32(buf[offset:], w) offset += p.fastWriteField33(buf[offset:], w) offset += p.fastWriteField40(buf[offset:], w) + offset += p.fastWriteField60(buf[offset:], w) offset += p.fastWriteField50(buf[offset:], w) offset += p.fastWriteField51(buf[offset:], w) offset += p.fastWriteField100(buf[offset:], w) @@ -2689,6 +2938,7 @@ func (p *SubmitExperimentRequest) BLength() int { l += p.field6Length() l += p.field7Length() l += p.field8Length() + l += p.field9Length() l += p.field20Length() l += p.field21Length() l += p.field22Length() @@ -2703,6 +2953,8 @@ func (p *SubmitExperimentRequest) BLength() int { l += p.field41Length() l += p.field42Length() l += p.field45Length() + l += p.field46Length() + l += p.field60Length() l += p.field50Length() l += p.field51Length() l += p.field100Length() @@ -2790,6 +3042,15 @@ func (p *SubmitExperimentRequest) fastWriteField8(buf []byte, w thrift.NocopyWri return offset } +func (p *SubmitExperimentRequest) fastWriteField9(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetVisibility() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 9) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Visibility) + } + return offset +} + func (p *SubmitExperimentRequest) fastWriteField20(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetTargetFieldMapping() { @@ -2930,6 +3191,24 @@ func (p *SubmitExperimentRequest) fastWriteField45(buf []byte, w thrift.NocopyWr return offset } +func (p *SubmitExperimentRequest) fastWriteField46(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetTrialRunItemCount() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 46) + offset += thrift.Binary.WriteI64(buf[offset:], *p.TrialRunItemCount) + } + return offset +} + +func (p *SubmitExperimentRequest) fastWriteField60(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetThreadID() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 60) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.ThreadID) + } + return offset +} + func (p *SubmitExperimentRequest) fastWriteField50(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetTriggerType() { @@ -3055,6 +3334,15 @@ func (p *SubmitExperimentRequest) field8Length() int { return l } +func (p *SubmitExperimentRequest) field9Length() int { + l := 0 + if p.IsSetVisibility() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.Visibility) + } + return l +} + func (p *SubmitExperimentRequest) field20Length() int { l := 0 if p.IsSetTargetFieldMapping() { @@ -3189,6 +3477,24 @@ func (p *SubmitExperimentRequest) field45Length() int { return l } +func (p *SubmitExperimentRequest) field46Length() int { + l := 0 + if p.IsSetTrialRunItemCount() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + } + return l +} + +func (p *SubmitExperimentRequest) field60Length() int { + l := 0 + if p.IsSetThreadID() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.ThreadID) + } + return l +} + func (p *SubmitExperimentRequest) field50Length() int { l := 0 if p.IsSetTriggerType() { @@ -3293,6 +3599,11 @@ func (p *SubmitExperimentRequest) DeepCopy(s interface{}) error { p.TargetID = &tmp } + if src.Visibility != nil { + tmp := *src.Visibility + p.Visibility = &tmp + } + var _targetFieldMapping *expt.TargetFieldMapping if src.TargetFieldMapping != nil { _targetFieldMapping = &expt.TargetFieldMapping{} @@ -3398,6 +3709,19 @@ func (p *SubmitExperimentRequest) DeepCopy(s interface{}) error { p.ItemRetryNum = &tmp } + if src.TrialRunItemCount != nil { + tmp := *src.TrialRunItemCount + p.TrialRunItemCount = &tmp + } + + if src.ThreadID != nil { + var tmp string + if *src.ThreadID != "" { + tmp = kutils.StringDeepCopy(*src.ThreadID) + } + p.ThreadID = &tmp + } + if src.TriggerType != nil { tmp := *src.TriggerType p.TriggerType = &tmp @@ -6100,6 +6424,20 @@ func (p *RunExperimentRequest) FastRead(buf []byte) (int, error) { goto SkipFieldError } } + case 12: + if fieldTypeId == thrift.I64 { + l, err = p.FastReadField12(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } case 100: if fieldTypeId == thrift.MAP { l, err = p.FastReadField100(buf[offset:]) @@ -6242,6 +6580,20 @@ func (p *RunExperimentRequest) FastReadField11(buf []byte) (int, error) { return offset, nil } +func (p *RunExperimentRequest) FastReadField12(buf []byte) (int, error) { + offset := 0 + + var _field *int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.TrialRunItemCount = _field + return offset, nil +} + func (p *RunExperimentRequest) FastReadField100(buf []byte) (int, error) { offset := 0 @@ -6308,6 +6660,7 @@ func (p *RunExperimentRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWriter offset += p.fastWriteField1(buf[offset:], w) offset += p.fastWriteField2(buf[offset:], w) offset += p.fastWriteField11(buf[offset:], w) + offset += p.fastWriteField12(buf[offset:], w) offset += p.fastWriteField3(buf[offset:], w) offset += p.fastWriteField10(buf[offset:], w) offset += p.fastWriteField100(buf[offset:], w) @@ -6326,6 +6679,7 @@ func (p *RunExperimentRequest) BLength() int { l += p.field3Length() l += p.field10Length() l += p.field11Length() + l += p.field12Length() l += p.field100Length() l += p.field200Length() l += p.field255Length() @@ -6386,6 +6740,15 @@ func (p *RunExperimentRequest) fastWriteField11(buf []byte, w thrift.NocopyWrite return offset } +func (p *RunExperimentRequest) fastWriteField12(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetTrialRunItemCount() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 12) + offset += thrift.Binary.WriteI64(buf[offset:], *p.TrialRunItemCount) + } + return offset +} + func (p *RunExperimentRequest) fastWriteField100(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetExt() { @@ -6468,6 +6831,15 @@ func (p *RunExperimentRequest) field11Length() int { return l } +func (p *RunExperimentRequest) field12Length() int { + l := 0 + if p.IsSetTrialRunItemCount() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + } + return l +} + func (p *RunExperimentRequest) field100Length() int { l := 0 if p.IsSetExt() { @@ -6536,6 +6908,11 @@ func (p *RunExperimentRequest) DeepCopy(s interface{}) error { p.ItemRetryNum = &tmp } + if src.TrialRunItemCount != nil { + tmp := *src.TrialRunItemCount + p.TrialRunItemCount = &tmp + } + if src.Ext != nil { p.Ext = make(map[string]string, len(src.Ext)) for key, val := range src.Ext { diff --git a/backend/loop_gen/coze/loop/evaluation/loeval_target/local_evaltargetservice.go b/backend/loop_gen/coze/loop/evaluation/loeval_target/local_evaltargetservice.go index 5dc907e3f..3ba9678b5 100644 --- a/backend/loop_gen/coze/loop/evaluation/loeval_target/local_evaltargetservice.go +++ b/backend/loop_gen/coze/loop/evaluation/loeval_target/local_evaltargetservice.go @@ -181,6 +181,29 @@ func (l *LocalEvalTargetService) BatchGetSourceEvalTargets(ctx context.Context, return result.GetSuccess(), nil } +// GetSourceEvalTargetVersion +// 获取Source评测对象版本的详情 +func (l *LocalEvalTargetService) GetSourceEvalTargetVersion(ctx context.Context, request *eval_target.GetSourceEvalTargetVersionRequest, callOptions ...callopt.Option) (*eval_target.GetSourceEvalTargetVersionResponse, error) { + chain := l.mds(func(ctx context.Context, in, out interface{}) error { + arg := in.(*eval_target.EvalTargetServiceGetSourceEvalTargetVersionArgs) + result := out.(*eval_target.EvalTargetServiceGetSourceEvalTargetVersionResult) + resp, err := l.impl.GetSourceEvalTargetVersion(ctx, arg.Request) + if err != nil { + return err + } + result.SetSuccess(resp) + return nil + }) + + arg := &eval_target.EvalTargetServiceGetSourceEvalTargetVersionArgs{Request: request} + result := &eval_target.EvalTargetServiceGetSourceEvalTargetVersionResult{} + ctx = l.injectRPCInfo(ctx, "GetSourceEvalTargetVersion") + if err := chain(ctx, arg, result); err != nil { + return nil, err + } + return result.GetSuccess(), nil +} + // SearchCustomEvalTarget // 搜索自定义评测对象 func (l *LocalEvalTargetService) SearchCustomEvalTarget(ctx context.Context, req *eval_target.SearchCustomEvalTargetRequest, callOptions ...callopt.Option) (*eval_target.SearchCustomEvalTargetResponse, error) { diff --git a/backend/modules/evaluation/application/convertor/evaluator/evaluator.go b/backend/modules/evaluation/application/convertor/evaluator/evaluator.go index e8219e7da..6a67053bf 100644 --- a/backend/modules/evaluation/application/convertor/evaluator/evaluator.go +++ b/backend/modules/evaluation/application/convertor/evaluator/evaluator.go @@ -33,6 +33,9 @@ func ConvertEvaluatorDTO2DO(evaluatorDTO *evaluatordto.Evaluator) (*evaluatordo. BaseInfo: commonconvertor.ConvertBaseInfoDTO2DO(evaluatorDTO.GetBaseInfo()), Tags: ConvertEvaluatorLangTagsDTO2DO(evaluatorDTO.GetTags()), } + if evaluatorDTO.IsSetSourceType() { + evaluatorDO.SourceType = convertSourceTypeDTO2DO(evaluatorDTO.GetSourceType()) + } if evaluatorDTO.GetEvaluatorInfo() != nil { evaluatorDO.EvaluatorInfo = &evaluatordo.EvaluatorInfo{ Benchmark: evaluatorDTO.GetEvaluatorInfo().Benchmark, @@ -86,6 +89,10 @@ func ConvertEvaluatorDO2DTO(do *evaluatordo.Evaluator) *evaluatordto.Evaluator { BaseInfo: commonconvertor.ConvertBaseInfoDO2DTO(do.BaseInfo), Tags: ConvertEvaluatorLangTagsDO2DTO(do.Tags), } + if do.SourceType != 0 { + val := convertSourceTypeDO2DTO(do.SourceType) + dto.SourceType = &val + } if do.EvaluatorInfo != nil { dto.EvaluatorInfo = &evaluatordto.EvaluatorInfo{ Benchmark: do.EvaluatorInfo.Benchmark, @@ -150,6 +157,24 @@ func convertBoxTypeDO2DTO(doType evaluatordo.EvaluatorBoxType) string { } } +func convertSourceTypeDTO2DO(dtoType evaluatordto.EvaluatorSourceType) evaluatordo.EvaluatorSourceType { + switch dtoType { + case evaluatordto.EvaluatorSourceTypeIntelligentGen: + return evaluatordo.EvaluatorSourceType_IntelligentGen + default: + return 0 + } +} + +func convertSourceTypeDO2DTO(doType evaluatordo.EvaluatorSourceType) evaluatordto.EvaluatorSourceType { + switch doType { + case evaluatordo.EvaluatorSourceType_IntelligentGen: + return evaluatordto.EvaluatorSourceTypeIntelligentGen + default: + return "" + } +} + // normalizeLanguageType 标准化语言类型(转换为标准格式) func normalizeLanguageType(langType evaluatordo.LanguageType) evaluatordo.LanguageType { switch strings.ToLower(string(langType)) { diff --git a/backend/modules/evaluation/application/convertor/evaluator/evaluator_content_test.go b/backend/modules/evaluation/application/convertor/evaluator/evaluator_content_test.go new file mode 100644 index 000000000..4bba341a4 --- /dev/null +++ b/backend/modules/evaluation/application/convertor/evaluator/evaluator_content_test.go @@ -0,0 +1,30 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package evaluator + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestConvertToolDTO2DO_Nil(t *testing.T) { + t.Parallel() + assert.Nil(t, ConvertToolDTO2DO(nil)) +} + +func TestConvertToolDO2DTO_Nil(t *testing.T) { + t.Parallel() + assert.Nil(t, ConvertToolDO2DTO(nil)) +} + +func TestConvertFunctionDTO2DO_Nil(t *testing.T) { + t.Parallel() + assert.Nil(t, ConvertFunctionDTO2DO(nil)) +} + +func TestConvertFunctionDO2DTO_Nil(t *testing.T) { + t.Parallel() + assert.Nil(t, ConvertFunctionDO2DTO(nil)) +} diff --git a/backend/modules/evaluation/application/convertor/evaluator/evaluator_output_data_test.go b/backend/modules/evaluation/application/convertor/evaluator/evaluator_output_data_test.go index 16c04a52f..4108aeb3c 100644 --- a/backend/modules/evaluation/application/convertor/evaluator/evaluator_output_data_test.go +++ b/backend/modules/evaluation/application/convertor/evaluator/evaluator_output_data_test.go @@ -116,6 +116,64 @@ func TestConvertEvaluatorOutputData_RoundTrip(t *testing.T) { } } +func TestConvertCorrectionDTO2DO_Nil(t *testing.T) { + t.Parallel() + assert.Nil(t, ConvertCorrectionDTO2DO(nil)) +} + +func TestConvertCorrectionDO2DTO_Nil(t *testing.T) { + t.Parallel() + assert.Nil(t, ConvertCorrectionDO2DTO(nil)) +} + +func TestConvertEvaluatorResultDTO2DO_Nil(t *testing.T) { + t.Parallel() + assert.Nil(t, ConvertEvaluatorResultDTO2DO(nil)) +} + +func TestConvertEvaluatorResultDO2DTO_Nil(t *testing.T) { + t.Parallel() + assert.Nil(t, ConvertEvaluatorResultDO2DTO(nil)) +} + +func TestConvertEvaluatorUsageDTO2DO_Nil(t *testing.T) { + t.Parallel() + assert.Nil(t, ConvertEvaluatorUsageDTO2DO(nil)) +} + +func TestConvertEvaluatorUsageDO2DTO_Nil(t *testing.T) { + t.Parallel() + assert.Nil(t, ConvertEvaluatorUsageDO2DTO(nil)) +} + +func TestConvertEvaluatorRunErrorDTO2DO_Nil(t *testing.T) { + t.Parallel() + assert.Nil(t, ConvertEvaluatorRunErrorDTO2DO(nil)) +} + +func TestConvertEvaluatorRunErrorDO2DTO_Nil(t *testing.T) { + t.Parallel() + assert.Nil(t, ConvertEvaluatorRunErrorDO2DTO(nil)) +} + +func TestToInvokeEvaluatorResultDO_Nil(t *testing.T) { + t.Parallel() + assert.Nil(t, toInvokeEvaluatorResultDO(nil)) +} + +func TestToInvokeEvaluatorUsageDO_Nil(t *testing.T) { + t.Parallel() + assert.Nil(t, toInvokeEvaluatorUsageDO(nil)) +} + +func TestToInvokeEvaluatorRunErrorDO_Nil(t *testing.T) { + t.Parallel() + result := toInvokeEvaluatorRunErrorDO(nil) + assert.NotNil(t, result) + assert.Equal(t, int32(errno.RunEvaluatorFailCode), result.Code) + assert.Equal(t, "unknown error", result.Message) +} + func TestToEvaluatorRunStatusDO(t *testing.T) { t.Parallel() diff --git a/backend/modules/evaluation/application/convertor/evaluator/evaluator_test.go b/backend/modules/evaluation/application/convertor/evaluator/evaluator_test.go index 5d02cd606..685094ca8 100755 --- a/backend/modules/evaluation/application/convertor/evaluator/evaluator_test.go +++ b/backend/modules/evaluation/application/convertor/evaluator/evaluator_test.go @@ -27,6 +27,20 @@ func TestConvertBoxType(t *testing.T) { assert.Equal(t, "Black", convertBoxTypeDO2DTO(evaluatordo.EvaluatorBoxTypeBlack)) } +func TestConvertSourceTypeDTO2DO(t *testing.T) { + t.Parallel() + assert.Equal(t, evaluatordo.EvaluatorSourceType_IntelligentGen, convertSourceTypeDTO2DO(evaluatordto.EvaluatorSourceTypeIntelligentGen)) + assert.Equal(t, evaluatordo.EvaluatorSourceType(0), convertSourceTypeDTO2DO("")) + assert.Equal(t, evaluatordo.EvaluatorSourceType(0), convertSourceTypeDTO2DO("unknown_type")) +} + +func TestConvertSourceTypeDO2DTO(t *testing.T) { + t.Parallel() + assert.Equal(t, evaluatordto.EvaluatorSourceTypeIntelligentGen, convertSourceTypeDO2DTO(evaluatordo.EvaluatorSourceType_IntelligentGen)) + assert.Equal(t, evaluatordto.EvaluatorSourceType(""), convertSourceTypeDO2DTO(0)) + assert.Equal(t, evaluatordto.EvaluatorSourceType(""), convertSourceTypeDO2DTO(999)) +} + func TestNormalizeLanguageType(t *testing.T) { t.Parallel() assert.Equal(t, evaluatordo.LanguageTypePython, normalizeLanguageType(evaluatordo.LanguageType("python"))) diff --git a/backend/modules/evaluation/application/convertor/experiment/expt.go b/backend/modules/evaluation/application/convertor/experiment/expt.go index a9d173bac..879ae694a 100644 --- a/backend/modules/evaluation/application/convertor/experiment/expt.go +++ b/backend/modules/evaluation/application/convertor/experiment/expt.go @@ -357,6 +357,12 @@ func ToExptDTO(experiment *entity.Experiment) *domain_expt.Experiment { TargetRuntimeParam: trtp, EvaluatorIDVersionList: evaluatorIDVersionList, } + if experiment.Visibility == entity.Visibility_Hidden { + res.Visibility = gptr.Of(domain_expt.VisibilityHidden) + } + if experiment.ThreadID != nil { + res.ThreadID = experiment.ThreadID + } if experiment.TriggerType != "" { tt := experiment.TriggerType res.TriggerType = &tt @@ -403,6 +409,9 @@ func ToExptDTO(experiment *entity.Experiment) *domain_expt.Experiment { Desc: gptr.Of(experiment.ExptTemplateMeta.Desc), ExptType: gptr.Of(domain_expt.ExptType(experiment.ExptTemplateMeta.ExptType)), } + if experiment.ExptTemplateMeta.Visibility == entity.Visibility_Hidden { + res.ExptTemplateMeta.Visibility = gptr.Of(domain_expt.VisibilityHidden) + } } res.EvalTarget = target.EvalTargetDO2DTO(experiment.Target) @@ -465,11 +474,12 @@ func CreateEvalTargetParamDTO2DO(param *eval_target.CreateEvalTargetParam) *enti } res := &entity.CreateEvalTargetParam{ - SourceTargetID: param.SourceTargetID, - SourceTargetVersion: param.SourceTargetVersion, - BotPublishVersion: param.BotPublishVersion, - Region: param.Region, - Env: param.Env, + SourceTargetID: param.SourceTargetID, + SourceTargetVersion: param.SourceTargetVersion, + BotPublishVersion: param.BotPublishVersion, + Region: param.Region, + Env: param.Env, + OperationInstruction: param.OperationInstruction, } if param.EvalTargetType != nil { res.EvalTargetType = gptr.Of(entity.EvalTargetType(*param.EvalTargetType)) @@ -488,8 +498,11 @@ func CreateEvalTargetParamDTO2DO(param *eval_target.CreateEvalTargetParam) *enti return res } -func ExptType2EvalMode(exptType domain_expt.ExptType) entity.ExptRunMode { +func ExptType2EvalMode(exptType domain_expt.ExptType, trialRunItemCount *int64) entity.ExptRunMode { exptMode := entity.EvaluationModeSubmit + if trialRunItemCount != nil && *trialRunItemCount > 0 { + return entity.EvaluationModeTrialRun + } if exptType == domain_expt.ExptType_Online { exptMode = entity.EvaluationModeAppend } @@ -511,8 +524,19 @@ func ConvertCreateReq(cer *expt.CreateExperimentRequest, evaluatorVersionRunConf MaxAliveTime: cer.GetMaxAliveTime(), SourceType: entity.SourceType(cer.GetSourceType()), SourceID: cer.GetSourceID(), + TrialRunItemCount: cer.GetTrialRunItemCount(), ExptConf: nil, } + if cer.IsSetVisibility() { + if cer.GetVisibility() == domain_expt.VisibilityHidden { + param.Visibility = gptr.Of(entity.Visibility_Hidden) + } else { + param.Visibility = gptr.Of(entity.Visibility(0)) + } + } + if cer.IsSetThreadID() { + param.ThreadID = cer.ThreadID + } evaluationConfiguration, err := NewEvalConfConvert().ConvertToEntity(cer, evaluatorVersionRunConfigs) if err != nil { return nil, err diff --git a/backend/modules/evaluation/application/convertor/experiment/expt_template.go b/backend/modules/evaluation/application/convertor/experiment/expt_template.go index bcb119c35..d8e34c9c5 100644 --- a/backend/modules/evaluation/application/convertor/experiment/expt_template.go +++ b/backend/modules/evaluation/application/convertor/experiment/expt_template.go @@ -61,6 +61,13 @@ func fillCreateTemplateMeta(param *entity.CreateExptTemplateParam, req *expt.Cre param.Name = meta.GetName() param.Description = meta.GetDesc() param.ExptType = entity.ExptType(gptr.Indirect(meta.ExptType)) + if meta.IsSetVisibility() { + if meta.GetVisibility() == domain_expt.VisibilityHidden { + param.Visibility = gptr.Of(entity.Visibility_Hidden) + } else { + param.Visibility = gptr.Of(entity.Visibility(0)) + } + } if req.GetExptInfo() != nil && req.GetExptInfo().IsSetCronActivate() { param.CronActivate = req.GetExptInfo().GetCronActivate() } @@ -655,6 +662,13 @@ func ConvertUpdateExptTemplateMetaReq(req *expt.UpdateExperimentTemplateMetaRequ if meta.IsSetExptType() { param.ExptType = entity.ExptType(meta.GetExptType()) } + if meta.IsSetVisibility() { + if meta.GetVisibility() == domain_expt.VisibilityHidden { + param.Visibility = gptr.Of(entity.Visibility_Hidden) + } else { + param.Visibility = gptr.Of(entity.Visibility(0)) + } + } } return param, nil @@ -672,6 +686,9 @@ func fillTemplateMetaDTO(template *entity.ExptTemplate, dto *domain_expt.ExptTem Desc: gptr.Of(template.Meta.Desc), ExptType: gptr.Of(domain_expt.ExptType(template.Meta.ExptType)), } + if template.Meta.Visibility == entity.Visibility_Hidden { + dto.Meta.Visibility = gptr.Of(domain_expt.VisibilityHidden) + } } // 拆分子函数:TripleConfig -> DTO @@ -1180,11 +1197,12 @@ func CreateEvalTargetParamDTO2DOForTemplate(param *eval_target.CreateEvalTargetP } res := &entity.CreateEvalTargetParam{ - SourceTargetID: param.SourceTargetID, - SourceTargetVersion: param.SourceTargetVersion, - BotPublishVersion: param.BotPublishVersion, - Region: param.Region, - Env: param.Env, + SourceTargetID: param.SourceTargetID, + SourceTargetVersion: param.SourceTargetVersion, + BotPublishVersion: param.BotPublishVersion, + Region: param.Region, + Env: param.Env, + OperationInstruction: param.OperationInstruction, } if param.EvalTargetType != nil { res.EvalTargetType = gptr.Of(entity.EvalTargetType(*param.EvalTargetType)) @@ -1237,6 +1255,7 @@ func ConvertUpdateExptTemplateReq(req *expt.UpdateExperimentTemplateRequest) (*e // 从 triple_config 中提取三元组配置(注意:eval_set_id / target_id 不允许修改,仅允许调整版本与配置) if req.GetTripleConfig() != nil { tripleConfig := req.GetTripleConfig() + param.EvalSetID = tripleConfig.GetEvalSetID() param.EvalSetVersionID = tripleConfig.GetEvalSetVersionID() param.TargetVersionID = tripleConfig.GetTargetVersionID() // 从 EvaluatorIDVersionItems 构建 entity 层的 EvaluatorIDVersionItems diff --git a/backend/modules/evaluation/application/convertor/experiment/expt_test.go b/backend/modules/evaluation/application/convertor/experiment/expt_test.go index d0bdc22c6..1f2fd0007 100644 --- a/backend/modules/evaluation/application/convertor/experiment/expt_test.go +++ b/backend/modules/evaluation/application/convertor/experiment/expt_test.go @@ -2388,6 +2388,65 @@ func TestToTargetFieldMappingDOForTemplate_RuntimeParam(t *testing.T) { }) } +func TestExptType2EvalMode(t *testing.T) { + tests := []struct { + name string + exptType domain_expt.ExptType + trialRunItemCount *int64 + want entity.ExptRunMode + }{ + { + name: "trial run with positive count", + exptType: domain_expt.ExptType_Offline, + trialRunItemCount: gptr.Of(int64(10)), + want: entity.EvaluationModeTrialRun, + }, + { + name: "trial run with count 1", + exptType: domain_expt.ExptType_Online, + trialRunItemCount: gptr.Of(int64(1)), + want: entity.EvaluationModeTrialRun, + }, + { + name: "trial run with zero count falls through", + exptType: domain_expt.ExptType_Offline, + trialRunItemCount: gptr.Of(int64(0)), + want: entity.EvaluationModeSubmit, + }, + { + name: "trial run with negative count falls through", + exptType: domain_expt.ExptType_Offline, + trialRunItemCount: gptr.Of(int64(-1)), + want: entity.EvaluationModeSubmit, + }, + { + name: "nil trial run count with online type", + exptType: domain_expt.ExptType_Online, + trialRunItemCount: nil, + want: entity.EvaluationModeAppend, + }, + { + name: "nil trial run count with offline type", + exptType: domain_expt.ExptType_Offline, + trialRunItemCount: nil, + want: entity.EvaluationModeSubmit, + }, + { + name: "zero trial run count with online type", + exptType: domain_expt.ExptType_Online, + trialRunItemCount: gptr.Of(int64(0)), + want: entity.EvaluationModeAppend, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got := ExptType2EvalMode(tt.exptType, tt.trialRunItemCount) + assert.Equal(t, tt.want, got) + }) + } +} + func TestToEvaluatorFieldMappingDoForTemplate_Complete(t *testing.T) { t.Run("完整转换评估器字段映射", func(t *testing.T) { mapping := []*domain_expt.EvaluatorFieldMapping{ diff --git a/backend/modules/evaluation/application/convertor/experiment/openapi.go b/backend/modules/evaluation/application/convertor/experiment/openapi.go index e40a3c2b9..c0ca8b52f 100644 --- a/backend/modules/evaluation/application/convertor/experiment/openapi.go +++ b/backend/modules/evaluation/application/convertor/experiment/openapi.go @@ -897,7 +897,10 @@ func openAPITargetOutputDataDO2DTO(data *entity.EvalTargetOutputData) *openapiEv if data.TimeConsumingMS != nil { res.TimeConsumingMs = data.TimeConsumingMS } - if len(res.OutputFields) == 0 && res.EvalTargetUsage == nil && res.EvalTargetRunError == nil && res.TimeConsumingMs == nil { + if len(data.Ext) > 0 { + res.Ext = data.Ext + } + if len(res.OutputFields) == 0 && res.EvalTargetUsage == nil && res.EvalTargetRunError == nil && res.TimeConsumingMs == nil && len(res.Ext) == 0 { return nil } return res diff --git a/backend/modules/evaluation/application/convertor/target/eval_target.go b/backend/modules/evaluation/application/convertor/target/eval_target.go index 2f51e5a9a..b12000fe3 100644 --- a/backend/modules/evaluation/application/convertor/target/eval_target.go +++ b/backend/modules/evaluation/application/convertor/target/eval_target.go @@ -70,6 +70,9 @@ func EvalTargetVersionDTO2DO(targetVersionDTO *dto.EvalTargetVersion) (targetVer Description: targetVersionDTO.GetEvalTargetContent().GetPrompt().GetDescription(), } } + if targetVersionDTO.GetEvalTargetContent().GetWebAgent() != nil { + targetVersionDO.WebAgent = WebAgentDTO2DO(targetVersionDTO.GetEvalTargetContent().GetWebAgent()) + } targetVersionDO.CustomRPCServer = CustomRPCServerDTO2DO(targetVersionDTO.GetEvalTargetContent().GetCustomRPCServer()) targetVersionDO.RuntimeParamDemo = gptr.Of(targetVersionDTO.GetEvalTargetContent().GetRuntimeParamJSONDemo()) } @@ -201,6 +204,14 @@ func EvalTargetVersionDO2DTO(targetVersionDO *do.EvalTargetVersion) (targetVersi if targetVersionDO.CustomRPCServer != nil { targetVersionDTO.EvalTargetContent.CustomRPCServer = CustomRPCServerDO2DTO(targetVersionDO.CustomRPCServer) } + case do.EvalTargetTypeWebAgent: + targetVersionDTO.EvalTargetContent = &dto.EvalTargetContent{ + InputSchemas: make([]*commondto.ArgsSchema, 0), + OutputSchemas: make([]*commondto.ArgsSchema, 0), + } + if targetVersionDO.WebAgent != nil { + targetVersionDTO.EvalTargetContent.WebAgent = WebAgentDO2DTO(targetVersionDO.WebAgent) + } default: targetVersionDTO.EvalTargetContent = &dto.EvalTargetContent{ InputSchemas: make([]*commondto.ArgsSchema, 0), @@ -267,6 +278,96 @@ func CustomRPCServerDTO2DO(dto *dto.CustomRPCServer) (doRes *do.CustomRPCServer) } } +func WebAgentDTO2DO(dto *dto.WebAgent) *do.WebAgent { + if dto == nil { + return nil + } + return &do.WebAgent{ + ID: gptr.Indirect(dto.ID), + Name: gptr.Indirect(dto.Name), + Description: gptr.Indirect(dto.Description), + AgentConfig: AgentConfigDTO2DO(dto.AgentConfig), + PromptConfig: WebAgentTargetPromptConfigDTO2DO(dto.PromptConfig), + } +} + +func WebAgentDO2DTO(doObj *do.WebAgent) *dto.WebAgent { + if doObj == nil { + return nil + } + return &dto.WebAgent{ + ID: gptr.Of(doObj.ID), + Name: gptr.Of(doObj.Name), + Description: gptr.Of(doObj.Description), + AgentConfig: AgentConfigDO2DTO(doObj.AgentConfig), + PromptConfig: WebAgentTargetPromptConfigDO2DTO(doObj.PromptConfig), + } +} + +func WebAgentTargetPromptConfigDTO2DO(dtoObj *dto.WebAgentTargetPromptConfig) *do.WebAgentTargetPromptConfig { + if dtoObj == nil { + return nil + } + messageList := make([]*do.Message, 0, len(dtoObj.GetMessageList())) + for _, msg := range dtoObj.GetMessageList() { + messageList = append(messageList, commonconvertor.ConvertMessageDTO2DO(msg)) + } + return &do.WebAgentTargetPromptConfig{ + MessageList: messageList, + OutputRule: WebAgentTargetPromptConfigOutputRuleDTO2DO(dtoObj.OutputRule), + } +} + +func WebAgentTargetPromptConfigDO2DTO(doObj *do.WebAgentTargetPromptConfig) *dto.WebAgentTargetPromptConfig { + if doObj == nil { + return nil + } + messageList := make([]*commondto.Message, 0, len(doObj.MessageList)) + for _, msg := range doObj.MessageList { + messageList = append(messageList, commonconvertor.ConvertMessageDO2DTO(msg)) + } + return &dto.WebAgentTargetPromptConfig{ + MessageList: messageList, + OutputRule: WebAgentTargetPromptConfigOutputRuleDO2DTO(doObj.OutputRule), + } +} + +func WebAgentTargetPromptConfigOutputRuleDTO2DO(dtoObj *dto.WebAgentTargetPromptConfigOutputRule) *do.WebAgentTargetPromptConfigOutputRule { + if dtoObj == nil { + return nil + } + return &do.WebAgentTargetPromptConfigOutputRule{ + Message: commonconvertor.ConvertMessageDTO2DO(dtoObj.Message), + } +} + +func WebAgentTargetPromptConfigOutputRuleDO2DTO(doObj *do.WebAgentTargetPromptConfigOutputRule) *dto.WebAgentTargetPromptConfigOutputRule { + if doObj == nil { + return nil + } + return &dto.WebAgentTargetPromptConfigOutputRule{ + Message: commonconvertor.ConvertMessageDO2DTO(doObj.Message), + } +} + +func AgentConfigDTO2DO(dtoObj *commondto.AgentConfig) *do.AgentConfig { + if dtoObj == nil { + return nil + } + return &do.AgentConfig{ + AgentType: do.AgentType(gptr.Indirect(dtoObj.AgentType)), + } +} + +func AgentConfigDO2DTO(doObj *do.AgentConfig) *commondto.AgentConfig { + if doObj == nil { + return nil + } + return &commondto.AgentConfig{ + AgentType: gptr.Of(string(doObj.AgentType)), + } +} + func HttpInfoDTO2DO(httpInfoDTO *dto.HTTPInfo) (httpInfoDO *do.HTTPInfo) { if httpInfoDTO == nil { return nil diff --git a/backend/modules/evaluation/application/convertor/target/eval_target_record.go b/backend/modules/evaluation/application/convertor/target/eval_target_record.go index 95d2a3780..fc38da16a 100644 --- a/backend/modules/evaluation/application/convertor/target/eval_target_record.go +++ b/backend/modules/evaluation/application/convertor/target/eval_target_record.go @@ -108,6 +108,7 @@ func OutputDO2DTO(src *entity.EvalTargetOutputData) *eval_target.EvalTargetOutpu } return &eval_target.EvalTargetOutputData{ OutputFields: ContentDOToDTOs(src.OutputFields), + Ext: src.Ext, EvalTargetUsage: UsageDO2DTO(src.EvalTargetUsage), EvalTargetRunError: RunErrorDO2DTO(src.EvalTargetRunError), TimeConsumingMs: src.TimeConsumingMS, @@ -132,6 +133,7 @@ func OutputDTO2ToDO(src *eval_target.EvalTargetOutputData) *entity.EvalTargetOut } return &entity.EvalTargetOutputData{ OutputFields: ContentDTO2DOs(src.OutputFields), + Ext: src.Ext, EvalTargetUsage: UsageDTO2DO(src.EvalTargetUsage), EvalTargetRunError: RunErrorDTO2DO(src.EvalTargetRunError), TimeConsumingMS: src.TimeConsumingMs, @@ -375,6 +377,7 @@ func ToInvokeOutputDataDO(req *openapi.ReportEvalTargetInvokeResultRequest) *ent case spi.InvokeEvalTargetStatus_SUCCESS: return &entity.EvalTargetOutputData{ OutputFields: outputFields, + Ext: output.Ext, EvalTargetUsage: evalTargetUsage, EvalTargetRunError: nil, } @@ -388,7 +391,12 @@ func ToInvokeOutputDataDO(req *openapi.ReportEvalTargetInvokeResultRequest) *ent Message: errorMessage, } } + var ext map[string]string + if output := req.GetOutput(); output != nil { + ext = output.Ext + } return &entity.EvalTargetOutputData{ + Ext: ext, OutputFields: outputFields, EvalTargetUsage: evalTargetUsage, EvalTargetRunError: evalTargetRunError, diff --git a/backend/modules/evaluation/application/convertor/target/eval_target_record_test.go b/backend/modules/evaluation/application/convertor/target/eval_target_record_test.go index 6cf7e8140..8f59997c3 100755 --- a/backend/modules/evaluation/application/convertor/target/eval_target_record_test.go +++ b/backend/modules/evaluation/application/convertor/target/eval_target_record_test.go @@ -10,6 +10,7 @@ import ( "github.com/bytedance/gg/gptr" "github.com/stretchr/testify/assert" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/common" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/openapi" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/spi" "github.com/coze-dev/coze-loop/backend/modules/evaluation/consts" @@ -173,3 +174,138 @@ func TestToSPIContentHelpers(t *testing.T) { assert.Equal(t, entity.EvalTargetRunStatusFail, ToTargetRunStatsDO(spi.InvokeEvalTargetStatus_FAILED)) assert.Equal(t, entity.EvalTargetRunStatusUnknown, ToTargetRunStatsDO(spi.InvokeEvalTargetStatus(42))) } + +func TestNilInputBranches(t *testing.T) { + t.Parallel() + + // InputDO2DTO nil input returns nil + assert.Nil(t, InputDO2DTO(nil)) + + // OutputDO2DTO nil input returns nil + assert.Nil(t, OutputDO2DTO(nil)) + + // InputDTO2ToDO nil input returns nil + assert.Nil(t, InputDTO2ToDO(nil)) + + // OutputDTO2ToDO nil input returns nil + assert.Nil(t, OutputDTO2ToDO(nil)) + + // StatusDO2DTO nil input returns nil + assert.Nil(t, StatusDO2DTO(nil)) + + // StatusDTO2DO nil input returns nil + assert.Nil(t, StatusDTO2DO(nil)) + + // getInt64Value nil input returns 0 + assert.Equal(t, int64(0), getInt64Value(nil)) + + // getStringValue nil input returns "" + assert.Equal(t, "", getStringValue(nil)) + + // getInt32Value nil input returns 0 + assert.Equal(t, int32(0), getInt32Value(nil)) + + // UsageDO2DTO nil input returns nil + assert.Nil(t, UsageDO2DTO(nil)) + + // RunErrorDO2DTO nil input returns nil + assert.Nil(t, RunErrorDO2DTO(nil)) + + // UsageDTO2DO nil input returns nil + assert.Nil(t, UsageDTO2DO(nil)) + + // RunErrorDTO2DO nil input returns nil + assert.Nil(t, RunErrorDTO2DO(nil)) + + // EvalTargetRecordDO2DTO nil input returns nil + assert.Nil(t, EvalTargetRecordDO2DTO(nil)) + + // RecordDTO2DO nil input returns nil + assert.Nil(t, RecordDTO2DO(nil)) +} + +func TestContentDTO2DOs_NilAndEmpty(t *testing.T) { + t.Parallel() + + // nil input + res := ContentDTO2DOs(nil) + assert.NotNil(t, res) + assert.Empty(t, res) + + // empty input + res = ContentDTO2DOs(map[string]*common.Content{}) + assert.NotNil(t, res) + assert.Empty(t, res) + + // input with nil value + res = ContentDTO2DOs(map[string]*common.Content{"key": nil}) + assert.Len(t, res, 1) + assert.Nil(t, res["key"]) +} + +func TestMessagesDTO2DO_NilMessage(t *testing.T) { + t.Parallel() + + // nil slice + res := MessagesDTO2DO(nil) + assert.NotNil(t, res) + assert.Empty(t, res) + + // slice with nil element - should be skipped + res = MessagesDTO2DO([]*common.Message{nil}) + assert.NotNil(t, res) + assert.Empty(t, res) +} + +func TestToSPIContentTypeDO_AudioAndVideo(t *testing.T) { + t.Parallel() + + // Audio branch + audioType := spi.ContentTypeAudio + audioContent := &spi.Content{ + ContentType: &audioType, + Audio: &spi.Audio{ + URL: gptr.Of("http://example.com/audio.mp3"), + }, + } + audioDO := ToSPIContentDO(audioContent) + assert.NotNil(t, audioDO) + assert.Equal(t, entity.ContentTypeAudio, *audioDO.ContentType) + assert.NotNil(t, audioDO.Audio) + assert.Equal(t, "http://example.com/audio.mp3", *audioDO.Audio.URL) + + // Video branch + videoType := spi.ContentTypeVideo + videoContent := &spi.Content{ + ContentType: &videoType, + Video: &spi.Video{ + URL: gptr.Of("http://example.com/video.mp4"), + }, + } + videoDO := ToSPIContentDO(videoContent) + assert.NotNil(t, videoDO) + assert.Equal(t, entity.ContentTypeVideo, *videoDO.ContentType) + assert.NotNil(t, videoDO.Video) + assert.Equal(t, "http://example.com/video.mp4", *videoDO.Video.URL) + + // nil content + assert.Nil(t, ToSPIContentDO(nil)) + + // multipart type + multipartType := spi.ContentTypeMultiPart + mpContent := &spi.Content{ + ContentType: &multipartType, + } + mpDO := ToSPIContentDO(mpContent) + assert.NotNil(t, mpDO) + assert.Equal(t, entity.ContentTypeMultipart, *mpDO.ContentType) + + // unknown type falls back to Text (default branch) + unknownType := spi.ContentType("unknown") + unknownContent := &spi.Content{ + ContentType: &unknownType, + } + unknownDO := ToSPIContentDO(unknownContent) + assert.NotNil(t, unknownDO) + assert.Equal(t, entity.ContentTypeText, *unknownDO.ContentType) +} diff --git a/backend/modules/evaluation/application/convertor/target/eval_target_test.go b/backend/modules/evaluation/application/convertor/target/eval_target_test.go index 533b4d349..53cf9eda3 100755 --- a/backend/modules/evaluation/application/convertor/target/eval_target_test.go +++ b/backend/modules/evaluation/application/convertor/target/eval_target_test.go @@ -519,6 +519,307 @@ func TestCustomEvalTargetConversions(t *testing.T) { assert.Nil(t, CustomEvalTargetDO2DTO(nil)) } +func TestWebAgentDTO2DO(t *testing.T) { + t.Parallel() + + tests := []struct { + name string + input *dto.WebAgent + expected *do.WebAgent + }{ + { + name: "nil输入", + input: nil, + expected: nil, + }, + { + name: "完整WebAgent转换", + input: &dto.WebAgent{ + ID: gptr.Of(int64(100)), + Name: gptr.Of("agent-name"), + Description: gptr.Of("agent-desc"), + AgentConfig: &commondto.AgentConfig{ + AgentType: gptr.Of("vibe"), + }, + PromptConfig: &dto.WebAgentTargetPromptConfig{ + MessageList: []*commondto.Message{}, + }, + }, + expected: &do.WebAgent{ + ID: 100, + Name: "agent-name", + Description: "agent-desc", + AgentConfig: &do.AgentConfig{ + AgentType: do.AgentType("vibe"), + }, + PromptConfig: &do.WebAgentTargetPromptConfig{ + MessageList: []*do.Message{}, + }, + }, + }, + { + name: "AgentConfig为nil", + input: &dto.WebAgent{ + ID: gptr.Of(int64(1)), + Name: gptr.Of("test"), + }, + expected: &do.WebAgent{ + ID: 1, + Name: "test", + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + result := WebAgentDTO2DO(tt.input) + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestWebAgentDO2DTO(t *testing.T) { + t.Parallel() + + tests := []struct { + name string + input *do.WebAgent + expected *dto.WebAgent + }{ + { + name: "nil输入", + input: nil, + expected: nil, + }, + { + name: "完整WebAgent转换", + input: &do.WebAgent{ + ID: 100, + Name: "agent-name", + Description: "agent-desc", + AgentConfig: &do.AgentConfig{ + AgentType: do.AgentType("vibe"), + }, + PromptConfig: &do.WebAgentTargetPromptConfig{ + MessageList: []*do.Message{}, + }, + }, + expected: &dto.WebAgent{ + ID: gptr.Of(int64(100)), + Name: gptr.Of("agent-name"), + Description: gptr.Of("agent-desc"), + AgentConfig: &commondto.AgentConfig{ + AgentType: gptr.Of("vibe"), + }, + PromptConfig: &dto.WebAgentTargetPromptConfig{ + MessageList: []*commondto.Message{}, + }, + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + result := WebAgentDO2DTO(tt.input) + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestAgentConfigDTO2DO(t *testing.T) { + t.Parallel() + + tests := []struct { + name string + input *commondto.AgentConfig + expected *do.AgentConfig + }{ + { + name: "nil输入", + input: nil, + expected: nil, + }, + { + name: "正常转换", + input: &commondto.AgentConfig{ + AgentType: gptr.Of("vibe"), + }, + expected: &do.AgentConfig{ + AgentType: do.AgentType("vibe"), + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + result := AgentConfigDTO2DO(tt.input) + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestAgentConfigDO2DTO(t *testing.T) { + t.Parallel() + + tests := []struct { + name string + input *do.AgentConfig + expected *commondto.AgentConfig + }{ + { + name: "nil输入", + input: nil, + expected: nil, + }, + { + name: "正常转换", + input: &do.AgentConfig{ + AgentType: do.AgentType("vibe"), + }, + expected: &commondto.AgentConfig{ + AgentType: gptr.Of("vibe"), + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + result := AgentConfigDO2DTO(tt.input) + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestWebAgentTargetPromptConfigDTO2DO(t *testing.T) { + t.Parallel() + + tests := []struct { + name string + input *dto.WebAgentTargetPromptConfig + expected *do.WebAgentTargetPromptConfig + }{ + { + name: "nil输入", + input: nil, + expected: nil, + }, + { + name: "空MessageList", + input: &dto.WebAgentTargetPromptConfig{}, + expected: &do.WebAgentTargetPromptConfig{ + MessageList: []*do.Message{}, + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + result := WebAgentTargetPromptConfigDTO2DO(tt.input) + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestWebAgentTargetPromptConfigDO2DTO(t *testing.T) { + t.Parallel() + + tests := []struct { + name string + input *do.WebAgentTargetPromptConfig + expected *dto.WebAgentTargetPromptConfig + }{ + { + name: "nil输入", + input: nil, + expected: nil, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + result := WebAgentTargetPromptConfigDO2DTO(tt.input) + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestWebAgentTargetPromptConfigOutputRuleDTO2DO(t *testing.T) { + t.Parallel() + + tests := []struct { + name string + input *dto.WebAgentTargetPromptConfigOutputRule + expected *do.WebAgentTargetPromptConfigOutputRule + }{ + { + name: "nil输入", + input: nil, + expected: nil, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + result := WebAgentTargetPromptConfigOutputRuleDTO2DO(tt.input) + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestWebAgentTargetPromptConfigOutputRuleDO2DTO(t *testing.T) { + t.Parallel() + + tests := []struct { + name string + input *do.WebAgentTargetPromptConfigOutputRule + expected *dto.WebAgentTargetPromptConfigOutputRule + }{ + { + name: "nil输入", + input: nil, + expected: nil, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + result := WebAgentTargetPromptConfigOutputRuleDO2DTO(tt.input) + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestEvalTargetVersionDO2DTO_WebAgent(t *testing.T) { + t.Parallel() + + targetVersionDO := &do.EvalTargetVersion{ + ID: 1, + SpaceID: 2, + TargetID: 3, + SourceTargetVersion: "v1.0", + EvalTargetType: do.EvalTargetTypeWebAgent, + WebAgent: &do.WebAgent{ + ID: 1, + Name: "test", + }, + } + + result := EvalTargetVersionDO2DTO(targetVersionDO) + assert.NotNil(t, result) + assert.NotNil(t, result.EvalTargetContent) + assert.NotNil(t, result.EvalTargetContent.WebAgent) + assert.Equal(t, int64(1), gptr.Indirect(result.EvalTargetContent.WebAgent.ID)) + assert.Equal(t, "test", gptr.Indirect(result.EvalTargetContent.WebAgent.Name)) +} + func TestEvalTargetDO2DTO_OnlineTypeSameDTOAsBase(t *testing.T) { t.Parallel() diff --git a/backend/modules/evaluation/application/eval_target_app.go b/backend/modules/evaluation/application/eval_target_app.go index 46f4afb44..4fbfe06a4 100644 --- a/backend/modules/evaluation/application/eval_target_app.go +++ b/backend/modules/evaluation/application/eval_target_app.go @@ -5,10 +5,14 @@ package application import ( "context" + "fmt" "strconv" + "strings" "sync" "time" + "github.com/pkg/errors" + "github.com/bytedance/gg/gmap" "github.com/bytedance/gg/gptr" @@ -28,6 +32,7 @@ import ( "github.com/coze-dev/coze-loop/backend/modules/evaluation/pkg/errno" "github.com/coze-dev/coze-loop/backend/pkg/errorx" "github.com/coze-dev/coze-loop/backend/pkg/json" + "github.com/coze-dev/coze-loop/backend/pkg/logs" ) var _ evaluation.EvalTargetService = &EvalTargetApplicationImpl{} @@ -96,7 +101,8 @@ func (e EvalTargetApplicationImpl) CreateEvalTarget(ctx context.Context, request opts = append(opts, entity.WithCozeBotPublishVersion(request.Param.BotPublishVersion), entity.WithCozeBotInfoType(entity.CozeBotInfoType(request.Param.GetBotInfoType())), entity.WithRegion(request.Param.Region), - entity.WithEnv(request.Param.Env)) + entity.WithEnv(request.Param.Env), + entity.WithOperationInstruction(request.Param.OperationInstruction)) if request.GetParam().CustomEvalTarget != nil { opts = append(opts, entity.WithCustomEvalTarget(&entity.CustomEvalTarget{ ID: request.GetParam().GetCustomEvalTarget().ID, @@ -504,6 +510,45 @@ func (e EvalTargetApplicationImpl) BatchGetSourceEvalTargets(ctx context.Context }, nil } +func (e EvalTargetApplicationImpl) GetSourceEvalTargetVersion(ctx context.Context, request *eval_target.GetSourceEvalTargetVersionRequest) (r *eval_target.GetSourceEvalTargetVersionResponse, err error) { + if request == nil { + return nil, errorx.NewByCode(errno.CommonInvalidParamCode, errorx.WithExtraMsg("req is nil")) + } + if request.TargetType == nil { + return nil, errorx.NewByCode(errno.CommonInvalidParamCode, errorx.WithExtraMsg("target type is nil")) + } + if strings.TrimSpace(request.GetSourceTargetID()) == "" { + return nil, errorx.NewByCode(errno.CommonInvalidParamCode, errorx.WithExtraMsg("source target id is nil")) + } + // 鉴权 + err = e.auth.Authorization(ctx, &rpc.AuthorizationParam{ + ObjectID: strconv.FormatInt(request.WorkspaceID, 10), + SpaceID: request.WorkspaceID, + ActionObjects: []*rpc.ActionObject{{Action: gptr.Of("listLoopEvaluationTarget"), EntityType: gptr.Of(rpc.AuthEntityType_Space)}}, + }) + if err != nil { + return nil, err + } + targetType := entity.EvalTargetType(request.GetTargetType()) + typedOperator := e.typedOperators[targetType] + if typedOperator == nil { + return nil, errorx.NewByCode(errno.CommonInvalidParamCode, errorx.WithExtraMsg("target type not support")) + } + evalTarget, err := typedOperator.BuildBySource(ctx, request.WorkspaceID, request.GetSourceTargetID(), request.GetSourceTargetVersion()) + if err != nil { + return nil, err + } + if evalTarget == nil { + return &eval_target.GetSourceEvalTargetVersionResponse{}, nil + } + if err := typedOperator.PackSourceVersionInfo(ctx, request.WorkspaceID, []*entity.EvalTarget{evalTarget}); err != nil { + return nil, err + } + return &eval_target.GetSourceEvalTargetVersionResponse{ + EvalTargetVersion: target.EvalTargetVersionDO2DTO(evalTarget.EvalTargetVersion), + }, nil +} + func (e EvalTargetApplicationImpl) SearchCustomEvalTarget(ctx context.Context, req *eval_target.SearchCustomEvalTargetRequest) (r *eval_target.SearchCustomEvalTargetResponse, err error) { // 参数校验 if req == nil { @@ -610,9 +655,11 @@ func (e EvalTargetApplicationImpl) DebugEvalTarget(ctx context.Context, request // return nil, err // } + logID := logs.GetLogID(ctx) + inputFields := make(map[string]*spi.Content) if err := json.Unmarshal([]byte(request.GetParam()), &inputFields); err != nil { - return nil, errorx.NewByCode(errno.CommonInvalidParamCode, errorx.WithExtraMsg("param json unmarshal fail")) + return nil, errorx.NewByCode(errno.CommonInvalidParamCode, errorx.WithExtraMsg(fmt.Sprintf("logid: %s, param json unmarshal fail", logID))) } switch request.GetEvalTargetType() { @@ -638,14 +685,19 @@ func (e EvalTargetApplicationImpl) DebugEvalTarget(ctx context.Context, request }, }) if err != nil { - return nil, err + return nil, errors.Wrap(err, fmt.Sprintf("logid: %s", logID)) + } + if record != nil && record.Status != nil && *record.Status == entity.EvalTargetRunStatusFail { + if record.EvalTargetOutputData != nil && record.EvalTargetOutputData.EvalTargetRunError != nil { + record.EvalTargetOutputData.EvalTargetRunError.Message = fmt.Sprintf("logid: %s, %s", logID, record.EvalTargetOutputData.EvalTargetRunError.Message) + } } return &eval_target.DebugEvalTargetResponse{ EvalTargetRecord: target.EvalTargetRecordDO2DTO(record), BaseResp: base.NewBaseResp(), }, err default: - return nil, errorx.New("unsupported eval target type %v", request.GetEvalTargetType()) + return nil, errorx.New("logid: %s, unsupported eval target type %v", logID, request.GetEvalTargetType()) } } diff --git a/backend/modules/evaluation/application/eval_target_app_test.go b/backend/modules/evaluation/application/eval_target_app_test.go index 359ecc793..25206f96a 100644 --- a/backend/modules/evaluation/application/eval_target_app_test.go +++ b/backend/modules/evaluation/application/eval_target_app_test.go @@ -2391,6 +2391,212 @@ func TestEvalTargetApplicationImpl_BatchGetEvalTargetRecords(t *testing.T) { } } +func TestEvalTargetApplicationImpl_GetSourceEvalTargetVersion(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + mockAuth := rpcmocks.NewMockIAuthProvider(ctrl) + mockTypedOperator := mocks.NewMockISourceEvalTargetOperateService(ctrl) + + app := &EvalTargetApplicationImpl{ + auth: mockAuth, + typedOperators: map[entity.EvalTargetType]service.ISourceEvalTargetOperateService{ + 1: mockTypedOperator, + }, + } + + validSpaceID := int64(123) + validSourceTargetID := "source-123" + validSourceTargetVersion := "v1.0" + validEvalTargetType := domain_eval_target.EvalTargetType(1) + unsupportedEvalTargetType := domain_eval_target.EvalTargetType(99) + validEvalTarget := &entity.EvalTarget{ + ID: 1, + SpaceID: validSpaceID, + SourceTargetID: validSourceTargetID, + EvalTargetType: 1, + EvalTargetVersion: &entity.EvalTargetVersion{ + ID: 10, + SpaceID: validSpaceID, + TargetID: 1, + SourceTargetVersion: validSourceTargetVersion, + }, + } + + tests := []struct { + name string + req *evaltargetapi.GetSourceEvalTargetVersionRequest + mockSetup func() + wantResp *evaltargetapi.GetSourceEvalTargetVersionResponse + wantErr bool + wantErrCode int32 + }{ + { + name: "success - normal request", + req: &evaltargetapi.GetSourceEvalTargetVersionRequest{ + WorkspaceID: validSpaceID, + SourceTargetID: &validSourceTargetID, + SourceTargetVersion: &validSourceTargetVersion, + TargetType: &validEvalTargetType, + }, + mockSetup: func() { + mockAuth.EXPECT().Authorization(gomock.Any(), &rpc.AuthorizationParam{ + ObjectID: strconv.FormatInt(validSpaceID, 10), + SpaceID: validSpaceID, + ActionObjects: []*rpc.ActionObject{{Action: gptr.Of("listLoopEvaluationTarget"), EntityType: gptr.Of(rpc.AuthEntityType_Space)}}, + }).Return(nil) + + mockTypedOperator.EXPECT(). + BuildBySource(gomock.Any(), validSpaceID, validSourceTargetID, validSourceTargetVersion). + Return(validEvalTarget, nil) + + mockTypedOperator.EXPECT(). + PackSourceVersionInfo(gomock.Any(), validSpaceID, []*entity.EvalTarget{validEvalTarget}). + Return(nil) + }, + wantResp: &evaltargetapi.GetSourceEvalTargetVersionResponse{ + EvalTargetVersion: target.EvalTargetVersionDO2DTO(validEvalTarget.EvalTargetVersion), + }, + wantErr: false, + }, + { + name: "error - nil request", + req: nil, + mockSetup: func() {}, + wantResp: nil, + wantErr: true, + wantErrCode: errno.CommonInvalidParamCode, + }, + { + name: "error - nil target type", + req: &evaltargetapi.GetSourceEvalTargetVersionRequest{ + WorkspaceID: validSpaceID, + SourceTargetID: &validSourceTargetID, + }, + mockSetup: func() {}, + wantResp: nil, + wantErr: true, + wantErrCode: errno.CommonInvalidParamCode, + }, + { + name: "error - empty source target id", + req: &evaltargetapi.GetSourceEvalTargetVersionRequest{ + WorkspaceID: validSpaceID, + TargetType: &validEvalTargetType, + }, + mockSetup: func() {}, + wantResp: nil, + wantErr: true, + wantErrCode: errno.CommonInvalidParamCode, + }, + { + name: "error - auth failed", + req: &evaltargetapi.GetSourceEvalTargetVersionRequest{ + WorkspaceID: validSpaceID, + SourceTargetID: &validSourceTargetID, + TargetType: &validEvalTargetType, + }, + mockSetup: func() { + mockAuth.EXPECT().Authorization(gomock.Any(), gomock.Any()). + Return(errorx.NewByCode(errno.CommonNoPermissionCode)) + }, + wantResp: nil, + wantErr: true, + wantErrCode: errno.CommonNoPermissionCode, + }, + { + name: "error - unsupported target type", + req: &evaltargetapi.GetSourceEvalTargetVersionRequest{ + WorkspaceID: validSpaceID, + SourceTargetID: &validSourceTargetID, + TargetType: &unsupportedEvalTargetType, + }, + mockSetup: func() { + mockAuth.EXPECT().Authorization(gomock.Any(), gomock.Any()).Return(nil) + }, + wantResp: nil, + wantErr: true, + wantErrCode: errno.CommonInvalidParamCode, + }, + { + name: "error - BuildBySource failure", + req: &evaltargetapi.GetSourceEvalTargetVersionRequest{ + WorkspaceID: validSpaceID, + SourceTargetID: &validSourceTargetID, + SourceTargetVersion: &validSourceTargetVersion, + TargetType: &validEvalTargetType, + }, + mockSetup: func() { + mockAuth.EXPECT().Authorization(gomock.Any(), gomock.Any()).Return(nil) + mockTypedOperator.EXPECT(). + BuildBySource(gomock.Any(), validSpaceID, validSourceTargetID, validSourceTargetVersion). + Return(nil, errorx.NewByCode(errno.CommonInternalErrorCode)) + }, + wantResp: nil, + wantErr: true, + wantErrCode: errno.CommonInternalErrorCode, + }, + { + name: "success - BuildBySource returns nil", + req: &evaltargetapi.GetSourceEvalTargetVersionRequest{ + WorkspaceID: validSpaceID, + SourceTargetID: &validSourceTargetID, + SourceTargetVersion: &validSourceTargetVersion, + TargetType: &validEvalTargetType, + }, + mockSetup: func() { + mockAuth.EXPECT().Authorization(gomock.Any(), gomock.Any()).Return(nil) + mockTypedOperator.EXPECT(). + BuildBySource(gomock.Any(), validSpaceID, validSourceTargetID, validSourceTargetVersion). + Return(nil, nil) + }, + wantResp: &evaltargetapi.GetSourceEvalTargetVersionResponse{}, + wantErr: false, + }, + { + name: "error - PackSourceVersionInfo failure", + req: &evaltargetapi.GetSourceEvalTargetVersionRequest{ + WorkspaceID: validSpaceID, + SourceTargetID: &validSourceTargetID, + SourceTargetVersion: &validSourceTargetVersion, + TargetType: &validEvalTargetType, + }, + mockSetup: func() { + mockAuth.EXPECT().Authorization(gomock.Any(), gomock.Any()).Return(nil) + mockTypedOperator.EXPECT(). + BuildBySource(gomock.Any(), validSpaceID, validSourceTargetID, validSourceTargetVersion). + Return(validEvalTarget, nil) + mockTypedOperator.EXPECT(). + PackSourceVersionInfo(gomock.Any(), validSpaceID, []*entity.EvalTarget{validEvalTarget}). + Return(errorx.NewByCode(errno.CommonInternalErrorCode)) + }, + wantResp: nil, + wantErr: true, + wantErrCode: errno.CommonInternalErrorCode, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + tt.mockSetup() + + resp, err := app.GetSourceEvalTargetVersion(context.Background(), tt.req) + + if tt.wantErr { + assert.Error(t, err) + if tt.wantErrCode != 0 { + statusErr, ok := errorx.FromStatusError(err) + assert.True(t, ok) + assert.Equal(t, tt.wantErrCode, statusErr.Code()) + } + } else { + assert.NoError(t, err) + assert.Equal(t, tt.wantResp, resp) + } + }) + } +} + func TestEvalTargetApplicationImpl_GetEvalTargetOutputFieldContent(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() diff --git a/backend/modules/evaluation/application/evaluator_app.go b/backend/modules/evaluation/application/evaluator_app.go index eb19dbe7f..7cf2583ec 100644 --- a/backend/modules/evaluation/application/evaluator_app.go +++ b/backend/modules/evaluation/application/evaluator_app.go @@ -13,6 +13,8 @@ import ( "time" "unicode/utf8" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/data/domain/dataset" + "github.com/Masterminds/semver/v3" "github.com/bytedance/gg/gptr" "golang.org/x/sync/errgroup" @@ -1159,6 +1161,13 @@ func (e *EvaluatorHandlerImpl) DebugEvaluator(ctx context.Context, request *eval return nil, errorx.NewByCode(errno.EvaluatorBenefitDenyCode) } + // 检查uri是否传递 + if request.InputData != nil { + err = e.checkURIs(ctx, request.InputData.InputFields) + if err != nil { + return nil, err + } + } // URI转换处理 if request.InputData != nil { err = e.transformURIsToURLs(ctx, request.InputData.InputFields) @@ -1352,6 +1361,43 @@ func (e *EvaluatorHandlerImpl) CheckEvaluatorName(ctx context.Context, request * }, nil } +func (e *EvaluatorHandlerImpl) checkURIs(ctx context.Context, inputFields map[string]*evaluatorcommon.Content) error { + if !e.configer.CheckURIEnabled(ctx) { + return nil + } + for _, field := range inputFields { + switch gptr.Indirect(field.ContentType) { + case evaluatorcommon.ContentTypeMultiPart: + return e.checkURIEmpty(ctx, field.MultiPart) + default: + continue + } + } + return nil +} + +func (e *EvaluatorHandlerImpl) checkURIEmpty(ctx context.Context, inputFields []*evaluatorcommon.Content) error { + for _, field := range inputFields { + switch gptr.Indirect(field.ContentType) { + case evaluatorcommon.ContentTypeImage: + if field.GetImage() != nil && field.GetImage().GetURI() == "" && field.GetImage().GetStorageProvider() != dataset.StorageProvider_ExternalUrl { + return errorx.NewByCode(errno.CommonInvalidParamCode, errorx.WithExtraMsg("image URI is empty")) + } + case evaluatorcommon.ContentTypeAudio: + if field.GetAudio() != nil && field.GetAudio().GetURI() == "" && field.GetImage().GetStorageProvider() != dataset.StorageProvider_ExternalUrl { + return errorx.NewByCode(errno.CommonInvalidParamCode, errorx.WithExtraMsg("audio URI is empty")) + } + case evaluatorcommon.ContentTypeVideo: + if field.GetVideo() != nil && field.GetVideo().GetURI() == "" && field.GetImage().GetStorageProvider() != dataset.StorageProvider_ExternalUrl { + return errorx.NewByCode(errno.CommonInvalidParamCode, errorx.WithExtraMsg("video URI is empty")) + } + default: + continue + } + } + return nil +} + // transformURIsToURLs 将InputFields中的URI转换为URL func (e *EvaluatorHandlerImpl) transformURIsToURLs(ctx context.Context, inputFields map[string]*evaluatorcommon.Content) error { if len(inputFields) == 0 { diff --git a/backend/modules/evaluation/application/evaluator_app_test.go b/backend/modules/evaluation/application/evaluator_app_test.go index 75213b4c9..36bd47989 100644 --- a/backend/modules/evaluation/application/evaluator_app_test.go +++ b/backend/modules/evaluation/application/evaluator_app_test.go @@ -24,6 +24,7 @@ import ( benefitmocks "github.com/coze-dev/coze-loop/backend/infra/external/benefit/mocks" idgenmocks "github.com/coze-dev/coze-loop/backend/infra/idgen/mocks" "github.com/coze-dev/coze-loop/backend/infra/middleware/session" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/data/domain/dataset" common "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/common" evaluatordto "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/evaluator" evaluatorservice "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/evaluator" @@ -1517,6 +1518,245 @@ func TestEvaluatorHandlerImpl_SubmitEvaluatorVersion(t *testing.T) { } } +func TestEvaluatorHandlerImpl_checkURIs(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + mockConfiger := confmocks.NewMockIConfiger(ctrl) + + app := &EvaluatorHandlerImpl{ + configer: mockConfiger, + } + + ctx := context.Background() + + tests := []struct { + name string + inputFields map[string]*common.Content + mockSetup func() + wantErr bool + }{ + { + name: "检查功能关闭时直接返回nil", + inputFields: map[string]*common.Content{ + "field1": { + ContentType: gptr.Of(common.ContentType(common.ContentTypeMultiPart)), + MultiPart: []*common.Content{ + { + ContentType: gptr.Of(common.ContentType(common.ContentTypeImage)), + Image: &common.Image{URI: gptr.Of(""), StorageProvider: gptr.Of(dataset.StorageProvider_TOS)}, + }, + }, + }, + }, + mockSetup: func() { + mockConfiger.EXPECT().CheckURIEnabled(gomock.Any()).Return(false) + }, + wantErr: false, + }, + { + name: "无MultiPart字段返回nil", + inputFields: map[string]*common.Content{ + "field1": { + ContentType: gptr.Of(common.ContentType(common.ContentTypeText)), + }, + }, + mockSetup: func() { + mockConfiger.EXPECT().CheckURIEnabled(gomock.Any()).Return(true) + }, + wantErr: false, + }, + { + name: "MultiPart中Image URI为空返回错误", + inputFields: map[string]*common.Content{ + "field1": { + ContentType: gptr.Of(common.ContentType(common.ContentTypeMultiPart)), + MultiPart: []*common.Content{ + { + ContentType: gptr.Of(common.ContentType(common.ContentTypeImage)), + Image: &common.Image{URI: gptr.Of(""), StorageProvider: gptr.Of(dataset.StorageProvider_TOS)}, + }, + }, + }, + }, + mockSetup: func() { + mockConfiger.EXPECT().CheckURIEnabled(gomock.Any()).Return(true) + }, + wantErr: true, + }, + { + name: "MultiPart中Image URI非空返回nil", + inputFields: map[string]*common.Content{ + "field1": { + ContentType: gptr.Of(common.ContentType(common.ContentTypeMultiPart)), + MultiPart: []*common.Content{ + { + ContentType: gptr.Of(common.ContentType(common.ContentTypeImage)), + Image: &common.Image{URI: gptr.Of("tos://xxx"), StorageProvider: gptr.Of(dataset.StorageProvider_TOS)}, + }, + }, + }, + }, + mockSetup: func() { + mockConfiger.EXPECT().CheckURIEnabled(gomock.Any()).Return(true) + }, + wantErr: false, + }, + { + name: "MultiPart中Image StorageProvider为ExternalUrl返回nil", + inputFields: map[string]*common.Content{ + "field1": { + ContentType: gptr.Of(common.ContentType(common.ContentTypeMultiPart)), + MultiPart: []*common.Content{ + { + ContentType: gptr.Of(common.ContentType(common.ContentTypeImage)), + Image: &common.Image{URI: gptr.Of(""), StorageProvider: gptr.Of(dataset.StorageProvider_ExternalUrl)}, + }, + }, + }, + }, + mockSetup: func() { + mockConfiger.EXPECT().CheckURIEnabled(gomock.Any()).Return(true) + }, + wantErr: false, + }, + { + name: "MultiPart中Audio URI为空返回错误", + inputFields: map[string]*common.Content{ + "field1": { + ContentType: gptr.Of(common.ContentType(common.ContentTypeMultiPart)), + MultiPart: []*common.Content{ + { + ContentType: gptr.Of(common.ContentType(common.ContentTypeAudio)), + Audio: &common.Audio{URI: gptr.Of("")}, + Image: &common.Image{StorageProvider: gptr.Of(dataset.StorageProvider_TOS)}, + }, + }, + }, + }, + mockSetup: func() { + mockConfiger.EXPECT().CheckURIEnabled(gomock.Any()).Return(true) + }, + wantErr: true, + }, + { + name: "MultiPart中Audio URI非空返回nil", + inputFields: map[string]*common.Content{ + "field1": { + ContentType: gptr.Of(common.ContentType(common.ContentTypeMultiPart)), + MultiPart: []*common.Content{ + { + ContentType: gptr.Of(common.ContentType(common.ContentTypeAudio)), + Audio: &common.Audio{URI: gptr.Of("tos://audio")}, + Image: &common.Image{StorageProvider: gptr.Of(dataset.StorageProvider_TOS)}, + }, + }, + }, + }, + mockSetup: func() { + mockConfiger.EXPECT().CheckURIEnabled(gomock.Any()).Return(true) + }, + wantErr: false, + }, + { + name: "MultiPart中Video URI为空返回错误", + inputFields: map[string]*common.Content{ + "field1": { + ContentType: gptr.Of(common.ContentType(common.ContentTypeMultiPart)), + MultiPart: []*common.Content{ + { + ContentType: gptr.Of(common.ContentType(common.ContentTypeVideo)), + Video: &common.Video{URI: gptr.Of("")}, + Image: &common.Image{StorageProvider: gptr.Of(dataset.StorageProvider_TOS)}, + }, + }, + }, + }, + mockSetup: func() { + mockConfiger.EXPECT().CheckURIEnabled(gomock.Any()).Return(true) + }, + wantErr: true, + }, + { + name: "MultiPart中Video URI非空返回nil", + inputFields: map[string]*common.Content{ + "field1": { + ContentType: gptr.Of(common.ContentType(common.ContentTypeMultiPart)), + MultiPart: []*common.Content{ + { + ContentType: gptr.Of(common.ContentType(common.ContentTypeVideo)), + Video: &common.Video{URI: gptr.Of("tos://video")}, + Image: &common.Image{StorageProvider: gptr.Of(dataset.StorageProvider_TOS)}, + }, + }, + }, + }, + mockSetup: func() { + mockConfiger.EXPECT().CheckURIEnabled(gomock.Any()).Return(true) + }, + wantErr: false, + }, + { + name: "MultiPart中Audio ExternalUrl返回nil", + inputFields: map[string]*common.Content{ + "field1": { + ContentType: gptr.Of(common.ContentType(common.ContentTypeMultiPart)), + MultiPart: []*common.Content{ + { + ContentType: gptr.Of(common.ContentType(common.ContentTypeAudio)), + Audio: &common.Audio{URI: gptr.Of("")}, + Image: &common.Image{StorageProvider: gptr.Of(dataset.StorageProvider_ExternalUrl)}, + }, + }, + }, + }, + mockSetup: func() { + mockConfiger.EXPECT().CheckURIEnabled(gomock.Any()).Return(true) + }, + wantErr: false, + }, + { + name: "MultiPart中Video ExternalUrl返回nil", + inputFields: map[string]*common.Content{ + "field1": { + ContentType: gptr.Of(common.ContentType(common.ContentTypeMultiPart)), + MultiPart: []*common.Content{ + { + ContentType: gptr.Of(common.ContentType(common.ContentTypeVideo)), + Video: &common.Video{URI: gptr.Of("")}, + Image: &common.Image{StorageProvider: gptr.Of(dataset.StorageProvider_ExternalUrl)}, + }, + }, + }, + }, + mockSetup: func() { + mockConfiger.EXPECT().CheckURIEnabled(gomock.Any()).Return(true) + }, + wantErr: false, + }, + { + name: "空inputFields返回nil", + inputFields: map[string]*common.Content{}, + mockSetup: func() { + mockConfiger.EXPECT().CheckURIEnabled(gomock.Any()).Return(true) + }, + wantErr: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + tt.mockSetup() + err := app.checkURIs(ctx, tt.inputFields) + if tt.wantErr { + assert.Error(t, err) + } else { + assert.NoError(t, err) + } + }) + } +} + func TestEvaluatorHandlerImpl_CheckEvaluatorName(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() @@ -2104,7 +2344,10 @@ func TestEvaluatorHandlerImpl_ComplexBusinessScenarios(t *testing.T) { Return(&benefit.CheckEvaluatorBenefitResult{DenyReason: nil}, nil). Times(1) - // 3. 文件 URI 转 URL + // 3. URI检查 + mockConfiger.EXPECT().CheckURIEnabled(gomock.Any()).Return(false) + + // 4. 文件 URI 转 URL mockFileProvider.EXPECT(). MGetFileURL(gomock.Any(), []string{"input-image-uri"}). Return(map[string]string{"input-image-uri": "https://example.com/image.jpg"}, nil). @@ -3287,6 +3530,7 @@ func TestEvaluatorHandlerImpl_DebugEvaluator_Comprehensive(t *testing.T) { mockAuth.EXPECT().Authorization(gomock.Any(), gomock.Any()).Return(nil) mockBenefitService.EXPECT().CheckEvaluatorBenefit(gomock.Any(), gomock.Any()). Return(&benefit.CheckEvaluatorBenefitResult{DenyReason: nil}, nil) + mockConfiger.EXPECT().CheckURIEnabled(gomock.Any()).Return(false) mockFileProvider.EXPECT().MGetFileURL(gomock.Any(), []string{"uri1"}).Return(map[string]string{"uri1": "url1"}, nil) mockEvaluatorService.EXPECT().DebugEvaluator(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), workspaceID). Return(&entity.EvaluatorOutputData{}, nil) @@ -3325,6 +3569,7 @@ func TestEvaluatorHandlerImpl_DebugEvaluator_Comprehensive(t *testing.T) { mockAuth.EXPECT().Authorization(gomock.Any(), gomock.Any()).Return(nil) mockBenefitService.EXPECT().CheckEvaluatorBenefit(gomock.Any(), gomock.Any()). Return(&benefit.CheckEvaluatorBenefitResult{DenyReason: nil}, nil) + mockConfiger.EXPECT().CheckURIEnabled(gomock.Any()).Return(false) mockFileProvider.EXPECT().MGetFileURL(gomock.Any(), []string{"uri1"}).Return(map[string]string{"uri1": "url1"}, nil) mockEvaluatorService.EXPECT().DebugEvaluator(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), workspaceID). Return(&entity.EvaluatorOutputData{}, nil) @@ -3424,11 +3669,13 @@ func TestEvaluatorHandlerImpl_DebugEvaluator_RuntimeParamExt(t *testing.T) { mockAuth := rpcmocks.NewMockIAuthProvider(ctrl) mockEvaluatorService := mocks.NewMockEvaluatorService(ctrl) mockBenefitService := benefitmocks.NewMockIBenefitService(ctrl) + mockConfiger := confmocks.NewMockIConfiger(ctrl) handler := &EvaluatorHandlerImpl{ auth: mockAuth, evaluatorService: mockEvaluatorService, benefitService: mockBenefitService, + configer: mockConfiger, } // 构造带有运行时参数的请求 @@ -3449,6 +3696,7 @@ func TestEvaluatorHandlerImpl_DebugEvaluator_RuntimeParamExt(t *testing.T) { mockAuth.EXPECT().Authorization(gomock.Any(), gomock.Any()).Return(nil) mockBenefitService.EXPECT().CheckEvaluatorBenefit(gomock.Any(), gomock.Any()). Return(&benefit.CheckEvaluatorBenefitResult{DenyReason: nil}, nil) + mockConfiger.EXPECT().CheckURIEnabled(gomock.Any()).Return(false) // 期望 DebugEvaluator 收到注入了 builtin_runtime_param 的扩展字段,且携带运行配置 mockEvaluatorService.EXPECT().DebugEvaluator(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()). @@ -8888,3 +9136,192 @@ func TestEvaluatorHandlerImpl_UpdateEvaluatorRecord_Comprehensive(t *testing.T) }) } } + +func TestBuildAsyncRunEvaluatorRequest(t *testing.T) { + rpJSON := `{"model_config":{"model_id":"m-1","temperature":0.8}}` + + tests := []struct { + name string + request *evaluatorservice.AsyncRunEvaluatorRequest + evaluatorName string + wantRuntimeExt bool + }{ + { + name: "带RuntimeParam且InputData非nil - Ext为nil", + evaluatorName: "test-evaluator", + request: &evaluatorservice.AsyncRunEvaluatorRequest{ + WorkspaceID: 123, + EvaluatorVersionID: 456, + InputData: &evaluatordto.EvaluatorInputData{ + InputFields: map[string]*common.Content{ + "input": {ContentType: ptr.Of(common.ContentTypeText), Text: ptr.Of("hello")}, + }, + }, + EvaluatorRunConf: &evaluatordto.EvaluatorRunConfig{ + EvaluatorRuntimeParam: &common.RuntimeParam{JSONValue: ptr.Of(rpJSON)}, + }, + }, + wantRuntimeExt: true, + }, + { + name: "带RuntimeParam且InputData为nil", + evaluatorName: "test-evaluator-2", + request: &evaluatorservice.AsyncRunEvaluatorRequest{ + WorkspaceID: 123, + EvaluatorVersionID: 789, + EvaluatorRunConf: &evaluatordto.EvaluatorRunConfig{ + EvaluatorRuntimeParam: &common.RuntimeParam{JSONValue: ptr.Of(rpJSON)}, + }, + }, + wantRuntimeExt: true, + }, + { + name: "不带RuntimeParam", + evaluatorName: "test-evaluator-3", + request: &evaluatorservice.AsyncRunEvaluatorRequest{ + WorkspaceID: 100, + EvaluatorVersionID: 200, + ExperimentID: gptr.Of(int64(300)), + ExperimentRunID: gptr.Of(int64(400)), + ItemID: gptr.Of(int64(500)), + TurnID: gptr.Of(int64(600)), + InputData: &evaluatordto.EvaluatorInputData{}, + }, + wantRuntimeExt: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got := buildAsyncRunEvaluatorRequest(tt.evaluatorName, tt.request) + require.NotNil(t, got) + assert.Equal(t, tt.request.WorkspaceID, got.SpaceID) + assert.Equal(t, tt.evaluatorName, got.Name) + assert.Equal(t, tt.request.EvaluatorVersionID, got.EvaluatorVersionID) + assert.Equal(t, tt.request.GetExperimentID(), got.ExperimentID) + assert.Equal(t, tt.request.GetExperimentRunID(), got.ExperimentRunID) + assert.Equal(t, tt.request.GetItemID(), got.ItemID) + assert.Equal(t, tt.request.GetTurnID(), got.TurnID) + + if tt.wantRuntimeExt { + require.NotNil(t, got.InputData) + require.NotNil(t, got.InputData.Ext) + assert.Equal(t, rpJSON, got.InputData.Ext[consts.FieldAdapterBuiltinFieldNameRuntimeParam]) + } else { + if got.InputData != nil && got.InputData.Ext != nil { + _, exists := got.InputData.Ext[consts.FieldAdapterBuiltinFieldNameRuntimeParam] + assert.False(t, exists) + } + } + }) + } +} + +func TestAsyncDebugEvaluator_ErrorBranches(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + mockEvaluatorService := mocks.NewMockEvaluatorService(ctrl) + mockAuth := rpcmocks.NewMockIAuthProvider(ctrl) + mockEvalAsyncRepo := repomocks.NewMockIEvalAsyncRepo(ctrl) + mockFileProvider := rpcmocks.NewMockIFileProvider(ctrl) + + handler := &EvaluatorHandlerImpl{ + evaluatorService: mockEvaluatorService, + auth: mockAuth, + evalAsyncRepo: mockEvalAsyncRepo, + fileProvider: mockFileProvider, + } + + ctx := context.Background() + + t.Run("失败 - transformURIsToURLs出错", func(t *testing.T) { + req := &evaluatorservice.AsyncDebugEvaluatorRequest{ + WorkspaceID: 1, + EvaluatorType: evaluatordto.EvaluatorType_Agent, + InputData: &evaluatordto.EvaluatorInputData{ + InputFields: map[string]*common.Content{ + "img": { + ContentType: gptr.Of(common.ContentType(common.ContentTypeImage)), + Image: &common.Image{ + URI: gptr.Of("uri:fail"), + }, + }, + }, + }, + EvaluatorContent: &evaluatordto.EvaluatorContent{ + AgentEvaluator: &evaluatordto.AgentEvaluator{ + AgentConfig: &common.AgentConfig{ + AgentType: gptr.Of("single_agent"), + }, + }, + }, + } + mockAuth.EXPECT().Authorization(gomock.Any(), gomock.Any()).Return(nil) + mockFileProvider.EXPECT().MGetFileURL(gomock.Any(), []string{"uri:fail"}).Return(nil, errors.New("file url error")) + + resp, err := handler.AsyncDebugEvaluator(ctx, req) + assert.Error(t, err) + assert.Nil(t, resp) + }) + + t.Run("失败 - ConvertEvaluatorDTO2DO出错(CustomRPC无效RateLimit)", func(t *testing.T) { + req := &evaluatorservice.AsyncDebugEvaluatorRequest{ + WorkspaceID: 1, + EvaluatorType: evaluatordto.EvaluatorType_CustomRPC, + InputData: &evaluatordto.EvaluatorInputData{}, + EvaluatorContent: &evaluatordto.EvaluatorContent{ + CustomRPCEvaluator: &evaluatordto.CustomRPCEvaluator{ + RateLimit: &common.RateLimit{ + Rate: gptr.Of(int32(1)), + Burst: gptr.Of(int32(1)), + Period: gptr.Of("not_a_duration"), + }, + }, + }, + } + mockAuth.EXPECT().Authorization(gomock.Any(), gomock.Any()).Return(nil) + + resp, err := handler.AsyncDebugEvaluator(ctx, req) + assert.Error(t, err) + assert.Nil(t, resp) + }) + + t.Run("成功 - 带RuntimeParam和EvaluatorRunConf", func(t *testing.T) { + rpJSON := `{"model_config":{"model_id":"m-1"}}` + req := &evaluatorservice.AsyncDebugEvaluatorRequest{ + WorkspaceID: 1, + EvaluatorType: evaluatordto.EvaluatorType_Agent, + InputData: &evaluatordto.EvaluatorInputData{}, + EvaluatorContent: &evaluatordto.EvaluatorContent{ + AgentEvaluator: &evaluatordto.AgentEvaluator{ + AgentConfig: &common.AgentConfig{ + AgentType: gptr.Of("single_agent"), + }, + }, + }, + EvaluatorRunConf: &evaluatordto.EvaluatorRunConfig{ + EvaluatorRuntimeParam: &common.RuntimeParam{JSONValue: gptr.Of(rpJSON)}, + }, + } + mockAuth.EXPECT().Authorization(gomock.Any(), gomock.Any()).Return(nil) + mockEvaluatorService.EXPECT().AsyncDebugEvaluator(gomock.Any(), gomock.Any()). + DoAndReturn(func(ctx context.Context, req *entity.AsyncDebugEvaluatorRequest) (*entity.AsyncDebugEvaluatorResponse, error) { + // 验证 RuntimeParam 被注入到 InputData.Ext + require.NotNil(t, req.InputData) + require.NotNil(t, req.InputData.Ext) + assert.Equal(t, rpJSON, req.InputData.Ext[consts.FieldAdapterBuiltinFieldNameRuntimeParam]) + // 验证 EvaluatorRunConf 被透传 + require.NotNil(t, req.EvaluatorRunConf) + require.NotNil(t, req.EvaluatorRunConf.EvaluatorRuntimeParam) + assert.Equal(t, rpJSON, gptr.Indirect(req.EvaluatorRunConf.EvaluatorRuntimeParam.JSONValue)) + return &entity.AsyncDebugEvaluatorResponse{InvokeID: 777}, nil + }) + mockEvalAsyncRepo.EXPECT().SetEvalAsyncCtx(gomock.Any(), "evaluator:777", gomock.Any()).Return(nil) + + resp, err := handler.AsyncDebugEvaluator(ctx, req) + assert.NoError(t, err) + assert.NotNil(t, resp) + assert.Equal(t, int64(777), resp.GetInvokeID()) + }) +} diff --git a/backend/modules/evaluation/application/experiment_app.go b/backend/modules/evaluation/application/experiment_app.go index d914a8eb9..69fbdd4de 100644 --- a/backend/modules/evaluation/application/experiment_app.go +++ b/backend/modules/evaluation/application/experiment_app.go @@ -488,6 +488,7 @@ func (e *experimentApplication) SubmitExperiment(ctx context.Context, req *expt. EvaluatorVersionIds: req.EvaluatorVersionIds, Name: req.Name, Desc: req.Desc, + Visibility: req.Visibility, TargetFieldMapping: req.TargetFieldMapping, EvaluatorFieldMapping: req.EvaluatorFieldMapping, ItemConcurNum: req.ItemConcurNum, @@ -499,11 +500,13 @@ func (e *experimentApplication) SubmitExperiment(ctx context.Context, req *expt. SourceID: req.SourceID, TargetRuntimeParam: req.TargetRuntimeParam, EvaluatorIDVersionList: req.EvaluatorIDVersionList, + ThreadID: req.ThreadID, Session: req.Session, EnableWeightedScore: req.EnableWeightedScore, // EvaluatorScoreWeights 会在 CreateExperiment 的 resolveEvaluatorVersionIDsFromCreateReq 中解析 - ItemRetryNum: req.ItemRetryNum, - TriggerType: gptr.Of(triggerType), + ItemRetryNum: req.ItemRetryNum, + TrialRunItemCount: req.TrialRunItemCount, + TriggerType: gptr.Of(triggerType), } if req.IsSetExptTemplateID() { createReq.ExptTemplateID = gptr.Of(req.GetExptTemplateID()) @@ -515,12 +518,13 @@ func (e *experimentApplication) SubmitExperiment(ctx context.Context, req *expt. } rresp, err := e.RunExperiment(ctx, &expt.RunExperimentRequest{ - WorkspaceID: gptr.Of(req.GetWorkspaceID()), - ExptID: cresp.GetExperiment().ID, - ExptType: req.ExptType, - ItemRetryNum: req.ItemRetryNum, - Session: req.Session, - Ext: req.Ext, + WorkspaceID: gptr.Of(req.GetWorkspaceID()), + ExptID: cresp.GetExperiment().ID, + ExptType: req.ExptType, + ItemRetryNum: req.ItemRetryNum, + TrialRunItemCount: req.TrialRunItemCount, + Session: req.Session, + Ext: req.Ext, }) if err != nil { return nil, err @@ -1018,7 +1022,7 @@ func (e *experimentApplication) RunExperiment(ctx context.Context, req *expt.Run return nil, err } - evalMode := experiment.ExptType2EvalMode(req.GetExptType()) + evalMode := experiment.ExptType2EvalMode(req.GetExptType(), req.TrialRunItemCount) if err := e.manager.LogRun(ctx, req.GetExptID(), runID, evalMode, req.GetWorkspaceID(), nil, session); err != nil { return nil, err diff --git a/backend/modules/evaluation/application/experiment_app_test.go b/backend/modules/evaluation/application/experiment_app_test.go index 23cfc09bd..4808d4780 100644 --- a/backend/modules/evaluation/application/experiment_app_test.go +++ b/backend/modules/evaluation/application/experiment_app_test.go @@ -6533,3 +6533,355 @@ func TestExperimentApplication_BatchGetExperimentResult_ExtraOutputURIErrorSwall }) } } + +func Test_hasDuplicates(t *testing.T) { + tests := []struct { + name string + in []int64 + want bool + }{ + {name: "empty slice", in: []int64{}, want: false}, + {name: "single element", in: []int64{1}, want: false}, + {name: "no duplicates", in: []int64{1, 2, 3, 4}, want: false}, + {name: "has duplicates", in: []int64{1, 2, 3, 2}, want: true}, + {name: "all same", in: []int64{5, 5, 5}, want: true}, + {name: "duplicate at start", in: []int64{1, 1, 2, 3}, want: true}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert.Equal(t, tt.want, hasDuplicates(tt.in)) + }) + } +} + +func TestExperimentApplication_RetryExperiment_Branches(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + mockManager := servicemocks.NewMockIExptManager(ctrl) + mockIDGen := idgenmock.NewMockIIDGenerator(ctrl) + mockAuth := rpcmocks.NewMockIAuthProvider(ctrl) + + validWorkspaceID := int64(123) + validExptID := int64(456) + validUserID := int64(789) + validRunID := int64(999) + itemRetryNum := 0 + + baseExpt := &entity.Experiment{ + ID: validExptID, + SpaceID: validWorkspaceID, + CreatedBy: strconv.FormatInt(validUserID, 10), + EvalConf: &entity.EvaluationConfiguration{ItemRetryNum: &itemRetryNum}, + } + + app := NewExperimentApplication( + nil, nil, mockManager, nil, nil, mockIDGen, nil, mockAuth, + nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + ) + + t.Run("auth fails", func(t *testing.T) { + mockManager.EXPECT().Get(gomock.Any(), validExptID, validWorkspaceID, gomock.Any()).Return(baseExpt, nil) + mockAuth.EXPECT().AuthorizationWithoutSPI(gomock.Any(), gomock.Any()).Return(errors.New("no permission")) + + _, err := app.RetryExperiment(context.Background(), &exptpb.RetryExperimentRequest{ + WorkspaceID: gptr.Of(validWorkspaceID), + ExptID: gptr.Of(validExptID), + }) + assert.Error(t, err) + }) + + t.Run("RetryItems mode - success", func(t *testing.T) { + mockManager.EXPECT().Get(gomock.Any(), validExptID, validWorkspaceID, gomock.Any()).Return(baseExpt, nil) + mockAuth.EXPECT().AuthorizationWithoutSPI(gomock.Any(), gomock.Any()).Return(nil) + mockManager.EXPECT().LogRetryItemsRun(gomock.Any(), validExptID, entity.EvaluationModeRetryItems, validWorkspaceID, []int64{1, 2}, gomock.Any()).Return(validRunID, false, nil) + mockManager.EXPECT().RetryItems(gomock.Any(), validExptID, validRunID, validWorkspaceID, itemRetryNum, []int64{1, 2}, gomock.Any(), gomock.Any()).Return(nil) + + resp, err := app.RetryExperiment(context.Background(), &exptpb.RetryExperimentRequest{ + WorkspaceID: gptr.Of(validWorkspaceID), + ExptID: gptr.Of(validExptID), + RetryMode: expt.ExptRetryModePtr(expt.ExptRetryMode_RetryTargetItems), + ItemIds: []int64{1, 2}, + }) + assert.NoError(t, err) + assert.Equal(t, validRunID, resp.GetRunID()) + }) + + t.Run("RetryItems mode - already retried", func(t *testing.T) { + mockManager.EXPECT().Get(gomock.Any(), validExptID, validWorkspaceID, gomock.Any()).Return(baseExpt, nil) + mockAuth.EXPECT().AuthorizationWithoutSPI(gomock.Any(), gomock.Any()).Return(nil) + mockManager.EXPECT().LogRetryItemsRun(gomock.Any(), validExptID, entity.EvaluationModeRetryItems, validWorkspaceID, []int64{1}, gomock.Any()).Return(validRunID, true, nil) + // RetryItems should NOT be called since retried=true + + resp, err := app.RetryExperiment(context.Background(), &exptpb.RetryExperimentRequest{ + WorkspaceID: gptr.Of(validWorkspaceID), + ExptID: gptr.Of(validExptID), + RetryMode: expt.ExptRetryModePtr(expt.ExptRetryMode_RetryTargetItems), + ItemIds: []int64{1}, + }) + assert.NoError(t, err) + assert.Equal(t, validRunID, resp.GetRunID()) + }) + + t.Run("RetryItems mode - LogRetryItemsRun error", func(t *testing.T) { + mockManager.EXPECT().Get(gomock.Any(), validExptID, validWorkspaceID, gomock.Any()).Return(baseExpt, nil) + mockAuth.EXPECT().AuthorizationWithoutSPI(gomock.Any(), gomock.Any()).Return(nil) + mockManager.EXPECT().LogRetryItemsRun(gomock.Any(), validExptID, entity.EvaluationModeRetryItems, validWorkspaceID, gomock.Any(), gomock.Any()).Return(int64(0), false, errors.New("log error")) + + _, err := app.RetryExperiment(context.Background(), &exptpb.RetryExperimentRequest{ + WorkspaceID: gptr.Of(validWorkspaceID), + ExptID: gptr.Of(validExptID), + RetryMode: expt.ExptRetryModePtr(expt.ExptRetryMode_RetryTargetItems), + ItemIds: []int64{1}, + }) + assert.Error(t, err) + }) + + t.Run("RetryItems mode - RetryItems error", func(t *testing.T) { + mockManager.EXPECT().Get(gomock.Any(), validExptID, validWorkspaceID, gomock.Any()).Return(baseExpt, nil) + mockAuth.EXPECT().AuthorizationWithoutSPI(gomock.Any(), gomock.Any()).Return(nil) + mockManager.EXPECT().LogRetryItemsRun(gomock.Any(), validExptID, entity.EvaluationModeRetryItems, validWorkspaceID, gomock.Any(), gomock.Any()).Return(validRunID, false, nil) + mockManager.EXPECT().RetryItems(gomock.Any(), validExptID, validRunID, validWorkspaceID, gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return(errors.New("retry error")) + + _, err := app.RetryExperiment(context.Background(), &exptpb.RetryExperimentRequest{ + WorkspaceID: gptr.Of(validWorkspaceID), + ExptID: gptr.Of(validExptID), + RetryMode: expt.ExptRetryModePtr(expt.ExptRetryMode_RetryTargetItems), + ItemIds: []int64{1}, + }) + assert.Error(t, err) + }) + + t.Run("default mode - GenID error", func(t *testing.T) { + mockManager.EXPECT().Get(gomock.Any(), validExptID, validWorkspaceID, gomock.Any()).Return(baseExpt, nil) + mockAuth.EXPECT().AuthorizationWithoutSPI(gomock.Any(), gomock.Any()).Return(nil) + mockIDGen.EXPECT().GenID(gomock.Any()).Return(int64(0), errors.New("gen id error")) + + _, err := app.RetryExperiment(context.Background(), &exptpb.RetryExperimentRequest{ + WorkspaceID: gptr.Of(validWorkspaceID), + ExptID: gptr.Of(validExptID), + RetryMode: expt.ExptRetryModePtr(expt.ExptRetryMode_RetryAll), + }) + assert.Error(t, err) + }) + + t.Run("default mode - LogRun error", func(t *testing.T) { + mockManager.EXPECT().Get(gomock.Any(), validExptID, validWorkspaceID, gomock.Any()).Return(baseExpt, nil) + mockAuth.EXPECT().AuthorizationWithoutSPI(gomock.Any(), gomock.Any()).Return(nil) + mockIDGen.EXPECT().GenID(gomock.Any()).Return(validRunID, nil) + mockManager.EXPECT().LogRun(gomock.Any(), validExptID, validRunID, entity.EvaluationModeRetryAll, validWorkspaceID, gomock.Any(), gomock.Any()).Return(errors.New("log run error")) + + _, err := app.RetryExperiment(context.Background(), &exptpb.RetryExperimentRequest{ + WorkspaceID: gptr.Of(validWorkspaceID), + ExptID: gptr.Of(validExptID), + RetryMode: expt.ExptRetryModePtr(expt.ExptRetryMode_RetryAll), + }) + assert.Error(t, err) + }) + + t.Run("default mode - Run error", func(t *testing.T) { + mockManager.EXPECT().Get(gomock.Any(), validExptID, validWorkspaceID, gomock.Any()).Return(baseExpt, nil) + mockAuth.EXPECT().AuthorizationWithoutSPI(gomock.Any(), gomock.Any()).Return(nil) + mockIDGen.EXPECT().GenID(gomock.Any()).Return(validRunID, nil) + mockManager.EXPECT().LogRun(gomock.Any(), validExptID, validRunID, entity.EvaluationModeRetryAll, validWorkspaceID, gomock.Any(), gomock.Any()).Return(nil) + mockManager.EXPECT().Run(gomock.Any(), validExptID, validRunID, validWorkspaceID, gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return(errors.New("run error")) + + _, err := app.RetryExperiment(context.Background(), &exptpb.RetryExperimentRequest{ + WorkspaceID: gptr.Of(validWorkspaceID), + ExptID: gptr.Of(validExptID), + RetryMode: expt.ExptRetryModePtr(expt.ExptRetryMode_RetryAll), + }) + assert.Error(t, err) + }) +} + +func TestExperimentApplication_ListExperimentTemplates_MoreBranches(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + mockTemplateManager := servicemocks.NewMockIExptTemplateManager(ctrl) + mockAuth := rpcmocks.NewMockIAuthProvider(ctrl) + mockUserInfo := userinfomocks.NewMockUserInfoService(ctrl) + mockEvalTargetSvc := servicemocks.NewMockIEvalTargetService(ctrl) + + workspaceID := int64(1001) + + app := NewExperimentApplication( + nil, nil, nil, nil, nil, nil, nil, + mockAuth, mockUserInfo, mockEvalTargetSvc, nil, nil, nil, nil, nil, nil, mockTemplateManager, nil, + ) + + t.Run("auth error", func(t *testing.T) { + mockAuth.EXPECT().Authorization(gomock.Any(), gomock.Any()).Return(errors.New("forbidden")) + + _, err := app.ListExperimentTemplates(context.Background(), &exptpb.ListExperimentTemplatesRequest{ + WorkspaceID: workspaceID, + PageNumber: gptr.Of(int32(1)), + PageSize: gptr.Of(int32(10)), + }) + assert.Error(t, err) + }) + + t.Run("online expt template filter routes to ListOnline", func(t *testing.T) { + mockAuth.EXPECT().Authorization(gomock.Any(), gomock.Any()).Return(nil) + mockTemplateManager.EXPECT(). + ListOnline(gomock.Any(), int32(1), int32(10), workspaceID, gomock.Any(), gomock.Any(), gomock.Any()). + DoAndReturn(func(_ context.Context, page, size int32, spaceID int64, filter *entity.ExptTemplateListFilter, orderBys []*entity.OrderBy, session *entity.Session) ([]*entity.ExptTemplate, int64, error) { + return []*entity.ExptTemplate{}, int64(0), nil + }) + + // Build a filter that includes ExptType_Online to trigger the online branch + resp, err := app.ListExperimentTemplates(context.Background(), &exptpb.ListExperimentTemplatesRequest{ + WorkspaceID: workspaceID, + PageNumber: gptr.Of(int32(1)), + PageSize: gptr.Of(int32(10)), + FilterOption: &expt.ExperimentTemplateFilter{ + Filters: &expt.Filters{ + LogicOp: gptr.Of(expt.FilterLogicOp_And), + FilterConditions: []*expt.FilterCondition{ + { + Field: &expt.FilterField{FieldType: expt.FieldType_ExptType}, + Operator: expt.FilterOperatorType_In, + Value: "2", + }, + }, + }, + }, + }) + assert.NoError(t, err) + assert.Equal(t, int32(0), resp.GetTotal()) + }) + + t.Run("ListOnline error", func(t *testing.T) { + mockAuth.EXPECT().Authorization(gomock.Any(), gomock.Any()).Return(nil) + mockTemplateManager.EXPECT(). + ListOnline(gomock.Any(), gomock.Any(), gomock.Any(), workspaceID, gomock.Any(), gomock.Any(), gomock.Any()). + Return(nil, int64(0), errors.New("list online error")) + + _, err := app.ListExperimentTemplates(context.Background(), &exptpb.ListExperimentTemplatesRequest{ + WorkspaceID: workspaceID, + PageNumber: gptr.Of(int32(1)), + PageSize: gptr.Of(int32(10)), + FilterOption: &expt.ExperimentTemplateFilter{ + Filters: &expt.Filters{ + LogicOp: gptr.Of(expt.FilterLogicOp_And), + FilterConditions: []*expt.FilterCondition{ + { + Field: &expt.FilterField{FieldType: expt.FieldType_ExptType}, + Operator: expt.FilterOperatorType_In, + Value: "2", + }, + }, + }, + }, + }) + assert.Error(t, err) + }) + + t.Run("offline List error", func(t *testing.T) { + mockAuth.EXPECT().Authorization(gomock.Any(), gomock.Any()).Return(nil) + mockTemplateManager.EXPECT(). + List(gomock.Any(), gomock.Any(), gomock.Any(), workspaceID, gomock.Any(), gomock.Any(), gomock.Any()). + Return(nil, int64(0), errors.New("list error")) + + _, err := app.ListExperimentTemplates(context.Background(), &exptpb.ListExperimentTemplatesRequest{ + WorkspaceID: workspaceID, + PageNumber: gptr.Of(int32(1)), + PageSize: gptr.Of(int32(10)), + }) + assert.Error(t, err) + }) + + t.Run("nil OrderBy in list is skipped", func(t *testing.T) { + mockAuth.EXPECT().Authorization(gomock.Any(), gomock.Any()).Return(nil) + mockTemplateManager.EXPECT(). + List(gomock.Any(), gomock.Any(), gomock.Any(), workspaceID, gomock.Any(), gomock.Any(), gomock.Any()). + DoAndReturn(func(_ context.Context, page, size int32, spaceID int64, filter *entity.ExptTemplateListFilter, orderBys []*entity.OrderBy, session *entity.Session) ([]*entity.ExptTemplate, int64, error) { + // nil OrderBy should be skipped, invalid field should be skipped, only default sort remains + assert.Len(t, orderBys, 1) + assert.Equal(t, entity.OrderByUpdatedAt, *orderBys[0].Field) + return []*entity.ExptTemplate{}, int64(0), nil + }) + + _, err := app.ListExperimentTemplates(context.Background(), &exptpb.ListExperimentTemplatesRequest{ + WorkspaceID: workspaceID, + PageNumber: gptr.Of(int32(1)), + PageSize: gptr.Of(int32(10)), + OrderBys: []*common.OrderBy{ + nil, // nil, should be skipped + {Field: gptr.Of("invalid_field"), IsAsc: gptr.Of(true)}, // invalid field, should be skipped + }, + }) + assert.NoError(t, err) + }) +} + +func TestExperimentApplication_BatchGetExperimentResult_MoreBranches(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + mockAuth := rpcmocks.NewMockIAuthProvider(ctrl) + mockResultSvc := servicemocks.NewMockExptResultService(ctrl) + mockManager := servicemocks.NewMockIExptManager(ctrl) + + validWorkspaceID := int64(123) + baselineExptID := int64(100) + baselineSpaceID := int64(999) + + app := &experimentApplication{ + resultSvc: mockResultSvc, + auth: mockAuth, + manager: mockManager, + } + + t.Run("with BaselineExperimentID - uses baseline space for auth", func(t *testing.T) { + mockManager.EXPECT().Get(gomock.Any(), baselineExptID, validWorkspaceID, gomock.Any()).Return(&entity.Experiment{ + ID: baselineExptID, + SpaceID: baselineSpaceID, + }, nil) + mockAuth.EXPECT().Authorization(gomock.Any(), gomock.Any()).DoAndReturn(func(_ context.Context, param *rpc.AuthorizationParam) error { + assert.Equal(t, strconv.FormatInt(baselineSpaceID, 10), param.ObjectID) + assert.Equal(t, baselineSpaceID, param.SpaceID) + return nil + }) + mockResultSvc.EXPECT().MGetExperimentResult(gomock.Any(), gomock.Any()).Return(&entity.MGetExperimentReportResult{}, nil) + + resp, err := app.BatchGetExperimentResult_(context.Background(), &exptpb.BatchGetExperimentResultRequest{ + WorkspaceID: validWorkspaceID, + ExperimentIds: []int64{baselineExptID}, + BaselineExperimentID: gptr.Of(baselineExptID), + }) + assert.NoError(t, err) + assert.NotNil(t, resp) + }) + + t.Run("with BaselineExperimentID - Get fails", func(t *testing.T) { + mockManager.EXPECT().Get(gomock.Any(), baselineExptID, validWorkspaceID, gomock.Any()).Return(nil, errors.New("not found")) + + _, err := app.BatchGetExperimentResult_(context.Background(), &exptpb.BatchGetExperimentResultRequest{ + WorkspaceID: validWorkspaceID, + BaselineExperimentID: gptr.Of(baselineExptID), + }) + assert.Error(t, err) + }) + + t.Run("auth fails", func(t *testing.T) { + mockAuth.EXPECT().Authorization(gomock.Any(), gomock.Any()).Return(errors.New("forbidden")) + + _, err := app.BatchGetExperimentResult_(context.Background(), &exptpb.BatchGetExperimentResultRequest{ + WorkspaceID: validWorkspaceID, + }) + assert.Error(t, err) + }) + + t.Run("MGetExperimentResult fails", func(t *testing.T) { + mockAuth.EXPECT().Authorization(gomock.Any(), gomock.Any()).Return(nil) + mockResultSvc.EXPECT().MGetExperimentResult(gomock.Any(), gomock.Any()).Return(nil, errors.New("db error")) + + _, err := app.BatchGetExperimentResult_(context.Background(), &exptpb.BatchGetExperimentResultRequest{ + WorkspaceID: validWorkspaceID, + ExperimentIds: []int64{1}, + }) + assert.Error(t, err) + }) +} diff --git a/backend/modules/evaluation/application/wire_gen.go b/backend/modules/evaluation/application/wire_gen.go index 73c6a3872..da2d2cf87 100644 --- a/backend/modules/evaluation/application/wire_gen.go +++ b/backend/modules/evaluation/application/wire_gen.go @@ -144,7 +144,8 @@ func InitExperimentApplication(ctx context.Context, idgen2 idgen.IIDGenerator, d iEvaluationSetService := service.NewEvaluationSetServiceImpl(iDatasetRPCAdapter) evaluationSetItemService := service.NewEvaluationSetItemServiceImpl(iDatasetRPCAdapter) iEvaluationAnalysisService := service.NewEvaluationAnalysisService() - exptResultService := service.NewExptResultService(iExptItemResultRepo, iExptTurnResultRepo, iExptAnnotateRepo, iExptStatsRepo, iExperimentRepo, exptMetric, iLatestWriteTracker, idgen2, iExptTurnResultFilterRepo, serviceEvaluatorService, iEvalTargetService, evaluationSetVersionService, iEvaluationSetService, evaluatorRecordService, evaluationSetItemService, exptEventPublisher, iTagRPCAdapter, iEvaluationAnalysisService) + iFileProvider := foundation.NewFileRPCProvider(fileClient) + exptResultService := service.NewExptResultService(iExptItemResultRepo, iExptTurnResultRepo, iExptAnnotateRepo, iExptStatsRepo, iExperimentRepo, exptMetric, iLatestWriteTracker, idgen2, iExptTurnResultFilterRepo, serviceEvaluatorService, iEvalTargetService, evaluationSetVersionService, iEvaluationSetService, evaluatorRecordService, evaluationSetItemService, exptEventPublisher, iTagRPCAdapter, iEvaluationAnalysisService, iFileProvider) iExptRunLogDAO := mysql.NewExptRunLogDAO(db2) iExptRunLogRepo := experiment.NewExptRunLogRepo(iExptRunLogDAO) iQuotaDAO := dao.NewQuotaDAO(cmdable) @@ -174,7 +175,6 @@ func InitExperimentApplication(ctx context.Context, idgen2 idgen.IIDGenerator, d iExptInsightAnalysisRecordRepo := experiment.NewExptInsightAnalysisRecordRepo(iExptInsightAnalysisRecordDAO, iExptInsightAnalysisFeedbackCommentDAO, iExptInsightAnalysisFeedbackVoteDAO, idgen2, iLatestWriteTracker) iAgentAdapter := agent.NewAgentAdapter() iExptInsightAnalysisService := service.NewInsightAnalysisService(iExptInsightAnalysisRecordRepo, exptEventPublisher, objectStorage, iAgentAdapter, iExptResultExportService, iNotifyRPCAdapter, iUserProvider, iExperimentRepo, iEvalTargetRepo) - iFileProvider := foundation.NewFileRPCProvider(fileClient) iExperimentApplication := NewExperimentApplication(exptAggrResultService, exptResultService, iExptManager, exptSchedulerEvent, exptItemEvalEvent, idgen2, componentIConfiger, iAuthProvider, userInfoService, iEvalTargetService, evaluationSetItemService, iExptAnnotateService, iTagRPCAdapter, iExptResultExportService, iExptInsightAnalysisService, serviceEvaluatorService, iExptTemplateManager, iFileProvider) return iExperimentApplication, nil } @@ -255,7 +255,7 @@ func InitEvaluatorApplication(ctx context.Context, idgen2 idgen.IIDGenerator, au evaluationSetItemService := service.NewEvaluationSetItemServiceImpl(iDatasetRPCAdapter) iTagRPCAdapter := tag.NewTagRPCProvider(tagClient) iEvaluationAnalysisService := service.NewEvaluationAnalysisService() - exptResultService := service.NewExptResultService(iExptItemResultRepo, iExptTurnResultRepo, iExptAnnotateRepo, iExptStatsRepo, iExperimentRepo, exptMetric, iLatestWriteTracker, idgen2, iExptTurnResultFilterRepo, evaluatorService, iEvalTargetService, evaluationSetVersionService, iEvaluationSetService, evaluatorRecordService, evaluationSetItemService, exptEventPublisher, iTagRPCAdapter, iEvaluationAnalysisService) + exptResultService := service.NewExptResultService(iExptItemResultRepo, iExptTurnResultRepo, iExptAnnotateRepo, iExptStatsRepo, iExperimentRepo, exptMetric, iLatestWriteTracker, idgen2, iExptTurnResultFilterRepo, evaluatorService, iEvalTargetService, evaluationSetVersionService, iEvaluationSetService, evaluatorRecordService, evaluationSetItemService, exptEventPublisher, iTagRPCAdapter, iEvaluationAnalysisService, iFileProvider) iEvalAsyncDAO := dao.NewEvalAsyncDAO(cmdable) iEvalAsyncRepo := experiment.NewEvalAsyncRepo(iEvalAsyncDAO) evaluationEvaluatorService := NewEvaluatorHandlerImpl(idgen2, iConfiger, iAuthProvider, evaluatorService, evaluatorRecordService, evaluatorTemplateService, evaluatorExecMetrics, userInfoService, auditClient, benefitSvc, iFileProvider, v, exptResultService, iEvalAsyncRepo) @@ -378,7 +378,8 @@ func InitEvalOpenAPIApplication(ctx context.Context, configFactory conf.IConfigL iExptTurnResultFilterKeyMappingDAO := mysql.NewExptTurnResultFilterKeyMappingDAO(db2) iExptTurnResultFilterRepo := experiment.NewExptTurnResultFilterRepo(iExptTurnResultFilterDAO, iExptTurnResultFilterKeyMappingDAO) iEvaluationAnalysisService := service.NewEvaluationAnalysisService() - exptResultService := service.NewExptResultService(iExptItemResultRepo, iExptTurnResultRepo, iExptAnnotateRepo, iExptStatsRepo, iExperimentRepo, exptMetric, iLatestWriteTracker, idgen2, iExptTurnResultFilterRepo, evaluatorService, iEvalTargetService, evaluationSetVersionService, iEvaluationSetService, evaluatorRecordService, evaluationSetItemService, exptEventPublisher, iTagRPCAdapter, iEvaluationAnalysisService) + iFileProvider := foundation.NewFileRPCProvider(fileClient) + exptResultService := service.NewExptResultService(iExptItemResultRepo, iExptTurnResultRepo, iExptAnnotateRepo, iExptStatsRepo, iExperimentRepo, exptMetric, iLatestWriteTracker, idgen2, iExptTurnResultFilterRepo, evaluatorService, iEvalTargetService, evaluationSetVersionService, iEvaluationSetService, evaluatorRecordService, evaluationSetItemService, exptEventPublisher, iTagRPCAdapter, iEvaluationAnalysisService, iFileProvider) iExptRunLogDAO := mysql.NewExptRunLogDAO(db2) iExptRunLogRepo := experiment.NewExptRunLogRepo(iExptRunLogDAO) iQuotaDAO := dao.NewQuotaDAO(cmdable) @@ -405,7 +406,6 @@ func InitEvalOpenAPIApplication(ctx context.Context, configFactory conf.IConfigL iExptInsightAnalysisRecordRepo := experiment.NewExptInsightAnalysisRecordRepo(iExptInsightAnalysisRecordDAO, iExptInsightAnalysisFeedbackCommentDAO, iExptInsightAnalysisFeedbackVoteDAO, idgen2, iLatestWriteTracker) iAgentAdapter := agent.NewAgentAdapter() iExptInsightAnalysisService := service.NewInsightAnalysisService(iExptInsightAnalysisRecordRepo, exptEventPublisher, objectStorage, iAgentAdapter, iExptResultExportService, iNotifyRPCAdapter, iUserProvider, iExperimentRepo, iEvalTargetRepo) - iFileProvider := foundation.NewFileRPCProvider(fileClient) iExperimentApplication := NewExperimentApplication(exptAggrResultService, exptResultService, iExptManager, exptSchedulerEvent, exptItemEvalEvent, idgen2, iConfiger, iAuthProvider, userInfoService, iEvalTargetService, evaluationSetItemService, iExptAnnotateService, iTagRPCAdapter, iExptResultExportService, iExptInsightAnalysisService, evaluatorService, iExptTemplateManager, iFileProvider) v3 := NewEvalOpenAPIApplication(iEvalAsyncRepo, exptEventPublisher, iEvalTargetService, iAuthProvider, iEvaluationSetService, evaluationSetVersionService, evaluationSetItemService, evaluationSetSchemaService, openAPIEvaluationMetrics, userInfoService, iExperimentApplication, iExptManager, exptResultService, exptAggrResultService, evaluatorService, evaluatorRecordService, iExptTemplateManager, iConfiger) return v3, nil diff --git a/backend/modules/evaluation/consts/eval_target.go b/backend/modules/evaluation/consts/eval_target.go index 96e7f03d7..558c7ada3 100644 --- a/backend/modules/evaluation/consts/eval_target.go +++ b/backend/modules/evaluation/consts/eval_target.go @@ -11,6 +11,8 @@ import ( const ( EvalTargetInputFieldKeyPromptUserQuery = expt.PromptUserQueryFieldKey - EvalTargetOutputFieldKeyActualOutput = common.ArgSchemaKeyActualOutput - EvalTargetOutputFieldKeyTrajectory = common.ArgSchemaKeyTrajectory + EvalTargetOutputFieldKeyActualOutput = common.ArgSchemaKeyActualOutput + EvalTargetOutputFieldKeyTrajectory = common.ArgSchemaKeyTrajectory + EvalTargetOutputFieldKeyScreenRecordingURI = "screen_recording_uri" + EvalTargetOutputFieldKeyScreenRecordingURL = "screen_recording_url" ) diff --git a/backend/modules/evaluation/domain/entity/common.go b/backend/modules/evaluation/domain/entity/common.go index b48fea4d9..1180bb7ea 100644 --- a/backend/modules/evaluation/domain/entity/common.go +++ b/backend/modules/evaluation/domain/entity/common.go @@ -164,10 +164,11 @@ type VariableVal struct { // ArgsSchema 参数模式结构体 type ArgsSchema struct { - Key *string `json:"key,omitempty"` - SupportContentTypes []ContentType `json:"support_content_types,omitempty"` - JsonSchema *string `json:"json_schema,omitempty"` - DefaultValue *Content `json:"default_value,omitempty"` + Key *string `json:"key,omitempty"` + SupportContentTypes []ContentType `json:"support_content_types,omitempty"` + JsonSchema *string `json:"json_schema,omitempty"` + DefaultValue *Content `json:"default_value,omitempty"` + OperationInstruction *string `json:"operation_instruction,omitempty"` // 操作说明 } // UserInfo 用户信息结构体 diff --git a/backend/modules/evaluation/domain/entity/common_test.go b/backend/modules/evaluation/domain/entity/common_test.go index 9017703b5..5c933165e 100644 --- a/backend/modules/evaluation/domain/entity/common_test.go +++ b/backend/modules/evaluation/domain/entity/common_test.go @@ -6,6 +6,7 @@ package entity import ( "testing" + "github.com/bytedance/gg/gptr" "github.com/stretchr/testify/assert" ) @@ -85,3 +86,337 @@ func TestFileFormat_String(t *testing.T) { }) } } + +func TestContent_IsContentOmitted(t *testing.T) { + testCases := []struct { + name string + c *Content + expect bool + }{ + { + name: "nil content", + c: nil, + expect: false, + }, + { + name: "ContentOmitted is false", + c: &Content{ContentOmitted: gptr.Of(false)}, + expect: false, + }, + { + name: "ContentOmitted is nil", + c: &Content{}, + expect: false, + }, + { + name: "ContentOmitted true, text type, full content matches text len", + c: &Content{ + ContentOmitted: gptr.Of(true), + ContentType: gptr.Of(ContentTypeText), + Text: gptr.Of("hello"), + FullContentBytes: gptr.Of(int32(5)), + }, + expect: false, + }, + { + name: "ContentOmitted true, text type, full content does not match text len", + c: &Content{ + ContentOmitted: gptr.Of(true), + ContentType: gptr.Of(ContentTypeText), + Text: gptr.Of("he"), + FullContentBytes: gptr.Of(int32(100)), + }, + expect: true, + }, + { + name: "ContentOmitted true, text type, FullContentBytes is zero", + c: &Content{ + ContentOmitted: gptr.Of(true), + ContentType: gptr.Of(ContentTypeText), + Text: gptr.Of("hello"), + }, + expect: true, + }, + { + name: "ContentOmitted true, non-text type", + c: &Content{ + ContentOmitted: gptr.Of(true), + ContentType: gptr.Of(ContentTypeImage), + }, + expect: false, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + assert.Equal(t, tc.expect, tc.c.IsContentOmitted()) + }) + } +} + +func TestContent_GetText(t *testing.T) { + testCases := []struct { + name string + c *Content + expect string + }{ + { + name: "nil content", + c: nil, + expect: "", + }, + { + name: "nil text", + c: &Content{}, + expect: "", + }, + { + name: "has text", + c: &Content{Text: gptr.Of("hello")}, + expect: "hello", + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + assert.Equal(t, tc.expect, tc.c.GetText()) + }) + } +} + +func TestContent_SetText(t *testing.T) { + testCases := []struct { + name string + c *Content + text string + expect *string + }{ + { + name: "nil content", + c: nil, + text: "hello", + expect: nil, + }, + { + name: "set text on valid content", + c: &Content{}, + text: "world", + expect: gptr.Of("world"), + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + tc.c.SetText(tc.text) + if tc.c != nil { + assert.Equal(t, tc.expect, tc.c.Text) + } + }) + } +} + +func TestContent_TextBytes(t *testing.T) { + testCases := []struct { + name string + c *Content + expect int + }{ + { + name: "nil content", + c: nil, + expect: 0, + }, + { + name: "nil text", + c: &Content{}, + expect: 0, + }, + { + name: "has text", + c: &Content{Text: gptr.Of("hello")}, + expect: 5, + }, + { + name: "empty text", + c: &Content{Text: gptr.Of("")}, + expect: 0, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + assert.Equal(t, tc.expect, tc.c.TextBytes()) + }) + } +} + +func TestContent_GetContentType(t *testing.T) { + testCases := []struct { + name string + c *Content + expect ContentType + }{ + { + name: "nil content", + c: nil, + expect: "", + }, + { + name: "nil content type", + c: &Content{}, + expect: "", + }, + { + name: "has content type", + c: &Content{ContentType: gptr.Of(ContentTypeText)}, + expect: ContentTypeText, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + assert.Equal(t, tc.expect, tc.c.GetContentType()) + }) + } +} + +func TestContent_SetContentType(t *testing.T) { + testCases := []struct { + name string + c *Content + contentType ContentType + expect *ContentType + }{ + { + name: "nil content", + c: nil, + contentType: ContentTypeText, + expect: nil, + }, + { + name: "set content type", + c: &Content{}, + contentType: ContentTypeImage, + expect: gptr.Of(ContentTypeImage), + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + tc.c.SetContentType(tc.contentType) + if tc.c != nil { + assert.Equal(t, tc.expect, tc.c.ContentType) + } + }) + } +} + +func TestBaseInfo_GetCreatedBy(t *testing.T) { + user := &UserInfo{Name: gptr.Of("alice")} + testCases := []struct { + name string + do *BaseInfo + expect *UserInfo + }{ + { + name: "nil created_by", + do: &BaseInfo{}, + expect: nil, + }, + { + name: "has created_by", + do: &BaseInfo{CreatedBy: user}, + expect: user, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + assert.Equal(t, tc.expect, tc.do.GetCreatedBy()) + }) + } +} + +func TestBaseInfo_SetCreatedBy(t *testing.T) { + user := &UserInfo{Name: gptr.Of("bob")} + do := &BaseInfo{} + do.SetCreatedBy(user) + assert.Equal(t, user, do.CreatedBy) +} + +func TestBaseInfo_GetUpdatedBy(t *testing.T) { + user := &UserInfo{Name: gptr.Of("carol")} + testCases := []struct { + name string + do *BaseInfo + expect *UserInfo + }{ + { + name: "nil updated_by", + do: &BaseInfo{}, + expect: nil, + }, + { + name: "has updated_by", + do: &BaseInfo{UpdatedBy: user}, + expect: user, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + assert.Equal(t, tc.expect, tc.do.GetUpdatedBy()) + }) + } +} + +func TestBaseInfo_SetUpdatedBy(t *testing.T) { + user := &UserInfo{Name: gptr.Of("dave")} + do := &BaseInfo{} + do.SetUpdatedBy(user) + assert.Equal(t, user, do.UpdatedBy) +} + +func TestBaseInfo_SetUpdatedAt(t *testing.T) { + ts := int64(1234567890) + do := &BaseInfo{} + do.SetUpdatedAt(&ts) + assert.Equal(t, &ts, do.UpdatedAt) +} + +func TestModelConfig_GetModelID(t *testing.T) { + testCases := []struct { + name string + m *ModelConfig + expect int64 + }{ + { + name: "nil model config", + m: nil, + expect: 0, + }, + { + name: "nil model id", + m: &ModelConfig{}, + expect: 0, + }, + { + name: "has model id", + m: &ModelConfig{ModelID: gptr.Of(int64(42))}, + expect: 42, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + assert.Equal(t, tc.expect, tc.m.GetModelID()) + }) + } +} + +func TestStorageProviderPtr(t *testing.T) { + p := StorageProvider_TOS + result := StorageProviderPtr(p) + assert.NotNil(t, result) + assert.Equal(t, p, *result) +} diff --git a/backend/modules/evaluation/domain/entity/evaluator.go b/backend/modules/evaluation/domain/entity/evaluator.go index 76debd0fe..c52edd730 100644 --- a/backend/modules/evaluation/domain/entity/evaluator.go +++ b/backend/modules/evaluation/domain/entity/evaluator.go @@ -18,6 +18,7 @@ type Evaluator struct { BuiltinVisibleVersion string BoxType EvaluatorBoxType `json:"box_type"` Tags map[EvaluatorTagLangType]map[EvaluatorTagKey][]string `json:"tags"` + SourceType EvaluatorSourceType PromptEvaluatorVersion *PromptEvaluatorVersion CodeEvaluatorVersion *CodeEvaluatorVersion @@ -32,6 +33,14 @@ type EvaluatorInfo struct { UserManualURL *string `json:"user_manual_url"` } +type ( + EvaluatorSourceType = int64 +) + +const ( + EvaluatorSourceType_IntelligentGen SourceType = 1 +) + type EvaluatorBoxType int64 const ( diff --git a/backend/modules/evaluation/domain/entity/evaluator_test.go b/backend/modules/evaluation/domain/entity/evaluator_test.go index 579938627..f9a66f9cd 100644 --- a/backend/modules/evaluation/domain/entity/evaluator_test.go +++ b/backend/modules/evaluation/domain/entity/evaluator_test.go @@ -1966,3 +1966,415 @@ func TestEvaluator_SettersDelegate_Extra(t *testing.T) { }) } } + +func TestEvaluator_GetRateLimit(t *testing.T) { + t.Parallel() + + rl := &RateLimit{Rate: gptr.Of(int32(10))} + + tests := []struct { + name string + e *Evaluator + expected *RateLimit + }{ + { + name: "custom rpc with rate limit", + e: &Evaluator{ + EvaluatorType: EvaluatorTypeCustomRPC, + CustomRPCEvaluatorVersion: &CustomRPCEvaluatorVersion{ + RateLimit: rl, + }, + }, + expected: rl, + }, + { + name: "custom rpc with nil rate limit", + e: &Evaluator{ + EvaluatorType: EvaluatorTypeCustomRPC, + CustomRPCEvaluatorVersion: &CustomRPCEvaluatorVersion{}, + }, + expected: nil, + }, + { + name: "custom rpc with nil version", + e: &Evaluator{ + EvaluatorType: EvaluatorTypeCustomRPC, + CustomRPCEvaluatorVersion: nil, + }, + expected: nil, + }, + { + name: "prompt type returns nil", + e: &Evaluator{ + EvaluatorType: EvaluatorTypePrompt, + PromptEvaluatorVersion: &PromptEvaluatorVersion{}, + }, + expected: nil, + }, + { + name: "code type returns nil", + e: &Evaluator{ + EvaluatorType: EvaluatorTypeCode, + CodeEvaluatorVersion: &CodeEvaluatorVersion{}, + }, + expected: nil, + }, + { + name: "agent type returns nil", + e: &Evaluator{ + EvaluatorType: EvaluatorTypeAgent, + AgentEvaluatorVersion: &AgentEvaluatorVersion{}, + }, + expected: nil, + }, + { + name: "unknown type returns nil", + e: &Evaluator{ + EvaluatorType: EvaluatorType(999), + }, + expected: nil, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + result := tt.e.GetRateLimit() + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestEvaluator_GetInputSchemas(t *testing.T) { + t.Parallel() + + schemas := []*ArgsSchema{ + {Key: gptr.Of("field1"), SupportContentTypes: []ContentType{ContentTypeText}}, + } + + tests := []struct { + name string + e *Evaluator + expected []*ArgsSchema + }{ + { + name: "prompt with schemas", + e: &Evaluator{ + EvaluatorType: EvaluatorTypePrompt, + PromptEvaluatorVersion: &PromptEvaluatorVersion{ + InputSchemas: schemas, + }, + }, + expected: schemas, + }, + { + name: "prompt with nil version", + e: &Evaluator{ + EvaluatorType: EvaluatorTypePrompt, + PromptEvaluatorVersion: nil, + }, + expected: nil, + }, + { + name: "code type returns nil", + e: &Evaluator{ + EvaluatorType: EvaluatorTypeCode, + CodeEvaluatorVersion: &CodeEvaluatorVersion{}, + }, + expected: nil, + }, + { + name: "custom rpc with schemas", + e: &Evaluator{ + EvaluatorType: EvaluatorTypeCustomRPC, + CustomRPCEvaluatorVersion: &CustomRPCEvaluatorVersion{ + InputSchemas: schemas, + }, + }, + expected: schemas, + }, + { + name: "custom rpc with nil version", + e: &Evaluator{ + EvaluatorType: EvaluatorTypeCustomRPC, + CustomRPCEvaluatorVersion: nil, + }, + expected: nil, + }, + { + name: "agent with schemas", + e: &Evaluator{ + EvaluatorType: EvaluatorTypeAgent, + AgentEvaluatorVersion: &AgentEvaluatorVersion{ + InputSchemas: schemas, + }, + }, + expected: schemas, + }, + { + name: "agent with nil version", + e: &Evaluator{ + EvaluatorType: EvaluatorTypeAgent, + AgentEvaluatorVersion: nil, + }, + expected: nil, + }, + { + name: "unknown type returns nil", + e: &Evaluator{ + EvaluatorType: EvaluatorType(999), + }, + expected: nil, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + result := tt.e.GetInputSchemas() + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestEvaluator_ValidateInput_CustomRPCAndAgent(t *testing.T) { + t.Parallel() + + validInput := &EvaluatorInputData{ + InputFields: map[string]*Content{ + "f1": {ContentType: gptr.Of(ContentTypeText), Text: gptr.Of(`"hello"`)}, + }, + } + + tests := []struct { + name string + evaluator *Evaluator + input *EvaluatorInputData + expectErr bool + }{ + { + name: "custom rpc with valid version delegates", + evaluator: &Evaluator{ + EvaluatorType: EvaluatorTypeCustomRPC, + CustomRPCEvaluatorVersion: &CustomRPCEvaluatorVersion{ + InputSchemas: []*ArgsSchema{ + {Key: gptr.Of("f1"), SupportContentTypes: []ContentType{ContentTypeText}, JsonSchema: gptr.Of(`{"type": "string"}`)}, + }, + }, + }, + input: validInput, + expectErr: false, + }, + { + name: "custom rpc with nil input returns error", + evaluator: &Evaluator{ + EvaluatorType: EvaluatorTypeCustomRPC, + CustomRPCEvaluatorVersion: &CustomRPCEvaluatorVersion{ + InputSchemas: []*ArgsSchema{}, + }, + }, + input: nil, + expectErr: true, + }, + { + name: "agent with valid version delegates", + evaluator: &Evaluator{ + EvaluatorType: EvaluatorTypeAgent, + AgentEvaluatorVersion: &AgentEvaluatorVersion{ + InputSchemas: []*ArgsSchema{ + {Key: gptr.Of("f1"), SupportContentTypes: []ContentType{ContentTypeText}, JsonSchema: gptr.Of(`{"type": "string"}`)}, + }, + }, + }, + input: validInput, + expectErr: false, + }, + { + name: "agent with nil input returns error", + evaluator: &Evaluator{ + EvaluatorType: EvaluatorTypeAgent, + AgentEvaluatorVersion: &AgentEvaluatorVersion{ + InputSchemas: []*ArgsSchema{}, + }, + }, + input: nil, + expectErr: true, + }, + { + name: "agent with nil version returns nil", + evaluator: &Evaluator{ + EvaluatorType: EvaluatorTypeAgent, + AgentEvaluatorVersion: nil, + }, + input: validInput, + expectErr: false, + }, + { + name: "custom rpc with nil version returns nil", + evaluator: &Evaluator{ + EvaluatorType: EvaluatorTypeCustomRPC, + CustomRPCEvaluatorVersion: nil, + }, + input: validInput, + expectErr: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + err := tt.evaluator.ValidateInput(tt.input) + if tt.expectErr { + assert.Error(t, err) + } else { + assert.NoError(t, err) + } + }) + } +} + +func TestEvaluator_ValidateBaseInfo_CustomRPCAndAgent(t *testing.T) { + t.Parallel() + + tests := []struct { + name string + evaluator *Evaluator + expectErr bool + }{ + { + name: "custom rpc with valid version delegates", + evaluator: &Evaluator{ + EvaluatorType: EvaluatorTypeCustomRPC, + CustomRPCEvaluatorVersion: &CustomRPCEvaluatorVersion{ + AccessProtocol: EvaluatorAccessProtocolRPC, + ServiceName: gptr.Of("svc"), + }, + }, + expectErr: false, + }, + { + name: "custom rpc with invalid version returns error", + evaluator: &Evaluator{ + EvaluatorType: EvaluatorTypeCustomRPC, + CustomRPCEvaluatorVersion: &CustomRPCEvaluatorVersion{ + AccessProtocol: "", + }, + }, + expectErr: true, + }, + { + name: "custom rpc with nil version returns nil", + evaluator: &Evaluator{ + EvaluatorType: EvaluatorTypeCustomRPC, + CustomRPCEvaluatorVersion: nil, + }, + expectErr: false, + }, + { + name: "agent with valid version delegates", + evaluator: &Evaluator{ + EvaluatorType: EvaluatorTypeAgent, + AgentEvaluatorVersion: &AgentEvaluatorVersion{}, + }, + expectErr: false, + }, + { + name: "agent with nil version returns nil", + evaluator: &Evaluator{ + EvaluatorType: EvaluatorTypeAgent, + AgentEvaluatorVersion: nil, + }, + expectErr: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + err := tt.evaluator.ValidateBaseInfo() + if tt.expectErr { + assert.Error(t, err) + } else { + assert.NoError(t, err) + } + }) + } +} + +func TestEvaluator_SetEvaluatorVersion_CustomRPCAndAgent(t *testing.T) { + t.Parallel() + + tests := []struct { + name string + evaluator *Evaluator + version *Evaluator + verify func(*testing.T, *Evaluator) + }{ + { + name: "set custom rpc evaluator version", + evaluator: &Evaluator{ + EvaluatorType: EvaluatorTypeCustomRPC, + }, + version: &Evaluator{ + CustomRPCEvaluatorVersion: &CustomRPCEvaluatorVersion{ + Version: "v3.0.0", + ID: 789, + }, + }, + verify: func(t *testing.T, e *Evaluator) { + assert.NotNil(t, e.CustomRPCEvaluatorVersion) + assert.Equal(t, "v3.0.0", e.CustomRPCEvaluatorVersion.Version) + assert.Equal(t, int64(789), e.CustomRPCEvaluatorVersion.ID) + }, + }, + { + name: "set agent evaluator version", + evaluator: &Evaluator{ + EvaluatorType: EvaluatorTypeAgent, + }, + version: &Evaluator{ + AgentEvaluatorVersion: &AgentEvaluatorVersion{ + Version: "v4.0.0", + ID: 101, + }, + }, + verify: func(t *testing.T, e *Evaluator) { + assert.NotNil(t, e.AgentEvaluatorVersion) + assert.Equal(t, "v4.0.0", e.AgentEvaluatorVersion.Version) + assert.Equal(t, int64(101), e.AgentEvaluatorVersion.ID) + }, + }, + { + name: "nil version for custom rpc no panic", + evaluator: &Evaluator{ + EvaluatorType: EvaluatorTypeCustomRPC, + CustomRPCEvaluatorVersion: &CustomRPCEvaluatorVersion{Version: "keep"}, + }, + version: nil, + verify: func(t *testing.T, e *Evaluator) { + require.NotNil(t, e.CustomRPCEvaluatorVersion) + assert.Equal(t, "keep", e.CustomRPCEvaluatorVersion.Version) + }, + }, + { + name: "nil version for agent no panic", + evaluator: &Evaluator{ + EvaluatorType: EvaluatorTypeAgent, + AgentEvaluatorVersion: &AgentEvaluatorVersion{Version: "keep"}, + }, + version: nil, + verify: func(t *testing.T, e *Evaluator) { + require.NotNil(t, e.AgentEvaluatorVersion) + assert.Equal(t, "keep", e.AgentEvaluatorVersion.Version) + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + tt.evaluator.SetEvaluatorVersion(tt.version) + tt.verify(t, tt.evaluator) + }) + } +} diff --git a/backend/modules/evaluation/domain/entity/expt.go b/backend/modules/evaluation/domain/entity/expt.go index b6fd923a0..039d46584 100644 --- a/backend/modules/evaluation/domain/entity/expt.go +++ b/backend/modules/evaluation/domain/entity/expt.go @@ -20,6 +20,11 @@ type ( ExptStatus int64 ExptType int64 SourceType = int64 + Visibility = int64 +) + +const ( + Visibility_Hidden Visibility = 1 ) const ( @@ -53,7 +58,8 @@ const ( // SourceType_AutoTask 用于 ExptSource,与 IDL domain_expt.SourceType_AutoTask 一致 SourceType_AutoTask SourceType = 2 // SourceType_Workflow 与 IDL domain_expt.SourceType_Workflow 一致(Pipeline / 工作流来源,用于 enrichExptSourceFromPipeline 等) - SourceType_Workflow SourceType = 3 + SourceType_Workflow SourceType = 3 + SourceType_IntelligentGen SourceType = 4 ) type ExptRunLog struct { @@ -142,12 +148,16 @@ type Experiment struct { // TriggerType 实验触发方式,与表字段 trigger_type 一致:manual / openapi / schedule TriggerType string // ExptSource 查询时填充:与一级字段 source_type/source_id 一致;Workflow 时由 Pipeline 补充 span_filter / scheduler / sampler - ExptSource *ExptSource + ExptSource *ExptSource + TrialRunItemCount int64 Stats *ExptStats AggregateResult *ExptAggregateResult ExptTemplateMeta *ExptTemplateMeta // 关联的实验模板基础信息(仅在查询时按需填充,包含模板 ID) + + Visibility Visibility // 实验模板可见性,默认为空,可见 + ThreadID *string // 关联的智能评测会话ID } func (e *Experiment) ToEvaluatorRefDO() []*ExptEvaluatorRef { @@ -172,10 +182,16 @@ func (e *Experiment) AsyncExec() bool { } func (e *Experiment) AsyncCallTarget() bool { - if e == nil || e.Target == nil || e.Target.EvalTargetVersion == nil || e.Target.EvalTargetVersion.CustomRPCServer == nil { + if e == nil || e.Target == nil || e.Target.EvalTargetVersion == nil { return false } - return gptr.Indirect(e.Target.EvalTargetVersion.CustomRPCServer.IsAsync) + if e.Target.EvalTargetVersion.CustomRPCServer != nil && gptr.Indirect(e.Target.EvalTargetVersion.CustomRPCServer.IsAsync) { + return true + } + if e.Target.EvalTargetVersion.WebAgent != nil { + return true + } + return false } func (e *Experiment) AsyncCallEvaluators() bool { @@ -225,7 +241,7 @@ func (t *TargetConf) Valid(ctx context.Context, targetType EvalTargetType) error return fmt.Errorf("invalid TargetConf: %v", json.Jsonify(t)) } // prompt/custom_rpc 可能无输入;仅记录型不需要执行,仅需记录对象类型和基本信息 - if targetType == EvalTargetTypeLoopPrompt || targetType == EvalTargetTypeCustomRPCServer || targetType.IsRecordOnlyType() { + if targetType == EvalTargetTypeLoopPrompt || targetType == EvalTargetTypeCustomRPCServer || targetType == EvalTargetTypeWebAgent || targetType.IsRecordOnlyType() { return nil } if t.IngressConf != nil && t.IngressConf.EvalSetAdapter != nil && len(t.IngressConf.EvalSetAdapter.FieldConfs) > 0 { @@ -365,14 +381,15 @@ type VersionedEvalSetID struct { } type CreateEvalTargetParam struct { - SourceTargetID *string - SourceTargetVersion *string - EvalTargetType *EvalTargetType - BotInfoType *CozeBotInfoType - BotPublishVersion *string - CustomEvalTarget *CustomEvalTarget // 搜索对象返回的信息 - Region *Region - Env *string + SourceTargetID *string + SourceTargetVersion *string + EvalTargetType *EvalTargetType + BotInfoType *CozeBotInfoType + BotPublishVersion *string + CustomEvalTarget *CustomEvalTarget // 搜索对象返回的信息 + Region *Region + Env *string + OperationInstruction *string } func (c *CreateEvalTargetParam) IsNull() bool { diff --git a/backend/modules/evaluation/domain/entity/expt_run.go b/backend/modules/evaluation/domain/entity/expt_run.go index 39a1be321..328d82cb8 100644 --- a/backend/modules/evaluation/domain/entity/expt_run.go +++ b/backend/modules/evaluation/domain/entity/expt_run.go @@ -32,6 +32,8 @@ const ( EvaluationModeRetryAll ExptRunMode = 4 EvaluationModeRetryItems ExptRunMode = 5 + // EvaluationModeTrialRun 试运行模式 + EvaluationModeTrialRun ExptRunMode = 6 ) type ItemRunState int64 diff --git a/backend/modules/evaluation/domain/entity/expt_run_test.go b/backend/modules/evaluation/domain/entity/expt_run_test.go index 035d590fd..705a64e4f 100644 --- a/backend/modules/evaluation/domain/entity/expt_run_test.go +++ b/backend/modules/evaluation/domain/entity/expt_run_test.go @@ -5,6 +5,8 @@ package entity import ( "context" + "errors" + "fmt" "testing" "time" @@ -327,19 +329,15 @@ func TestExptTurnRunResult_AbortWithTargetResult(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - // 执行测试 result := tt.turnRunResult.AbortWithTargetResult(tt.experiment) - // 验证返回值 assert.Equal(t, tt.expectedAbort, result) - // 验证错误设置 if tt.expectedErr { assert.Error(t, tt.turnRunResult.GetEvalErr()) if tt.expectedErrMsg != "" { assert.Contains(t, tt.turnRunResult.GetEvalErr().Error(), tt.expectedErrMsg) } - // 验证错误码 statusErr, ok := errorx.FromStatusError(tt.turnRunResult.GetEvalErr()) assert.True(t, ok) assert.Equal(t, int32(errno.CommonInternalErrorCode), statusErr.Code()) @@ -347,7 +345,6 @@ func TestExptTurnRunResult_AbortWithTargetResult(t *testing.T) { assert.NoError(t, tt.turnRunResult.GetEvalErr()) } - // 验证AsyncAbort设置 if tt.checkAsyncAbort { assert.True(t, tt.turnRunResult.AsyncAbort) } else { @@ -474,10 +471,8 @@ func TestExptTurnRunResult_SetTargetResult(t *testing.T) { result := &ExptTurnRunResult{} returned := result.SetTargetResult(tt.targetResult) - // 验证返回值是同一个实例 assert.Equal(t, result, returned) - // 验证TargetResult被正确设置 assert.Equal(t, tt.expected, result.TargetResult) }) } @@ -512,10 +507,8 @@ func TestExptTurnRunResult_SetEvaluatorResults(t *testing.T) { result := &ExptTurnRunResult{} returned := result.SetEvaluatorResults(tt.evaluatorResults) - // 验证返回值是同一个实例 assert.Equal(t, result, returned) - // 验证EvaluatorResults被正确设置 assert.Equal(t, tt.expected, result.EvaluatorResults) }) } @@ -808,3 +801,993 @@ func TestExptItemEvalConf_GetItemZombieSecond(t *testing.T) { }) } } + +func TestIsTurnRunFinished(t *testing.T) { + tests := []struct { + name string + state TurnRunState + want bool + }{ + {name: "success should return true", state: TurnRunState_Success, want: true}, + {name: "fail should return true", state: TurnRunState_Fail, want: true}, + {name: "terminal should return true", state: TurnRunState_Terminal, want: true}, + {name: "queueing should return false", state: TurnRunState_Queueing, want: false}, + {name: "processing should return false", state: TurnRunState_Processing, want: false}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert.Equal(t, tt.want, IsTurnRunFinished(tt.state)) + }) + } +} + +func TestIsExptFinished(t *testing.T) { + tests := []struct { + name string + status ExptStatus + want bool + }{ + {name: "success should return true", status: ExptStatus_Success, want: true}, + {name: "failed should return true", status: ExptStatus_Failed, want: true}, + {name: "terminated should return true", status: ExptStatus_Terminated, want: true}, + {name: "system terminated should return true", status: ExptStatus_SystemTerminated, want: true}, + {name: "pending should return false", status: ExptStatus_Pending, want: false}, + {name: "processing should return false", status: ExptStatus_Processing, want: false}, + {name: "terminating should return false", status: ExptStatus_Terminating, want: false}, + {name: "draining should return false", status: ExptStatus_Draining, want: false}, + {name: "unknown should return false", status: ExptStatus_Unknown, want: false}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert.Equal(t, tt.want, IsExptFinished(tt.status)) + }) + } +} + +func TestIsItemRunFinished(t *testing.T) { + tests := []struct { + name string + state ItemRunState + want bool + }{ + {name: "success should return true", state: ItemRunState_Success, want: true}, + {name: "fail should return true", state: ItemRunState_Fail, want: true}, + {name: "terminal should return true", state: ItemRunState_Terminal, want: true}, + {name: "queueing should return false", state: ItemRunState_Queueing, want: false}, + {name: "processing should return false", state: ItemRunState_Processing, want: false}, + {name: "unknown should return false", state: ItemRunState_Unknown, want: false}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert.Equal(t, tt.want, IsItemRunFinished(tt.state)) + }) + } +} + +func TestExptConsumerConf_GetExptExecConf(t *testing.T) { + defaultConf := &ExptExecConf{DaemonIntervalSecond: 10} + spaceConf := &ExptExecConf{DaemonIntervalSecond: 30} + + tests := []struct { + name string + conf *ExptConsumerConf + spaceID int64 + expected *ExptExecConf + }{ + { + name: "conf为nil返回nil", + conf: nil, + spaceID: 1, + expected: nil, + }, + { + name: "space有专属配置返回space配置", + conf: &ExptConsumerConf{ + ExptExecConf: defaultConf, + SpaceExptExecConf: map[int64]*ExptExecConf{100: spaceConf}, + }, + spaceID: 100, + expected: spaceConf, + }, + { + name: "space无专属配置返回默认配置", + conf: &ExptConsumerConf{ + ExptExecConf: defaultConf, + SpaceExptExecConf: map[int64]*ExptExecConf{100: spaceConf}, + }, + spaceID: 999, + expected: defaultConf, + }, + { + name: "SpaceExptExecConf为nil返回默认配置", + conf: &ExptConsumerConf{ + ExptExecConf: defaultConf, + }, + spaceID: 1, + expected: defaultConf, + }, + { + name: "ExptExecConf也为nil返回nil", + conf: &ExptConsumerConf{}, + spaceID: 1, + expected: nil, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + var result *ExptExecConf + if tt.conf != nil { + result = tt.conf.GetExptExecConf(tt.spaceID) + } else { + result = (*ExptConsumerConf)(nil).GetExptExecConf(tt.spaceID) + } + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestExptConsumerConf_GetSchedulerAbortCtrl(t *testing.T) { + ctrl := &SchedulerAbortCtrl{ExptIDCtrl: map[int64]bool{1: true}} + + tests := []struct { + name string + conf *ExptConsumerConf + expected *SchedulerAbortCtrl + }{ + { + name: "conf为nil返回nil", + conf: nil, + expected: nil, + }, + { + name: "SchedulerAbortCtrl为nil返回nil", + conf: &ExptConsumerConf{}, + expected: nil, + }, + { + name: "SchedulerAbortCtrl有值返回对应值", + conf: &ExptConsumerConf{SchedulerAbortCtrl: ctrl}, + expected: ctrl, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result := tt.conf.GetSchedulerAbortCtrl() + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestSchedulerAbortCtrl_Abort(t *testing.T) { + tests := []struct { + name string + ctrl *SchedulerAbortCtrl + spaceID int64 + exptID int64 + userID string + exptType ExptType + want bool + }{ + { + name: "ctrl为nil不abort", + ctrl: nil, + spaceID: 1, + exptID: 1, + userID: "user1", + exptType: ExptType_Offline, + want: false, + }, + { + name: "exptID在ExptIDCtrl中且为true", + ctrl: &SchedulerAbortCtrl{ + ExptIDCtrl: map[int64]bool{10: true}, + }, + spaceID: 1, + exptID: 10, + userID: "user1", + exptType: ExptType_Offline, + want: true, + }, + { + name: "exptID在ExptIDCtrl中但为false", + ctrl: &SchedulerAbortCtrl{ + ExptIDCtrl: map[int64]bool{10: false}, + }, + spaceID: 1, + exptID: 10, + userID: "user1", + exptType: ExptType_Offline, + want: false, + }, + { + name: "exptID不在ExptIDCtrl中", + ctrl: &SchedulerAbortCtrl{ + ExptIDCtrl: map[int64]bool{10: true}, + }, + spaceID: 1, + exptID: 20, + userID: "user1", + exptType: ExptType_Offline, + want: false, + }, + { + name: "space匹配SpaceExptTypeCtrl", + ctrl: &SchedulerAbortCtrl{ + SpaceExptTypeCtrl: map[int64][]ExptType{100: {ExptType_Offline}}, + }, + spaceID: 100, + exptID: 1, + userID: "user1", + exptType: ExptType_Offline, + want: true, + }, + { + name: "space匹配但exptType不匹配", + ctrl: &SchedulerAbortCtrl{ + SpaceExptTypeCtrl: map[int64][]ExptType{100: {ExptType_Offline}}, + }, + spaceID: 100, + exptID: 1, + userID: "user1", + exptType: ExptType_Online, + want: false, + }, + { + name: "user匹配UserExptTypeCtrl", + ctrl: &SchedulerAbortCtrl{ + UserExptTypeCtrl: map[string][]ExptType{"user1": {ExptType_Online}}, + }, + spaceID: 1, + exptID: 1, + userID: "user1", + exptType: ExptType_Online, + want: true, + }, + { + name: "user匹配但exptType不匹配", + ctrl: &SchedulerAbortCtrl{ + UserExptTypeCtrl: map[string][]ExptType{"user1": {ExptType_Online}}, + }, + spaceID: 1, + exptID: 1, + userID: "user1", + exptType: ExptType_Offline, + want: false, + }, + { + name: "ExptIDCtrl优先级最高", + ctrl: &SchedulerAbortCtrl{ + ExptIDCtrl: map[int64]bool{10: true}, + SpaceExptTypeCtrl: map[int64][]ExptType{100: {ExptType_Offline}}, + UserExptTypeCtrl: map[string][]ExptType{"user1": {ExptType_Offline}}, + }, + spaceID: 100, + exptID: 10, + userID: "user1", + exptType: ExptType_Offline, + want: true, + }, + { + name: "所有ctrl为nil不abort", + ctrl: &SchedulerAbortCtrl{}, + spaceID: 1, + exptID: 1, + userID: "user1", + exptType: ExptType_Offline, + want: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert.Equal(t, tt.want, tt.ctrl.Abort(tt.spaceID, tt.exptID, tt.userID, tt.exptType)) + }) + } +} + +func TestExptExecConf_GetSpaceExptConcurLimit(t *testing.T) { + tests := []struct { + name string + conf *ExptExecConf + expected int + }{ + {name: "nil返回默认值", conf: nil, expected: defaultSpaceExptConcurLimit}, + {name: "值为0返回默认值", conf: &ExptExecConf{SpaceExptConcurLimit: 0}, expected: defaultSpaceExptConcurLimit}, + {name: "值为负数返回默认值", conf: &ExptExecConf{SpaceExptConcurLimit: -1}, expected: defaultSpaceExptConcurLimit}, + {name: "值为正数返回设置值", conf: &ExptExecConf{SpaceExptConcurLimit: 500}, expected: 500}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + var result int + if tt.conf != nil { + result = tt.conf.GetSpaceExptConcurLimit() + } else { + result = (*ExptExecConf)(nil).GetSpaceExptConcurLimit() + } + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestExptExecConf_GetDaemonInterval(t *testing.T) { + tests := []struct { + name string + conf *ExptExecConf + expected time.Duration + }{ + {name: "nil返回默认值", conf: nil, expected: defaultDaemonInterval}, + {name: "值为0返回默认值", conf: &ExptExecConf{DaemonIntervalSecond: 0}, expected: defaultDaemonInterval}, + {name: "值为负数返回默认值", conf: &ExptExecConf{DaemonIntervalSecond: -1}, expected: defaultDaemonInterval}, + {name: "值为正数返回设置值", conf: &ExptExecConf{DaemonIntervalSecond: 60}, expected: 60 * time.Second}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + var result time.Duration + if tt.conf != nil { + result = tt.conf.GetDaemonInterval() + } else { + result = (*ExptExecConf)(nil).GetDaemonInterval() + } + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestExptExecConf_GetZombieIntervalSecond(t *testing.T) { + tests := []struct { + name string + conf *ExptExecConf + expected int + }{ + {name: "nil返回默认值", conf: nil, expected: defaultZombieIntervalSecond}, + {name: "值为0返回默认值", conf: &ExptExecConf{ZombieIntervalSecond: 0}, expected: defaultZombieIntervalSecond}, + {name: "值为负数返回默认值", conf: &ExptExecConf{ZombieIntervalSecond: -1}, expected: defaultZombieIntervalSecond}, + {name: "值为正数返回设置值", conf: &ExptExecConf{ZombieIntervalSecond: 7200}, expected: 7200}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + var result int + if tt.conf != nil { + result = tt.conf.GetZombieIntervalSecond() + } else { + result = (*ExptExecConf)(nil).GetZombieIntervalSecond() + } + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestExptExecConf_GetExptItemEvalConf(t *testing.T) { + evalConf := &ExptItemEvalConf{ConcurNum: 10} + + tests := []struct { + name string + conf *ExptExecConf + expected *ExptItemEvalConf + }{ + {name: "nil返回nil", conf: nil, expected: nil}, + {name: "ExptItemEvalConf为nil返回nil", conf: &ExptExecConf{}, expected: nil}, + {name: "ExptItemEvalConf有值返回对应值", conf: &ExptExecConf{ExptItemEvalConf: evalConf}, expected: evalConf}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + var result *ExptItemEvalConf + if tt.conf != nil { + result = tt.conf.GetExptItemEvalConf() + } else { + result = (*ExptExecConf)(nil).GetExptItemEvalConf() + } + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestDefaultExptConsumerConf(t *testing.T) { + conf := DefaultExptConsumerConf() + assert.NotNil(t, conf) + assert.Equal(t, 50, conf.ExptExecWorkerNum) + assert.Equal(t, 200, conf.ExptItemEvalWorkerNum) +} + +func TestDefaultExptErrCtrl(t *testing.T) { + ctrl := DefaultExptErrCtrl() + assert.NotNil(t, ctrl) + assert.Nil(t, ctrl.ErrRetryCtrl) + assert.Nil(t, ctrl.SpaceErrRetryCtrl) + assert.Nil(t, ctrl.ResultErrConverts) +} + +func TestResultErrConvert_ConvertErrMsg_Extended(t *testing.T) { + tests := []struct { + name string + convert *ResultErrConvert + msg string + wantConvert bool + wantMsg string + }{ + { + name: "nil convert返回false", + convert: nil, + msg: "some error", + wantConvert: false, + wantMsg: "", + }, + { + name: "空消息返回false", + convert: &ResultErrConvert{MatchedText: "err", ToErrMsg: "converted"}, + msg: "", + wantConvert: false, + wantMsg: "", + }, + { + name: "ToErrCode和ToErrMsg都为空返回false", + convert: &ResultErrConvert{MatchedText: "err"}, + msg: "some error", + wantConvert: false, + wantMsg: "", + }, + { + name: "非默认模式且MatchedText为空返回false", + convert: &ResultErrConvert{ToErrMsg: "converted"}, + msg: "some error", + wantConvert: false, + wantMsg: "", + }, + { + name: "非默认模式且MatchedText不匹配返回false", + convert: &ResultErrConvert{MatchedText: "not_found", ToErrMsg: "converted"}, + msg: "some error", + wantConvert: false, + wantMsg: "", + }, + { + name: "非默认模式MatchedText匹配且有ToErrMsg", + convert: &ResultErrConvert{MatchedText: "error", ToErrMsg: "converted msg"}, + msg: "some error happened", + wantConvert: true, + wantMsg: "converted msg", + }, + { + name: "非默认模式MatchedText匹配且有ToErrCode", + convert: &ResultErrConvert{MatchedText: "error", ToErrCode: errno.CommonInternalErrorCode}, + msg: "some error happened", + wantConvert: true, + }, + { + name: "默认模式AsDefault为true有ToErrMsg", + convert: &ResultErrConvert{AsDefault: true, ToErrMsg: "default converted"}, + msg: "any message", + wantConvert: true, + wantMsg: "default converted", + }, + { + name: "默认模式AsDefault为true有ToErrCode", + convert: &ResultErrConvert{AsDefault: true, ToErrCode: errno.CommonInternalErrorCode}, + msg: "any message", + wantConvert: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + converted, msg := tt.convert.ConvertErrMsg(tt.msg) + assert.Equal(t, tt.wantConvert, converted) + if tt.wantMsg != "" { + assert.Equal(t, tt.wantMsg, msg) + } + }) + } +} + +func TestExptErrCtrl_GetErrRetryCtrl(t *testing.T) { + defaultCtrl := &ErrRetryCtrl{RetryConf: &RetryConf{RetryTimes: 3}} + spaceCtrl := &ErrRetryCtrl{RetryConf: &RetryConf{RetryTimes: 5}} + + tests := []struct { + name string + ctrl *ExptErrCtrl + spaceID int64 + expected *ErrRetryCtrl + }{ + { + name: "ctrl为nil返回空ErrRetryCtrl", + ctrl: nil, + spaceID: 1, + }, + { + name: "space有专属配置返回space配置", + ctrl: &ExptErrCtrl{ + ErrRetryCtrl: defaultCtrl, + SpaceErrRetryCtrl: map[int64]*ErrRetryCtrl{100: spaceCtrl}, + }, + spaceID: 100, + expected: spaceCtrl, + }, + { + name: "space无专属配置返回默认配置", + ctrl: &ExptErrCtrl{ + ErrRetryCtrl: defaultCtrl, + SpaceErrRetryCtrl: map[int64]*ErrRetryCtrl{100: spaceCtrl}, + }, + spaceID: 999, + expected: defaultCtrl, + }, + { + name: "SpaceErrRetryCtrl为nil返回默认配置", + ctrl: &ExptErrCtrl{ + ErrRetryCtrl: defaultCtrl, + }, + spaceID: 1, + expected: defaultCtrl, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result := tt.ctrl.GetErrRetryCtrl(tt.spaceID) + if tt.ctrl == nil { + assert.NotNil(t, result) + } else { + assert.Equal(t, tt.expected, result) + } + }) + } +} + +func TestExptErrCtrl_ConvertErrMsg(t *testing.T) { + tests := []struct { + name string + ctrl *ExptErrCtrl + msg string + expected string + }{ + { + name: "ctrl为nil返回空", + ctrl: nil, + msg: "some error", + expected: "", + }, + { + name: "msg为空返回空", + ctrl: &ExptErrCtrl{}, + msg: "", + expected: "", + }, + { + name: "匹配非默认规则", + ctrl: &ExptErrCtrl{ + ResultErrConverts: []*ResultErrConvert{ + {MatchedText: "timeout", ToErrMsg: "request timeout"}, + {AsDefault: true, ToErrMsg: "unknown error"}, + }, + }, + msg: "connection timeout occurred", + expected: "request timeout", + }, + { + name: "不匹配非默认规则回退到默认规则", + ctrl: &ExptErrCtrl{ + ResultErrConverts: []*ResultErrConvert{ + {MatchedText: "timeout", ToErrMsg: "request timeout"}, + {AsDefault: true, ToErrMsg: "unknown error"}, + }, + }, + msg: "some random error", + expected: "unknown error", + }, + { + name: "无默认规则也不匹配", + ctrl: &ExptErrCtrl{ + ResultErrConverts: []*ResultErrConvert{ + {MatchedText: "timeout", ToErrMsg: "request timeout"}, + }, + }, + msg: "some random error", + expected: "", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result := tt.ctrl.ConvertErrMsg(tt.msg) + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestErrRetryCtrl_GetRetryConf(t *testing.T) { + defaultConf := &RetryConf{RetryTimes: 3} + timeoutConf := &RetryConf{RetryTimes: 5} + + tests := []struct { + name string + ctrl *ErrRetryCtrl + err error + expected *RetryConf + }{ + { + name: "ctrl为nil返回nil", + ctrl: nil, + err: errors.New("some error"), + expected: nil, + }, + { + name: "err为nil返回nil", + ctrl: &ErrRetryCtrl{RetryConf: defaultConf}, + err: nil, + expected: nil, + }, + { + name: "匹配ErrRetryConf中的错误", + ctrl: &ErrRetryCtrl{ + RetryConf: defaultConf, + ErrRetryConf: map[string]*RetryConf{"timeout": timeoutConf}, + }, + err: errors.New("connection timeout"), + expected: timeoutConf, + }, + { + name: "不匹配ErrRetryConf回退到默认RetryConf", + ctrl: &ErrRetryCtrl{ + RetryConf: defaultConf, + ErrRetryConf: map[string]*RetryConf{"timeout": timeoutConf}, + }, + err: errors.New("some other error"), + expected: defaultConf, + }, + { + name: "ErrRetryConf为nil回退到默认RetryConf", + ctrl: &ErrRetryCtrl{ + RetryConf: defaultConf, + }, + err: errors.New("some error"), + expected: defaultConf, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result := tt.ctrl.GetRetryConf(tt.err) + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestRetryConf_GetRetryTimes(t *testing.T) { + tests := []struct { + name string + conf *RetryConf + expected int + }{ + {name: "nil返回0", conf: nil, expected: 0}, + {name: "RetryTimes为0返回0", conf: &RetryConf{RetryTimes: 0}, expected: 0}, + {name: "RetryTimes为正数返回设置值", conf: &RetryConf{RetryTimes: 5}, expected: 5}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + var result int + if tt.conf != nil { + result = tt.conf.GetRetryTimes() + } else { + result = (*RetryConf)(nil).GetRetryTimes() + } + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestRetryConf_GetRetryInterval(t *testing.T) { + tests := []struct { + name string + conf *RetryConf + expected time.Duration + }{ + {name: "nil返回默认20s", conf: nil, expected: 20 * time.Second}, + {name: "值为0返回默认20s", conf: &RetryConf{RetryIntervalSecond: 0}, expected: 20 * time.Second}, + {name: "值为负数返回默认20s", conf: &RetryConf{RetryIntervalSecond: -1}, expected: 20 * time.Second}, + {name: "值为正数返回设置值", conf: &RetryConf{RetryIntervalSecond: 60}, expected: 60 * time.Second}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + var result time.Duration + if tt.conf != nil { + result = tt.conf.GetRetryInterval() + } else { + result = (*RetryConf)(nil).GetRetryInterval() + } + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestQuotaSpaceExpt_Serialize_Extended(t *testing.T) { + t.Run("正常序列化", func(t *testing.T) { + q := &QuotaSpaceExpt{ + ExptID2RunTime: map[int64]int64{1: 1000, 2: 2000}, + } + bytes, err := q.Serialize() + assert.NoError(t, err) + assert.NotEmpty(t, bytes) + assert.Contains(t, string(bytes), "ExptID2RunTime") + }) + + t.Run("空map序列化", func(t *testing.T) { + q := &QuotaSpaceExpt{ + ExptID2RunTime: map[int64]int64{}, + } + bytes, err := q.Serialize() + assert.NoError(t, err) + assert.NotEmpty(t, bytes) + }) + + t.Run("nil map序列化", func(t *testing.T) { + q := &QuotaSpaceExpt{} + bytes, err := q.Serialize() + assert.NoError(t, err) + assert.NotEmpty(t, bytes) + }) +} + +func TestExptTurnRunResult_GetTargetResult(t *testing.T) { + tr := &EvalTargetRecord{ID: 1, SpaceID: 100} + + tests := []struct { + name string + result *ExptTurnRunResult + expected *EvalTargetRecord + }{ + {name: "nil返回nil", result: nil, expected: nil}, + {name: "TargetResult为nil返回nil", result: &ExptTurnRunResult{}, expected: nil}, + {name: "TargetResult有值返回对应值", result: &ExptTurnRunResult{TargetResult: tr}, expected: tr}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + var result *EvalTargetRecord + if tt.result != nil { + result = tt.result.GetTargetResult() + } else { + result = (*ExptTurnRunResult)(nil).GetTargetResult() + } + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestExptTurnRunResult_GetEvalErr(t *testing.T) { + tests := []struct { + name string + result *ExptTurnRunResult + expected error + }{ + {name: "nil返回nil", result: nil, expected: nil}, + {name: "EvalErr为nil返回nil", result: &ExptTurnRunResult{}, expected: nil}, + {name: "EvalErr有值返回对应值", result: &ExptTurnRunResult{EvalErr: fmt.Errorf("test")}, expected: fmt.Errorf("test")}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + var result error + if tt.result != nil { + result = tt.result.GetEvalErr() + } else { + result = (*ExptTurnRunResult)(nil).GetEvalErr() + } + if tt.expected == nil { + assert.Nil(t, result) + } else { + assert.NotNil(t, result) + assert.Equal(t, tt.expected.Error(), result.Error()) + } + }) + } +} + +func TestExptItemEvalCtx_GetExistItemResultLog(t *testing.T) { + itemLog := &ExptItemResultRunLog{ID: 1, LogID: "log1"} + + tests := []struct { + name string + ctx *ExptItemEvalCtx + expected *ExptItemResultRunLog + }{ + {name: "ctx为nil返回nil", ctx: nil, expected: nil}, + {name: "ExistItemEvalResult为nil返回nil", ctx: &ExptItemEvalCtx{}, expected: nil}, + { + name: "ItemResultRunLog为nil返回nil", + ctx: &ExptItemEvalCtx{ + ExistItemEvalResult: &ExptItemEvalResult{}, + }, + expected: nil, + }, + { + name: "返回ItemResultRunLog", + ctx: &ExptItemEvalCtx{ + ExistItemEvalResult: &ExptItemEvalResult{ + ItemResultRunLog: itemLog, + }, + }, + expected: itemLog, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result := tt.ctx.GetExistItemResultLog() + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestExptItemEvalCtx_GetExistTurnResultLogs(t *testing.T) { + turnLogs := map[int64]*ExptTurnResultRunLog{ + 1: {ID: 1, LogID: "turn_log1"}, + } + + tests := []struct { + name string + ctx *ExptItemEvalCtx + expected map[int64]*ExptTurnResultRunLog + }{ + {name: "ctx为nil返回nil", ctx: nil, expected: nil}, + {name: "ExistItemEvalResult为nil返回nil", ctx: &ExptItemEvalCtx{}, expected: nil}, + { + name: "返回TurnResultRunLogs", + ctx: &ExptItemEvalCtx{ + ExistItemEvalResult: &ExptItemEvalResult{ + TurnResultRunLogs: turnLogs, + }, + }, + expected: turnLogs, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result := tt.ctx.GetExistTurnResultLogs() + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestExptItemEvalCtx_GetExistTurnResultRunLog(t *testing.T) { + turnLog := &ExptTurnResultRunLog{ID: 1, TurnID: 10, LogID: "log1"} + + tests := []struct { + name string + ctx *ExptItemEvalCtx + turnID int64 + expected *ExptTurnResultRunLog + }{ + { + name: "ExistItemEvalResult为nil返回nil", + ctx: &ExptItemEvalCtx{}, + turnID: 10, + expected: nil, + }, + { + name: "turnID存在返回对应日志", + ctx: &ExptItemEvalCtx{ + ExistItemEvalResult: &ExptItemEvalResult{ + TurnResultRunLogs: map[int64]*ExptTurnResultRunLog{10: turnLog}, + }, + }, + turnID: 10, + expected: turnLog, + }, + { + name: "turnID不存在返回nil", + ctx: &ExptItemEvalCtx{ + ExistItemEvalResult: &ExptItemEvalResult{ + TurnResultRunLogs: map[int64]*ExptTurnResultRunLog{10: turnLog}, + }, + }, + turnID: 99, + expected: nil, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result := tt.ctx.GetExistTurnResultRunLog(tt.turnID) + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestExptItemEvalCtx_GetRecordEvalLogID(t *testing.T) { + ctx := context.Background() + + t.Run("无ExistItemEvalResult生成新LogID", func(t *testing.T) { + evalCtx := &ExptItemEvalCtx{} + logID := evalCtx.GetRecordEvalLogID(ctx) + assert.NotEmpty(t, logID) + }) + + t.Run("ItemResultRunLog为nil生成新LogID", func(t *testing.T) { + evalCtx := &ExptItemEvalCtx{ + ExistItemEvalResult: &ExptItemEvalResult{}, + } + logID := evalCtx.GetRecordEvalLogID(ctx) + assert.NotEmpty(t, logID) + }) + + t.Run("ItemResultRunLog的LogID为空生成新LogID", func(t *testing.T) { + evalCtx := &ExptItemEvalCtx{ + ExistItemEvalResult: &ExptItemEvalResult{ + ItemResultRunLog: &ExptItemResultRunLog{LogID: ""}, + }, + } + logID := evalCtx.GetRecordEvalLogID(ctx) + assert.NotEmpty(t, logID) + }) + + t.Run("ItemResultRunLog有LogID返回已有LogID", func(t *testing.T) { + evalCtx := &ExptItemEvalCtx{ + ExistItemEvalResult: &ExptItemEvalResult{ + ItemResultRunLog: &ExptItemResultRunLog{LogID: "existing-log-id"}, + }, + } + logID := evalCtx.GetRecordEvalLogID(ctx) + assert.Equal(t, "existing-log-id", logID) + }) +} + +func TestExptItemEvalCtx_GetTurnEvalLogID(t *testing.T) { + ctx := context.Background() + + t.Run("无TurnResultRunLog生成新LogID", func(t *testing.T) { + evalCtx := &ExptItemEvalCtx{} + logID := evalCtx.GetTurnEvalLogID(ctx, 1) + assert.NotEmpty(t, logID) + }) + + t.Run("TurnResultRunLog有LogID返回已有LogID", func(t *testing.T) { + evalCtx := &ExptItemEvalCtx{ + ExistItemEvalResult: &ExptItemEvalResult{ + TurnResultRunLogs: map[int64]*ExptTurnResultRunLog{ + 1: {LogID: "existing-turn-log"}, + }, + }, + } + logID := evalCtx.GetTurnEvalLogID(ctx, 1) + assert.Equal(t, "existing-turn-log", logID) + }) + + t.Run("TurnResultRunLog的LogID为空会生成新LogID并写回", func(t *testing.T) { + turnLog := &ExptTurnResultRunLog{LogID: ""} + evalCtx := &ExptItemEvalCtx{ + ExistItemEvalResult: &ExptItemEvalResult{ + TurnResultRunLogs: map[int64]*ExptTurnResultRunLog{ + 1: turnLog, + }, + }, + } + logID := evalCtx.GetTurnEvalLogID(ctx, 1) + assert.NotEmpty(t, logID) + assert.Equal(t, logID, turnLog.LogID) + }) + + t.Run("turnID不存在生成新LogID", func(t *testing.T) { + evalCtx := &ExptItemEvalCtx{ + ExistItemEvalResult: &ExptItemEvalResult{ + TurnResultRunLogs: map[int64]*ExptTurnResultRunLog{ + 1: {LogID: "log1"}, + }, + }, + } + logID := evalCtx.GetTurnEvalLogID(ctx, 99) + assert.NotEmpty(t, logID) + }) +} diff --git a/backend/modules/evaluation/domain/entity/expt_template.go b/backend/modules/evaluation/domain/entity/expt_template.go index 7574f05a5..e91590b7d 100644 --- a/backend/modules/evaluation/domain/entity/expt_template.go +++ b/backend/modules/evaluation/domain/entity/expt_template.go @@ -120,6 +120,7 @@ type ExptTemplateMeta struct { Name string Desc string ExptType ExptType + Visibility Visibility // 实验模板可见性,默认为空,可见 } // EvaluatorIDVersionItem 评估器ID和版本映射项 @@ -417,6 +418,7 @@ type CreateExptTemplateParam struct { EvaluatorIDVersionItems []*EvaluatorIDVersionItem // 评估器ID版本项列表(包含完整信息) TemplateConf *ExptTemplateConfiguration ExptType ExptType + Visibility *Visibility CronActivate bool // 是否开启定时触发 CreateEvalTargetParam *CreateEvalTargetParam ExptSource *ExptSource // 实验来源信息 @@ -428,6 +430,7 @@ type UpdateExptTemplateParam struct { SpaceID int64 Name string Description string + EvalSetID int64 EvalSetVersionID int64 TargetVersionID int64 EvaluatorIDVersionItems []*EvaluatorIDVersionItem // 评估器ID版本项列表(包含完整信息) @@ -444,5 +447,6 @@ type UpdateExptTemplateMetaParam struct { Name string Description string ExptType ExptType + Visibility *Visibility CronActivate *bool // nil 表示不修改 } diff --git a/backend/modules/evaluation/domain/entity/expt_test.go b/backend/modules/evaluation/domain/entity/expt_test.go index 396ebe032..e93fda5b9 100644 --- a/backend/modules/evaluation/domain/entity/expt_test.go +++ b/backend/modules/evaluation/domain/entity/expt_test.go @@ -123,6 +123,224 @@ func TestQuotaSpaceExpt_Serialize(t *testing.T) { assert.NotNil(t, b) } +func TestExperiment_AsyncCallTarget_WebAgent(t *testing.T) { + tests := []struct { + name string + expt *Experiment + expected bool + }{ + { + name: "nil实验返回false", + expt: nil, + expected: false, + }, + { + name: "nil Target返回false", + expt: &Experiment{Target: nil}, + expected: false, + }, + { + name: "WebAgent设置返回true", + expt: &Experiment{ + Target: &EvalTarget{ + EvalTargetVersion: &EvalTargetVersion{ + WebAgent: &WebAgent{ID: 1, Name: "test-web-agent"}, + }, + }, + }, + expected: true, + }, + { + name: "CustomRPCServer异步IsAsync=true返回true", + expt: &Experiment{ + Target: &EvalTarget{ + EvalTargetVersion: &EvalTargetVersion{ + CustomRPCServer: &CustomRPCServer{IsAsync: gptr.Of(true)}, + }, + }, + }, + expected: true, + }, + { + name: "无WebAgent且非异步CustomRPCServer返回false", + expt: &Experiment{ + Target: &EvalTarget{ + EvalTargetVersion: &EvalTargetVersion{ + CustomRPCServer: &CustomRPCServer{IsAsync: gptr.Of(false)}, + }, + }, + }, + expected: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert.Equal(t, tt.expected, tt.expt.AsyncCallTarget()) + }) + } +} + +func TestTargetConf_Valid_WebAgent(t *testing.T) { + ctx := context.Background() + conf := &TargetConf{ + TargetVersionID: 1, + } + err := conf.Valid(ctx, EvalTargetTypeWebAgent) + assert.NoError(t, err) +} + +func TestVisibility_Hidden(t *testing.T) { + assert.Equal(t, Visibility(1), Visibility_Hidden) +} + +func TestSourceType_IntelligentGen(t *testing.T) { + assert.Equal(t, SourceType(4), SourceType_IntelligentGen) +} + +func TestExperiment_AsyncExec(t *testing.T) { + tests := []struct { + name string + expt *Experiment + expected bool + }{ + { + name: "nil实验返回false", + expt: nil, + expected: false, + }, + { + name: "AsyncCallTarget为true返回true", + expt: &Experiment{ + Target: &EvalTarget{ + EvalTargetVersion: &EvalTargetVersion{ + WebAgent: &WebAgent{ID: 1, Name: "agent"}, + }, + }, + }, + expected: true, + }, + { + name: "AsyncCallEvaluators为true返回true", + expt: &Experiment{ + Evaluators: []*Evaluator{ + {EvaluatorType: EvaluatorTypeAgent}, + }, + }, + expected: true, + }, + { + name: "Both false返回false", + expt: &Experiment{ + Target: &EvalTarget{ + EvalTargetVersion: &EvalTargetVersion{}, + }, + Evaluators: []*Evaluator{ + {EvaluatorType: EvaluatorTypePrompt}, + }, + }, + expected: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert.Equal(t, tt.expected, tt.expt.AsyncExec()) + }) + } +} + +func TestTargetConf_Valid_MoreBranches(t *testing.T) { + ctx := context.Background() + tests := []struct { + name string + conf *TargetConf + targetType EvalTargetType + wantErr bool + }{ + { + name: "TargetVersionID为0返回错误", + conf: &TargetConf{TargetVersionID: 0}, + targetType: EvalTargetTypeCozeBot, + wantErr: true, + }, + { + name: "LoopPrompt类型无需IngressConf", + conf: &TargetConf{TargetVersionID: 1}, + targetType: EvalTargetTypeLoopPrompt, + wantErr: false, + }, + { + name: "CustomRPCServer类型无需IngressConf", + conf: &TargetConf{TargetVersionID: 1}, + targetType: EvalTargetTypeCustomRPCServer, + wantErr: false, + }, + { + name: "IngressConf的EvalSetAdapter为nil返回错误", + conf: &TargetConf{ + TargetVersionID: 1, + IngressConf: &TargetIngressConf{EvalSetAdapter: nil}, + }, + targetType: EvalTargetTypeCozeBot, + wantErr: true, + }, + { + name: "有效IngressConf返回nil", + conf: &TargetConf{ + TargetVersionID: 1, + IngressConf: &TargetIngressConf{ + EvalSetAdapter: &FieldAdapter{FieldConfs: []*FieldConf{{}}}, + }, + }, + targetType: EvalTargetTypeCozeBot, + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + err := tt.conf.Valid(ctx, tt.targetType) + if tt.wantErr { + assert.Error(t, err) + } else { + assert.NoError(t, err) + } + }) + } +} + +func TestWithOperationInstruction(t *testing.T) { + instruction := "test instruction" + opt := &Opt{} + WithOperationInstruction(&instruction)(opt) + assert.Equal(t, &instruction, opt.OperationInstruction) +} + +func TestWithOptions(t *testing.T) { + opt := &Opt{} + + pv := "v1" + WithCozeBotPublishVersion(&pv)(opt) + assert.Equal(t, &pv, opt.PublishVersion) + + WithCozeBotInfoType(CozeBotInfoType(1))(opt) + assert.Equal(t, CozeBotInfoType(1), opt.BotInfoType) + + ct := &CustomEvalTarget{ID: gptr.Of("1")} + WithCustomEvalTarget(ct)(opt) + assert.Equal(t, ct, opt.CustomEvalTarget) + + region := Region("us-east") + WithRegion(®ion)(opt) + assert.Equal(t, ®ion, opt.Region) + + env := "prod" + WithEnv(&env)(opt) + assert.Equal(t, &env, opt.Env) + + instruction := "do something" + WithOperationInstruction(&instruction)(opt) + assert.Equal(t, &instruction, opt.OperationInstruction) +} + func TestCreateEvalTargetParam_IsNull(t *testing.T) { assert.True(t, ((*CreateEvalTargetParam)(nil)).IsNull()) assert.True(t, (&CreateEvalTargetParam{}).IsNull()) @@ -130,3 +348,114 @@ func TestCreateEvalTargetParam_IsNull(t *testing.T) { s := "x" assert.False(t, (&CreateEvalTargetParam{SourceTargetID: &s}).IsNull()) } + +func TestGetItemIDs(t *testing.T) { + tests := []struct { + name string + runLog *ExptRunLog + expected []int64 + }{ + { + name: "空ItemIds返回nil", + runLog: &ExptRunLog{}, + expected: nil, + }, + { + name: "单个chunk", + runLog: &ExptRunLog{ + ItemIds: []ExptRunLogItems{ + {ItemIDs: []int64{1, 2, 3}}, + }, + }, + expected: []int64{1, 2, 3}, + }, + { + name: "多个chunk合并", + runLog: &ExptRunLog{ + ItemIds: []ExptRunLogItems{ + {ItemIDs: []int64{1, 2}}, + {ItemIDs: []int64{3, 4}}, + }, + }, + expected: []int64{1, 2, 3, 4}, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert.Equal(t, tt.expected, tt.runLog.GetItemIDs()) + }) + } +} + +func TestAppendItemIDs(t *testing.T) { + tests := []struct { + name string + runLog *ExptRunLog + input []int64 + wantErr bool + }{ + { + name: "nil接收者返回错误", + runLog: nil, + input: []int64{1}, + wantErr: true, + }, + { + name: "正常追加", + runLog: &ExptRunLog{}, + input: []int64{1, 2}, + wantErr: false, + }, + { + name: "重复ID返回错误", + runLog: &ExptRunLog{ + ItemIds: []ExptRunLogItems{ + {ItemIDs: []int64{1, 2}}, + }, + }, + input: []int64{2, 3}, + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + err := tt.runLog.AppendItemIDs(tt.input) + if tt.wantErr { + assert.Error(t, err) + } else { + assert.NoError(t, err) + ids := tt.runLog.GetItemIDs() + assert.Equal(t, tt.input, ids) + } + }) + } +} + +func TestContainsEvalTarget(t *testing.T) { + tests := []struct { + name string + expt *Experiment + expected bool + }{ + { + name: "nil实验返回false", + expt: nil, + expected: false, + }, + { + name: "TargetVersionID为0返回false", + expt: &Experiment{TargetVersionID: 0}, + expected: false, + }, + { + name: "TargetVersionID大于0返回true", + expt: &Experiment{TargetVersionID: 1}, + expected: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert.Equal(t, tt.expected, tt.expt.ContainsEvalTarget()) + }) + } +} diff --git a/backend/modules/evaluation/domain/entity/param.go b/backend/modules/evaluation/domain/entity/param.go index b1fd7b81f..7db21527d 100644 --- a/backend/modules/evaluation/domain/entity/param.go +++ b/backend/modules/evaluation/domain/entity/param.go @@ -126,11 +126,12 @@ type BatchGetEvaluationSetVersionsResult struct { type Option func(option *Opt) type Opt struct { - PublishVersion *string - BotInfoType CozeBotInfoType - CustomEvalTarget *CustomEvalTarget - Region *Region - Env *string + PublishVersion *string + BotInfoType CozeBotInfoType + CustomEvalTarget *CustomEvalTarget + Region *Region + Env *string + OperationInstruction *string } func WithCozeBotPublishVersion(publishVersion *string) Option { @@ -163,6 +164,12 @@ func WithEnv(env *string) Option { } } +func WithOperationInstruction(operationInstruction *string) Option { + return func(option *Opt) { + option.OperationInstruction = operationInstruction + } +} + type ExecuteEvalTargetParam struct { ExptID int64 TargetID int64 @@ -286,9 +293,12 @@ type CreateExptParam struct { MaxAliveTime int64 `json:"max_alive_time"` SourceType SourceType `json:"source_type"` SourceID string `json:"source_id"` + Visibility *Visibility `json:"visibility,omitempty"` + ThreadID *string `json:"thread_id,omitempty"` ExptTemplateID int64 `json:"expt_template_id"` ExptConf *EvaluationConfiguration `json:"expt_conf"` ItemRetryNum *int `json:"item_retry_num,omitempty"` + TrialRunItemCount int64 `json:"trial_run_item_count"` TriggerType string `json:"trigger_type,omitempty"` } diff --git a/backend/modules/evaluation/domain/entity/target.go b/backend/modules/evaluation/domain/entity/target.go index b95378833..7ee0f97ad 100644 --- a/backend/modules/evaluation/domain/entity/target.go +++ b/backend/modules/evaluation/domain/entity/target.go @@ -30,6 +30,7 @@ type EvalTargetVersion struct { CozeWorkflow *CozeWorkflow VolcengineAgent *VolcengineAgent CustomRPCServer *CustomRPCServer + WebAgent *WebAgent InputSchema []*ArgsSchema OutputSchema []*ArgsSchema @@ -56,6 +57,8 @@ const ( // 火山智能体Agentkit EvalTargetTypeVolcengineAgentAgentkit EvalTargetType = 7 + // Web智能体 + EvalTargetTypeWebAgent EvalTargetType = 8 // 以下为仅记录型:评测过程中不执行对象,仅用于记录对象类型和基本信息 EvalTargetTypeCozeBotOnline EvalTargetType = 11 @@ -146,6 +149,8 @@ func (p EvalTargetType) String() string { return "CustomRPCServer" case EvalTargetTypeVolcengineAgentAgentkit: return "VolcengineAgentKit" + case EvalTargetTypeWebAgent: + return "WebAgent" case EvalTargetTypeCozeBotOnline: return "CozeBotOnline" case EvalTargetTypeCozeLoopPromptOnline: diff --git a/backend/modules/evaluation/domain/entity/target_builtin_web_agent.go b/backend/modules/evaluation/domain/entity/target_builtin_web_agent.go new file mode 100644 index 000000000..01be8555b --- /dev/null +++ b/backend/modules/evaluation/domain/entity/target_builtin_web_agent.go @@ -0,0 +1,22 @@ +// Copyright (c) 2025 coze-dev Authors +// SPDX-License-Identifier: Apache-2.0 + +package entity + +type WebAgent struct { + ID int64 + Name string + Description string + + AgentConfig *AgentConfig + PromptConfig *WebAgentTargetPromptConfig +} + +type WebAgentTargetPromptConfig struct { + MessageList []*Message + OutputRule *WebAgentTargetPromptConfigOutputRule +} + +type WebAgentTargetPromptConfigOutputRule struct { + Message *Message +} diff --git a/backend/modules/evaluation/domain/entity/target_record.go b/backend/modules/evaluation/domain/entity/target_record.go index 35543c45e..1d89539d6 100644 --- a/backend/modules/evaluation/domain/entity/target_record.go +++ b/backend/modules/evaluation/domain/entity/target_record.go @@ -83,6 +83,8 @@ func (e *EvalTargetInputData) ValidateInputSchema(inputSchema []*ArgsSchema) err type EvalTargetOutputData struct { // 变量 OutputFields map[string]*Content + // 平台扩展字段 + Ext map[string]string // 运行消耗 EvalTargetUsage *EvalTargetUsage // 运行报错 diff --git a/backend/modules/evaluation/domain/entity/target_test.go b/backend/modules/evaluation/domain/entity/target_test.go index 676d56922..85c72823d 100644 --- a/backend/modules/evaluation/domain/entity/target_test.go +++ b/backend/modules/evaluation/domain/entity/target_test.go @@ -16,6 +16,7 @@ func TestEvalTargetType_String(t *testing.T) { assert.Equal(t, "LoopTrace", EvalTargetTypeLoopTrace.String()) assert.Equal(t, "CozeWorkflow", EvalTargetTypeCozeWorkflow.String()) assert.Equal(t, "VolcengineAgent", EvalTargetTypeVolcengineAgent.String()) + assert.Equal(t, "WebAgent", EvalTargetTypeWebAgent.String()) assert.Equal(t, "CustomRPCServer", EvalTargetTypeCustomRPCServer.String()) assert.Equal(t, "VolcengineAgentKit", EvalTargetTypeVolcengineAgentAgentkit.String()) assert.Equal(t, "CozeBotOnline", EvalTargetTypeCozeBotOnline.String()) @@ -69,6 +70,11 @@ func TestEvalTargetType_SupptTrajectory(t *testing.T) { targetType: EvalTargetTypeVolcengineAgentAgentkit, expected: false, }, + { + name: "WebAgent does not support trajectory", + targetType: EvalTargetTypeWebAgent, + expected: false, + }, { name: "Unknown type does not support trajectory", targetType: EvalTargetType(99), diff --git a/backend/modules/evaluation/domain/repo/mocks/target.go b/backend/modules/evaluation/domain/repo/mocks/target.go index 90a8dfde1..8ffb95687 100644 --- a/backend/modules/evaluation/domain/repo/mocks/target.go +++ b/backend/modules/evaluation/domain/repo/mocks/target.go @@ -133,6 +133,21 @@ func (mr *MockIEvalTargetRepoMockRecorder) GetEvalTargetRecordByIDAndSpaceID(ctx return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetEvalTargetRecordByIDAndSpaceID", reflect.TypeOf((*MockIEvalTargetRepo)(nil).GetEvalTargetRecordByIDAndSpaceID), ctx, spaceID, recordID) } +// GetEvalTargetRecordByRunItemTurn mocks base method. +func (m *MockIEvalTargetRepo) GetEvalTargetRecordByRunItemTurn(ctx context.Context, spaceID, runID, itemID, turnID int64) (*entity.EvalTargetRecord, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetEvalTargetRecordByRunItemTurn", ctx, spaceID, runID, itemID, turnID) + ret0, _ := ret[0].(*entity.EvalTargetRecord) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetEvalTargetRecordByRunItemTurn indicates an expected call of GetEvalTargetRecordByRunItemTurn. +func (mr *MockIEvalTargetRepoMockRecorder) GetEvalTargetRecordByRunItemTurn(ctx, spaceID, runID, itemID, turnID any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetEvalTargetRecordByRunItemTurn", reflect.TypeOf((*MockIEvalTargetRepo)(nil).GetEvalTargetRecordByRunItemTurn), ctx, spaceID, runID, itemID, turnID) +} + // GetEvalTargetVersion mocks base method. func (m *MockIEvalTargetRepo) GetEvalTargetVersion(ctx context.Context, spaceID, versionID int64) (*entity.EvalTarget, error) { m.ctrl.T.Helper() diff --git a/backend/modules/evaluation/domain/repo/target.go b/backend/modules/evaluation/domain/repo/target.go index 380eba744..261a1d8d6 100644 --- a/backend/modules/evaluation/domain/repo/target.go +++ b/backend/modules/evaluation/domain/repo/target.go @@ -24,6 +24,7 @@ type IEvalTargetRepo interface { SaveEvalTargetRecord(ctx context.Context, record *entity.EvalTargetRecord, truncateLargeContent *bool) error UpdateEvalTargetRecord(ctx context.Context, record *entity.EvalTargetRecord, truncateLargeContent *bool) error GetEvalTargetRecordByIDAndSpaceID(ctx context.Context, spaceID, recordID int64) (*entity.EvalTargetRecord, error) + GetEvalTargetRecordByRunItemTurn(ctx context.Context, spaceID, runID, itemID, turnID int64) (*entity.EvalTargetRecord, error) ListEvalTargetRecordByIDsAndSpaceID(ctx context.Context, spaceID int64, recordIDs []int64) ([]*entity.EvalTargetRecord, error) // LoadEvalTargetRecordOutputFields 从 S3 加载 record output 中指定字段的大对象完整内容 LoadEvalTargetRecordOutputFields(ctx context.Context, record *entity.EvalTargetRecord, fieldKeys []string) error diff --git a/backend/modules/evaluation/domain/service/expt_manage_execution_impl.go b/backend/modules/evaluation/domain/service/expt_manage_execution_impl.go index d3bfec45c..79c553459 100644 --- a/backend/modules/evaluation/domain/service/expt_manage_execution_impl.go +++ b/backend/modules/evaluation/domain/service/expt_manage_execution_impl.go @@ -320,7 +320,7 @@ func (e *ExptMangerImpl) Run(ctx context.Context, exptID, runID, spaceID int64, } switch runMode { - case entity.EvaluationModeSubmit: + case entity.EvaluationModeSubmit, entity.EvaluationModeTrialRun: if err = e.sendExptNotify(ctx, expt); err != nil { logs.CtxWarn(ctx, "[Run] SendExptNotify failed, expt_id: %v, error: %v", exptID, err) } @@ -673,6 +673,9 @@ func (e *ExptMangerImpl) sendExptNotify(ctx context.Context, expt *entity.Experi } else { param["end_time"] = "-" } + if expt.SourceType == entity.SourceType_IntelligentGen { + param["thread_id"] = gptr.Indirect(expt.ThreadID) + } switch expt.Status { case entity.ExptStatus_Success: param[consts.ExptEventNotifyTitle] = consts.ExptEventNotifyTitleSuccess diff --git a/backend/modules/evaluation/domain/service/expt_manage_execution_impl_test.go b/backend/modules/evaluation/domain/service/expt_manage_execution_impl_test.go index febaf5c72..3cdad6651 100755 --- a/backend/modules/evaluation/domain/service/expt_manage_execution_impl_test.go +++ b/backend/modules/evaluation/domain/service/expt_manage_execution_impl_test.go @@ -3380,3 +3380,219 @@ func TestExptMangerImpl_Run_OnlineExpt(t *testing.T) { assert.NoError(t, err) }) } + +func TestExptMangerImpl_RecordExptData(t *testing.T) { + ctx := context.Background() + session := &entity.Session{UserID: "test_user"} + + t.Run("success", func(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + mgr := newTestExptManager(ctrl) + + runLog := &entity.ExptRunLog{ + ID: 456, + ExptID: 123, + ExptRunID: 456, + Status: int64(entity.ExptStatus_Pending), + } + + mgr.runLogRepo.(*repoMocks.MockIExptRunLogRepo). + EXPECT(). + Get(ctx, int64(123), int64(456)). + Return(runLog, nil) + + mgr.turnResultRepo.(*repoMocks.MockIExptTurnResultRepo). + EXPECT(). + ListTurnResult(ctx, int64(789), int64(123), nil, gomock.Any(), false). + Return([]*entity.ExptTurnResult{ + {Status: int32(entity.TurnRunState_Success)}, + {Status: int32(entity.TurnRunState_Processing)}, + }, int64(2), nil) + + mgr.runLogRepo.(*repoMocks.MockIExptRunLogRepo). + EXPECT(). + Save(ctx, gomock.Any()). + Do(func(_ context.Context, rl *entity.ExptRunLog) { + assert.Equal(t, int64(entity.ExptStatus_Processing), rl.Status) + }). + Return(nil) + + mgr.exptResultService.(*svcMocks.MockExptResultService). + EXPECT(). + CalculateStats(ctx, int64(123), int64(789), session). + Return(&entity.ExptCalculateStats{ + SuccessItemCnt: 3, + PendingItemCnt: 1, + FailItemCnt: 0, + ProcessingItemCnt: 2, + TerminatedItemCnt: 0, + }, nil) + + mgr.statsRepo.(*repoMocks.MockIExptStatsRepo). + EXPECT(). + UpdateByExptID(ctx, int64(123), int64(789), gomock.Any()). + Do(func(_ context.Context, _ int64, _ int64, stats *entity.ExptStats) { + assert.Equal(t, int32(3), stats.SuccessItemCnt) + assert.Equal(t, int32(1), stats.PendingItemCnt) + assert.Equal(t, int32(0), stats.FailItemCnt) + assert.Equal(t, int32(2), stats.ProcessingItemCnt) + assert.Equal(t, int32(0), stats.TerminatedItemCnt) + }). + Return(nil) + + err := mgr.RecordExptData(ctx, 123, 456, 789, session) + assert.NoError(t, err) + }) + + t.Run("get_run_log_failure", func(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + mgr := newTestExptManager(ctrl) + + mgr.runLogRepo.(*repoMocks.MockIExptRunLogRepo). + EXPECT(). + Get(ctx, int64(123), int64(456)). + Return(nil, errors.New("run log not found")) + + err := mgr.RecordExptData(ctx, 123, 456, 789, session) + assert.Error(t, err) + assert.Contains(t, err.Error(), "run log not found") + }) + + t.Run("calculate_run_log_stats_failure", func(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + mgr := newTestExptManager(ctrl) + + runLog := &entity.ExptRunLog{ + ID: 456, + ExptID: 123, + ExptRunID: 456, + } + + mgr.runLogRepo.(*repoMocks.MockIExptRunLogRepo). + EXPECT(). + Get(ctx, int64(123), int64(456)). + Return(runLog, nil) + + mgr.turnResultRepo.(*repoMocks.MockIExptTurnResultRepo). + EXPECT(). + ListTurnResult(ctx, int64(789), int64(123), nil, gomock.Any(), false). + Return(nil, int64(0), errors.New("list turn result error")) + + err := mgr.RecordExptData(ctx, 123, 456, 789, session) + assert.Error(t, err) + assert.Contains(t, err.Error(), "list turn result error") + }) + + t.Run("save_run_log_failure", func(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + mgr := newTestExptManager(ctrl) + + runLog := &entity.ExptRunLog{ + ID: 456, + ExptID: 123, + ExptRunID: 456, + } + + mgr.runLogRepo.(*repoMocks.MockIExptRunLogRepo). + EXPECT(). + Get(ctx, int64(123), int64(456)). + Return(runLog, nil) + + mgr.turnResultRepo.(*repoMocks.MockIExptTurnResultRepo). + EXPECT(). + ListTurnResult(ctx, int64(789), int64(123), nil, gomock.Any(), false). + Return([]*entity.ExptTurnResult{}, int64(0), nil) + + mgr.runLogRepo.(*repoMocks.MockIExptRunLogRepo). + EXPECT(). + Save(ctx, gomock.Any()). + Return(errors.New("save run log error")) + + err := mgr.RecordExptData(ctx, 123, 456, 789, session) + assert.Error(t, err) + assert.Contains(t, err.Error(), "save run log error") + }) + + t.Run("calculate_stats_failure", func(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + mgr := newTestExptManager(ctrl) + + runLog := &entity.ExptRunLog{ + ID: 456, + ExptID: 123, + ExptRunID: 456, + } + + mgr.runLogRepo.(*repoMocks.MockIExptRunLogRepo). + EXPECT(). + Get(ctx, int64(123), int64(456)). + Return(runLog, nil) + + mgr.turnResultRepo.(*repoMocks.MockIExptTurnResultRepo). + EXPECT(). + ListTurnResult(ctx, int64(789), int64(123), nil, gomock.Any(), false). + Return([]*entity.ExptTurnResult{}, int64(0), nil) + + mgr.runLogRepo.(*repoMocks.MockIExptRunLogRepo). + EXPECT(). + Save(ctx, gomock.Any()). + Return(nil) + + mgr.exptResultService.(*svcMocks.MockExptResultService). + EXPECT(). + CalculateStats(ctx, int64(123), int64(789), session). + Return(nil, errors.New("calculate stats error")) + + err := mgr.RecordExptData(ctx, 123, 456, 789, session) + assert.Error(t, err) + assert.Contains(t, err.Error(), "calculate stats error") + }) + + t.Run("update_stats_failure", func(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + mgr := newTestExptManager(ctrl) + + runLog := &entity.ExptRunLog{ + ID: 456, + ExptID: 123, + ExptRunID: 456, + } + + mgr.runLogRepo.(*repoMocks.MockIExptRunLogRepo). + EXPECT(). + Get(ctx, int64(123), int64(456)). + Return(runLog, nil) + + mgr.turnResultRepo.(*repoMocks.MockIExptTurnResultRepo). + EXPECT(). + ListTurnResult(ctx, int64(789), int64(123), nil, gomock.Any(), false). + Return([]*entity.ExptTurnResult{}, int64(0), nil) + + mgr.runLogRepo.(*repoMocks.MockIExptRunLogRepo). + EXPECT(). + Save(ctx, gomock.Any()). + Return(nil) + + mgr.exptResultService.(*svcMocks.MockExptResultService). + EXPECT(). + CalculateStats(ctx, int64(123), int64(789), session). + Return(&entity.ExptCalculateStats{ + SuccessItemCnt: 5, + }, nil) + + mgr.statsRepo.(*repoMocks.MockIExptStatsRepo). + EXPECT(). + UpdateByExptID(ctx, int64(123), int64(789), gomock.Any()). + Return(errors.New("update stats error")) + + err := mgr.RecordExptData(ctx, 123, 456, 789, session) + assert.Error(t, err) + assert.Contains(t, err.Error(), "update stats error") + }) +} diff --git a/backend/modules/evaluation/domain/service/expt_manage_impl.go b/backend/modules/evaluation/domain/service/expt_manage_impl.go index 9fdf1cd58..76ab1651f 100644 --- a/backend/modules/evaluation/domain/service/expt_manage_impl.go +++ b/backend/modules/evaluation/domain/service/expt_manage_impl.go @@ -720,7 +720,8 @@ func (e *ExptMangerImpl) CreateExpt(ctx context.Context, req *entity.CreateExptP opts = append(opts, entity.WithCozeBotPublishVersion(req.CreateEvalTargetParam.BotPublishVersion), entity.WithCozeBotInfoType(gptr.Indirect(req.CreateEvalTargetParam.BotInfoType)), entity.WithRegion(req.CreateEvalTargetParam.Region), - entity.WithEnv(req.CreateEvalTargetParam.Env)) + entity.WithEnv(req.CreateEvalTargetParam.Env), + entity.WithOperationInstruction(req.CreateEvalTargetParam.OperationInstruction)) if req.CreateEvalTargetParam.CustomEvalTarget != nil { opts = append(opts, entity.WithCustomEvalTarget(&entity.CustomEvalTarget{ ID: req.CreateEvalTargetParam.CustomEvalTarget.ID, @@ -800,12 +801,19 @@ func (e *ExptMangerImpl) CreateExpt(ctx context.Context, req *entity.CreateExptP MaxAliveTime: req.MaxAliveTime, SourceType: req.SourceType, SourceID: req.SourceID, + TrialRunItemCount: req.TrialRunItemCount, TriggerType: triggerType, Target: tuple.Target, Evaluators: tuple.Evaluators, EvalSet: tuple.EvalSet, } + if req.Visibility != nil { + do.Visibility = *req.Visibility + } + if req.ThreadID != nil { + do.ThreadID = req.ThreadID + } // 如果提供了模板 ID,设置 ExptTemplateMeta if req.ExptTemplateID > 0 { diff --git a/backend/modules/evaluation/domain/service/expt_result_impl.go b/backend/modules/evaluation/domain/service/expt_result_impl.go index ec50b8c19..2c1e5f716 100644 --- a/backend/modules/evaluation/domain/service/expt_result_impl.go +++ b/backend/modules/evaluation/domain/service/expt_result_impl.go @@ -55,6 +55,7 @@ func NewExptResultService( publisher events.ExptEventPublisher, tagRPCAdapter rpc.ITagRPCAdapter, analysisService IEvaluationAnalysisService, + fileProvider rpc.IFileProvider, ) ExptResultService { return &ExptResultServiceImpl{ ExptItemResultRepo: exptItemResultRepo, @@ -75,6 +76,7 @@ func NewExptResultService( publisher: publisher, tagRPCAdapter: tagRPCAdapter, analysisService: analysisService, + fileProvider: fileProvider, } } @@ -96,6 +98,7 @@ type ExptResultServiceImpl struct { evaluatorService EvaluatorService evaluatorRecordService EvaluatorRecordService evaluationSetItemService EvaluationSetItemService + fileProvider rpc.IFileProvider publisher events.ExptEventPublisher analysisService IEvaluationAnalysisService @@ -415,7 +418,7 @@ func (e ExptResultServiceImpl) MGetExperimentResult(ctx context.Context, param * return nil, err } - payloadBuilder := NewPayloadBuilder(ctx, param, baseExptID, turnResultDAOs, itemResultDAOs, e.ExperimentRepo, e.ExptTurnResultRepo, e.ExptAnnotateRepo, e.evalTargetService, e.evaluatorRecordService, e.evaluationSetItemService, e.analysisService, nil, nil, itemID2ItemRunState) + payloadBuilder := NewPayloadBuilder(ctx, param, baseExptID, turnResultDAOs, itemResultDAOs, e.ExperimentRepo, e.ExptTurnResultRepo, e.ExptAnnotateRepo, e.evalTargetService, e.evaluatorRecordService, e.evaluationSetItemService, e.analysisService, nil, nil, itemID2ItemRunState, e.fileProvider) itemResults, err := payloadBuilder.BuildItemResults(ctx) if err != nil { @@ -894,6 +897,7 @@ type PayloadBuilder struct { EvalTargetService IEvalTargetService EvaluatorRecordService EvaluatorRecordService AnalysisService IEvaluationAnalysisService + FileProvider rpc.IFileProvider ExptTurnResultFilterKeyMappingEvaluatorMap map[string]*entity.ExptTurnResultFilterKeyMapping ExptTurnResultFilterKeyMappingAnnotationMap map[string]*entity.ExptTurnResultFilterKeyMapping @@ -920,6 +924,7 @@ func NewPayloadBuilder(ctx context.Context, param *entity.MGetExperimentResultPa exptTurnResultFilterKeyMappingEvaluatorMap map[string]*entity.ExptTurnResultFilterKeyMapping, exptTurnResultFilterKeyMappingAnnotationMap map[string]*entity.ExptTurnResultFilterKeyMapping, itemID2ItemRunState map[int64]entity.ItemRunState, + fileProvider rpc.IFileProvider, ) *PayloadBuilder { builder := &PayloadBuilder{ BaselineExptID: baselineExptID, @@ -941,6 +946,7 @@ func NewPayloadBuilder(ctx context.Context, param *entity.MGetExperimentResultPa LoadEvaluatorFullContent: resolveLoadEvaluatorFullContent(param), LoadEvalTargetFullContent: resolveLoadEvalTargetFullContent(param), LoadEvalTargetOutputFieldKeys: append([]string(nil), param.LoadEvalTargetOutputFieldKeys...), + FileProvider: fileProvider, } builder.ItemResults = make([]*entity.ItemResult, 0) @@ -1059,6 +1065,7 @@ type ExptResultBuilder struct { evalTargetService IEvalTargetService evaluatorRecordService EvaluatorRecordService analysisService IEvaluationAnalysisService + fileProvider rpc.IFileProvider // 控制是否保留 trajectory 字段 FullTrajectory bool @@ -1097,6 +1104,7 @@ func (b *PayloadBuilder) BuildItemResults(ctx context.Context) ([]*entity.ItemRe LoadEvaluatorFullContent: b.LoadEvaluatorFullContent, LoadEvalTargetFullContent: b.LoadEvalTargetFullContent, LoadEvalTargetOutputFieldKeys: append([]string(nil), b.LoadEvalTargetOutputFieldKeys...), + fileProvider: b.FileProvider, } if exptID == b.BaselineExptID { @@ -1177,6 +1185,7 @@ func (b *PayloadBuilder) BuildTurnResultFilter(ctx context.Context) ([]*entity.E LoadEvaluatorFullContent: b.LoadEvaluatorFullContent, LoadEvalTargetFullContent: b.LoadEvalTargetFullContent, LoadEvalTargetOutputFieldKeys: append([]string(nil), b.LoadEvalTargetOutputFieldKeys...), + fileProvider: b.FileProvider, } exptDO, err := exptResultBuilder.ExperimentRepo.GetByID(ctx, exptResultBuilder.ExptID, exptResultBuilder.SpaceID) @@ -1858,6 +1867,31 @@ func (e *ExptResultBuilder) buildTargetOutput(ctx context.Context) error { } turnResultID2TargetOutput := make(map[int64]*entity.TurnTargetOutput) // turn_result_id -> version_id -> result + id2URI := make(map[int64]string) + id2URL := make(map[int64]string) + for _, targetRecord := range targetRecords { + if targetRecord == nil || targetRecord.EvalTargetOutputData == nil || targetRecord.EvalTargetOutputData.Ext == nil || targetRecord.EvalTargetOutputData.Ext[consts.EvalTargetOutputFieldKeyScreenRecordingURI] == "" { + continue + } + id2URI[targetRecord.ID] = targetRecord.EvalTargetOutputData.Ext[consts.EvalTargetOutputFieldKeyScreenRecordingURI] + } + if len(id2URI) > 0 && e.fileProvider != nil { + uris := make([]string, 0, len(id2URI)) + for _, uri := range id2URI { + uris = append(uris, uri) + } + urlMap, err := e.fileProvider.MGetFileURL(ctx, uris) + if err != nil { + logs.CtxError(ctx, "MGetFileURL failed, err: %v", err) + } else { + for id, uri := range id2URI { + if url, ok := urlMap[uri]; ok { + id2URL[id] = url + } + } + } + } + for _, targetRecord := range targetRecords { turnResultID, ok := targetResultID2turnResultID[targetRecord.ID] if !ok { @@ -1880,6 +1914,12 @@ func (e *ExptResultBuilder) buildTargetOutput(ctx context.Context) error { } } + if targetRecord.EvalTargetOutputData != nil && targetRecord.EvalTargetOutputData.Ext != nil && + targetRecord.EvalTargetOutputData.Ext[consts.EvalTargetOutputFieldKeyScreenRecordingURI] != "" && + id2URL != nil { + targetRecord.EvalTargetOutputData.Ext[consts.EvalTargetOutputFieldKeyScreenRecordingURL] = id2URL[targetRecord.ID] + } + turnResultID2TargetOutput[turnResultID] = &entity.TurnTargetOutput{ EvalTargetRecord: targetRecord, } @@ -2234,7 +2274,7 @@ func (e ExptResultServiceImpl) UpsertExptTurnResultFilter(ctx context.Context, s ExptIDs: []int64{exptID}, } payloadBuilder := NewPayloadBuilder(ctx, param, exptID, allTurnResults, itemResults, e.ExperimentRepo, - e.ExptTurnResultRepo, e.ExptAnnotateRepo, e.evalTargetService, e.evaluatorRecordService, e.evaluationSetItemService, e.analysisService, exptTurnResultFilterKeyMappingEvaluatorMap, exptTurnResultFilterKeyMappingAnnotationMap, make(map[int64]entity.ItemRunState)) + e.ExptTurnResultRepo, e.ExptAnnotateRepo, e.evalTargetService, e.evaluatorRecordService, e.evaluationSetItemService, e.analysisService, exptTurnResultFilterKeyMappingEvaluatorMap, exptTurnResultFilterKeyMappingAnnotationMap, make(map[int64]entity.ItemRunState), e.fileProvider) exptTurnResultFilters, err := payloadBuilder.BuildTurnResultFilter(ctx) if err != nil { @@ -2506,7 +2546,7 @@ func (e ExptResultServiceImpl) CompareExptTurnResultFilters(ctx context.Context, ExptIDs: []int64{exptID}, } payloadBuilder := NewPayloadBuilder(ctx, param, exptID, turnResultDAOs, itemResultDAOs, e.ExperimentRepo, - e.ExptTurnResultRepo, e.ExptAnnotateRepo, e.evalTargetService, e.evaluatorRecordService, e.evaluationSetItemService, e.analysisService, nil, nil, make(map[int64]entity.ItemRunState)) + e.ExptTurnResultRepo, e.ExptAnnotateRepo, e.evalTargetService, e.evaluatorRecordService, e.evaluationSetItemService, e.analysisService, nil, nil, make(map[int64]entity.ItemRunState), e.fileProvider) itemResults, err := payloadBuilder.BuildItemResults(ctx) if err != nil { return err diff --git a/backend/modules/evaluation/domain/service/expt_result_impl_test.go b/backend/modules/evaluation/domain/service/expt_result_impl_test.go index 6976093eb..6305f5ee1 100644 --- a/backend/modules/evaluation/domain/service/expt_result_impl_test.go +++ b/backend/modules/evaluation/domain/service/expt_result_impl_test.go @@ -2106,6 +2106,7 @@ func TestNewExptResultService(t *testing.T) { mockPublisher, mockTagAdapter, nil, + nil, ) impl, ok := svc.(*ExptResultServiceImpl) @@ -3957,6 +3958,7 @@ func TestNewPayloadBuilder_ExtFieldAndItemRunState(t *testing.T) { nil, nil, tt.itemID2ItemRunState, + nil, ) // 验证结果 diff --git a/backend/modules/evaluation/domain/service/expt_run_item_event_impl.go b/backend/modules/evaluation/domain/service/expt_run_item_event_impl.go index ef566909a..e6ba77f6d 100644 --- a/backend/modules/evaluation/domain/service/expt_run_item_event_impl.go +++ b/backend/modules/evaluation/domain/service/expt_run_item_event_impl.go @@ -363,7 +363,7 @@ func NewRecordEvalMode( idgen idgen.IIDGenerator, ) (RecordEvalMode, error) { switch event.ExptRunMode { - case entity.EvaluationModeSubmit, entity.EvaluationModeAppend: + case entity.EvaluationModeSubmit, entity.EvaluationModeAppend, entity.EvaluationModeTrialRun: return &ExptRecordEvalModeSubmit{ exptItemResultRepo: exptItemResultRepo, exptTurnResultRepo: exptTurnResultRepo, diff --git a/backend/modules/evaluation/domain/service/expt_run_item_turn_impl.go b/backend/modules/evaluation/domain/service/expt_run_item_turn_impl.go index e02813284..6fe4a4135 100644 --- a/backend/modules/evaluation/domain/service/expt_run_item_turn_impl.go +++ b/backend/modules/evaluation/domain/service/expt_run_item_turn_impl.go @@ -205,7 +205,7 @@ func (e *DefaultExptTurnEvaluationImpl) callTarget(ctx context.Context, etec *en return nil, nil } switch etec.Expt.Target.EvalTargetType { - case entity.EvalTargetTypeCustomRPCServer: + case entity.EvalTargetTypeCustomRPCServer, entity.EvalTargetTypeWebAgent: fields := gslice.ToMap(turn.FieldDataList, func(t *entity.FieldData) (string, *entity.Content) { return t.Name, t.Content }) for _, field := range turn.FieldDataList { if field.Content != nil && field.Content.IsContentOmitted() { diff --git a/backend/modules/evaluation/domain/service/expt_run_scheduler_mode_impl.go b/backend/modules/evaluation/domain/service/expt_run_scheduler_mode_impl.go index e9d48bb16..f3285aaf8 100644 --- a/backend/modules/evaluation/domain/service/expt_run_scheduler_mode_impl.go +++ b/backend/modules/evaluation/domain/service/expt_run_scheduler_mode_impl.go @@ -96,6 +96,8 @@ func (f *DefaultSchedulerModeFactory) NewSchedulerMode( switch mode { case entity.EvaluationModeSubmit: return NewExptSubmitMode(f.manager, f.exptItemResultRepo, f.exptStatsRepo, f.exptTurnResultRepo, f.idgenerator, f.evaluationSetItemService, f.exptRepo, f.idem, f.configer, f.publisher, f.evaluatorRecordService, f.resultSvc, f.templateManager), nil + case entity.EvaluationModeTrialRun: + return NewExptTrialRunMode(f.manager, f.exptItemResultRepo, f.exptStatsRepo, f.exptTurnResultRepo, f.idgenerator, f.evaluationSetItemService, f.exptRepo, f.idem, f.configer, f.publisher, f.evaluatorRecordService, f.resultSvc, f.templateManager), nil case entity.EvaluationModeFailRetry: return NewExptFailRetryMode(f.manager, f.exptItemResultRepo, f.exptStatsRepo, f.exptTurnResultRepo, f.idgenerator, f.exptRepo, f.idem, f.configer, f.publisher, f.evaluatorRecordService, f.templateManager), nil case entity.EvaluationModeAppend: @@ -125,6 +127,10 @@ type ExptSubmitExec struct { templateManager IExptTemplateManager } +type ExptTrialRunExec struct { + *ExptSubmitExec +} + func NewExptSubmitMode( manager IExptManager, exptItemResultRepo repo.IExptItemResultRepo, @@ -157,10 +163,211 @@ func NewExptSubmitMode( } } +func NewExptTrialRunMode( + manager IExptManager, + exptItemResultRepo repo.IExptItemResultRepo, + exptStatsRepo repo.IExptStatsRepo, + exptTurnResultRepo repo.IExptTurnResultRepo, + idgenerator idgen.IIDGenerator, + evaluationSetItemService EvaluationSetItemService, + exptRepo repo.IExperimentRepo, + idem idem.IdempotentService, + configer component.IConfiger, + publisher events.ExptEventPublisher, + evaluatorRecordService EvaluatorRecordService, + resultSvc ExptResultService, + templateManager IExptTemplateManager, +) *ExptTrialRunExec { + return &ExptTrialRunExec{ + ExptSubmitExec: NewExptSubmitMode(manager, exptItemResultRepo, exptStatsRepo, exptTurnResultRepo, idgenerator, evaluationSetItemService, exptRepo, idem, configer, publisher, evaluatorRecordService, resultSvc, templateManager), + } +} + func (e *ExptSubmitExec) Mode() entity.ExptRunMode { return entity.EvaluationModeSubmit } +func (e *ExptTrialRunExec) Mode() entity.ExptRunMode { + return entity.EvaluationModeTrialRun +} + +func (e *ExptTrialRunExec) ExptStart(ctx context.Context, event *entity.ExptScheduleEvent, expt *entity.Experiment) error { + if e.ExptSubmitExec == nil { + return nil + } + if expt == nil || expt.TrialRunItemCount <= 0 { + return e.ExptSubmitExec.ExptStart(ctx, event, expt) + } + idemKey := makeStartIdemKey(event) + + exist, err := e.idem.Exist(ctx, idemKey) + if err != nil { + return err + } + + if exist { + return nil + } + + var ( + evalSetID = expt.EvalSet.ID + evalSetVersionID = expt.EvalSet.EvaluationSetVersion.ID + + maxLoop = 10000 + itemIdx = int32(0) + + page = int32(1) + pageSize = int32(100) + itemCnt = 0 + total = int64(0) + limit = int(expt.TrialRunItemCount) + ) + if limit > 0 && int(pageSize) > limit { + pageSize = int32(limit) + } + orderByDesc := gptr.Of(false) + orderByField := gptr.Of("item_id") + + for i := 0; i < maxLoop; i++ { + logs.CtxInfo(ctx, "ExptTrialRunExec.ExptStart scan item, expt_id: %v, expt_run_id: %v, eval_set_id: %v, eval_set_ver_id: %v, page: %v, limit: %v, cur_cnt: %v, total: %v", + event.ExptID, event.ExptRunID, evalSetID, evalSetVersionID, page, pageSize, itemCnt, total) + + items, t, _, _, err := e.evaluationSetItemService.ListEvaluationSetItems(ctx, &entity.ListEvaluationSetItemsParam{ + SpaceID: event.SpaceID, + EvaluationSetID: evalSetID, + VersionID: &evalSetVersionID, + PageNumber: &page, + PageSize: &pageSize, + OrderBys: []*entity.OrderBy{{ + Field: orderByField, + IsAsc: orderByDesc, + }}, + }) + if err != nil { + return err + } + + if t != nil { + total = gptr.Indirect(t) + } + + remain := limit - itemCnt + if remain <= 0 { + break + } + if len(items) > remain { + items = items[:remain] + } + + itemCnt += len(items) + page++ + + turnCnt := 0 + for _, item := range items { + turnCnt += len(item.Turns) + } + + ids, err := e.idgenerator.GenMultiIDs(ctx, len(items)+turnCnt) + if err != nil { + return err + } + + idIdx := 0 + eirs := make([]*entity.ExptItemResult, 0, len(items)) + etrs := make([]*entity.ExptTurnResult, 0, len(items)) + for _, item := range items { + eir := &entity.ExptItemResult{ + ID: ids[idIdx], + SpaceID: event.SpaceID, + ExptID: event.ExptID, + ExptRunID: event.ExptRunID, + ItemID: item.ItemID, + ItemIdx: itemIdx, + Status: entity.ItemRunState_Queueing, + } + eirs = append(eirs, eir) + itemIdx++ + idIdx++ + + for turnIdx, turn := range item.Turns { + etr := &entity.ExptTurnResult{ + ID: ids[idIdx], + SpaceID: event.SpaceID, + ExptID: event.ExptID, + ExptRunID: event.ExptRunID, + ItemID: item.ItemID, + TurnID: turn.ID, + TurnIdx: int32(turnIdx), + Status: int32(entity.TurnRunState_Queueing), + } + etrs = append(etrs, etr) + idIdx++ + } + } + + if err := e.createItemTurnResults(ctx, eirs, etrs, event.Session); err != nil { + return err + } + + if itemCnt >= limit || len(items) == 0 || itemCnt >= int(total) { + break + } + + time.Sleep(time.Millisecond * 30) + } + err = e.resultSvc.UpsertExptTurnResultFilter(ctx, event.SpaceID, event.ExptID, nil) + if err != nil { + logs.CtxError(ctx, "ExptTrialRunExec.ExptStart UpsertExptTurnResultFilter fail, expt_id: %v, err: %v", event.ExptID, err) + } + logs.CtxInfo(ctx, "ExptTrialRunExec ExptStart UpsertExptTurnResultFilter done, expt_id: %v, err: %v", event.ExptID, err) + if err := e.exptStatsRepo.UpdateByExptID(ctx, event.ExptID, event.SpaceID, + &entity.ExptStats{ + ExptID: event.ExptID, + SpaceID: event.SpaceID, + PendingItemCnt: int32(itemCnt), + }); err != nil { + return err + } + + exptDo := &entity.Experiment{ + Status: entity.ExptStatus_Processing, + ID: event.ExptID, + SpaceID: event.SpaceID, + } + + if err := e.exptRepo.Update(ctx, exptDo); err != nil { + return err + } + + var templateID int64 + if expt.ExptTemplateMeta != nil && expt.ExptTemplateMeta.ID > 0 { + templateID = expt.ExptTemplateMeta.ID + } else { + updatedExpt, err := e.exptRepo.GetByID(ctx, event.ExptID, event.SpaceID) + if err == nil && updatedExpt != nil && updatedExpt.ExptTemplateMeta != nil && updatedExpt.ExptTemplateMeta.ID > 0 { + templateID = updatedExpt.ExptTemplateMeta.ID + } + } + if templateID > 0 && e.templateManager != nil { + if err := e.templateManager.UpdateExptInfo(ctx, templateID, event.SpaceID, event.ExptID, entity.ExptStatus_Processing, 0, nil); err != nil { + logs.CtxError(ctx, "UpdateExptInfo failed in ExptTrialRunExec.ExptStart, template_id: %v, expt_id: %v, err: %v", + templateID, event.ExptID, err) + } else { + logs.CtxInfo(ctx, "UpdateExptInfo succeeded in ExptTrialRunExec.ExptStart, template_id: %v, expt_id: %v, status: %v", + templateID, event.ExptID, entity.ExptStatus_Processing) + } + } + + duration := time.Duration(e.configer.GetExptExecConf(ctx, event.SpaceID).GetZombieIntervalSecond()) * time.Second * 2 + if err := e.idem.Set(ctx, idemKey, duration); err != nil { + return err + } + + time.Sleep(time.Second * 3) + + return nil +} + func (e *ExptSubmitExec) ExptStart(ctx context.Context, event *entity.ExptScheduleEvent, expt *entity.Experiment) error { idemKey := makeStartIdemKey(event) diff --git a/backend/modules/evaluation/domain/service/expt_run_scheduler_mode_impl_test.go b/backend/modules/evaluation/domain/service/expt_run_scheduler_mode_impl_test.go index af4d5e759..c78ef9def 100644 --- a/backend/modules/evaluation/domain/service/expt_run_scheduler_mode_impl_test.go +++ b/backend/modules/evaluation/domain/service/expt_run_scheduler_mode_impl_test.go @@ -2070,6 +2070,337 @@ func TestNewSchedulerModeFactory(t *testing.T) { } } +func TestExptTrialRunExec_Mode(t *testing.T) { + exec := &ExptTrialRunExec{ExptSubmitExec: &ExptSubmitExec{}} + assert.Equal(t, entity.EvaluationModeTrialRun, exec.Mode()) +} + +func TestNewExptTrialRunMode(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + manager := svcmocks.NewMockIExptManager(ctrl) + itemRepo := mock_repo.NewMockIExptItemResultRepo(ctrl) + statsRepo := mock_repo.NewMockIExptStatsRepo(ctrl) + turnRepo := mock_repo.NewMockIExptTurnResultRepo(ctrl) + idgen := idgenmocks.NewMockIIDGenerator(ctrl) + evalSetItemSvc := svcmocks.NewMockEvaluationSetItemService(ctrl) + exptRepo := mock_repo.NewMockIExperimentRepo(ctrl) + idem := idemmocks.NewMockIdempotentService(ctrl) + configer := configmocks.NewMockIConfiger(ctrl) + publisher := eventmocks.NewMockExptEventPublisher(ctrl) + evalRecordSvc := svcmocks.NewMockEvaluatorRecordService(ctrl) + resultSvc := svcmocks.NewMockExptResultService(ctrl) + templateMgr := svcmocks.NewMockIExptTemplateManager(ctrl) + + exec := NewExptTrialRunMode(manager, itemRepo, statsRepo, turnRepo, idgen, evalSetItemSvc, exptRepo, idem, configer, publisher, evalRecordSvc, resultSvc, templateMgr) + assert.NotNil(t, exec) + assert.NotNil(t, exec.ExptSubmitExec) + assert.Equal(t, entity.EvaluationModeTrialRun, exec.Mode()) +} + +func TestExptTrialRunExec_ExptStart(t *testing.T) { + type trialFields struct { + manager *svcmocks.MockIExptManager + exptItemResultRepo *mock_repo.MockIExptItemResultRepo + exptTurnResultRepo *mock_repo.MockIExptTurnResultRepo + exptStatsRepo *mock_repo.MockIExptStatsRepo + idgenerator *idgenmocks.MockIIDGenerator + evaluationSetItemService *svcmocks.MockEvaluationSetItemService + exptRepo *mock_repo.MockIExperimentRepo + idem *idemmocks.MockIdempotentService + configer *configmocks.MockIConfiger + publisher *eventmocks.MockExptEventPublisher + resultSvc *svcmocks.MockExptResultService + evaluatorRecordService *svcmocks.MockEvaluatorRecordService + templateManager *svcmocks.MockIExptTemplateManager + } + + newTrialFields := func(ctrl *gomock.Controller) *trialFields { + return &trialFields{ + manager: svcmocks.NewMockIExptManager(ctrl), + exptItemResultRepo: mock_repo.NewMockIExptItemResultRepo(ctrl), + exptTurnResultRepo: mock_repo.NewMockIExptTurnResultRepo(ctrl), + exptStatsRepo: mock_repo.NewMockIExptStatsRepo(ctrl), + idgenerator: idgenmocks.NewMockIIDGenerator(ctrl), + evaluationSetItemService: svcmocks.NewMockEvaluationSetItemService(ctrl), + exptRepo: mock_repo.NewMockIExperimentRepo(ctrl), + idem: idemmocks.NewMockIdempotentService(ctrl), + configer: configmocks.NewMockIConfiger(ctrl), + publisher: eventmocks.NewMockExptEventPublisher(ctrl), + resultSvc: svcmocks.NewMockExptResultService(ctrl), + evaluatorRecordService: svcmocks.NewMockEvaluatorRecordService(ctrl), + templateManager: svcmocks.NewMockIExptTemplateManager(ctrl), + } + } + + buildExec := func(f *trialFields) *ExptTrialRunExec { + return &ExptTrialRunExec{ + ExptSubmitExec: &ExptSubmitExec{ + manager: f.manager, + exptItemResultRepo: f.exptItemResultRepo, + exptTurnResultRepo: f.exptTurnResultRepo, + exptStatsRepo: f.exptStatsRepo, + idgenerator: f.idgenerator, + evaluationSetItemService: f.evaluationSetItemService, + exptRepo: f.exptRepo, + idem: f.idem, + configer: f.configer, + publisher: f.publisher, + resultSvc: f.resultSvc, + evaluatorRecordService: f.evaluatorRecordService, + templateManager: f.templateManager, + }, + } + } + + baseEvent := &entity.ExptScheduleEvent{ + ExptID: 1, + ExptRunID: 2, + SpaceID: 3, + Session: &entity.Session{UserID: "u1"}, + } + + tests := []struct { + name string + expt *entity.Experiment + prepareMock func(f *trialFields) + wantErr bool + errContains string + }{ + { + name: "nil ExptSubmitExec returns nil", + expt: &entity.Experiment{TrialRunItemCount: 5}, + prepareMock: func(f *trialFields) { + }, + wantErr: false, + }, + { + name: "TrialRunItemCount <= 0 delegates to ExptSubmitExec.ExptStart", + expt: &entity.Experiment{ + TrialRunItemCount: 0, + EvalSet: &entity.EvaluationSet{ID: 10, EvaluationSetVersion: &entity.EvaluationSetVersion{ID: 20}}, + }, + prepareMock: func(f *trialFields) { + f.idem.EXPECT().Exist(gomock.Any(), gomock.Any()).Return(true, nil) + }, + wantErr: false, + }, + { + name: "idem already exists returns nil", + expt: &entity.Experiment{ + TrialRunItemCount: 5, + EvalSet: &entity.EvaluationSet{ID: 10, EvaluationSetVersion: &entity.EvaluationSetVersion{ID: 20}}, + }, + prepareMock: func(f *trialFields) { + f.idem.EXPECT().Exist(gomock.Any(), gomock.Any()).Return(true, nil) + }, + wantErr: false, + }, + { + name: "idem check error", + expt: &entity.Experiment{ + TrialRunItemCount: 5, + EvalSet: &entity.EvaluationSet{ID: 10, EvaluationSetVersion: &entity.EvaluationSetVersion{ID: 20}}, + }, + prepareMock: func(f *trialFields) { + f.idem.EXPECT().Exist(gomock.Any(), gomock.Any()).Return(false, errors.New("idem err")) + }, + wantErr: true, + errContains: "idem err", + }, + { + name: "ListEvaluationSetItems error", + expt: &entity.Experiment{ + TrialRunItemCount: 5, + EvalSet: &entity.EvaluationSet{ID: 10, EvaluationSetVersion: &entity.EvaluationSetVersion{ID: 20}}, + }, + prepareMock: func(f *trialFields) { + f.idem.EXPECT().Exist(gomock.Any(), gomock.Any()).Return(false, nil) + f.evaluationSetItemService.EXPECT().ListEvaluationSetItems(gomock.Any(), gomock.Any()). + Return(nil, nil, nil, nil, errors.New("list items err")) + }, + wantErr: true, + errContains: "list items err", + }, + { + name: "GenMultiIDs error", + expt: &entity.Experiment{ + TrialRunItemCount: 5, + EvalSet: &entity.EvaluationSet{ID: 10, EvaluationSetVersion: &entity.EvaluationSetVersion{ID: 20}}, + }, + prepareMock: func(f *trialFields) { + f.idem.EXPECT().Exist(gomock.Any(), gomock.Any()).Return(false, nil) + f.evaluationSetItemService.EXPECT().ListEvaluationSetItems(gomock.Any(), gomock.Any()). + Return([]*entity.EvaluationSetItem{ + {ItemID: 1, Turns: []*entity.Turn{{ID: 1}}}, + }, ptr.Of(int64(1)), nil, nil, nil) + f.idgenerator.EXPECT().GenMultiIDs(gomock.Any(), 2).Return(nil, errors.New("idgen err")) + }, + wantErr: true, + errContains: "idgen err", + }, + { + name: "success with TrialRunItemCount=2 items limited", + expt: &entity.Experiment{ + TrialRunItemCount: 2, + EvalSet: &entity.EvaluationSet{ID: 10, EvaluationSetVersion: &entity.EvaluationSetVersion{ID: 20}}, + ExptTemplateMeta: &entity.ExptTemplateMeta{ID: 100}, + }, + prepareMock: func(f *trialFields) { + f.idem.EXPECT().Exist(gomock.Any(), gomock.Any()).Return(false, nil) + f.evaluationSetItemService.EXPECT().ListEvaluationSetItems(gomock.Any(), gomock.Any()). + Return([]*entity.EvaluationSetItem{ + {ItemID: 1, Turns: []*entity.Turn{{ID: 10}}}, + {ItemID: 2, Turns: []*entity.Turn{{ID: 20}}}, + {ItemID: 3, Turns: []*entity.Turn{{ID: 30}}}, + }, ptr.Of(int64(3)), nil, nil, nil) + f.idgenerator.EXPECT().GenMultiIDs(gomock.Any(), 4).Return([]int64{101, 102, 103, 104}, nil) + f.exptTurnResultRepo.EXPECT().BatchCreateNX(gomock.Any(), gomock.Any()).Return(nil) + f.exptItemResultRepo.EXPECT().BatchCreateNX(gomock.Any(), gomock.Any()).Return(nil) + f.idgenerator.EXPECT().GenMultiIDs(gomock.Any(), gomock.Any()).Return([]int64{201, 202}, nil) + f.exptItemResultRepo.EXPECT().BatchCreateNXRunLogs(gomock.Any(), gomock.Any()).Return(nil) + f.resultSvc.EXPECT().UpsertExptTurnResultFilter(gomock.Any(), int64(3), int64(1), gomock.Any()).Return(nil) + f.exptStatsRepo.EXPECT().UpdateByExptID(gomock.Any(), int64(1), int64(3), gomock.Any()).Return(nil) + f.exptRepo.EXPECT().Update(gomock.Any(), gomock.Any()).Return(nil) + f.templateManager.EXPECT().UpdateExptInfo(gomock.Any(), int64(100), int64(3), int64(1), entity.ExptStatus_Processing, gomock.Any(), gomock.Any()).Return(nil) + f.configer.EXPECT().GetExptExecConf(gomock.Any(), int64(3)).Return(&entity.ExptExecConf{ZombieIntervalSecond: 1}) + f.idem.EXPECT().Set(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil) + }, + wantErr: false, + }, + { + name: "UpdateByExptID error", + expt: &entity.Experiment{ + TrialRunItemCount: 1, + EvalSet: &entity.EvaluationSet{ID: 10, EvaluationSetVersion: &entity.EvaluationSetVersion{ID: 20}}, + }, + prepareMock: func(f *trialFields) { + f.idem.EXPECT().Exist(gomock.Any(), gomock.Any()).Return(false, nil) + f.evaluationSetItemService.EXPECT().ListEvaluationSetItems(gomock.Any(), gomock.Any()). + Return([]*entity.EvaluationSetItem{ + {ItemID: 1, Turns: []*entity.Turn{{ID: 10}}}, + }, ptr.Of(int64(1)), nil, nil, nil) + f.idgenerator.EXPECT().GenMultiIDs(gomock.Any(), 2).Return([]int64{101, 102}, nil) + f.exptTurnResultRepo.EXPECT().BatchCreateNX(gomock.Any(), gomock.Any()).Return(nil) + f.exptItemResultRepo.EXPECT().BatchCreateNX(gomock.Any(), gomock.Any()).Return(nil) + f.idgenerator.EXPECT().GenMultiIDs(gomock.Any(), gomock.Any()).Return([]int64{201}, nil) + f.exptItemResultRepo.EXPECT().BatchCreateNXRunLogs(gomock.Any(), gomock.Any()).Return(nil) + f.resultSvc.EXPECT().UpsertExptTurnResultFilter(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return(nil) + f.exptStatsRepo.EXPECT().UpdateByExptID(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return(errors.New("stats err")) + }, + wantErr: true, + errContains: "stats err", + }, + { + name: "exptRepo Update error", + expt: &entity.Experiment{ + TrialRunItemCount: 1, + EvalSet: &entity.EvaluationSet{ID: 10, EvaluationSetVersion: &entity.EvaluationSetVersion{ID: 20}}, + }, + prepareMock: func(f *trialFields) { + f.idem.EXPECT().Exist(gomock.Any(), gomock.Any()).Return(false, nil) + f.evaluationSetItemService.EXPECT().ListEvaluationSetItems(gomock.Any(), gomock.Any()). + Return([]*entity.EvaluationSetItem{ + {ItemID: 1, Turns: []*entity.Turn{{ID: 10}}}, + }, ptr.Of(int64(1)), nil, nil, nil) + f.idgenerator.EXPECT().GenMultiIDs(gomock.Any(), 2).Return([]int64{101, 102}, nil) + f.exptTurnResultRepo.EXPECT().BatchCreateNX(gomock.Any(), gomock.Any()).Return(nil) + f.exptItemResultRepo.EXPECT().BatchCreateNX(gomock.Any(), gomock.Any()).Return(nil) + f.idgenerator.EXPECT().GenMultiIDs(gomock.Any(), gomock.Any()).Return([]int64{201}, nil) + f.exptItemResultRepo.EXPECT().BatchCreateNXRunLogs(gomock.Any(), gomock.Any()).Return(nil) + f.resultSvc.EXPECT().UpsertExptTurnResultFilter(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return(nil) + f.exptStatsRepo.EXPECT().UpdateByExptID(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return(nil) + f.exptRepo.EXPECT().Update(gomock.Any(), gomock.Any()).Return(errors.New("update err")) + }, + wantErr: true, + errContains: "update err", + }, + { + name: "template update from exptRepo.GetByID", + expt: &entity.Experiment{ + TrialRunItemCount: 1, + EvalSet: &entity.EvaluationSet{ID: 10, EvaluationSetVersion: &entity.EvaluationSetVersion{ID: 20}}, + ExptTemplateMeta: nil, + }, + prepareMock: func(f *trialFields) { + f.idem.EXPECT().Exist(gomock.Any(), gomock.Any()).Return(false, nil) + f.evaluationSetItemService.EXPECT().ListEvaluationSetItems(gomock.Any(), gomock.Any()). + Return([]*entity.EvaluationSetItem{ + {ItemID: 1, Turns: []*entity.Turn{{ID: 10}}}, + }, ptr.Of(int64(1)), nil, nil, nil) + f.idgenerator.EXPECT().GenMultiIDs(gomock.Any(), 2).Return([]int64{101, 102}, nil) + f.exptTurnResultRepo.EXPECT().BatchCreateNX(gomock.Any(), gomock.Any()).Return(nil) + f.exptItemResultRepo.EXPECT().BatchCreateNX(gomock.Any(), gomock.Any()).Return(nil) + f.idgenerator.EXPECT().GenMultiIDs(gomock.Any(), gomock.Any()).Return([]int64{201}, nil) + f.exptItemResultRepo.EXPECT().BatchCreateNXRunLogs(gomock.Any(), gomock.Any()).Return(nil) + f.resultSvc.EXPECT().UpsertExptTurnResultFilter(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return(nil) + f.exptStatsRepo.EXPECT().UpdateByExptID(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return(nil) + f.exptRepo.EXPECT().Update(gomock.Any(), gomock.Any()).Return(nil) + f.exptRepo.EXPECT().GetByID(gomock.Any(), int64(1), int64(3)).Return(&entity.Experiment{ + ExptTemplateMeta: &entity.ExptTemplateMeta{ID: 200}, + }, nil) + f.templateManager.EXPECT().UpdateExptInfo(gomock.Any(), int64(200), int64(3), int64(1), entity.ExptStatus_Processing, gomock.Any(), gomock.Any()).Return(nil) + f.configer.EXPECT().GetExptExecConf(gomock.Any(), int64(3)).Return(&entity.ExptExecConf{ZombieIntervalSecond: 1}) + f.idem.EXPECT().Set(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil) + }, + wantErr: false, + }, + { + name: "empty items returns immediately", + expt: &entity.Experiment{ + TrialRunItemCount: 5, + EvalSet: &entity.EvaluationSet{ID: 10, EvaluationSetVersion: &entity.EvaluationSetVersion{ID: 20}}, + }, + prepareMock: func(f *trialFields) { + f.idem.EXPECT().Exist(gomock.Any(), gomock.Any()).Return(false, nil) + f.evaluationSetItemService.EXPECT().ListEvaluationSetItems(gomock.Any(), gomock.Any()). + Return([]*entity.EvaluationSetItem{}, ptr.Of(int64(0)), nil, nil, nil) + f.idgenerator.EXPECT().GenMultiIDs(gomock.Any(), 0).Return([]int64{}, nil) + f.exptTurnResultRepo.EXPECT().BatchCreateNX(gomock.Any(), gomock.Any()).Return(nil) + f.exptItemResultRepo.EXPECT().BatchCreateNX(gomock.Any(), gomock.Any()).Return(nil) + f.idgenerator.EXPECT().GenMultiIDs(gomock.Any(), gomock.Any()).Return([]int64{}, nil) + f.exptItemResultRepo.EXPECT().BatchCreateNXRunLogs(gomock.Any(), gomock.Any()).Return(nil) + f.resultSvc.EXPECT().UpsertExptTurnResultFilter(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return(nil) + f.exptStatsRepo.EXPECT().UpdateByExptID(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return(nil) + f.exptRepo.EXPECT().Update(gomock.Any(), gomock.Any()).Return(nil) + f.exptRepo.EXPECT().GetByID(gomock.Any(), gomock.Any(), gomock.Any()).Return(&entity.Experiment{}, nil) + f.configer.EXPECT().GetExptExecConf(gomock.Any(), gomock.Any()).Return(&entity.ExptExecConf{ZombieIntervalSecond: 1}) + f.idem.EXPECT().Set(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil) + }, + wantErr: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + if tt.name == "nil ExptSubmitExec returns nil" { + exec := &ExptTrialRunExec{ExptSubmitExec: nil} + err := exec.ExptStart(context.Background(), baseEvent, tt.expt) + assert.NoError(t, err) + return + } + + f := newTrialFields(ctrl) + tt.prepareMock(f) + exec := buildExec(f) + + err := exec.ExptStart(context.Background(), baseEvent, tt.expt) + if tt.wantErr { + assert.Error(t, err) + if tt.errContains != "" { + assert.Contains(t, err.Error(), tt.errContains) + } + } else { + assert.NoError(t, err) + } + }) + } +} + func TestExptSubmitExec_createItemTurnResults_errors(t *testing.T) { type fields struct { exptItemResultRepo *mock_repo.MockIExptItemResultRepo diff --git a/backend/modules/evaluation/domain/service/expt_template_impl.go b/backend/modules/evaluation/domain/service/expt_template_impl.go index ea288515f..893b22abc 100644 --- a/backend/modules/evaluation/domain/service/expt_template_impl.go +++ b/backend/modules/evaluation/domain/service/expt_template_impl.go @@ -125,6 +125,7 @@ func (e *ExptTemplateManagerImpl) Create(ctx context.Context, param *entity.Crea Name: param.Name, Desc: param.Description, ExptType: param.ExptType, + Visibility: gptr.Indirect(param.Visibility), }, ExptInfo: &entity.ExptInfo{ CronActivate: param.CronActivate, @@ -148,6 +149,9 @@ func (e *ExptTemplateManagerImpl) Create(ctx context.Context, param *entity.Crea }, ExptSource: param.ExptSource, } + if param.Visibility != nil { + template.Meta.Visibility = *param.Visibility + } // 从 TemplateConf 构建 FieldMappingConfig,并根据 EvaluatorConf.ScoreWeight 设置是否启用分数权重 e.buildFieldMappingConfigAndEnableScoreWeight(template, param.TemplateConf) @@ -303,7 +307,8 @@ func (e *ExptTemplateManagerImpl) Update(ctx context.Context, param *entity.Upda opts = append(opts, entity.WithCozeBotPublishVersion(param.CreateEvalTargetParam.BotPublishVersion), entity.WithCozeBotInfoType(gptr.Indirect(param.CreateEvalTargetParam.BotInfoType)), entity.WithRegion(param.CreateEvalTargetParam.Region), - entity.WithEnv(param.CreateEvalTargetParam.Env)) + entity.WithEnv(param.CreateEvalTargetParam.Env), + entity.WithOperationInstruction(param.CreateEvalTargetParam.OperationInstruction)) if param.CreateEvalTargetParam.CustomEvalTarget != nil { opts = append(opts, entity.WithCustomEvalTarget(&entity.CustomEvalTarget{ ID: param.CreateEvalTargetParam.CustomEvalTarget.ID, @@ -348,6 +353,10 @@ func (e *ExptTemplateManagerImpl) Update(ctx context.Context, param *entity.Upda if updatedMeta.ExptType == 0 { updatedMeta.ExptType = existingTemplate.GetExptType() } + evalSetID := existingTemplate.GetEvalSetID() + if param.EvalSetID > 0 { + evalSetID = param.EvalSetID + } // 合并 ExptInfo(cron_activate 等运行态字段) var mergedExptInfo *entity.ExptInfo @@ -363,7 +372,7 @@ func (e *ExptTemplateManagerImpl) Update(ctx context.Context, param *entity.Upda // 准备更新后的 TripleConfig updatedTripleConfig := &entity.ExptTemplateTuple{ - EvalSetID: existingTemplate.GetEvalSetID(), // 不允许修改 + EvalSetID: evalSetID, // 允许修改 EvalSetVersionID: param.EvalSetVersionID, TargetID: finalTargetID, TargetVersionID: finalTargetVersionID, @@ -490,6 +499,9 @@ func (e *ExptTemplateManagerImpl) UpdateMeta(ctx context.Context, param *entity. if param.ExptType > 0 { ufields["expt_type"] = int32(param.ExptType) } + if param.Visibility != nil { + ufields["visibility"] = int32(*param.Visibility) + } if param.CronActivate != nil { ufields["cron_activate"] = *param.CronActivate exptInfo := existingTemplate.ExptInfo @@ -1796,7 +1808,8 @@ func (e *ExptTemplateManagerImpl) resolveTargetForCreate(ctx context.Context, pa opts = append(opts, entity.WithCozeBotPublishVersion(param.CreateEvalTargetParam.BotPublishVersion), entity.WithCozeBotInfoType(gptr.Indirect(param.CreateEvalTargetParam.BotInfoType)), entity.WithRegion(param.CreateEvalTargetParam.Region), - entity.WithEnv(param.CreateEvalTargetParam.Env)) + entity.WithEnv(param.CreateEvalTargetParam.Env), + entity.WithOperationInstruction(param.CreateEvalTargetParam.OperationInstruction)) if param.CreateEvalTargetParam.CustomEvalTarget != nil { opts = append(opts, entity.WithCustomEvalTarget(&entity.CustomEvalTarget{ ID: param.CreateEvalTargetParam.CustomEvalTarget.ID, diff --git a/backend/modules/evaluation/domain/service/expt_template_impl_test.go b/backend/modules/evaluation/domain/service/expt_template_impl_test.go index 9f9b15151..da8532f9a 100644 --- a/backend/modules/evaluation/domain/service/expt_template_impl_test.go +++ b/backend/modules/evaluation/domain/service/expt_template_impl_test.go @@ -6875,3 +6875,466 @@ func TestExptTemplateManagerImpl_enrichExptSourceFromPipeline_Error(t *testing.T err := mgr.enrichExptSourceFromPipeline(ctx, templates, 100) assert.Error(t, err) } + +// ==================== New coverage tests ==================== + +func TestExptTemplateManagerImpl_Create_WithVisibility(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + mockRepo := repo_mocks.NewMockIExptTemplateRepo(ctrl) + mockIdgen := idgenmocks.NewMockIIDGenerator(ctrl) + mockEvalSvc := svcmocks.NewMockEvaluatorService(ctrl) + mockTargetSvc := svcmocks.NewMockIEvalTargetService(ctrl) + mockEvalSetSvc := svcmocks.NewMockIEvaluationSetService(ctrl) + mockEvalSetVerSvc := svcmocks.NewMockEvaluationSetVersionService(ctrl) + mockLWT := lwtmocks.NewMockILatestWriteTracker(ctrl) + + mgr := &ExptTemplateManagerImpl{ + templateRepo: mockRepo, + idgen: mockIdgen, + evaluatorService: mockEvalSvc, + evalTargetService: mockTargetSvc, + evaluationSetService: mockEvalSetSvc, + evaluationSetVersionService: mockEvalSetVerSvc, + lwt: mockLWT, + } + + ctx := context.Background() + param := newBasicCreateParam() + param.EvaluatorIDVersionItems = []*entity.EvaluatorIDVersionItem{ + {EvaluatorID: 10, Version: "v1", EvaluatorVersionID: 1001}, + } + param.TemplateConf = &entity.ExptTemplateConfiguration{} + vis := entity.Visibility_Hidden + param.Visibility = &vis + session := &entity.Session{UserID: "u1"} + + mockRepo.EXPECT().GetByName(ctx, param.Name, param.SpaceID).Return(nil, false, nil) + mockIdgen.EXPECT().GenID(ctx).Return(int64(10002), nil) + mockRepo.EXPECT().Create(ctx, gomock.Any(), gomock.Any()).DoAndReturn(func(_ context.Context, tpl *entity.ExptTemplate, _ []*entity.ExptTemplateEvaluatorRef) error { + // Verify Visibility is set on the created template + assert.Equal(t, entity.Visibility_Hidden, tpl.Meta.Visibility) + return nil + }) + mockLWT.EXPECT().SetWriteFlag(ctx, platestwrite.ResourceTypeExptTemplate, int64(10002)).AnyTimes() + mockEvalSetVerSvc.EXPECT().BatchGetEvaluationSetVersions(gomock.Any(), gptr.Of(param.SpaceID), gomock.Any(), gptr.Of(false)).Return(nil, nil).AnyTimes() + mockEvalSetSvc.EXPECT().BatchGetEvaluationSets(gomock.Any(), gptr.Of(param.SpaceID), gomock.Any(), gptr.Of(false)).Return(nil, nil).AnyTimes() + mockTargetSvc.EXPECT().BatchGetEvalTargetVersion(gomock.Any(), param.SpaceID, gomock.Any(), true).Return(nil, nil).AnyTimes() + mockEvalSvc.EXPECT().BatchGetEvaluatorVersion(gomock.Any(), nil, gomock.Any(), true).Return(nil, nil).AnyTimes() + + got, err := mgr.Create(ctx, param, session) + assert.NoError(t, err) + assert.NotNil(t, got) + assert.Equal(t, entity.Visibility_Hidden, got.Meta.Visibility) +} + +func TestExptTemplateManagerImpl_UpdateMeta_WithVisibility(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + mockRepo := repo_mocks.NewMockIExptTemplateRepo(ctrl) + + mgr := &ExptTemplateManagerImpl{ + templateRepo: mockRepo, + } + + ctx := context.Background() + spaceID := int64(100) + templateID := int64(1) + session := &entity.Session{UserID: "u1"} + + vis := entity.Visibility_Hidden + param := &entity.UpdateExptTemplateMetaParam{ + TemplateID: templateID, + SpaceID: spaceID, + Visibility: &vis, + } + + existing := &entity.ExptTemplate{ + Meta: &entity.ExptTemplateMeta{ + ID: templateID, + WorkspaceID: spaceID, + Name: "tpl", + }, + } + + mockRepo.EXPECT().GetByID(ctx, templateID, gomock.AssignableToTypeOf(&spaceID)).Return(existing, nil) + mockRepo.EXPECT().UpdateFields(ctx, templateID, gomock.AssignableToTypeOf(map[string]any{})).DoAndReturn(func(_ context.Context, _ int64, fields map[string]any) error { + assert.Equal(t, int32(entity.Visibility_Hidden), fields["visibility"]) + return nil + }) + + updated := &entity.ExptTemplate{ + Meta: &entity.ExptTemplateMeta{ID: templateID, WorkspaceID: spaceID, Name: "tpl", Visibility: entity.Visibility_Hidden}, + } + mockRepo.EXPECT().GetByID(ctx, templateID, gomock.AssignableToTypeOf(&spaceID)).Return(updated, nil) + + got, err := mgr.UpdateMeta(ctx, param, session) + assert.NoError(t, err) + assert.NotNil(t, got) + assert.Equal(t, entity.Visibility_Hidden, got.Meta.Visibility) +} + +func Test_filterFieldFromTaskRule_AllBranches(t *testing.T) { + t.Run("nil input", func(t *testing.T) { + assert.Nil(t, filterFieldFromTaskRule(nil)) + }) + + t.Run("with QueryAndOr and SubFilter and ExtraInfo", func(t *testing.T) { + queryAndOr := "and" + fieldType := "string" + queryType := "in" + isCustom := true + subQueryAndOr := "or" + + f := &taskfilter.FilterField{ + FieldName: gptr.Of("name"), + FieldType: &fieldType, + QueryType: &queryType, + QueryAndOr: &queryAndOr, + IsCustom: &isCustom, + Values: []string{"a", "b"}, + ExtraInfo: map[string]string{"key1": "val1", "key2": "val2"}, + SubFilter: &taskfilter.FilterFields{ + QueryAndOr: &subQueryAndOr, + FilterFields: []*taskfilter.FilterField{ + {FieldName: gptr.Of("sub_field")}, + }, + }, + } + + result := filterFieldFromTaskRule(f) + assert.NotNil(t, result) + assert.Equal(t, &queryAndOr, result.QueryAndOr) + assert.NotNil(t, result.SubFilter) + assert.Equal(t, &subQueryAndOr, result.SubFilter.QueryAndOr) + assert.Len(t, result.ExtraInfo, 2) + assert.Equal(t, "val1", result.ExtraInfo["key1"]) + assert.Equal(t, "val2", result.ExtraInfo["key2"]) + assert.Equal(t, &isCustom, result.IsCustom) + }) +} + +func Test_exptSamplerDOFromSamplerJSON_Nil(t *testing.T) { + assert.Nil(t, exptSamplerDOFromSamplerJSON(nil)) +} + +func Test_exptSamplerFromTaskSampler_NilCycleTimeUnit(t *testing.T) { + t.Run("nil sampler", func(t *testing.T) { + assert.Nil(t, exptSamplerFromTaskSampler(nil)) + }) + + t.Run("nil CycleTimeUnit", func(t *testing.T) { + rate := 0.5 + s := &taskdomain.Sampler{ + SampleRate: &rate, + CycleTimeUnit: nil, + } + result := exptSamplerFromTaskSampler(s) + assert.NotNil(t, result) + assert.Equal(t, &rate, result.SampleRate) + assert.Nil(t, result.CycleTimeUnit) + }) + + t.Run("with CycleTimeUnit", func(t *testing.T) { + unit := "day" + s := &taskdomain.Sampler{ + CycleTimeUnit: &unit, + } + result := exptSamplerFromTaskSampler(s) + assert.NotNil(t, result) + assert.Equal(t, &unit, result.CycleTimeUnit) + }) +} + +func Test_buildSpanFilterFieldsDOFromJSON_Nil(t *testing.T) { + assert.Nil(t, buildSpanFilterFieldsDOFromJSON(nil)) +} + +func Test_convertTaskFrequency_DefaultWeekday(t *testing.T) { + // Cover the "default" branch (Sunday) + isCycle := true + unit := taskdomain.TimeUnitWeek + start := time.Date(2026, 4, 12, 10, 0, 0, 0, time.UTC).UnixMilli() // Sunday + sampler := &taskdomain.Sampler{ + IsCycle: &isCycle, + CycleTimeUnit: &unit, + } + effectiveTime := &taskdomain.EffectiveTime{ + StartAt: &start, + } + f := convertTaskFrequency(sampler, effectiveTime) + assert.NotNil(t, f) + assert.Equal(t, "sunday", *f) +} + +func TestExptTemplateManagerImpl_Create_CheckNameError(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + mockRepo := repo_mocks.NewMockIExptTemplateRepo(ctrl) + mgr := &ExptTemplateManagerImpl{templateRepo: mockRepo} + + ctx := context.Background() + param := newBasicCreateParam() + session := &entity.Session{UserID: "u1"} + + // CheckName returns error + mockRepo.EXPECT().GetByName(ctx, param.Name, param.SpaceID).Return(nil, false, errors.New("db err")) + + got, err := mgr.Create(ctx, param, session) + assert.Error(t, err) + assert.Nil(t, got) +} + +func TestExptTemplateManagerImpl_Create_WithOperationInstruction(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + mockRepo := repo_mocks.NewMockIExptTemplateRepo(ctrl) + mockIdgen := idgenmocks.NewMockIIDGenerator(ctrl) + mockEvalSvc := svcmocks.NewMockEvaluatorService(ctrl) + mockTargetSvc := svcmocks.NewMockIEvalTargetService(ctrl) + mockEvalSetSvc := svcmocks.NewMockIEvaluationSetService(ctrl) + mockEvalSetVerSvc := svcmocks.NewMockEvaluationSetVersionService(ctrl) + mockLWT := lwtmocks.NewMockILatestWriteTracker(ctrl) + + mgr := &ExptTemplateManagerImpl{ + templateRepo: mockRepo, + idgen: mockIdgen, + evaluatorService: mockEvalSvc, + evalTargetService: mockTargetSvc, + evaluationSetService: mockEvalSetSvc, + evaluationSetVersionService: mockEvalSetVerSvc, + lwt: mockLWT, + } + + ctx := context.Background() + param := newBasicCreateParam() + instruction := "click the button" + param.CreateEvalTargetParam = &entity.CreateEvalTargetParam{ + SourceTargetID: gptr.Of("src-1"), + SourceTargetVersion: gptr.Of("v1"), + EvalTargetType: gptr.Of(entity.EvalTargetTypeWebAgent), + OperationInstruction: &instruction, + } + param.TemplateConf = &entity.ExptTemplateConfiguration{ + ConnectorConf: entity.Connector{ + TargetConf: &entity.TargetConf{TargetVersionID: 1}, + }, + } + param.EvaluatorIDVersionItems = []*entity.EvaluatorIDVersionItem{ + {EvaluatorID: 10, Version: "v1", EvaluatorVersionID: 1001}, + } + session := &entity.Session{UserID: "u1"} + + mockRepo.EXPECT().GetByName(ctx, param.Name, param.SpaceID).Return(nil, false, nil) + mockIdgen.EXPECT().GenID(ctx).Return(int64(10003), nil) + mockTargetSvc.EXPECT().CreateEvalTarget(gomock.Any(), param.SpaceID, "src-1", "v1", entity.EvalTargetTypeWebAgent, gomock.Any()).Return(int64(30), int64(31), nil) + mockRepo.EXPECT().Create(ctx, gomock.Any(), gomock.Any()).Return(nil) + mockLWT.EXPECT().SetWriteFlag(ctx, platestwrite.ResourceTypeExptTemplate, int64(10003)).AnyTimes() + mockEvalSetVerSvc.EXPECT().BatchGetEvaluationSetVersions(gomock.Any(), gptr.Of(param.SpaceID), gomock.Any(), gptr.Of(false)).Return(nil, nil).AnyTimes() + mockEvalSetSvc.EXPECT().BatchGetEvaluationSets(gomock.Any(), gptr.Of(param.SpaceID), gomock.Any(), gptr.Of(false)).Return(nil, nil).AnyTimes() + mockTargetSvc.EXPECT().BatchGetEvalTargetVersion(gomock.Any(), param.SpaceID, gomock.Any(), true).Return(nil, nil).AnyTimes() + mockEvalSvc.EXPECT().BatchGetEvaluatorVersion(gomock.Any(), nil, gomock.Any(), true).Return(nil, nil).AnyTimes() + + got, err := mgr.Create(ctx, param, session) + assert.NoError(t, err) + assert.NotNil(t, got) + assert.Equal(t, int64(10003), got.GetID()) +} + +func TestExptTemplateManagerImpl_Update_WithOperationInstruction(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + mockRepo := repo_mocks.NewMockIExptTemplateRepo(ctrl) + mockEvalSvc := svcmocks.NewMockEvaluatorService(ctrl) + mockTargetSvc := svcmocks.NewMockIEvalTargetService(ctrl) + mockEvalSetSvc := svcmocks.NewMockIEvaluationSetService(ctrl) + mockEvalSetVerSvc := svcmocks.NewMockEvaluationSetVersionService(ctrl) + mockLWT := lwtmocks.NewMockILatestWriteTracker(ctrl) + + mgr := &ExptTemplateManagerImpl{ + templateRepo: mockRepo, + evaluatorService: mockEvalSvc, + evalTargetService: mockTargetSvc, + evaluationSetService: mockEvalSetSvc, + evaluationSetVersionService: mockEvalSetVerSvc, + lwt: mockLWT, + } + + ctx := context.Background() + spaceID := int64(100) + templateID := int64(1) + session := &entity.Session{UserID: "u1"} + + existing := &entity.ExptTemplate{ + Meta: &entity.ExptTemplateMeta{ + ID: templateID, + WorkspaceID: spaceID, + Name: "tpl-old", + ExptType: entity.ExptType_Offline, + }, + TripleConfig: &entity.ExptTemplateTuple{ + EvalSetID: 10, + EvalSetVersionID: 11, + TargetID: 20, + TargetVersionID: 21, + TargetType: entity.EvalTargetTypeWebAgent, + }, + } + + instruction := "navigate to page" + param := &entity.UpdateExptTemplateParam{ + TemplateID: templateID, + SpaceID: spaceID, + EvalSetVersionID: 11, + EvaluatorIDVersionItems: []*entity.EvaluatorIDVersionItem{ + {EvaluatorID: 1, Version: "v1", EvaluatorVersionID: 101}, + }, + TemplateConf: &entity.ExptTemplateConfiguration{ + ConnectorConf: entity.Connector{ + TargetConf: &entity.TargetConf{}, + EvaluatorsConf: &entity.EvaluatorsConf{ + EvaluatorConf: []*entity.EvaluatorConf{ + { + EvaluatorID: 1, + Version: "v1", + EvaluatorVersionID: 101, + IngressConf: &entity.EvaluatorIngressConf{EvalSetAdapter: &entity.FieldAdapter{}}, + }, + }, + }, + }, + }, + CreateEvalTargetParam: &entity.CreateEvalTargetParam{ + SourceTargetID: gptr.Of("src-id"), + SourceTargetVersion: gptr.Of("v2"), + EvalTargetType: gptr.Of(entity.EvalTargetTypeWebAgent), + OperationInstruction: &instruction, + }, + } + + mockRepo.EXPECT().GetByID(ctx, templateID, gomock.AssignableToTypeOf(&spaceID)).Return(existing, nil) + + mockTargetSvc.EXPECT(). + GetEvalTarget(gomock.Any(), int64(20)). + Return(&entity.EvalTarget{ + ID: 20, + SourceTargetID: "src-id", + EvalTargetType: entity.EvalTargetTypeWebAgent, + }, nil) + + mockTargetSvc.EXPECT(). + CreateEvalTarget(gomock.Any(), spaceID, "src-id", "v2", entity.EvalTargetTypeWebAgent, gomock.Any()). + Return(int64(30), int64(40), nil) + + mockRepo.EXPECT().UpdateWithRefs(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil) + + updatedFromDB := &entity.ExptTemplate{ + Meta: &entity.ExptTemplateMeta{ + ID: templateID, + WorkspaceID: spaceID, + Name: "tpl-old", + ExptType: entity.ExptType_Offline, + }, + TripleConfig: &entity.ExptTemplateTuple{ + EvalSetID: 10, + EvalSetVersionID: 11, + TargetID: 30, + TargetVersionID: 40, + TargetType: entity.EvalTargetTypeWebAgent, + EvaluatorVersionIds: []int64{101}, + }, + } + mockRepo.EXPECT().GetByID(gomock.Any(), templateID, gomock.AssignableToTypeOf(&spaceID)).Return(updatedFromDB, nil) + + mockTargetSvc.EXPECT().BatchGetEvalTargetVersion(gomock.Any(), spaceID, gomock.Any(), true).Return(nil, nil).AnyTimes() + mockEvalSetVerSvc.EXPECT().BatchGetEvaluationSetVersions(gomock.Any(), gptr.Of(spaceID), gomock.Any(), gptr.Of(false)).Return(nil, nil).AnyTimes() + mockEvalSetSvc.EXPECT().BatchGetEvaluationSets(gomock.Any(), gptr.Of(spaceID), gomock.Any(), gptr.Of(false)).Return(nil, nil).AnyTimes() + mockEvalSvc.EXPECT().BatchGetEvaluatorVersion(gomock.Any(), nil, gomock.Any(), true).Return(nil, nil).AnyTimes() + + got, err := mgr.Update(ctx, param, session) + assert.NoError(t, err) + assert.NotNil(t, got) + assert.Equal(t, int64(40), got.GetTargetVersionID()) +} + +func TestExptTemplateManagerImpl_UpdateMeta_NameChange_Exists(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + mockRepo := repo_mocks.NewMockIExptTemplateRepo(ctrl) + + mgr := &ExptTemplateManagerImpl{ + templateRepo: mockRepo, + } + + ctx := context.Background() + spaceID := int64(100) + templateID := int64(1) + session := &entity.Session{UserID: "u1"} + + param := &entity.UpdateExptTemplateMetaParam{ + TemplateID: templateID, + SpaceID: spaceID, + Name: "new-name", + } + + existing := &entity.ExptTemplate{ + Meta: &entity.ExptTemplateMeta{ + ID: templateID, + WorkspaceID: spaceID, + Name: "old-name", + }, + } + + mockRepo.EXPECT().GetByID(ctx, templateID, gomock.AssignableToTypeOf(&spaceID)).Return(existing, nil) + mockRepo.EXPECT().GetByName(ctx, "new-name", spaceID).Return(&entity.ExptTemplate{}, true, nil) + + got, err := mgr.UpdateMeta(ctx, param, session) + assert.Error(t, err) + assert.Nil(t, got) + code, _, ok := errno.ParseStatusError(err) + assert.True(t, ok) + assert.Equal(t, errno.ExperimentNameExistedCode, int(code)) +} + +func TestExptTemplateManagerImpl_UpdateMeta_NameCheckError(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + mockRepo := repo_mocks.NewMockIExptTemplateRepo(ctrl) + + mgr := &ExptTemplateManagerImpl{ + templateRepo: mockRepo, + } + + ctx := context.Background() + spaceID := int64(100) + templateID := int64(1) + session := &entity.Session{UserID: "u1"} + + param := &entity.UpdateExptTemplateMetaParam{ + TemplateID: templateID, + SpaceID: spaceID, + Name: "new-name", + } + + existing := &entity.ExptTemplate{ + Meta: &entity.ExptTemplateMeta{ + ID: templateID, + WorkspaceID: spaceID, + Name: "old-name", + }, + } + + mockRepo.EXPECT().GetByID(ctx, templateID, gomock.AssignableToTypeOf(&spaceID)).Return(existing, nil) + mockRepo.EXPECT().GetByName(ctx, "new-name", spaceID).Return(nil, false, errors.New("db err")) + + got, err := mgr.UpdateMeta(ctx, param, session) + assert.Error(t, err) + assert.Nil(t, got) +} diff --git a/backend/modules/evaluation/domain/service/mocks/target.go b/backend/modules/evaluation/domain/service/mocks/target.go index 3703c9cf8..8eccf0810 100644 --- a/backend/modules/evaluation/domain/service/mocks/target.go +++ b/backend/modules/evaluation/domain/service/mocks/target.go @@ -303,6 +303,21 @@ func (mr *MockIEvalTargetServiceMockRecorder) GetRecordByID(ctx, spaceID, record return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetRecordByID", reflect.TypeOf((*MockIEvalTargetService)(nil).GetRecordByID), ctx, spaceID, recordID) } +// GetRecordByRunItemTurn mocks base method. +func (m *MockIEvalTargetService) GetRecordByRunItemTurn(ctx context.Context, spaceID, runID, itemID, turnID int64) (*entity.EvalTargetRecord, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetRecordByRunItemTurn", ctx, spaceID, runID, itemID, turnID) + ret0, _ := ret[0].(*entity.EvalTargetRecord) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetRecordByRunItemTurn indicates an expected call of GetRecordByRunItemTurn. +func (mr *MockIEvalTargetServiceMockRecorder) GetRecordByRunItemTurn(ctx, spaceID, runID, itemID, turnID any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetRecordByRunItemTurn", reflect.TypeOf((*MockIEvalTargetService)(nil).GetRecordByRunItemTurn), ctx, spaceID, runID, itemID, turnID) +} + // LoadRecordFullData mocks base method. func (m *MockIEvalTargetService) LoadRecordFullData(ctx context.Context, record *entity.EvalTargetRecord) error { m.ctrl.T.Helper() diff --git a/backend/modules/evaluation/domain/service/mocks/target_source.go b/backend/modules/evaluation/domain/service/mocks/target_source.go index 76f4bc2f5..d68046cd0 100644 --- a/backend/modules/evaluation/domain/service/mocks/target_source.go +++ b/backend/modules/evaluation/domain/service/mocks/target_source.go @@ -42,13 +42,14 @@ func (m *MockISourceEvalTargetOperateService) EXPECT() *MockISourceEvalTargetOpe } // AsyncExecute mocks base method. -func (m *MockISourceEvalTargetOperateService) AsyncExecute(ctx context.Context, spaceID int64, param *entity.ExecuteEvalTargetParam) (int64, string, error) { +func (m *MockISourceEvalTargetOperateService) AsyncExecute(ctx context.Context, spaceID int64, param *entity.ExecuteEvalTargetParam) (int64, string, map[string]string, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "AsyncExecute", ctx, spaceID, param) ret0, _ := ret[0].(int64) ret1, _ := ret[1].(string) - ret2, _ := ret[2].(error) - return ret0, ret1, ret2 + ret2, _ := ret[2].(map[string]string) + ret3, _ := ret[3].(error) + return ret0, ret1, ret2, ret3 } // AsyncExecute indicates an expected call of AsyncExecute. diff --git a/backend/modules/evaluation/domain/service/target.go b/backend/modules/evaluation/domain/service/target.go index 81d7d5bc7..086eaf214 100644 --- a/backend/modules/evaluation/domain/service/target.go +++ b/backend/modules/evaluation/domain/service/target.go @@ -25,6 +25,7 @@ type IEvalTargetService interface { DebugTarget(ctx context.Context, param *entity.DebugTargetParam) (record *entity.EvalTargetRecord, err error) AsyncDebugTarget(ctx context.Context, param *entity.DebugTargetParam) (record *entity.EvalTargetRecord, callee string, err error) GetRecordByID(ctx context.Context, spaceID, recordID int64) (*entity.EvalTargetRecord, error) + GetRecordByRunItemTurn(ctx context.Context, spaceID, runID, itemID, turnID int64) (*entity.EvalTargetRecord, error) CreateRecord(ctx context.Context, record *entity.EvalTargetRecord) error BatchGetRecordByIDs(ctx context.Context, spaceID int64, recordIDs []int64) ([]*entity.EvalTargetRecord, error) // LoadRecordOutputFields 从 TOS 加载 record 中指定 output 字段的完整内容(用于评估器输入需完整 target_output 的场景) diff --git a/backend/modules/evaluation/domain/service/target_impl.go b/backend/modules/evaluation/domain/service/target_impl.go index 2dd2ac519..c5ab20337 100644 --- a/backend/modules/evaluation/domain/service/target_impl.go +++ b/backend/modules/evaluation/domain/service/target_impl.go @@ -491,7 +491,7 @@ func (e *EvalTargetServiceImpl) asyncExecuteTarget(ctx context.Context, spaceID span.SetCallType("EvalTarget") ctx = looptracer.GetTracer().Inject(ctx) - invokeID, callee, execErr := operator.AsyncExecute(ctx, spaceID, &entity.ExecuteEvalTargetParam{ + invokeID, callee, ext, execErr := operator.AsyncExecute(ctx, spaceID, &entity.ExecuteEvalTargetParam{ ExptID: gptr.Indirect(param.ExperimentID), TargetID: targetID, VersionID: targetVersionID, @@ -512,7 +512,7 @@ func (e *EvalTargetServiceImpl) asyncExecuteTarget(ctx context.Context, spaceID } logs.CtxInfo(ctx, "AsyncExecute with invoke_id %v, callee: %v, target_id: %v, target_version_id: %v", invokeID, callee, targetID, targetVersionID) - + outputData.Ext = ext userID := session.UserIDInCtxOrEmpty(ctx) record = &entity.EvalTargetRecord{ ID: invokeID, @@ -649,6 +649,10 @@ func (e *EvalTargetServiceImpl) GetRecordByID(ctx context.Context, spaceID, reco return e.evalTargetRepo.GetEvalTargetRecordByIDAndSpaceID(ctx, spaceID, recordID) } +func (e *EvalTargetServiceImpl) GetRecordByRunItemTurn(ctx context.Context, spaceID, runID, itemID, turnID int64) (*entity.EvalTargetRecord, error) { + return e.evalTargetRepo.GetEvalTargetRecordByRunItemTurn(ctx, spaceID, runID, itemID, turnID) +} + func (e *EvalTargetServiceImpl) BatchGetRecordByIDs(ctx context.Context, spaceID int64, recordIDs []int64) ([]*entity.EvalTargetRecord, error) { if spaceID == 0 || len(recordIDs) == 0 { return nil, errorx.NewByCode(errno.CommonInvalidParamCode) @@ -684,6 +688,17 @@ func (e *EvalTargetServiceImpl) ReportInvokeRecords(ctx context.Context, param * if status := gptr.Indirect(record.Status); status != entity.EvalTargetRunStatusAsyncInvoking { return errorx.NewByCode(errno.CommonBadRequestCode, errorx.WithExtraMsg(fmt.Sprintf("unexpected target result status %d", status))) } + if record.EvalTargetOutputData != nil && len(record.EvalTargetOutputData.Ext) > 0 { + if param.OutputData == nil { + param.OutputData = &entity.EvalTargetOutputData{} + } + if param.OutputData.Ext == nil { + param.OutputData.Ext = make(map[string]string) + } + for k, v := range record.EvalTargetOutputData.Ext { + param.OutputData.Ext[k] = v + } + } record.EvalTargetOutputData = param.OutputData record.Status = gptr.Of(param.Status) diff --git a/backend/modules/evaluation/domain/service/target_impl_test.go b/backend/modules/evaluation/domain/service/target_impl_test.go index be407fd14..ed0c7c5fe 100755 --- a/backend/modules/evaluation/domain/service/target_impl_test.go +++ b/backend/modules/evaluation/domain/service/target_impl_test.go @@ -341,7 +341,7 @@ func TestEvalTargetServiceImpl_asyncExecuteTarget(t *testing.T) { name: "async execute failed", prepare: func(ctx context.Context, deps *evalTargetServiceTestDeps, target *entity.EvalTarget, input *entity.EvalTargetInputData) { deps.operator.EXPECT().ValidateInput(ctx, target.SpaceID, target.EvalTargetVersion.InputSchema, input).Return(nil) - deps.operator.EXPECT().AsyncExecute(ctx, target.SpaceID, gomock.Any()).Return(int64(0), "callee", errorx.NewByCode(errno.CommonInternalErrorCode)) + deps.operator.EXPECT().AsyncExecute(ctx, target.SpaceID, gomock.Any()).Return(int64(0), "callee", map[string]string(nil), errorx.NewByCode(errno.CommonInternalErrorCode)) deps.metric.EXPECT().EmitRun(target.SpaceID, gomock.Any(), gomock.Any()).Times(1) }, wantErr: true, @@ -352,7 +352,7 @@ func TestEvalTargetServiceImpl_asyncExecuteTarget(t *testing.T) { name: "success", prepare: func(ctx context.Context, deps *evalTargetServiceTestDeps, target *entity.EvalTarget, input *entity.EvalTargetInputData) { deps.operator.EXPECT().ValidateInput(ctx, target.SpaceID, target.EvalTargetVersion.InputSchema, input).Return(nil) - deps.operator.EXPECT().AsyncExecute(ctx, target.SpaceID, gomock.Any()).Return(int64(999), "callee", nil) + deps.operator.EXPECT().AsyncExecute(ctx, target.SpaceID, gomock.Any()).Return(int64(999), "callee", map[string]string(nil), nil) deps.repo.EXPECT().GetEvalTargetVersion(ctx, target.SpaceID, target.EvalTargetVersion.ID).Return(target, nil) deps.repo.EXPECT().CreateEvalTargetRecord(ctx, gomock.Any(), gomock.Any()).Return(int64(999), nil) deps.metric.EXPECT().EmitRun(target.SpaceID, gomock.Any(), gomock.Any()).Times(1) @@ -842,6 +842,44 @@ func TestEvalTargetServiceImpl_ReportInvokeRecords(t *testing.T) { }) }, }, + { + name: "record有Ext数据合并到param", + prepare: func(deps *evalTargetServiceTestDeps, param *entity.ReportTargetRecordParam, record *entity.EvalTargetRecord) { + status := entity.EvalTargetRunStatusAsyncInvoking + record.Status = &status + record.EvalTargetOutputData = &entity.EvalTargetOutputData{ + Ext: map[string]string{"screen_recording_uri": "tos://recording"}, + } + deps.repo.EXPECT().GetEvalTargetRecordByIDAndSpaceID(ctx, param.SpaceID, param.RecordID).Return(record, nil) + deps.repo.EXPECT().SaveEvalTargetRecord(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil) + deps.metric.EXPECT().EmitRun(gomock.Any(), gomock.Any(), gomock.Any()).AnyTimes() + deps.configer.EXPECT().GetTargetTrajectoryConf(gomock.Any()).AnyTimes().Return(&entity.TargetTrajectoryConf{}) + deps.configer.EXPECT().GetErrCtrl(gomock.Any()).AnyTimes().Return(entity.DefaultExptErrCtrl()) + + param.OutputData = &entity.EvalTargetOutputData{ + OutputFields: map[string]*entity.Content{}, + } + param.Session = &entity.Session{UserID: "user"} + }, + }, + { + name: "record有Ext且param无OutputData时自动创建", + prepare: func(deps *evalTargetServiceTestDeps, param *entity.ReportTargetRecordParam, record *entity.EvalTargetRecord) { + status := entity.EvalTargetRunStatusAsyncInvoking + record.Status = &status + record.EvalTargetOutputData = &entity.EvalTargetOutputData{ + Ext: map[string]string{"key1": "val1"}, + } + deps.repo.EXPECT().GetEvalTargetRecordByIDAndSpaceID(ctx, param.SpaceID, param.RecordID).Return(record, nil) + deps.repo.EXPECT().SaveEvalTargetRecord(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil) + deps.metric.EXPECT().EmitRun(gomock.Any(), gomock.Any(), gomock.Any()).AnyTimes() + deps.configer.EXPECT().GetTargetTrajectoryConf(gomock.Any()).AnyTimes().Return(&entity.TargetTrajectoryConf{}) + deps.configer.EXPECT().GetErrCtrl(gomock.Any()).AnyTimes().Return(entity.DefaultExptErrCtrl()) + + param.OutputData = nil + param.Session = &entity.Session{UserID: "user"} + }, + }, } for _, tt := range tests { @@ -1595,7 +1633,7 @@ func TestEvalTargetServiceImpl_AsyncDebugTarget(t *testing.T) { name: "async execute failed", prepare: func(ctx context.Context, deps *evalTargetServiceTestDeps, param *entity.DebugTargetParam) { deps.operator.EXPECT().ValidateInput(ctx, param.SpaceID, param.PatchyTarget.EvalTargetVersion.InputSchema, param.InputData).Return(nil) - deps.operator.EXPECT().AsyncExecute(ctx, param.SpaceID, gomock.Any()).Return(int64(0), "callee", errorx.NewByCode(errno.CommonInternalErrorCode)) + deps.operator.EXPECT().AsyncExecute(ctx, param.SpaceID, gomock.Any()).Return(int64(0), "callee", map[string]string(nil), errorx.NewByCode(errno.CommonInternalErrorCode)) deps.metric.EXPECT().EmitRun(param.SpaceID, gomock.Any(), gomock.Any()).Times(1) }, wantErr: true, @@ -1606,7 +1644,7 @@ func TestEvalTargetServiceImpl_AsyncDebugTarget(t *testing.T) { name: "create record failed", prepare: func(ctx context.Context, deps *evalTargetServiceTestDeps, param *entity.DebugTargetParam) { deps.operator.EXPECT().ValidateInput(ctx, param.SpaceID, param.PatchyTarget.EvalTargetVersion.InputSchema, param.InputData).Return(nil) - deps.operator.EXPECT().AsyncExecute(ctx, param.SpaceID, gomock.Any()).Return(int64(999), "callee", nil) + deps.operator.EXPECT().AsyncExecute(ctx, param.SpaceID, gomock.Any()).Return(int64(999), "callee", map[string]string(nil), nil) deps.repo.EXPECT().GetEvalTargetVersion(ctx, param.SpaceID, param.PatchyTarget.EvalTargetVersion.ID).Return(param.PatchyTarget, nil) deps.repo.EXPECT().CreateEvalTargetRecord(ctx, gomock.Any(), gomock.Any()).Return(int64(0), errorx.NewByCode(errno.CommonInternalErrorCode)) deps.metric.EXPECT().EmitRun(param.SpaceID, gomock.Any(), gomock.Any()).Times(1) @@ -1619,7 +1657,7 @@ func TestEvalTargetServiceImpl_AsyncDebugTarget(t *testing.T) { name: "success with TruncateLargeContent nil", prepare: func(ctx context.Context, deps *evalTargetServiceTestDeps, param *entity.DebugTargetParam) { deps.operator.EXPECT().ValidateInput(ctx, param.SpaceID, param.PatchyTarget.EvalTargetVersion.InputSchema, param.InputData).Return(nil) - deps.operator.EXPECT().AsyncExecute(ctx, param.SpaceID, gomock.Any()).Return(int64(999), "callee", nil) + deps.operator.EXPECT().AsyncExecute(ctx, param.SpaceID, gomock.Any()).Return(int64(999), "callee", map[string]string(nil), nil) deps.repo.EXPECT().GetEvalTargetVersion(ctx, param.SpaceID, param.PatchyTarget.EvalTargetVersion.ID).Return(param.PatchyTarget, nil) deps.repo.EXPECT().CreateEvalTargetRecord(ctx, gomock.Any(), gomock.Nil()).Return(int64(999), nil) deps.metric.EXPECT().EmitRun(param.SpaceID, gomock.Any(), gomock.Any()).Times(1) @@ -1632,7 +1670,7 @@ func TestEvalTargetServiceImpl_AsyncDebugTarget(t *testing.T) { prepare: func(ctx context.Context, deps *evalTargetServiceTestDeps, param *entity.DebugTargetParam) { param.TruncateLargeContent = gptr.Of(false) deps.operator.EXPECT().ValidateInput(ctx, param.SpaceID, param.PatchyTarget.EvalTargetVersion.InputSchema, param.InputData).Return(nil) - deps.operator.EXPECT().AsyncExecute(ctx, param.SpaceID, gomock.Any()).Return(int64(888), "proxy-callee", nil) + deps.operator.EXPECT().AsyncExecute(ctx, param.SpaceID, gomock.Any()).Return(int64(888), "proxy-callee", map[string]string(nil), nil) deps.repo.EXPECT().GetEvalTargetVersion(ctx, param.SpaceID, param.PatchyTarget.EvalTargetVersion.ID).Return(param.PatchyTarget, nil) deps.repo.EXPECT().CreateEvalTargetRecord(ctx, gomock.Any(), gptr.Of(false)).Return(int64(888), nil) deps.metric.EXPECT().EmitRun(param.SpaceID, gomock.Any(), gomock.Any()).Times(1) @@ -1902,7 +1940,7 @@ func TestEvalTargetServiceImpl_AsyncExecuteTarget(t *testing.T) { } deps.repo.EXPECT().GetEvalTargetVersion(ctx, spaceID, targetVersionID).Return(evalTarget, nil) deps.operator.EXPECT().ValidateInput(ctx, spaceID, evalTarget.EvalTargetVersion.InputSchema, inputData).Return(nil) - deps.operator.EXPECT().AsyncExecute(ctx, spaceID, gomock.Any()).Return(int64(0), "callee", errorx.NewByCode(errno.CommonInternalErrorCode)) + deps.operator.EXPECT().AsyncExecute(ctx, spaceID, gomock.Any()).Return(int64(0), "callee", map[string]string(nil), errorx.NewByCode(errno.CommonInternalErrorCode)) deps.metric.EXPECT().EmitRun(spaceID, gomock.Any(), gomock.Any()).Times(1) }, wantErr: true, @@ -1927,7 +1965,7 @@ func TestEvalTargetServiceImpl_AsyncExecuteTarget(t *testing.T) { } deps.repo.EXPECT().GetEvalTargetVersion(ctx, spaceID, targetVersionID).Return(evalTarget, nil).Times(2) deps.operator.EXPECT().ValidateInput(ctx, spaceID, evalTarget.EvalTargetVersion.InputSchema, inputData).Return(nil) - deps.operator.EXPECT().AsyncExecute(ctx, spaceID, gomock.Any()).Return(int64(999), "callee", nil) + deps.operator.EXPECT().AsyncExecute(ctx, spaceID, gomock.Any()).Return(int64(999), "callee", map[string]string(nil), nil) deps.repo.EXPECT().CreateEvalTargetRecord(ctx, gomock.Any(), gomock.Any()).Return(int64(0), errorx.NewByCode(errno.CommonInternalErrorCode)) deps.metric.EXPECT().EmitRun(spaceID, gomock.Any(), gomock.Any()).Times(1) }, @@ -1953,7 +1991,7 @@ func TestEvalTargetServiceImpl_AsyncExecuteTarget(t *testing.T) { } deps.repo.EXPECT().GetEvalTargetVersion(ctx, spaceID, targetVersionID).Return(evalTarget, nil).Times(2) deps.operator.EXPECT().ValidateInput(ctx, spaceID, evalTarget.EvalTargetVersion.InputSchema, inputData).Return(nil) - deps.operator.EXPECT().AsyncExecute(ctx, spaceID, gomock.Any()).DoAndReturn(func(_ context.Context, _ int64, execParam *entity.ExecuteEvalTargetParam) (int64, string, error) { + deps.operator.EXPECT().AsyncExecute(ctx, spaceID, gomock.Any()).DoAndReturn(func(_ context.Context, _ int64, execParam *entity.ExecuteEvalTargetParam) (int64, string, map[string]string, error) { assert.Equal(t, targetID, execParam.TargetID) assert.Equal(t, targetVersionID, execParam.VersionID) assert.Equal(t, "test-source", execParam.SourceTargetID) @@ -1961,7 +1999,7 @@ func TestEvalTargetServiceImpl_AsyncExecuteTarget(t *testing.T) { assert.Equal(t, inputData, execParam.Input) assert.Equal(t, entity.EvalTargetTypeLoopPrompt, execParam.TargetType) assert.Equal(t, evalTarget, execParam.EvalTarget) - return int64(999), "callee", nil + return int64(999), "callee", nil, nil }) deps.repo.EXPECT().CreateEvalTargetRecord(ctx, gomock.Any(), gomock.Any()).Return(int64(999), nil) deps.metric.EXPECT().EmitRun(spaceID, gomock.Any(), gomock.Any()).Times(1) @@ -2141,3 +2179,19 @@ func TestEvalTargetServiceImpl_BatchGetRecordByIDs_LoadRecordOutputFields_LoadRe assert.NoError(t, err) }) } + +func TestEvalTargetServiceImpl_GetRecordByRunItemTurn(t *testing.T) { + t.Parallel() + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + mockRepo := repomocks.NewMockIEvalTargetRepo(ctrl) + svc := &EvalTargetServiceImpl{evalTargetRepo: mockRepo} + + expectedRecord := &entity.EvalTargetRecord{ID: 100} + mockRepo.EXPECT().GetEvalTargetRecordByRunItemTurn(gomock.Any(), int64(1), int64(2), int64(3), int64(4)).Return(expectedRecord, nil) + + record, err := svc.GetRecordByRunItemTurn(context.Background(), 1, 2, 3, 4) + assert.NoError(t, err) + assert.Equal(t, expectedRecord, record) +} diff --git a/backend/modules/evaluation/domain/service/target_source.go b/backend/modules/evaluation/domain/service/target_source.go index 87cc8c834..387becbe1 100644 --- a/backend/modules/evaluation/domain/service/target_source.go +++ b/backend/modules/evaluation/domain/service/target_source.go @@ -28,7 +28,7 @@ type ISourceEvalTargetOperateService interface { ValidateInput(ctx context.Context, spaceID int64, inputSchema []*entity.ArgsSchema, input *entity.EvalTargetInputData) error // Execute Execute(ctx context.Context, spaceID int64, param *entity.ExecuteEvalTargetParam) (outputData *entity.EvalTargetOutputData, status entity.EvalTargetRunStatus, err error) - AsyncExecute(ctx context.Context, spaceID int64, param *entity.ExecuteEvalTargetParam) (invokeID int64, callee string, err error) + AsyncExecute(ctx context.Context, spaceID int64, param *entity.ExecuteEvalTargetParam) (invokeID int64, callee string, ext map[string]string, err error) RuntimeParam() entity.IRuntimeParam // 搜索自定义评测对象 SearchCustomEvalTarget(ctx context.Context, param *entity.SearchCustomEvalTargetParam) (targets []*entity.CustomEvalTarget, nextCursor string, hasMore bool, err error) diff --git a/backend/modules/evaluation/domain/service/target_source_loopprompt_impl.go b/backend/modules/evaluation/domain/service/target_source_loopprompt_impl.go index da8c03af8..39ac998aa 100644 --- a/backend/modules/evaluation/domain/service/target_source_loopprompt_impl.go +++ b/backend/modules/evaluation/domain/service/target_source_loopprompt_impl.go @@ -34,8 +34,8 @@ type PromptSourceEvalTargetServiceImpl struct { promptRPCAdapter rpc.IPromptRPCAdapter } -func (t *PromptSourceEvalTargetServiceImpl) AsyncExecute(ctx context.Context, spaceID int64, param *entity.ExecuteEvalTargetParam) (int64, string, error) { - return 0, "", errorx.New("async execute not supported") +func (t *PromptSourceEvalTargetServiceImpl) AsyncExecute(ctx context.Context, spaceID int64, param *entity.ExecuteEvalTargetParam) (int64, string, map[string]string, error) { + return 0, "", nil, errorx.New("async execute not supported") } func (t *PromptSourceEvalTargetServiceImpl) RuntimeParam() entity.IRuntimeParam { diff --git a/backend/modules/evaluation/infra/repo/evaluator/mysql/convertor/evaluator.go b/backend/modules/evaluation/infra/repo/evaluator/mysql/convertor/evaluator.go index 10c1a5747..54333a10d 100644 --- a/backend/modules/evaluation/infra/repo/evaluator/mysql/convertor/evaluator.go +++ b/backend/modules/evaluation/infra/repo/evaluator/mysql/convertor/evaluator.go @@ -39,6 +39,7 @@ func ConvertEvaluatorDO2PO(do *evaluatordo.Evaluator) *model.Evaluator { BuiltinVisibleVersion: do.BuiltinVisibleVersion, Builtin: builtinVal, BoxType: int32(do.BoxType), + SourceType: int32(do.SourceType), } if do.EvaluatorInfo != nil { b, err := json.Marshal(do.EvaluatorInfo) @@ -79,6 +80,7 @@ func ConvertEvaluatorPO2DO(po *model.Evaluator) *evaluatordo.Evaluator { BuiltinVisibleVersion: po.BuiltinVisibleVersion, Builtin: po.Builtin == 1, BoxType: evaluatordo.EvaluatorBoxType(po.BoxType), + SourceType: evaluatordo.EvaluatorSourceType(po.SourceType), } if po.EvaluatorInfo != nil { var info evaluatordo.EvaluatorInfo diff --git a/backend/modules/evaluation/infra/repo/evaluator/mysql/gorm_gen/model/evaluator.gen.go b/backend/modules/evaluation/infra/repo/evaluator/mysql/gorm_gen/model/evaluator.gen.go index 1fca340d4..97fa56072 100644 --- a/backend/modules/evaluation/infra/repo/evaluator/mysql/gorm_gen/model/evaluator.gen.go +++ b/backend/modules/evaluation/infra/repo/evaluator/mysql/gorm_gen/model/evaluator.gen.go @@ -30,6 +30,7 @@ type Evaluator struct { Builtin int32 `gorm:"column:builtin;type:int(11) unsigned;not null;default:2;comment:是否预置,1:是;2:否" json:"builtin"` // 是否预置,1:是;2:否 BoxType int32 `gorm:"column:box_type;type:int(11) unsigned;not null;default:1;comment:黑白盒类型,1:白盒;2:黑盒" json:"box_type"` // 黑白盒类型,1:白盒;2:黑盒 BuiltinVisibleVersion string `gorm:"column:builtin_visible_version;type:varchar(128) character set utf8mb4;not null;comment:预置评估器最新可见版本号" json:"builtin_visible_version"` // 预置评估器最新可见版本号 + SourceType int32 `gorm:"column:source_type;type:int(11) unsigned;not null;comment:来源类型, 默认0, 1-智能生成" json:"source_type"` // 来源类型, 默认0, 1-智能生成 } // TableName Evaluator's table name diff --git a/backend/modules/evaluation/infra/repo/evaluator/mysql/gorm_gen/query/evaluator.gen.go b/backend/modules/evaluation/infra/repo/evaluator/mysql/gorm_gen/query/evaluator.gen.go index 542e5e699..aafb59b47 100644 --- a/backend/modules/evaluation/infra/repo/evaluator/mysql/gorm_gen/query/evaluator.gen.go +++ b/backend/modules/evaluation/infra/repo/evaluator/mysql/gorm_gen/query/evaluator.gen.go @@ -43,6 +43,7 @@ func newEvaluator(db *gorm.DB, opts ...gen.DOOption) evaluator { _evaluator.Builtin = field.NewInt32(tableName, "builtin") _evaluator.BoxType = field.NewInt32(tableName, "box_type") _evaluator.BuiltinVisibleVersion = field.NewString(tableName, "builtin_visible_version") + _evaluator.SourceType = field.NewInt32(tableName, "source_type") _evaluator.fillFieldMap() @@ -70,6 +71,7 @@ type evaluator struct { Builtin field.Int32 // 是否预置,1:是;2:否 BoxType field.Int32 // 黑白盒类型,1:白盒;2:黑盒 BuiltinVisibleVersion field.String // 预置评估器最新可见版本号 + SourceType field.Int32 // 来源类型, 默认0, 1-智能生成 fieldMap map[string]field.Expr } @@ -102,6 +104,7 @@ func (e *evaluator) updateTableName(table string) *evaluator { e.Builtin = field.NewInt32(table, "builtin") e.BoxType = field.NewInt32(table, "box_type") e.BuiltinVisibleVersion = field.NewString(table, "builtin_visible_version") + e.SourceType = field.NewInt32(table, "source_type") e.fillFieldMap() @@ -128,7 +131,7 @@ func (e *evaluator) GetFieldByName(fieldName string) (field.OrderExpr, bool) { } func (e *evaluator) fillFieldMap() { - e.fieldMap = make(map[string]field.Expr, 16) + e.fieldMap = make(map[string]field.Expr, 17) e.fieldMap["id"] = e.ID e.fieldMap["space_id"] = e.SpaceID e.fieldMap["evaluator_type"] = e.EvaluatorType @@ -145,6 +148,7 @@ func (e *evaluator) fillFieldMap() { e.fieldMap["builtin"] = e.Builtin e.fieldMap["box_type"] = e.BoxType e.fieldMap["builtin_visible_version"] = e.BuiltinVisibleVersion + e.fieldMap["source_type"] = e.SourceType } func (e evaluator) clone(db *gorm.DB) evaluator { diff --git a/backend/modules/evaluation/infra/repo/experiment/mysql/convert/expt.go b/backend/modules/evaluation/infra/repo/experiment/mysql/convert/expt.go index 00ace1ddb..559697fc9 100644 --- a/backend/modules/evaluation/infra/repo/experiment/mysql/convert/expt.go +++ b/backend/modules/evaluation/infra/repo/experiment/mysql/convert/expt.go @@ -47,6 +47,8 @@ func (ExptConverter) DO2PO(experiment *entity.Experiment) (*model.Experiment, er SourceType: int32(experiment.SourceType), SourceID: experiment.SourceID, ExptType: int32(experiment.ExptType), + Visibility: int32(experiment.Visibility), + ThreadID: experiment.ThreadID, TriggerType: experiment.TriggerType, } @@ -61,6 +63,9 @@ func (ExptConverter) DO2PO(experiment *entity.Experiment) (*model.Experiment, er } expt.EvalConf = &bytes } + if experiment.TrialRunItemCount != 0 { + expt.TrialRunItemCount = gptr.Of(experiment.TrialRunItemCount) + } return expt, nil } @@ -106,6 +111,9 @@ func (ExptConverter) PO2DO(expt *model.Experiment, refs []*model.ExptEvaluatorRe SourceID: expt.SourceID, ExptType: entity.ExptType(expt.ExptType), MaxAliveTime: gptr.Indirect(expt.MaxAliveTime), + Visibility: entity.Visibility(expt.Visibility), + ThreadID: expt.ThreadID, + TrialRunItemCount: gptr.Indirect(expt.TrialRunItemCount), TriggerType: expt.TriggerType, } diff --git a/backend/modules/evaluation/infra/repo/experiment/mysql/convert/expt_template.go b/backend/modules/evaluation/infra/repo/experiment/mysql/convert/expt_template.go index 17adee345..e2218804e 100644 --- a/backend/modules/evaluation/infra/repo/experiment/mysql/convert/expt_template.go +++ b/backend/modules/evaluation/infra/repo/experiment/mysql/convert/expt_template.go @@ -26,12 +26,14 @@ func (ExptTemplateConverter) DO2PO(template *entity.ExptTemplate) (*model.ExptTe var id, spaceID int64 var name, description string var exptType entity.ExptType + var visibility entity.Visibility if template.Meta != nil { id = template.Meta.ID spaceID = template.Meta.WorkspaceID name = template.Meta.Name description = template.Meta.Desc exptType = template.Meta.ExptType + visibility = template.Meta.Visibility } // 从 BaseInfo 获取 CreatedBy @@ -75,6 +77,7 @@ func (ExptTemplateConverter) DO2PO(template *entity.ExptTemplate) (*model.ExptTe TargetType: int64(targetType), TargetVersionID: targetVersionID, ExptType: int32(exptType), + Visibility: int32(visibility), CronActivate: cronActivate, } diff --git a/backend/modules/evaluation/infra/repo/experiment/mysql/expt.go b/backend/modules/evaluation/infra/repo/experiment/mysql/expt.go index c7f77028d..03a264c10 100644 --- a/backend/modules/evaluation/infra/repo/experiment/mysql/expt.go +++ b/backend/modules/evaluation/infra/repo/experiment/mysql/expt.go @@ -110,8 +110,10 @@ func (d *exptDAOImpl) List(ctx context.Context, page, size int32, filter *entity db = db.Model(&model.Experiment{}). Joins("INNER JOIN expt_evaluator_ref ON experiment.id = expt_evaluator_ref.expt_id"). Where("experiment.space_id = ?", spaceID) + db = db.Where("experiment.visibility <> ?", int32(entity.Visibility_Hidden)) } else { db = db.Model(&model.Experiment{}).Where("space_id = ?", spaceID) + db = db.Where("visibility <> ?", int32(entity.Visibility_Hidden)) } conds, ok := d.toConditions(filter, orders) diff --git a/backend/modules/evaluation/infra/repo/experiment/mysql/expt_template.go b/backend/modules/evaluation/infra/repo/experiment/mysql/expt_template.go index 938f30f65..4d433d637 100644 --- a/backend/modules/evaluation/infra/repo/experiment/mysql/expt_template.go +++ b/backend/modules/evaluation/infra/repo/experiment/mysql/expt_template.go @@ -133,10 +133,12 @@ func (d *exptTemplateDAOImpl) List(ctx context.Context, page, size int32, filter Joins("INNER JOIN expt_template_evaluator_ref ON expt_template.id = expt_template_evaluator_ref.expt_template_id"). Where("expt_template.space_id = ?", spaceID). Where("expt_template.deleted_at IS NULL") + db = db.Where("expt_template.visibility <> ?", int32(entity.Visibility_Hidden)) } else { db = db.Model(&model.ExptTemplate{}). Where("space_id = ?", spaceID). Where("deleted_at IS NULL") + db = db.Where("expt_template.visibility <> ?", int32(entity.Visibility_Hidden)) } conds, ok := d.toConditions(filter, orders) diff --git a/backend/modules/evaluation/infra/repo/experiment/mysql/expt_template_test.go b/backend/modules/evaluation/infra/repo/experiment/mysql/expt_template_test.go index f6d1687a1..247a3f908 100644 --- a/backend/modules/evaluation/infra/repo/experiment/mysql/expt_template_test.go +++ b/backend/modules/evaluation/infra/repo/experiment/mysql/expt_template_test.go @@ -323,11 +323,11 @@ func TestExptTemplateDAOImpl_List_SQLShapes(t *testing.T) { provider.EXPECT().NewSession(gomock.Any()).Return(gormDB).Times(1) countRows := sqlmock.NewRows([]string{"count"}).AddRow(0) - mock.ExpectQuery("SELECT count\\(\\*\\) FROM `expt_template` WHERE space_id = \\? AND deleted_at IS NULL AND `expt_template`\\.`deleted_at` IS NULL"). - WithArgs(100). + mock.ExpectQuery("SELECT count\\(\\*\\) FROM `expt_template` WHERE space_id = \\? AND deleted_at IS NULL AND expt_template\\.visibility <> \\? AND `expt_template`\\.`deleted_at` IS NULL"). + WithArgs(100, int32(1)). WillReturnRows(countRows) - mock.ExpectQuery("SELECT \\* FROM `expt_template` WHERE space_id = \\? AND deleted_at IS NULL AND `expt_template`\\.`deleted_at` IS NULL LIMIT \\?"). - WithArgs(100, 20). + mock.ExpectQuery("SELECT \\* FROM `expt_template` WHERE space_id = \\? AND deleted_at IS NULL AND expt_template\\.visibility <> \\? AND `expt_template`\\.`deleted_at` IS NULL LIMIT \\?"). + WithArgs(100, int32(1), 20). WillReturnRows(sqlmock.NewRows([]string{"id"})) dao := &exptTemplateDAOImpl{db: provider} @@ -356,13 +356,13 @@ func TestExptTemplateDAOImpl_List_SQLShapes(t *testing.T) { provider.EXPECT().NewSession(gomock.Any()).Return(gormDB).Times(1) countRows := sqlmock.NewRows([]string{"count"}).AddRow(1) - countSQL := "SELECT count\\(\\*\\) FROM `expt_template` INNER JOIN expt_template_evaluator_ref ON expt_template.id = expt_template_evaluator_ref.expt_template_id WHERE expt_template.space_id = \\? AND expt_template.deleted_at IS NULL AND expt_template_evaluator_ref.evaluator_id IN \\(\\?\\) AND `expt_template`\\.`deleted_at` IS NULL GROUP BY `expt_template`\\.`id` ORDER BY expt_template.created_at asc" - findSQL := "SELECT `expt_template`\\.`id`,`expt_template`\\.`space_id`,`expt_template`\\.`name`,`expt_template`\\.`description`,`expt_template`\\.`eval_set_id`,`expt_template`\\.`eval_set_version_id`,`expt_template`\\.`target_id`,`expt_template`\\.`target_type`,`expt_template`\\.`target_version_id`,`expt_template`\\.`expt_type`,`expt_template`\\.`cron_activate`,`expt_template`\\.`template_conf`,`expt_template`\\.`expt_info`,`expt_template`\\.`created_by`,`expt_template`\\.`updated_by`,`expt_template`\\.`created_at`,`expt_template`\\.`updated_at`,`expt_template`\\.`deleted_at` FROM `expt_template` INNER JOIN expt_template_evaluator_ref ON expt_template.id = expt_template_evaluator_ref.expt_template_id WHERE expt_template.space_id = \\? AND expt_template.deleted_at IS NULL AND expt_template_evaluator_ref.evaluator_id IN \\(\\?\\) AND `expt_template`\\.`deleted_at` IS NULL GROUP BY `expt_template`\\.`id` ORDER BY expt_template.created_at asc LIMIT \\? OFFSET \\?" + countSQL := "SELECT count\\(\\*\\) FROM `expt_template` INNER JOIN expt_template_evaluator_ref ON expt_template.id = expt_template_evaluator_ref.expt_template_id WHERE expt_template.space_id = \\? AND expt_template.deleted_at IS NULL AND expt_template\\.visibility <> \\? AND expt_template_evaluator_ref.evaluator_id IN \\(\\?\\) AND `expt_template`\\.`deleted_at` IS NULL GROUP BY `expt_template`\\.`id` ORDER BY expt_template.created_at asc" + findSQL := "SELECT `expt_template`\\.`id`,`expt_template`\\.`space_id`,`expt_template`\\.`name`,`expt_template`\\.`description`,`expt_template`\\.`eval_set_id`,`expt_template`\\.`eval_set_version_id`,`expt_template`\\.`target_id`,`expt_template`\\.`target_type`,`expt_template`\\.`target_version_id`,`expt_template`\\.`expt_type`,`expt_template`\\.`cron_activate`,`expt_template`\\.`template_conf`,`expt_template`\\.`expt_info`,`expt_template`\\.`created_by`,`expt_template`\\.`updated_by`,`expt_template`\\.`created_at`,`expt_template`\\.`updated_at`,`expt_template`\\.`deleted_at`,`expt_template`\\.`visibility` FROM `expt_template` INNER JOIN expt_template_evaluator_ref ON expt_template.id = expt_template_evaluator_ref.expt_template_id WHERE expt_template.space_id = \\? AND expt_template.deleted_at IS NULL AND expt_template\\.visibility <> \\? AND expt_template_evaluator_ref.evaluator_id IN \\(\\?\\) AND `expt_template`\\.`deleted_at` IS NULL GROUP BY `expt_template`\\.`id` ORDER BY expt_template.created_at asc LIMIT \\? OFFSET \\?" mock.ExpectQuery(countSQL). - WithArgs(100, 1001). + WithArgs(100, int32(1), 1001). WillReturnRows(countRows) mock.ExpectQuery(findSQL). - WithArgs(100, 1001, 5, 5). + WithArgs(100, int32(1), 1001, 5, 5). WillReturnRows(sqlmock.NewRows([]string{"id"})) field := "created_at" diff --git a/backend/modules/evaluation/infra/repo/experiment/mysql/gorm_gen/model/experiment.gen.go b/backend/modules/evaluation/infra/repo/experiment/mysql/gorm_gen/model/experiment.gen.go index 345f6e058..4a91ec0e3 100644 --- a/backend/modules/evaluation/infra/repo/experiment/mysql/gorm_gen/model/experiment.gen.go +++ b/backend/modules/evaluation/infra/repo/experiment/mysql/gorm_gen/model/experiment.gen.go @@ -14,32 +14,35 @@ const TableNameExperiment = "experiment" // Experiment experiment type Experiment struct { - ID int64 `gorm:"column:id;type:bigint(20) unsigned;primaryKey;comment:id" json:"id"` // id - SpaceID int64 `gorm:"column:space_id;type:bigint(20) unsigned;not null;uniqueIndex:uk_expt_item_idx,priority:1;index:idx_space_deleted_created_by,priority:1;index:idx_space_deleted_status,priority:1;index:idx_deleted_dataset,priority:1;index:idx_deleted_target_type,priority:1;index:idx_target_id_delete_at,priority:1;index:idx_eval_set_id_delete_at,priority:1;index:idx_space_start_at,priority:1;index:idx_space_end_at,priority:1;index:idx_space_expt_template_id_delete_at,priority:1;index:idx_space_trigger_type_delete_at,priority:1;comment:空间 id" json:"space_id"` // 空间 id - CreatedBy string `gorm:"column:created_by;type:varchar(128) character set utf8mb4;not null;index:idx_space_deleted_created_by,priority:2;comment:创建者 id" json:"created_by"` // 创建者 id - Name string `gorm:"column:name;type:varchar(255) character set utf8mb4;not null;uniqueIndex:uk_expt_item_idx,priority:2;comment:实验名称" json:"name"` // 实验名称 - Description string `gorm:"column:description;type:varchar(1024) character set utf8mb4;not null;comment:实验描述" json:"description"` // 实验描述 - EvalSetVersionID int64 `gorm:"column:eval_set_version_id;type:bigint(20) unsigned;not null;index:idx_deleted_dataset,priority:2;comment:评测集版本 id" json:"eval_set_version_id"` // 评测集版本 id - TargetType int64 `gorm:"column:target_type;type:bigint(20) unsigned;not null;index:idx_deleted_target_type,priority:2;comment:评估对象类型" json:"target_type"` // 评估对象类型 - TargetVersionID int64 `gorm:"column:target_version_id;type:bigint(20) unsigned;not null;comment:评估对象版本 id" json:"target_version_id"` // 评估对象版本 id - EvalConf *[]byte `gorm:"column:eval_conf;type:blob binary;comment:实验评估流程配置" json:"eval_conf"` // 实验评估流程配置 - Status int32 `gorm:"column:status;type:int(11) unsigned;not null;index:idx_space_deleted_status,priority:2;comment:状态" json:"status"` // 状态 - StatusMessage *[]byte `gorm:"column:status_message;type:blob binary;comment:状态提示信息" json:"status_message"` // 状态提示信息 - StartAt *time.Time `gorm:"column:start_at;type:timestamp;index:idx_space_start_at,priority:2;comment:开始执行时间" json:"start_at"` // 开始执行时间 - EndAt *time.Time `gorm:"column:end_at;type:timestamp;index:idx_space_end_at,priority:2;comment:结束执行时间" json:"end_at"` // 结束执行时间 - CreatedAt time.Time `gorm:"column:created_at;type:timestamp;not null;default:CURRENT_TIMESTAMP;comment:创建时间" json:"created_at"` // 创建时间 - UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp;not null;default:CURRENT_TIMESTAMP;comment:更新时间" json:"updated_at"` // 更新时间 - DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;type:timestamp;uniqueIndex:uk_expt_item_idx,priority:3;index:idx_space_deleted_created_by,priority:3;index:idx_space_deleted_status,priority:3;index:idx_deleted_dataset,priority:3;index:idx_deleted_target_type,priority:3;index:idx_target_id_delete_at,priority:3;index:idx_eval_set_id_delete_at,priority:3;index:idx_space_expt_template_id_delete_at,priority:3;index:idx_space_trigger_type_delete_at,priority:3;comment:删除时间" json:"deleted_at"` // 删除时间 - LatestRunID int64 `gorm:"column:latest_run_id;type:bigint(20) unsigned;not null;comment:最后运行id" json:"latest_run_id"` // 最后运行id - TargetID int64 `gorm:"column:target_id;type:bigint(20) unsigned;not null;index:idx_target_id_delete_at,priority:2;comment:评估对象 id" json:"target_id"` // 评估对象 id - EvalSetID int64 `gorm:"column:eval_set_id;type:bigint(20) unsigned;not null;index:idx_eval_set_id_delete_at,priority:2;comment:评测集 id" json:"eval_set_id"` // 评测集 id - ExptTemplateID int64 `gorm:"column:expt_template_id;type:bigint(20) unsigned;not null;index:idx_space_expt_template_id_delete_at,priority:2;comment:实验模板 id" json:"expt_template_id"` // 实验模板 id - CreditCost int32 `gorm:"column:credit_cost;type:int(11);not null;comment:权益消耗模式" json:"credit_cost"` // 权益消耗模式 - SourceType int32 `gorm:"column:source_type;type:int(11) unsigned;not null;index:idx_source_type_source_id,priority:1;default:1;comment:实验来源类型,评测:1,自动化任务:2..." json:"source_type"` // 实验来源类型,评测:1,自动化任务:2... - SourceID string `gorm:"column:source_id;type:varchar(128) character set utf8mb4;not null;index:idx_source_type_source_id,priority:2;default:0;comment:实验来源id" json:"source_id"` // 实验来源id - ExptType int32 `gorm:"column:expt_type;type:int(11) unsigned;not null;default:1;comment:实验类型,offline:1,online:2..." json:"expt_type"` // 实验类型,offline:1,online:2... - MaxAliveTime *int64 `gorm:"column:max_alive_time;type:bigint(20) unsigned;comment:最大存活时间" json:"max_alive_time"` // 最大存活时间 - TriggerType string `gorm:"column:trigger_type;type:varchar(32) character set utf8mb4;not null;index:idx_space_trigger_type_delete_at,priority:2;default:manual;comment:实验触发方式:manual/openapi/schedule" json:"trigger_type"` // 实验触发方式:manual/openapi/schedule + ID int64 `gorm:"column:id;type:bigint(20) unsigned;primaryKey;comment:id" json:"id"` // id + SpaceID int64 `gorm:"column:space_id;type:bigint(20) unsigned;not null;uniqueIndex:uk_expt_item_idx,priority:1;index:idx_space_deleted_created_by,priority:1;index:idx_space_deleted_status,priority:1;index:idx_deleted_dataset,priority:1;index:idx_deleted_target_type,priority:1;index:idx_target_id_delete_at,priority:1;index:idx_eval_set_id_delete_at,priority:1;index:idx_space_start_at,priority:1;index:idx_space_end_at,priority:1;index:idx_space_expt_template_id_delete_at,priority:1;index:idx_space_trigger_type_delete_at,priority:1;comment:空间 id" json:"space_id"` // 空间 id + CreatedBy string `gorm:"column:created_by;type:varchar(128) character set utf8mb4;not null;index:idx_space_deleted_created_by,priority:2;comment:创建者 id" json:"created_by"` // 创建者 id + Name string `gorm:"column:name;type:varchar(255) character set utf8mb4;not null;uniqueIndex:uk_expt_item_idx,priority:2;comment:实验名称" json:"name"` // 实验名称 + Description string `gorm:"column:description;type:varchar(1024) character set utf8mb4;not null;comment:实验描述" json:"description"` // 实验描述 + EvalSetVersionID int64 `gorm:"column:eval_set_version_id;type:bigint(20) unsigned;not null;index:idx_deleted_dataset,priority:2;comment:评测集版本 id" json:"eval_set_version_id"` // 评测集版本 id + TargetType int64 `gorm:"column:target_type;type:bigint(20) unsigned;not null;index:idx_deleted_target_type,priority:2;comment:评估对象类型" json:"target_type"` // 评估对象类型 + TargetVersionID int64 `gorm:"column:target_version_id;type:bigint(20) unsigned;not null;comment:评估对象版本 id" json:"target_version_id"` // 评估对象版本 id + EvalConf *[]byte `gorm:"column:eval_conf;type:blob binary;comment:实验评估流程配置" json:"eval_conf"` // 实验评估流程配置 + Status int32 `gorm:"column:status;type:int(11) unsigned;not null;index:idx_space_deleted_status,priority:2;comment:状态" json:"status"` // 状态 + StatusMessage *[]byte `gorm:"column:status_message;type:blob binary;comment:状态提示信息" json:"status_message"` // 状态提示信息 + StartAt *time.Time `gorm:"column:start_at;type:timestamp;index:idx_space_start_at,priority:2;comment:开始执行时间" json:"start_at"` // 开始执行时间 + EndAt *time.Time `gorm:"column:end_at;type:timestamp;index:idx_space_end_at,priority:2;comment:结束执行时间" json:"end_at"` // 结束执行时间 + CreatedAt time.Time `gorm:"column:created_at;type:timestamp;not null;default:CURRENT_TIMESTAMP;comment:创建时间" json:"created_at"` // 创建时间 + UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp;not null;default:CURRENT_TIMESTAMP;comment:更新时间" json:"updated_at"` // 更新时间 + DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;type:timestamp;uniqueIndex:uk_expt_item_idx,priority:3;index:idx_space_deleted_created_by,priority:3;index:idx_space_deleted_status,priority:3;index:idx_deleted_dataset,priority:3;index:idx_deleted_target_type,priority:3;index:idx_target_id_delete_at,priority:3;index:idx_eval_set_id_delete_at,priority:3;index:idx_space_expt_template_id_delete_at,priority:3;index:idx_space_trigger_type_delete_at,priority:3;comment:删除时间" json:"deleted_at"` // 删除时间 + LatestRunID int64 `gorm:"column:latest_run_id;type:bigint(20) unsigned;not null;comment:最后运行id" json:"latest_run_id"` // 最后运行id + TargetID int64 `gorm:"column:target_id;type:bigint(20) unsigned;not null;index:idx_target_id_delete_at,priority:2;comment:评估对象 id" json:"target_id"` // 评估对象 id + EvalSetID int64 `gorm:"column:eval_set_id;type:bigint(20) unsigned;not null;index:idx_eval_set_id_delete_at,priority:2;comment:评测集 id" json:"eval_set_id"` // 评测集 id + ExptTemplateID int64 `gorm:"column:expt_template_id;type:bigint(20) unsigned;not null;index:idx_space_expt_template_id_delete_at,priority:2;comment:实验模板 id" json:"expt_template_id"` // 实验模板 id + CreditCost int32 `gorm:"column:credit_cost;type:int(11);not null;comment:权益消耗模式" json:"credit_cost"` // 权益消耗模式 + SourceType int32 `gorm:"column:source_type;type:int(11) unsigned;not null;index:idx_source_type_source_id,priority:1;default:1;comment:实验来源类型,评测:1,自动化任务:2..." json:"source_type"` // 实验来源类型,评测:1,自动化任务:2... + SourceID string `gorm:"column:source_id;type:varchar(128) character set utf8mb4;not null;index:idx_source_type_source_id,priority:2;default:0;comment:实验来源id" json:"source_id"` // 实验来源id + ExptType int32 `gorm:"column:expt_type;type:int(11) unsigned;not null;default:1;comment:实验类型,offline:1,online:2..." json:"expt_type"` // 实验类型,offline:1,online:2... + MaxAliveTime *int64 `gorm:"column:max_alive_time;type:bigint(20) unsigned;comment:最大存活时间" json:"max_alive_time"` // 最大存活时间 + TriggerType string `gorm:"column:trigger_type;type:varchar(32) character set utf8mb4;not null;index:idx_space_trigger_type_delete_at,priority:2;default:manual;comment:实验触发方式:manual/openapi/schedule" json:"trigger_type"` // 实验触发方式:manual/openapi/schedule + Visibility int32 `gorm:"column:visibility;type:int(11) unsigned;not null;comment:可见性,默认0-可见,1-隐藏" json:"visibility"` // 可见性,默认0-可见,1-隐藏 + ThreadID *string `gorm:"column:thread_id;type:varchar(255);comment:智能生成会话ID" json:"thread_id"` // 智能生成会话ID + TrialRunItemCount *int64 `gorm:"column:trial_run_item_count;type:bigint(20) unsigned;comment:试运行行数" json:"trial_run_item_count"` // 试运行行数 } // TableName Experiment's table name diff --git a/backend/modules/evaluation/infra/repo/experiment/mysql/gorm_gen/model/expt_template.gen.go b/backend/modules/evaluation/infra/repo/experiment/mysql/gorm_gen/model/expt_template.gen.go index 1692399e9..3f99c9f9c 100644 --- a/backend/modules/evaluation/infra/repo/experiment/mysql/gorm_gen/model/expt_template.gen.go +++ b/backend/modules/evaluation/infra/repo/experiment/mysql/gorm_gen/model/expt_template.gen.go @@ -32,6 +32,7 @@ type ExptTemplate struct { CreatedAt time.Time `gorm:"column:created_at;type:timestamp;not null;default:CURRENT_TIMESTAMP;comment:创建时间" json:"created_at"` // 创建时间 UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp;not null;default:CURRENT_TIMESTAMP;comment:更新时间" json:"updated_at"` // 更新时间 DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;type:timestamp;uniqueIndex:uk_space_id_name_deleted_at,priority:3;index:idx_space_id_created_by_deleted_at,priority:3;index:idx_space_id_eval_set_id_deleted_at,priority:3;index:idx_space_id_target_id_deleted_at,priority:3;index:idx_space_id_expt_type_deleted_at,priority:3;comment:删除时间" json:"deleted_at"` // 删除时间 + Visibility int32 `gorm:"column:visibility;type:int(11) unsigned;not null;comment:可见性,默认0-可见,1-隐藏" json:"visibility"` // 可见性,默认0-可见,1-隐藏 } // TableName ExptTemplate's table name diff --git a/backend/modules/evaluation/infra/repo/experiment/mysql/gorm_gen/query/experiment.gen.go b/backend/modules/evaluation/infra/repo/experiment/mysql/gorm_gen/query/experiment.gen.go index 0df74cd52..cf57e7e0f 100644 --- a/backend/modules/evaluation/infra/repo/experiment/mysql/gorm_gen/query/experiment.gen.go +++ b/backend/modules/evaluation/infra/repo/experiment/mysql/gorm_gen/query/experiment.gen.go @@ -53,6 +53,9 @@ func newExperiment(db *gorm.DB, opts ...gen.DOOption) experiment { _experiment.ExptType = field.NewInt32(tableName, "expt_type") _experiment.MaxAliveTime = field.NewInt64(tableName, "max_alive_time") _experiment.TriggerType = field.NewString(tableName, "trigger_type") + _experiment.Visibility = field.NewInt32(tableName, "visibility") + _experiment.ThreadID = field.NewString(tableName, "thread_id") + _experiment.TrialRunItemCount = field.NewInt64(tableName, "trial_run_item_count") _experiment.fillFieldMap() @@ -63,33 +66,36 @@ func newExperiment(db *gorm.DB, opts ...gen.DOOption) experiment { type experiment struct { experimentDo experimentDo - ALL field.Asterisk - ID field.Int64 // id - SpaceID field.Int64 // 空间 id - CreatedBy field.String // 创建者 id - Name field.String // 实验名称 - Description field.String // 实验描述 - EvalSetVersionID field.Int64 // 评测集版本 id - TargetType field.Int64 // 评估对象类型 - TargetVersionID field.Int64 // 评估对象版本 id - EvalConf field.Bytes // 实验评估流程配置 - Status field.Int32 // 状态 - StatusMessage field.Bytes // 状态提示信息 - StartAt field.Time // 开始执行时间 - EndAt field.Time // 结束执行时间 - CreatedAt field.Time // 创建时间 - UpdatedAt field.Time // 更新时间 - DeletedAt field.Field // 删除时间 - LatestRunID field.Int64 // 最后运行id - TargetID field.Int64 // 评估对象 id - EvalSetID field.Int64 // 评测集 id - ExptTemplateID field.Int64 // 实验模板 id - CreditCost field.Int32 // 权益消耗模式 - SourceType field.Int32 // 实验来源类型,评测:1,自动化任务:2... - SourceID field.String // 实验来源id - ExptType field.Int32 // 实验类型,offline:1,online:2... - MaxAliveTime field.Int64 // 最大存活时间 - TriggerType field.String // 实验触发方式:manual/openapi/schedule + ALL field.Asterisk + ID field.Int64 // id + SpaceID field.Int64 // 空间 id + CreatedBy field.String // 创建者 id + Name field.String // 实验名称 + Description field.String // 实验描述 + EvalSetVersionID field.Int64 // 评测集版本 id + TargetType field.Int64 // 评估对象类型 + TargetVersionID field.Int64 // 评估对象版本 id + EvalConf field.Bytes // 实验评估流程配置 + Status field.Int32 // 状态 + StatusMessage field.Bytes // 状态提示信息 + StartAt field.Time // 开始执行时间 + EndAt field.Time // 结束执行时间 + CreatedAt field.Time // 创建时间 + UpdatedAt field.Time // 更新时间 + DeletedAt field.Field // 删除时间 + LatestRunID field.Int64 // 最后运行id + TargetID field.Int64 // 评估对象 id + EvalSetID field.Int64 // 评测集 id + ExptTemplateID field.Int64 // 实验模板 id + CreditCost field.Int32 // 权益消耗模式 + SourceType field.Int32 // 实验来源类型,评测:1,自动化任务:2... + SourceID field.String // 实验来源id + ExptType field.Int32 // 实验类型,offline:1,online:2... + MaxAliveTime field.Int64 // 最大存活时间 + TriggerType field.String // 实验触发方式:manual/openapi/schedule + Visibility field.Int32 // 可见性,默认0-可见,1-隐藏 + ThreadID field.String // 智能生成会话ID + TrialRunItemCount field.Int64 // 试运行行数 fieldMap map[string]field.Expr } @@ -132,6 +138,9 @@ func (e *experiment) updateTableName(table string) *experiment { e.ExptType = field.NewInt32(table, "expt_type") e.MaxAliveTime = field.NewInt64(table, "max_alive_time") e.TriggerType = field.NewString(table, "trigger_type") + e.Visibility = field.NewInt32(table, "visibility") + e.ThreadID = field.NewString(table, "thread_id") + e.TrialRunItemCount = field.NewInt64(table, "trial_run_item_count") e.fillFieldMap() @@ -158,7 +167,7 @@ func (e *experiment) GetFieldByName(fieldName string) (field.OrderExpr, bool) { } func (e *experiment) fillFieldMap() { - e.fieldMap = make(map[string]field.Expr, 26) + e.fieldMap = make(map[string]field.Expr, 29) e.fieldMap["id"] = e.ID e.fieldMap["space_id"] = e.SpaceID e.fieldMap["created_by"] = e.CreatedBy @@ -185,6 +194,9 @@ func (e *experiment) fillFieldMap() { e.fieldMap["expt_type"] = e.ExptType e.fieldMap["max_alive_time"] = e.MaxAliveTime e.fieldMap["trigger_type"] = e.TriggerType + e.fieldMap["visibility"] = e.Visibility + e.fieldMap["thread_id"] = e.ThreadID + e.fieldMap["trial_run_item_count"] = e.TrialRunItemCount } func (e experiment) clone(db *gorm.DB) experiment { diff --git a/backend/modules/evaluation/infra/repo/experiment/mysql/gorm_gen/query/expt_template.gen.go b/backend/modules/evaluation/infra/repo/experiment/mysql/gorm_gen/query/expt_template.gen.go index e7c6d212f..f074dafa8 100644 --- a/backend/modules/evaluation/infra/repo/experiment/mysql/gorm_gen/query/expt_template.gen.go +++ b/backend/modules/evaluation/infra/repo/experiment/mysql/gorm_gen/query/expt_template.gen.go @@ -45,6 +45,7 @@ func newExptTemplate(db *gorm.DB, opts ...gen.DOOption) exptTemplate { _exptTemplate.CreatedAt = field.NewTime(tableName, "created_at") _exptTemplate.UpdatedAt = field.NewTime(tableName, "updated_at") _exptTemplate.DeletedAt = field.NewField(tableName, "deleted_at") + _exptTemplate.Visibility = field.NewInt32(tableName, "visibility") _exptTemplate.fillFieldMap() @@ -74,6 +75,7 @@ type exptTemplate struct { CreatedAt field.Time // 创建时间 UpdatedAt field.Time // 更新时间 DeletedAt field.Field // 删除时间 + Visibility field.Int32 // 可见性,默认0-可见,1-隐藏 fieldMap map[string]field.Expr } @@ -108,6 +110,7 @@ func (e *exptTemplate) updateTableName(table string) *exptTemplate { e.CreatedAt = field.NewTime(table, "created_at") e.UpdatedAt = field.NewTime(table, "updated_at") e.DeletedAt = field.NewField(table, "deleted_at") + e.Visibility = field.NewInt32(table, "visibility") e.fillFieldMap() @@ -136,7 +139,7 @@ func (e *exptTemplate) GetFieldByName(fieldName string) (field.OrderExpr, bool) } func (e *exptTemplate) fillFieldMap() { - e.fieldMap = make(map[string]field.Expr, 18) + e.fieldMap = make(map[string]field.Expr, 19) e.fieldMap["id"] = e.ID e.fieldMap["space_id"] = e.SpaceID e.fieldMap["name"] = e.Name @@ -155,6 +158,7 @@ func (e *exptTemplate) fillFieldMap() { e.fieldMap["created_at"] = e.CreatedAt e.fieldMap["updated_at"] = e.UpdatedAt e.fieldMap["deleted_at"] = e.DeletedAt + e.fieldMap["visibility"] = e.Visibility } func (e exptTemplate) clone(db *gorm.DB) exptTemplate { diff --git a/backend/modules/evaluation/infra/repo/target/eval_target_repo_impl.go b/backend/modules/evaluation/infra/repo/target/eval_target_repo_impl.go index 774674034..a3d21d6b1 100644 --- a/backend/modules/evaluation/infra/repo/target/eval_target_repo_impl.go +++ b/backend/modules/evaluation/infra/repo/target/eval_target_repo_impl.go @@ -315,6 +315,18 @@ func (e *EvalTargetRepoImpl) GetEvalTargetRecordByIDAndSpaceID(ctx context.Conte return do, nil } +func (e *EvalTargetRepoImpl) GetEvalTargetRecordByRunItemTurn(ctx context.Context, spaceID, runID, itemID, turnID int64) (*entity.EvalTargetRecord, error) { + recordPO, err := e.evalTargetRecordDao.GetByRunIDItemIDTurnID(ctx, spaceID, runID, itemID, turnID) + if err != nil { + return nil, err + } + do, err := convertor.EvalTargetRecordPO2DO(recordPO) + if err != nil { + return nil, errorx.WrapByCode(err, errno.CommonInternalErrorCode) + } + return do, nil +} + func (e *EvalTargetRepoImpl) ListEvalTargetRecordByIDsAndSpaceID(ctx context.Context, spaceID int64, recordIDs []int64) ([]*entity.EvalTargetRecord, error) { recordPOList, err := e.evalTargetRecordDao.ListByIDsAndSpaceID(ctx, recordIDs, spaceID) if err != nil { diff --git a/backend/modules/evaluation/infra/repo/target/mysql/convertor/eval_target.go b/backend/modules/evaluation/infra/repo/target/mysql/convertor/eval_target.go index cbc2a8e3a..b29f53a2d 100644 --- a/backend/modules/evaluation/infra/repo/target/mysql/convertor/eval_target.go +++ b/backend/modules/evaluation/infra/repo/target/mysql/convertor/eval_target.go @@ -69,6 +69,11 @@ func EvalTargetVersionDO2PO(do *entity.EvalTargetVersion) (po *model.TargetVersi if err != nil { return nil, err } + case entity.EvalTargetTypeWebAgent: + meta, err = json.Marshal(do.WebAgent) + if err != nil { + return nil, err + } default: } if do.InputSchema != nil { @@ -213,6 +218,11 @@ func EvalTargetVersionPO2DO(targetVersionPO *model.TargetVersion, targetType ent if err := json.Unmarshal(*targetVersionPO.TargetMeta, meta); err == nil { targetVersionDO.CustomRPCServer = meta } + case entity.EvalTargetTypeWebAgent: + meta := &entity.WebAgent{} + if err := json.Unmarshal(*targetVersionPO.TargetMeta, meta); err == nil { + targetVersionDO.WebAgent = meta + } default: // todo } diff --git a/backend/modules/evaluation/infra/repo/target/mysql/eval_target_record.go b/backend/modules/evaluation/infra/repo/target/mysql/eval_target_record.go index b83c87d89..ecbb794d2 100644 --- a/backend/modules/evaluation/infra/repo/target/mysql/eval_target_record.go +++ b/backend/modules/evaluation/infra/repo/target/mysql/eval_target_record.go @@ -24,6 +24,7 @@ type EvalTargetRecordDAO interface { Save(ctx context.Context, record *model.TargetRecord) error Update(ctx context.Context, record *model.TargetRecord) error GetByIDAndSpaceID(ctx context.Context, recordID, spaceID int64) (*model.TargetRecord, error) + GetByRunIDItemIDTurnID(ctx context.Context, spaceID, runID, itemID, turnID int64) (*model.TargetRecord, error) ListByIDsAndSpaceID(ctx context.Context, recordIDs []int64, spaceID int64) ([]*model.TargetRecord, error) } @@ -73,6 +74,26 @@ func (e *EvalTargetRecordDAOImpl) GetByIDAndSpaceID(ctx context.Context, recordI return first, nil } +func (e *EvalTargetRecordDAOImpl) GetByRunIDItemIDTurnID(ctx context.Context, spaceID, runID, itemID, turnID int64) (*model.TargetRecord, error) { + q := e.query + first, err := q.WithContext(ctx).TargetRecord.Where( + q.TargetRecord.SpaceID.Eq(spaceID), + q.TargetRecord.ExperimentRunID.Eq(runID), + q.TargetRecord.ItemID.Eq(itemID), + q.TargetRecord.TurnID.Eq(turnID), + q.TargetRecord.DeletedAt.IsNull(), + ).First() + + if errors.Is(err, gorm.ErrRecordNotFound) { + return nil, nil + } + if err != nil { + return nil, errorx.WrapByCode(err, errno.CommonMySqlErrorCode) + } + + return first, nil +} + func (e *EvalTargetRecordDAOImpl) ListByIDsAndSpaceID(ctx context.Context, recordIDs []int64, spaceID int64) ([]*model.TargetRecord, error) { q := e.query if contexts.CtxWriteDB(ctx) { diff --git a/backend/modules/evaluation/infra/repo/target/mysql/mocks/eval_target_record.go b/backend/modules/evaluation/infra/repo/target/mysql/mocks/eval_target_record.go index bf857e051..9ebf6d1e5 100644 --- a/backend/modules/evaluation/infra/repo/target/mysql/mocks/eval_target_record.go +++ b/backend/modules/evaluation/infra/repo/target/mysql/mocks/eval_target_record.go @@ -71,6 +71,21 @@ func (mr *MockEvalTargetRecordDAOMockRecorder) GetByIDAndSpaceID(ctx, recordID, return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetByIDAndSpaceID", reflect.TypeOf((*MockEvalTargetRecordDAO)(nil).GetByIDAndSpaceID), ctx, recordID, spaceID) } +// GetByRunIDItemIDTurnID mocks base method. +func (m *MockEvalTargetRecordDAO) GetByRunIDItemIDTurnID(ctx context.Context, spaceID, runID, itemID, turnID int64) (*model.TargetRecord, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetByRunIDItemIDTurnID", ctx, spaceID, runID, itemID, turnID) + ret0, _ := ret[0].(*model.TargetRecord) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetByRunIDItemIDTurnID indicates an expected call of GetByRunIDItemIDTurnID. +func (mr *MockEvalTargetRecordDAOMockRecorder) GetByRunIDItemIDTurnID(ctx, spaceID, runID, itemID, turnID any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetByRunIDItemIDTurnID", reflect.TypeOf((*MockEvalTargetRecordDAO)(nil).GetByRunIDItemIDTurnID), ctx, spaceID, runID, itemID, turnID) +} + // ListByIDsAndSpaceID mocks base method. func (m *MockEvalTargetRecordDAO) ListByIDsAndSpaceID(ctx context.Context, recordIDs []int64, spaceID int64) ([]*model.TargetRecord, error) { m.ctrl.T.Helper() diff --git a/backend/modules/evaluation/pkg/conf/evaluator.go b/backend/modules/evaluation/pkg/conf/evaluator.go index 70518a635..b693b64d4 100755 --- a/backend/modules/evaluation/pkg/conf/evaluator.go +++ b/backend/modules/evaluation/pkg/conf/evaluator.go @@ -39,6 +39,7 @@ type IConfiger interface { CheckCustomRPCEvaluatorWritable(ctx context.Context, spaceID string, builtinSpaceIDs []string) (bool, error) // 检查当前空间是否可写Agent评估器 CheckAgentEvaluatorWritable(ctx context.Context) (bool, error) + CheckURIEnabled(ctx context.Context) bool } func NewEvaluatorConfiger(configFactory conf.IConfigLoaderFactory) IConfiger { @@ -279,3 +280,12 @@ func (c *evaluatorConfiger) CheckCustomRPCEvaluatorWritable(ctx context.Context, func (c *evaluatorConfiger) CheckAgentEvaluatorWritable(ctx context.Context) (bool, error) { return false, nil } + +func (c *evaluatorConfiger) CheckURIEnabled(ctx context.Context) bool { + const key = "check_uri_enabled" + var enabled bool + if c.loader.UnmarshalKey(ctx, key, &enabled) == nil { + return enabled + } + return true +} diff --git a/backend/modules/evaluation/pkg/conf/evaluator_test.go b/backend/modules/evaluation/pkg/conf/evaluator_test.go index daa7cec6e..da7f5961f 100644 --- a/backend/modules/evaluation/pkg/conf/evaluator_test.go +++ b/backend/modules/evaluation/pkg/conf/evaluator_test.go @@ -608,3 +608,61 @@ func TestConfiger_CheckCustomRPCEvaluatorWritable(t *testing.T) { }) } } + +func TestConfiger_CheckURIEnabled(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + mockLoader := mock_conf.NewMockIConfigLoader(ctrl) + c := &evaluatorConfiger{loader: mockLoader} + + ctx := context.Background() + + tests := []struct { + name string + mockSetup func() + expectedResult bool + }{ + { + name: "配置返回true", + mockSetup: func() { + mockLoader.EXPECT().UnmarshalKey(ctx, "check_uri_enabled", gomock.Any()).DoAndReturn( + func(_ context.Context, _ string, out any, _ ...conf.DecodeOptionFn) error { + ptr := out.(*bool) + *ptr = true + return nil + }, + ) + }, + expectedResult: true, + }, + { + name: "配置返回false", + mockSetup: func() { + mockLoader.EXPECT().UnmarshalKey(ctx, "check_uri_enabled", gomock.Any()).DoAndReturn( + func(_ context.Context, _ string, out any, _ ...conf.DecodeOptionFn) error { + ptr := out.(*bool) + *ptr = false + return nil + }, + ) + }, + expectedResult: false, + }, + { + name: "配置读取失败返回默认值true", + mockSetup: func() { + mockLoader.EXPECT().UnmarshalKey(ctx, "check_uri_enabled", gomock.Any()).Return(errors.New("not found")) + }, + expectedResult: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + tt.mockSetup() + result := c.CheckURIEnabled(ctx) + assert.Equal(t, tt.expectedResult, result) + }) + } +} diff --git a/backend/modules/evaluation/pkg/conf/mocks/evaluator_configer.go b/backend/modules/evaluation/pkg/conf/mocks/evaluator_configer.go index 5e83f4f7c..aa7fc1bcf 100644 --- a/backend/modules/evaluation/pkg/conf/mocks/evaluator_configer.go +++ b/backend/modules/evaluation/pkg/conf/mocks/evaluator_configer.go @@ -57,6 +57,20 @@ func (mr *MockIConfigerMockRecorder) CheckAgentEvaluatorWritable(ctx any) *gomoc return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CheckAgentEvaluatorWritable", reflect.TypeOf((*MockIConfiger)(nil).CheckAgentEvaluatorWritable), ctx) } +// CheckURIEnabled mocks base method. +func (m *MockIConfiger) CheckURIEnabled(ctx context.Context) bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CheckURIEnabled", ctx) + ret0, _ := ret[0].(bool) + return ret0 +} + +// CheckURIEnabled indicates an expected call of CheckURIEnabled. +func (mr *MockIConfigerMockRecorder) CheckURIEnabled(ctx any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CheckURIEnabled", reflect.TypeOf((*MockIConfiger)(nil).CheckURIEnabled), ctx) +} + // CheckCustomRPCEvaluatorWritable mocks base method. func (m *MockIConfiger) CheckCustomRPCEvaluatorWritable(ctx context.Context, spaceID string, builtinSpaceIDs []string) (bool, error) { m.ctrl.T.Helper() diff --git a/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.eval_target.thrift b/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.eval_target.thrift index b106121aa..92d0412e7 100644 --- a/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.eval_target.thrift +++ b/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.eval_target.thrift @@ -21,6 +21,7 @@ struct CreateEvalTargetParam { 6: optional eval_target.CustomEvalTarget custom_eval_target // type=6,并且有搜索对象,搜索结果信息通过这个字段透传 7: optional eval_target.Region region // 有区域限制需要填充这个字段 8: optional string env // 有环境限制需要填充这个字段 + 9: optional string operation_instruction // type=8时需填写,评测对象操作说明 } struct CreateEvalTargetResponse { @@ -189,6 +190,21 @@ struct BatchGetSourceEvalTargetsResponse { 255: base.BaseResp BaseResp } +struct GetSourceEvalTargetVersionRequest { + 1: required i64 workspace_id (api.js_conv="true", go.tag = 'json:"workspace_id"') + 2: optional string source_target_id + 3: optional string source_target_version + 4: optional eval_target.EvalTargetType target_type + + 255: optional base.Base Base +} + +struct GetSourceEvalTargetVersionResponse { + 1: optional eval_target.EvalTargetVersion eval_target_version + + 255: base.BaseResp BaseResp +} + struct ListSourceEvalTargetVersionsRequest { 1: required i64 workspace_id (api.js_conv='true', go.tag='json:"workspace_id"') 2: required string source_target_id @@ -312,6 +328,10 @@ service EvalTargetService { BatchGetSourceEvalTargetsResponse BatchGetSourceEvalTargets (1: BatchGetSourceEvalTargetsRequest request) ( api.category="eval_target", api.post = "/api/evaluation/v1/eval_targets/batch_get_source", api.op_type = 'query', api.tag = 'volc-agentkit' ) + // 获取Source评测对象版本的详情 + GetSourceEvalTargetVersionResponse GetSourceEvalTargetVersion (1: GetSourceEvalTargetVersionRequest request)( + api.category="eval_target", api.get = "/api/evaluation/v1/eval_targets/get_source_version", api.op_type = 'query', api.tag = 'volc-agentkit' + ) // 搜索自定义评测对象 SearchCustomEvalTargetResponse SearchCustomEvalTarget(1: SearchCustomEvalTargetRequest req) (api.category="eval_target", api.post = "/api/evaluation/v1/eval_targets/search_custom") diff --git a/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.expt.thrift b/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.expt.thrift index 00a01b7f1..4664a2c2a 100644 --- a/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.expt.thrift +++ b/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.expt.thrift @@ -17,6 +17,7 @@ struct CreateExperimentRequest { 6: optional string desc (api.body='desc') 7: optional i64 eval_set_id (api.body='eval_set_id', api.js_conv='true', go.tag='json:"eval_set_id"') 8: optional i64 target_id (api.body='target_id', api.js_conv='true', go.tag='json:"target_id"') + 9: optional expt.Visibility visibility (api.body='visibility') // 实验模板可见性,默认为空,可见 20: optional expt.TargetFieldMapping target_field_mapping (api.body = 'target_field_mapping') 21: optional list evaluator_field_mapping (api.body = 'evaluator_field_mapping') @@ -37,6 +38,9 @@ struct CreateExperimentRequest { 42: optional map evaluator_score_weights (api.body = 'evaluator_score_weights', go.tag='json:"evaluator_score_weights"') 43: optional i64 expt_template_id (api.body='expt_template_id',api.js_conv='true', go.tag='json:"expt_template_id"') 45: optional i32 item_retry_num (api.body = 'item_retry_num') + 46: optional i64 trial_run_item_count (api.body = 'trial_run_item_count') // 试运行行数 + + 60: optional string thread_id (api.body = 'thread_id') // 关联的智能评测会话ID 50: optional expt.ExptTriggerType trigger_type @@ -61,6 +65,7 @@ struct SubmitExperimentRequest { 6: optional string desc (api.body='desc') 7: optional i64 eval_set_id (api.body='eval_set_id',api.js_conv='true', go.tag='json:"eval_set_id"') 8: optional i64 target_id (api.body='target_id',api.js_conv='true', go.tag='json:"target_id"') + 9: optional expt.Visibility visibility (api.body = 'visibility') // 实验模板可见性,默认为空,可见 20: optional expt.TargetFieldMapping target_field_mapping (api.body = 'target_field_mapping') 21: optional list evaluator_field_mapping (api.body = 'evaluator_field_mapping') @@ -79,6 +84,10 @@ struct SubmitExperimentRequest { 41: optional bool enable_weighted_score (api.body = 'enable_weighted_score', go.tag='json:"enable_weighted_score"') 42: optional i64 expt_template_id (api.body='expt_template_id',api.js_conv='true', go.tag='json:"expt_template_id"') 45: optional i32 item_retry_num (api.body = 'item_retry_num') + 46: optional i64 trial_run_item_count (api.body = 'trial_run_item_count') // 试运行行数 + + // 智能评测相关 + 60: optional string thread_id (api.body = 'thread_id') // 关联的智能评测会话ID 50: optional expt.ExptTriggerType trigger_type 51: optional expt.TaskTimeRange time_range (api.body = 'time_range') @@ -171,6 +180,7 @@ struct RunExperimentRequest { 3: optional list item_ids (api.body = 'item_ids', api.js_conv = 'true', go.tag = 'json:"item_ids"') 10: optional expt.ExptType expt_type (api.body = 'expt_type') 11: optional i32 item_retry_num (api.body = 'item_retry_num') + 12: optional i64 trial_run_item_count (api.body = 'trial_run_item_count') // 试运行行数 100: optional map ext (api.body = 'ext') diff --git a/idl/thrift/coze/loop/evaluation/domain/eval_target.thrift b/idl/thrift/coze/loop/evaluation/domain/eval_target.thrift index fde126dd9..dde8acadd 100644 --- a/idl/thrift/coze/loop/evaluation/domain/eval_target.thrift +++ b/idl/thrift/coze/loop/evaluation/domain/eval_target.thrift @@ -44,6 +44,27 @@ struct EvalTargetContent { 104: optional VolcengineAgent volcengine_agent // EvalTargetType=6 时,传参此字段。 评测对象为 CustomRPCServer 时, 需要设置 CustomRPCServer 信息 105: optional CustomRPCServer custom_rpc_server + // EvalTargetType=8 时,传参此字段。 评测对象为 WebAgent 时, 需要设置 WebAgent 信息 + 106: optional WebAgent web_agent +} + +struct WebAgent { + 1: optional i64 id // 应用ID + + 2: optional string name // DTO使用,不存数据库 + 3: optional string description // DTO使用,不存数据库 + + 4: optional common.AgentConfig agent_config // agent config + 5: optional WebAgentTargetPromptConfig prompt_config // agent prompt config for agent +} + +struct WebAgentTargetPromptConfig { + 1: optional list message_list // 通过messge list的方式描述target的操作说明 + 2: optional WebAgentTargetPromptConfigOutputRule output_rule // 输出规则 +} + +struct WebAgentTargetPromptConfigOutputRule { + 1: optional common.Message message } enum EvalTargetType { @@ -55,6 +76,7 @@ enum EvalTargetType { CustomRPCServer = 6 // 自定义RPC服务 for内场 VolcengineAgentAgentkit = 7 // 火山智能体Agentkit + WebAgent = 8 // Web智能体 CozeBotOnline = 11 // CozeBot在线(评测过程中不执行对象,仅用于展示对象) CozeLoopPromptOnline = 12 // Prompt在线(评测过程中不执行对象,仅用于展示对象) @@ -241,6 +263,7 @@ struct EvalTargetOutputData { 2: optional EvalTargetUsage eval_target_usage // 运行消耗 3: optional EvalTargetRunError eval_target_run_error // 运行报错 4: optional i64 time_consuming_ms (api.js_conv='true', go.tag='json:\"time_consuming_ms\"') // 运行耗时 + 20: optional map ext // 平台扩展字段 } struct EvalTargetUsage { diff --git a/idl/thrift/coze/loop/evaluation/domain/evaluator.thrift b/idl/thrift/coze/loop/evaluation/domain/evaluator.thrift index 1f801ff61..3d05afac0 100644 --- a/idl/thrift/coze/loop/evaluation/domain/evaluator.thrift +++ b/idl/thrift/coze/loop/evaluation/domain/evaluator.thrift @@ -37,6 +37,9 @@ enum EvaluatorRunStatus { // 运行状态, 异步下状态流转, 同步下只 AsyncInvoking = 3 } +typedef string EvaluatorSourceType(ts.enum="true") +const EvaluatorSourceType EvaluatorSourceType_IntelligentGen = "intelligent_gen" // 智能生成 + typedef string EvaluatorTagType(ts.enum="true") const EvaluatorTagType EvaluatorTagType_Evaluator = "Evaluator" const EvaluatorTagType EvaluatorTagType_Template = "Template" @@ -177,6 +180,7 @@ struct Evaluator { 21: optional EvaluatorInfo evaluator_info (go.tag = 'json:"evaluator_info"') 22: optional string builtin_visible_version (go.tag = 'json:"builtin_visible_version"') 23: optional EvaluatorBoxType box_type (go.tag = 'json:"box_type"') // 默认白盒 + 24: optional EvaluatorSourceType source_type // 来源 100: optional map>> tags (go.tag = 'json:"tags"') } diff --git a/idl/thrift/coze/loop/evaluation/domain/expt.thrift b/idl/thrift/coze/loop/evaluation/domain/expt.thrift index 5e161932d..111264b24 100644 --- a/idl/thrift/coze/loop/evaluation/domain/expt.thrift +++ b/idl/thrift/coze/loop/evaluation/domain/expt.thrift @@ -33,8 +33,13 @@ enum SourceType { Evaluation = 1 AutoTask = 2 Workflow = 3 + IntelligentGen =4 // 智能生成 } +typedef string Visibility(ts.enum="true") +const Visibility Visibility_Hidden = "hidden" + + typedef string ExptTriggerType (ts.enum="true") const ExptTriggerType Manual = "manual" const ExptTriggerType OpenAPI = "openapi" @@ -50,6 +55,7 @@ struct Experiment { 7: optional i64 start_time (api.js_conv='true', go.tag='json:"start_time"') 8: optional i64 end_time (api.js_conv='true', go.tag='json:"end_time"') 9: optional i32 item_concur_num + 10: optional Visibility visibility // 实验可见性,默认为空,可见 21: optional i64 eval_set_version_id (api.js_conv='true', go.tag='json:"eval_set_version_id"') 22: optional i64 target_version_id (api.js_conv='true', go.tag='json:"target_version_id"') @@ -79,6 +85,8 @@ struct Experiment { 61: optional ExptScoreWeight score_weight_config 62: optional bool enable_weighted_score + // 智能评测相关 + 63: optional string thread_id// 关联的智能评测会话ID // 触发方式 70: optional ExptTriggerType trigger_type 71: optional ExptSource expt_source @@ -91,6 +99,7 @@ struct ExptTemplateMeta { 3: optional string name 4: optional string desc 5: optional ExptType expt_type // 模板对应的实验类型,当前主要为 Offline + 6: optional Visibility visibility // 实验模板可见性,默认为空,可见 } // 实验三元组配置 diff --git a/idl/thrift/coze/loop/evaluation/domain_openapi/eval_target.thrift b/idl/thrift/coze/loop/evaluation/domain_openapi/eval_target.thrift index d7cc2ed5c..219db996d 100644 --- a/idl/thrift/coze/loop/evaluation/domain_openapi/eval_target.thrift +++ b/idl/thrift/coze/loop/evaluation/domain_openapi/eval_target.thrift @@ -107,6 +107,7 @@ struct EvalTargetOutputData { 2: optional EvalTargetUsage eval_target_usage // 运行消耗 3: optional EvalTargetRunError eval_target_run_error // 运行报错 4: optional i64 time_consuming_ms (api.js_conv='true', go.tag='json:\"time_consuming_ms\"') // 运行耗时 + 20: optional map ext // 平台扩展字段 } struct EvalTargetUsage { diff --git a/idl/thrift/coze/loop/observability/coze.loop.observability.ingestion.thrift b/idl/thrift/coze/loop/observability/coze.loop.observability.ingestion.thrift deleted file mode 100644 index 6495d8a8a..000000000 --- a/idl/thrift/coze/loop/observability/coze.loop.observability.ingestion.thrift +++ /dev/null @@ -1,7 +0,0 @@ -namespace go coze.loop.observability.ingestion - -include "../../../base.thrift" - -service IngestionService { - -} diff --git a/release/deployment/docker-compose/bootstrap/mysql-init/init-sql/evaluator.sql b/release/deployment/docker-compose/bootstrap/mysql-init/init-sql/evaluator.sql index a348a8886..7a39b2bc0 100644 --- a/release/deployment/docker-compose/bootstrap/mysql-init/init-sql/evaluator.sql +++ b/release/deployment/docker-compose/bootstrap/mysql-init/init-sql/evaluator.sql @@ -16,6 +16,7 @@ CREATE TABLE IF NOT EXISTS `evaluator` `builtin` int unsigned NOT NULL DEFAULT '2' COMMENT '是否预置,1:是;2:否', `box_type` int unsigned NOT NULL DEFAULT '1' COMMENT '黑白盒类型,1:白盒;2:黑盒', `builtin_visible_version` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '预置评估器最新可见版本号', + `source_type` int unsigned NOT NULL DEFAULT '0' COMMENT '来源类型, 默认0, 1-智能生成', PRIMARY KEY (`id`), KEY `idx_space_id_evaluator_type` (`space_id`, `evaluator_type`), KEY `idx_space_id_created_by` (`space_id`, `created_by`), diff --git a/release/deployment/docker-compose/bootstrap/mysql-init/init-sql/experiment.sql b/release/deployment/docker-compose/bootstrap/mysql-init/init-sql/experiment.sql index a74bf257f..c7753f4d7 100644 --- a/release/deployment/docker-compose/bootstrap/mysql-init/init-sql/experiment.sql +++ b/release/deployment/docker-compose/bootstrap/mysql-init/init-sql/experiment.sql @@ -26,6 +26,9 @@ CREATE TABLE IF NOT EXISTS `experiment` `expt_type` int unsigned NOT NULL DEFAULT '1' COMMENT '实验类型,offline:1,online:2...', `max_alive_time` bigint unsigned DEFAULT NULL COMMENT '最大存活时间', `trigger_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'manual' COMMENT '实验触发方式:manual/openapi/schedule', + `visibility` int unsigned NOT NULL DEFAULT '0' COMMENT '可见性,默认0-可见,1-隐藏', + `thread_id` varchar(255) DEFAULT NULL COMMENT '智能生成会话ID', + `trial_run_item_count` bigint unsigned DEFAULT NULL COMMENT '试运行行数', PRIMARY KEY (`id`), UNIQUE KEY `uk_expt_item_idx` (`space_id`, `name`, `deleted_at`), KEY `idx_space_deleted_created_by` (`space_id`, `created_by`, `deleted_at`), diff --git a/release/deployment/docker-compose/bootstrap/mysql-init/init-sql/expt_template.sql b/release/deployment/docker-compose/bootstrap/mysql-init/init-sql/expt_template.sql index 20d54aaf1..472141741 100644 --- a/release/deployment/docker-compose/bootstrap/mysql-init/init-sql/expt_template.sql +++ b/release/deployment/docker-compose/bootstrap/mysql-init/init-sql/expt_template.sql @@ -23,7 +23,7 @@ CREATE TABLE IF NOT EXISTS `expt_template` `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted_at` timestamp NULL DEFAULT NULL COMMENT '删除时间', - + `visibility` int unsigned NOT NULL DEFAULT '0' COMMENT '可见性,默认0-可见,1-隐藏', PRIMARY KEY (`id`), UNIQUE KEY `uk_space_id_name_deleted_at` (`space_id`, `name`, `deleted_at`), KEY `idx_space_id_created_by_deleted_at` (`space_id`, `created_by`, `deleted_at`),