From 6a3891c7ed79dd90c65fb51daa2decdb152ff9b0 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Fri, 6 Feb 2026 11:26:24 +0800 Subject: [PATCH 01/57] fix Change-Id: I3cc8ab48f8de1da5458dac51c99f29a634b23fe7 --- .../evaluation/application/evaluator_app.go | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/backend/modules/evaluation/application/evaluator_app.go b/backend/modules/evaluation/application/evaluator_app.go index 0b3944593..1f1684dc0 100644 --- a/backend/modules/evaluation/application/evaluator_app.go +++ b/backend/modules/evaluation/application/evaluator_app.go @@ -1040,6 +1040,11 @@ func (e *EvaluatorHandlerImpl) DebugEvaluator(ctx context.Context, request *eval return nil, errorx.NewByCode(errno.EvaluatorBenefitDenyCode) } + // 检查uri是否正确 + 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) @@ -1238,6 +1243,40 @@ func (e *EvaluatorHandlerImpl) CheckEvaluatorName(ctx context.Context, request * }, nil } +func (e *EvaluatorHandlerImpl) checkURIs(ctx context.Context, inputFields map[string]*evaluatorcommon.Content) error { + 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() == "" { + return errorx.NewByCode(errno.CommonInvalidParamCode, errorx.WithExtraMsg("image URI is empty")) + } + case evaluatorcommon.ContentTypeAudio: + if field.GetAudio() != nil && field.GetAudio().GetURI() == "" { + return errorx.NewByCode(errno.CommonInvalidParamCode, errorx.WithExtraMsg("audio URI is empty")) + } + case evaluatorcommon.ContentTypeVideo: + if field.GetVideo() != nil && field.GetVideo().GetURI() == "" { + 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 { From 586496222272c93e2bb616b77b97d052a3a575d5 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Fri, 6 Feb 2026 15:07:36 +0800 Subject: [PATCH 02/57] fix Change-Id: Icb168984120505e032e1a66d56678218ed570fbd --- .../evaluation/application/evaluator_app_test.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/backend/modules/evaluation/application/evaluator_app_test.go b/backend/modules/evaluation/application/evaluator_app_test.go index b4f50dbc7..cc41da826 100644 --- a/backend/modules/evaluation/application/evaluator_app_test.go +++ b/backend/modules/evaluation/application/evaluator_app_test.go @@ -5718,3 +5718,17 @@ func TestEvaluatorHandlerImpl_BatchGetEvaluators(t *testing.T) { }) } } + +// +// func TestName(t *testing.T) { +// inputFields := make(map[string]*evaluatorcommon.Content) +// err := json.Unmarshal([]byte(`{"image":{"content_type":"MultiPart","multi_part":[{"content_type":"Image","image":{"name":"test.jpg","url":"https://gjlv5sbrfw-psl.cn.oast-cn.bytedance.net/realtime_p/ssrf/fuceaabbcc.jpg","uri":"","storage_provider":4}}]}}`), &inputFields) +// if err != nil { +// return +// } +// e := EvaluatorHandlerImpl{} +// err = e.checkURIs(context.Background(), inputFields) +// if err != nil { +// panic(err) +// } +// } From 11ac16110a3330c79b3ca9815204dd7cd716453a Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Wed, 4 Mar 2026 15:51:27 +0800 Subject: [PATCH 03/57] fix Change-Id: I0d7735112495802bd500a46ebe4f54608481cd29 --- backend/modules/evaluation/application/evaluator_app.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/evaluation/application/evaluator_app.go b/backend/modules/evaluation/application/evaluator_app.go index 4261f04a3..80a813e54 100644 --- a/backend/modules/evaluation/application/evaluator_app.go +++ b/backend/modules/evaluation/application/evaluator_app.go @@ -1043,7 +1043,7 @@ func (e *EvaluatorHandlerImpl) DebugEvaluator(ctx context.Context, request *eval return nil, errorx.NewByCode(errno.EvaluatorBenefitDenyCode) } - // 检查uri是否正确 + // 检查uri是否传递 err = e.checkURIs(ctx, request.InputData.InputFields) if err != nil { return nil, err From 466b97baa76c7ec84f4f5c19f576fb312fb6e5f9 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Wed, 4 Mar 2026 17:20:44 +0800 Subject: [PATCH 04/57] fix Change-Id: Ie68fc964c2f2adcb31f61dd0c05f7a263bfdeece --- .../evaluation/application/eval_target_app.go | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/backend/modules/evaluation/application/eval_target_app.go b/backend/modules/evaluation/application/eval_target_app.go index a16ea6f88..3f41b598e 100644 --- a/backend/modules/evaluation/application/eval_target_app.go +++ b/backend/modules/evaluation/application/eval_target_app.go @@ -5,10 +5,13 @@ package application import ( "context" + "fmt" "strconv" "sync" "time" + "github.com/pkg/errors" + "github.com/bytedance/gg/gmap" "github.com/bytedance/gg/gptr" @@ -27,6 +30,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{} @@ -547,9 +551,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() { @@ -575,14 +581,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()) } } From fb77bc8ec0570f95fcb4fbbc6165189042aa78df Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Tue, 17 Mar 2026 21:26:57 +0800 Subject: [PATCH 05/57] =?UTF-8?q?=E6=96=B0=E5=A2=9EGetSourceEvalTargetVers?= =?UTF-8?q?ion=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I98a9560b267b31583d0bf3aab5fab43c4d1de6c8 --- .../loop/apis/evaltargetservice/client.go | 6 + .../evaltargetservice/evaltargetservice.go | 36 + .../coze.loop.evaluation.eval_target.go | 5360 ++++++++++------- ...e.loop.evaluation.eval_target_validator.go | 21 + .../eval_target/evaltargetservice/client.go | 6 + .../evaltargetservice/evaltargetservice.go | 36 + .../k-coze.loop.evaluation.eval_target.go | 752 +++ .../evaluation/evaltargetservice/client.go | 6 + .../evaltargetservice/evaltargetservice.go | 36 + .../loeval_target/local_evaltargetservice.go | 23 + .../evaluation/application/eval_target_app.go | 43 + .../coze.loop.evaluation.eval_target.thrift | 19 + 12 files changed, 4223 insertions(+), 2121 deletions(-) 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/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..0576f2086 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 @@ -8728,132 +8728,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 +8870,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 +8914,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 +8929,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 +8943,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 +8986,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 +9004,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 +9030,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 +9046,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 +9060,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 +9078,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 +9096,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 +9119,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 +9139,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 +9151,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 { - - if strings.Compare(p.SourceTargetID, src) != 0 { - return false - } - return true -} -func (p *ListSourceEvalTargetVersionsRequest) Field3DeepEqual(src *eval_target.EvalTargetType) bool { +func (p *GetSourceEvalTargetVersionRequest) Field2DeepEqual(src *string) bool { - if p.TargetType == src { + if p.SourceTargetID == src { return true - } else if p.TargetType == nil || src == nil { + } else if p.SourceTargetID == nil || src == nil { return false } - if *p.TargetType != *src { + if strings.Compare(*p.SourceTargetID, *src) != 0 { return false } return true } -func (p *ListSourceEvalTargetVersionsRequest) Field100DeepEqual(src *int32) bool { +func (p *GetSourceEvalTargetVersionRequest) Field3DeepEqual(src *string) 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 +9202,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"` +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"` } -func NewListSourceEvalTargetVersionsResponse() *ListSourceEvalTargetVersionsResponse { - return &ListSourceEvalTargetVersionsResponse{} +func NewGetSourceEvalTargetVersionResponse() *GetSourceEvalTargetVersionResponse { + return &GetSourceEvalTargetVersionResponse{} } -func (p *ListSourceEvalTargetVersionsResponse) InitDefault() { +func (p *GetSourceEvalTargetVersionResponse) InitDefault() { } -var ListSourceEvalTargetVersionsResponse_Versions_DEFAULT []*eval_target.EvalTargetVersion +var GetSourceEvalTargetVersionResponse_EvalTargetVersion_DEFAULT *eval_target.EvalTargetVersion -func (p *ListSourceEvalTargetVersionsResponse) GetVersions() (v []*eval_target.EvalTargetVersion) { +func (p *GetSourceEvalTargetVersionResponse) GetEvalTargetVersion() (v *eval_target.EvalTargetVersion) { if p == nil { return } - if !p.IsSetVersions() { - return ListSourceEvalTargetVersionsResponse_Versions_DEFAULT + if !p.IsSetEvalTargetVersion() { + return GetSourceEvalTargetVersionResponse_EvalTargetVersion_DEFAULT } - return p.Versions + return p.EvalTargetVersion } -var ListSourceEvalTargetVersionsResponse_NextPageToken_DEFAULT string +var GetSourceEvalTargetVersionResponse_BaseResp_DEFAULT *base.BaseResp -func (p *ListSourceEvalTargetVersionsResponse) GetNextPageToken() (v string) { +func (p *GetSourceEvalTargetVersionResponse) GetBaseResp() (v *base.BaseResp) { if p == nil { return } - if !p.IsSetNextPageToken() { - return ListSourceEvalTargetVersionsResponse_NextPageToken_DEFAULT + if !p.IsSetBaseResp() { + return GetSourceEvalTargetVersionResponse_BaseResp_DEFAULT } - return *p.NextPageToken + return p.BaseResp +} +func (p *GetSourceEvalTargetVersionResponse) SetEvalTargetVersion(val *eval_target.EvalTargetVersion) { + p.EvalTargetVersion = val +} +func (p *GetSourceEvalTargetVersionResponse) SetBaseResp(val *base.BaseResp) { + p.BaseResp = val } -var ListSourceEvalTargetVersionsResponse_HasMore_DEFAULT bool +var fieldIDToName_GetSourceEvalTargetVersionResponse = map[int16]string{ + 1: "eval_target_version", + 255: "BaseResp", +} -func (p *ListSourceEvalTargetVersionsResponse) GetHasMore() (v bool) { - if p == nil { - return - } - if !p.IsSetHasMore() { - return ListSourceEvalTargetVersionsResponse_HasMore_DEFAULT - } - return *p.HasMore -} - -var ListSourceEvalTargetVersionsResponse_BaseResp_DEFAULT *base.BaseResp - -func (p *ListSourceEvalTargetVersionsResponse) GetBaseResp() (v *base.BaseResp) { - if p == nil { - return - } - if !p.IsSetBaseResp() { - return ListSourceEvalTargetVersionsResponse_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 *ListSourceEvalTargetVersionsResponse) SetBaseResp(val *base.BaseResp) { - p.BaseResp = val -} - -var fieldIDToName_ListSourceEvalTargetVersionsResponse = map[int16]string{ - 1: "versions", - 100: "next_page_token", - 101: "has_more", - 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 +9276,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 +9310,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 +9320,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 +9337,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 +9347,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 +9369,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 +9387,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 +9404,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,262 +9427,147 @@ func (p *ListSourceEvalTargetVersionsResponse) DeepEqual(ano *ListSourceEvalTarg return true } -func (p *ListSourceEvalTargetVersionsResponse) Field1DeepEqual(src []*eval_target.EvalTargetVersion) bool { +func (p *GetSourceEvalTargetVersionResponse) Field1DeepEqual(src *eval_target.EvalTargetVersion) bool { - if len(p.Versions) != len(src) { + if !p.EvalTargetVersion.DeepEqual(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 { +func (p *GetSourceEvalTargetVersionResponse) Field255DeepEqual(src *base.BaseResp) bool { - if p.NextPageToken == src { - return true - } else if p.NextPageToken == nil || src == nil { - return false - } - if strings.Compare(*p.NextPageToken, *src) != 0 { + if !p.BaseResp.DeepEqual(src) { return false } return true } -func (p *ListSourceEvalTargetVersionsResponse) 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 +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"` } -func (p *ListSourceEvalTargetVersionsResponse) Field255DeepEqual(src *base.BaseResp) bool { - if !p.BaseResp.DeepEqual(src) { - return false - } - return true +func NewListSourceEvalTargetVersionsRequest() *ListSourceEvalTargetVersionsRequest { + return &ListSourceEvalTargetVersionsRequest{} } -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 (p *ListSourceEvalTargetVersionsRequest) InitDefault() { } -func NewSearchCustomEvalTargetRequest() *SearchCustomEvalTargetRequest { - return &SearchCustomEvalTargetRequest{} +func (p *ListSourceEvalTargetVersionsRequest) GetWorkspaceID() (v int64) { + if p != nil { + return p.WorkspaceID + } + return } -func (p *SearchCustomEvalTargetRequest) InitDefault() { +func (p *ListSourceEvalTargetVersionsRequest) GetSourceTargetID() (v string) { + if p != nil { + return p.SourceTargetID + } + return } -var SearchCustomEvalTargetRequest_WorkspaceID_DEFAULT int64 +var ListSourceEvalTargetVersionsRequest_TargetType_DEFAULT eval_target.EvalTargetType -func (p *SearchCustomEvalTargetRequest) GetWorkspaceID() (v int64) { +func (p *ListSourceEvalTargetVersionsRequest) GetTargetType() (v eval_target.EvalTargetType) { if p == nil { return } - if !p.IsSetWorkspaceID() { - return SearchCustomEvalTargetRequest_WorkspaceID_DEFAULT - } - return *p.WorkspaceID -} - -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 -} - -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 -} - -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 - } - return p.CustomRPCServer -} - -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 - } - return *p.Region -} - -var SearchCustomEvalTargetRequest_Env_DEFAULT string - -func (p *SearchCustomEvalTargetRequest) GetEnv() (v string) { - 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 +9588,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 +9597,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 +9646,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 +9669,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 { - - var _field *string - if v, err := iprot.ReadString(); err != nil { - return err - } else { - _field = &v - } - p.Keyword = _field - return nil -} -func (p *SearchCustomEvalTargetRequest) ReadField3(iprot thrift.TProtocol) error { - - var _field *int64 - if v, err := iprot.ReadI64(); err != nil { - return err - } else { - _field = &v - } - p.ApplicationID = _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 { +func (p *ListSourceEvalTargetVersionsRequest) ReadField2(iprot thrift.TProtocol) error { - var _field *eval_target.Region + var _field string if v, err := iprot.ReadString(); err != nil { return err } else { - _field = &v + _field = v } - p.Region = _field + p.SourceTargetID = _field return nil } -func (p *SearchCustomEvalTargetRequest) ReadField6(iprot thrift.TProtocol) error { +func (p *ListSourceEvalTargetVersionsRequest) ReadField3(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.Env = _field + p.TargetType = _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 +9718,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 +9729,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 +9738,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 +9756,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 +9786,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 +9802,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 +9818,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 +9836,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 +9854,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 +9872,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 +9891,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 +9908,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 +9926,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 +9964,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 +9976,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 +9984,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 +10150,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 +10160,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 +10180,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 +10194,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 +10205,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 +10214,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 +10254,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 +10280,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 +10298,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 +10316,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 +10333,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 +10362,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 +10375,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 +10387,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 +10399,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 +10407,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 *SearchCustomEvalTargetRequest) SetKeyword(val *string) { + p.Keyword = val } -func (p *DebugEvalTargetRequest) SetParam(val *string) { - p.Param = val +func (p *SearchCustomEvalTargetRequest) SetApplicationID(val *int64) { + p.ApplicationID = val } -func (p *DebugEvalTargetRequest) SetTargetRuntimeParam(val *common.RuntimeParam) { - p.TargetRuntimeParam = val +func (p *SearchCustomEvalTargetRequest) SetCustomRPCServer(val *eval_target.CustomRPCServer) { + p.CustomRPCServer = val } -func (p *DebugEvalTargetRequest) SetEnv(val *string) { +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 +10642,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 +10724,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 +10734,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 +10745,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 +10797,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 +10828,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 +10842,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 +10888,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 +10906,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 +10924,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 +10938,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,13 +10956,31 @@ 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) { +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, 12); err != nil { + if err = oprot.WriteFieldBegin("env", thrift.STRING, 6); err != nil { goto WriteFieldBeginError } if err := oprot.WriteString(*p.Env); err != nil { @@ -11368,16 +10992,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 6 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 6 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) writeField100(oprot thrift.TProtocol) (err error) { + if p.IsSetPageSize() { + if err = oprot.WriteFieldBegin("page_size", thrift.I32, 100); err != nil { goto WriteFieldBeginError } - if err := p.CustomRPCServer.Write(oprot); err != nil { + if err := oprot.WriteI32(*p.PageSize); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -11386,11 +11010,29 @@ 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 100 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 100 end error: ", p), err) } -func (p *DebugEvalTargetRequest) writeField255(oprot thrift.TProtocol) (err error) { +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 +11051,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 +11068,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 +11095,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 +11107,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 +11162,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 +11194,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 +11301,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 +11351,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,15 +11361,52 @@ 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 { +func (p *SearchCustomEvalTargetResponse) 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 *SearchCustomEvalTargetResponse) ReadField101(iprot thrift.TProtocol) error { + + 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 @@ -11652,9 +11415,9 @@ func (p *DebugEvalTargetResponse) ReadField255(iprot thrift.TProtocol) error { return nil } -func (p *DebugEvalTargetResponse) Write(oprot thrift.TProtocol) (err error) { +func (p *SearchCustomEvalTargetResponse) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 - if err = oprot.WriteStructBegin("DebugEvalTargetResponse"); err != nil { + if err = oprot.WriteStructBegin("SearchCustomEvalTargetResponse"); err != nil { goto WriteStructBeginError } if p != nil { @@ -11662,6 +11425,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,25 +11455,67 @@ 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 { - goto WriteFieldBeginError - } - if err := p.EvalTargetRecord.Write(oprot); 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.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } } - return nil + 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 *DebugEvalTargetResponse) writeField255(oprot thrift.TProtocol) (err error) { +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 := 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 *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 +11532,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 +11561,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 *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 *DebugEvalTargetResponse) Field255DeepEqual(src *base.BaseResp) bool { +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 +11606,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 +11621,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 +11743,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 +11864,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 +11874,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 +11885,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 +11897,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 +11908,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 +11916,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 +11927,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 +11935,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 +11944,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 +11996,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 +12014,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 +12032,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 +12050,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 +12068,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 +12086,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 +12104,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 +12123,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 +12161,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 +12173,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 +12185,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 +12197,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 +12216,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 +12231,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"` +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 NewMockEvalTargetOutputRequest() *MockEvalTargetOutputRequest { - return &MockEvalTargetOutputRequest{} +func NewDebugEvalTargetResponse() *DebugEvalTargetResponse { + return &DebugEvalTargetResponse{} } -func (p *MockEvalTargetOutputRequest) InitDefault() { +func (p *DebugEvalTargetResponse) InitDefault() { } -func (p *MockEvalTargetOutputRequest) GetWorkspaceID() (v int64) { - if p != nil { - return p.WorkspaceID - } - return -} +var DebugEvalTargetResponse_EvalTargetRecord_DEFAULT *eval_target.EvalTargetRecord -func (p *MockEvalTargetOutputRequest) GetSourceTargetID() (v int64) { - if p != nil { - return p.SourceTargetID - } - return -} - -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 +12305,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 +12333,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 +12347,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 +12376,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 +12398,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,11 +12416,11 @@ 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 { @@ -12706,200 +12428,217 @@ func (p *MockEvalTargetOutputRequest) writeField2(oprot thrift.TProtocol) (err e } return nil WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 255 begin error: ", p), err) WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) + return thrift.PrependError(fmt.Sprintf("%T write field 255 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 + +func (p *DebugEvalTargetResponse) String() string { + if p == nil { + return "" } - 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) + return fmt.Sprintf("DebugEvalTargetResponse(%+v)", *p) + } -func (p *MockEvalTargetOutputRequest) writeField4(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("target_type", thrift.I32, 4); err != nil { - goto WriteFieldBeginError + +func (p *DebugEvalTargetResponse) DeepEqual(ano *DebugEvalTargetResponse) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false } - if err := oprot.WriteI32(int32(p.TargetType)); err != nil { - return err + if !p.Field1DeepEqual(ano.EvalTargetRecord) { + return false } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError + if !p.Field255DeepEqual(ano.BaseResp) { + return false } - 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) + return true } -func (p *MockEvalTargetOutputRequest) String() string { - if p == nil { - return "" - } - return fmt.Sprintf("MockEvalTargetOutputRequest(%+v)", *p) - -} +func (p *DebugEvalTargetResponse) Field1DeepEqual(src *eval_target.EvalTargetRecord) 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.WorkspaceID) { - return false - } - if !p.Field2DeepEqual(ano.SourceTargetID) { - return false - } - if !p.Field3DeepEqual(ano.EvalTargetVersion) { - return false - } - if !p.Field4DeepEqual(ano.TargetType) { - return false - } - if !p.Field255DeepEqual(ano.Base) { + if !p.EvalTargetRecord.DeepEqual(src) { return false } return true } +func (p *DebugEvalTargetResponse) Field255DeepEqual(src *base.BaseResp) bool { -func (p *MockEvalTargetOutputRequest) Field1DeepEqual(src int64) bool { - - if p.WorkspaceID != src { + if !p.BaseResp.DeepEqual(src) { return false } return true } -func (p *MockEvalTargetOutputRequest) Field2DeepEqual(src int64) bool { - if p.SourceTargetID != src { - 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) Field3DeepEqual(src string) bool { - if strings.Compare(p.EvalTargetVersion, src) != 0 { - return false - } - return true +func NewAsyncDebugEvalTargetRequest() *AsyncDebugEvalTargetRequest { + return &AsyncDebugEvalTargetRequest{} } -func (p *MockEvalTargetOutputRequest) Field4DeepEqual(src eval_target.EvalTargetType) bool { - if p.TargetType != src { - return false - } - return true +func (p *AsyncDebugEvalTargetRequest) InitDefault() { } -func (p *MockEvalTargetOutputRequest) Field255DeepEqual(src *base.Base) bool { - if !p.Base.DeepEqual(src) { - return false +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,32 +12659,63 @@ 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 255: - if fieldTypeId == thrift.STRUCT { - if err = p.ReadField255(iprot); err != nil { + 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 } - default: - if err = iprot.Skip(fieldTypeId); err != nil { + 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 } - } - if err = iprot.ReadFieldEnd(); err != nil { + 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 { + 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 } } @@ -12953,17 +12723,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 +12737,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 +12770,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 +12823,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 +12861,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 +12879,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 +12897,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 +12988,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 + } + if !p.Field11DeepEqual(ano.TargetRuntimeParam) { + return false + } + if !p.Field12DeepEqual(ano.Env) { + return false + } + if !p.Field50DeepEqual(ano.CustomRPCServer) { + return false + } + if !p.Field255DeepEqual(ano.Base) { return false } return true } -func (p *AsyncDebugEvalTargetResponse) Field1DeepEqual(src int64) bool { +func (p *AsyncDebugEvalTargetRequest) Field1DeepEqual(src *int64) bool { - if p.InvokeID != src { + 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 *AsyncDebugEvalTargetResponse) Field2DeepEqual(src *string) bool { +func (p *AsyncDebugEvalTargetRequest) Field2DeepEqual(src *eval_target.EvalTargetType) bool { - if p.Callee == src { + if p.EvalTargetType == src { return true - } else if p.Callee == nil || src == nil { + } else if p.EvalTargetType == nil || src == nil { return false } - if strings.Compare(*p.Callee, *src) != 0 { + if *p.EvalTargetType != *src { return false } return true } -func (p *AsyncDebugEvalTargetResponse) Field255DeepEqual(src *base.BaseResp) bool { +func (p *AsyncDebugEvalTargetRequest) Field10DeepEqual(src *string) bool { - if !p.BaseResp.DeepEqual(src) { + 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 { -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.TargetRuntimeParam.DeepEqual(src) { + return false + } + return true } +func (p *AsyncDebugEvalTargetRequest) Field12DeepEqual(src *string) bool { -func NewMockEvalTargetOutputResponse() *MockEvalTargetOutputResponse { - return &MockEvalTargetOutputResponse{} + 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 { -func (p *MockEvalTargetOutputResponse) InitDefault() { + if !p.CustomRPCServer.DeepEqual(src) { + return false + } + return true } +func (p *AsyncDebugEvalTargetRequest) Field255DeepEqual(src *base.Base) bool { -var MockEvalTargetOutputResponse_EvalTarget_DEFAULT *eval_target.EvalTarget - -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 +13202,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 +13258,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 +13291,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 - } - - var _val string - if v, err := iprot.ReadString(); err != nil { - return err - } else { - _val = v - } + p.SourceTargetID = _field + return nil +} +func (p *MockEvalTargetOutputRequest) ReadField3(iprot thrift.TProtocol) error { - _field[_key] = _val - } - if err := iprot.ReadMapEnd(); err != nil { + var _field string + if v, err := iprot.ReadString(); err != nil { return err + } else { + _field = v } - p.MockOutput = _field + p.EvalTargetVersion = _field return nil } -func (p *MockEvalTargetOutputResponse) ReadField255(iprot thrift.TProtocol) error { - _field := base.NewBaseResp() +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.TargetType = _field + return nil +} +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 +13362,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 +13392,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 +13408,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,161 +13424,875 @@ 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) - - 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.TargetType != src { + return false + } + return true +} +func (p *MockEvalTargetOutputRequest) Field255DeepEqual(src *base.Base) bool { - AsyncDebugEvalTarget(ctx context.Context, request *AsyncDebugEvalTargetRequest) (r *AsyncDebugEvalTargetResponse, err error) - // mock输出数据 - MockEvalTargetOutput(ctx context.Context, request *MockEvalTargetOutputRequest) (r *MockEvalTargetOutputResponse, err error) + if !p.Base.DeepEqual(src) { + return false + } + return true } -type EvalTargetServiceClient struct { - c thrift.TClient +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"` } -func NewEvalTargetServiceClientFactory(t thrift.TTransport, f thrift.TProtocolFactory) *EvalTargetServiceClient { - return &EvalTargetServiceClient{ - c: thrift.NewTStandardClient(f.GetProtocol(t), f.GetProtocol(t)), - } +func NewAsyncDebugEvalTargetResponse() *AsyncDebugEvalTargetResponse { + return &AsyncDebugEvalTargetResponse{} } -func NewEvalTargetServiceClientProtocol(t thrift.TTransport, iprot thrift.TProtocol, oprot thrift.TProtocol) *EvalTargetServiceClient { - return &EvalTargetServiceClient{ - c: thrift.NewTStandardClient(iprot, oprot), - } +func (p *AsyncDebugEvalTargetResponse) InitDefault() { } -func NewEvalTargetServiceClient(c thrift.TClient) *EvalTargetServiceClient { - return &EvalTargetServiceClient{ - c: c, +func (p *AsyncDebugEvalTargetResponse) GetInvokeID() (v int64) { + if p != nil { + return p.InvokeID } + return } -func (p *EvalTargetServiceClient) Client_() thrift.TClient { - return p.c -} +var AsyncDebugEvalTargetResponse_Callee_DEFAULT string -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) GetCallee() (v string) { + if p == 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 - if err = p.Client_().Call(ctx, "BatchGetEvalTargetsBySource", &_args, &_result); err != nil { - return + if !p.IsSetCallee() { + return AsyncDebugEvalTargetResponse_Callee_DEFAULT } - return _result.GetSuccess(), nil + return *p.Callee } -func (p *EvalTargetServiceClient) GetEvalTargetVersion(ctx context.Context, request *GetEvalTargetVersionRequest) (r *GetEvalTargetVersionResponse, err error) { - var _args EvalTargetServiceGetEvalTargetVersionArgs - _args.Request = request - var _result EvalTargetServiceGetEvalTargetVersionResult - if err = p.Client_().Call(ctx, "GetEvalTargetVersion", &_args, &_result); err != nil { + +var AsyncDebugEvalTargetResponse_BaseResp_DEFAULT *base.BaseResp + +func (p *AsyncDebugEvalTargetResponse) GetBaseResp() (v *base.BaseResp) { + if p == nil { + return + } + 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 + if err = p.Client_().Call(ctx, "BatchGetEvalTargetsBySource", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} +func (p *EvalTargetServiceClient) GetEvalTargetVersion(ctx context.Context, request *GetEvalTargetVersionRequest) (r *GetEvalTargetVersionResponse, err error) { + var _args EvalTargetServiceGetEvalTargetVersionArgs + _args.Request = request + var _result EvalTargetServiceGetEvalTargetVersionResult + if err = p.Client_().Call(ctx, "GetEvalTargetVersion", &_args, &_result); err != nil { return } return _result.GetSuccess(), nil @@ -13617,6 +14333,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 +14451,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 +14817,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 +15135,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 +15249,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 +15267,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 +15279,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 +15291,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 +15720,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 +15730,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 +15739,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 +15767,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 +15784,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 +15804,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 +15812,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 +15891,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 +15900,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 +15910,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 +15938,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 +15957,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 +15977,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 +15985,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 +16064,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 +16074,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 +16083,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 +16111,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 +16128,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 +16148,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 +16156,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 +16235,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 +16245,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 +16254,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 +16282,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 +16301,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 +16321,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 +16329,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 +16408,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 +16418,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 +16427,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 +16455,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 +16472,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 +16492,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 +16500,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 +16579,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 +16589,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 +16598,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 +16626,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 +16645,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 +16665,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 +16673,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 +16752,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 +16762,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 +16771,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 +16799,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 +16816,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 +16836,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 +16844,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 +16923,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 +16933,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 +16942,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 +16970,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 +16989,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 +17009,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 +17017,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 +17096,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 +17106,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 +17115,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 +17143,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 +17160,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 +17180,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 +17188,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 +17267,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 +17277,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 +17286,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 +17314,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 +17333,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 +17353,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 +17361,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 +17440,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 +17450,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 +17459,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 +17487,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 +17504,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 +17524,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 +17532,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 +17611,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 +17621,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 +17630,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 +17658,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 +17677,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 +17697,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 +17705,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 +17784,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 +17794,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 +17803,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 +17831,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 +17848,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 +17868,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 +17876,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 +17955,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 +17965,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 +17974,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 +18002,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 +18021,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 +18041,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..eaee3b4fe 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 @@ -6380,6 +6380,516 @@ func (p *BatchGetSourceEvalTargetsResponse) DeepCopy(s interface{}) error { 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 *GetSourceEvalTargetVersionResponse) 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 *GetSourceEvalTargetVersionResponse) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *GetSourceEvalTargetVersionResponse) 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 *GetSourceEvalTargetVersionResponse) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field255Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *GetSourceEvalTargetVersionResponse) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetEvalTargetVersion() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 1) + offset += p.EvalTargetVersion.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +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 *GetSourceEvalTargetVersionResponse) field1Length() int { + l := 0 + if p.IsSetEvalTargetVersion() { + l += thrift.Binary.FieldBeginLength() + l += p.EvalTargetVersion.BLength() + } + return l +} + +func (p *GetSourceEvalTargetVersionResponse) field255Length() int { + l := 0 + l += thrift.Binary.FieldBeginLength() + l += p.BaseResp.BLength() + return l +} + +func (p *GetSourceEvalTargetVersionResponse) DeepCopy(s interface{}) error { + src, ok := s.(*GetSourceEvalTargetVersionResponse) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + 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 { + _baseResp = &base.BaseResp{} + if err := _baseResp.DeepCopy(src.BaseResp); err != nil { + return err + } + } + p.BaseResp = _baseResp + + return nil +} + func (p *ListSourceEvalTargetVersionsRequest) FastRead(buf []byte) (int, error) { var err error @@ -11473,6 +11983,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 +14379,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/loop_gen/coze/loop/evaluation/loeval_target/local_evaltargetservice.go b/backend/loop_gen/coze/loop/evaluation/loeval_target/local_evaltargetservice.go index 5dc907e3f..873d49fec 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/eval_target_app.go b/backend/modules/evaluation/application/eval_target_app.go index ea1fec825..bea655e2b 100644 --- a/backend/modules/evaluation/application/eval_target_app.go +++ b/backend/modules/evaluation/application/eval_target_app.go @@ -6,6 +6,7 @@ package application import ( "context" "strconv" + "strings" "sync" "time" @@ -493,6 +494,48 @@ 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")) + } + if strings.TrimSpace(request.GetSourceTargetVersion()) == "" { + return nil, errorx.NewByCode(errno.CommonInvalidParamCode, errorx.WithExtraMsg("source target version 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 { 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..6acb5855d 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 @@ -189,6 +189,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 +327,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") From 493df7932e1d44298aa6715b7567ef5c7945e541 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Wed, 18 Mar 2026 11:57:19 +0800 Subject: [PATCH 06/57] fix Change-Id: I42c3ada6a3caa2f34ddd5489350f099f3032206e --- .../loop/evaluation/coze.loop.evaluation.eval_target.thrift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 6acb5855d..8f7c1602d 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 @@ -327,7 +327,7 @@ 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评测对象版本详情信息 + // 获取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' ) From 7bc7494d1d9590b6a8b31277b844adfe1b2069e0 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Wed, 18 Mar 2026 11:58:27 +0800 Subject: [PATCH 07/57] fix Change-Id: I0c56c787103f6a20887cfaaf5b6e92f0bc6d3b57 --- .../coze/loop/apis/eval_target_service.go | 18 ++++++++++++++++++ .../router/coze/loop/apis/coze.loop.apis.go | 1 + .../api/router/coze/loop/apis/middleware.go | 5 +++++ .../coze.loop.evaluation.eval_target.go | 2 +- .../loeval_target/local_evaltargetservice.go | 2 +- 5 files changed, 26 insertions(+), 2 deletions(-) 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..cc3c6caf0 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,9 @@ import ( "context" "github.com/cloudwego/hertz/pkg/app" + "github.com/cloudwego/hertz/pkg/protocol/consts" + eval_target "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/eval_target" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/evaltargetservice" ) @@ -104,3 +106,19 @@ 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) { + var err error + var req eval_target.GetSourceEvalTargetVersionRequest + err = c.BindAndValidate(&req) + if err != nil { + c.String(consts.StatusBadRequest, err.Error()) + return + } + + resp := new(eval_target.GetSourceEvalTargetVersionResponse) + + c.JSON(consts.StatusOK, resp) +} 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 48eee9c29..e95c67f3f 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 1072c860c..bad08d8f1 100644 --- a/backend/api/router/coze/loop/apis/middleware.go +++ b/backend/api/router/coze/loop/apis/middleware.go @@ -1999,3 +1999,8 @@ func _reportevaluatorinvokeprogressMw(handler *apis.APIHandler) []app.HandlerFun // your code... return nil } + +func _getsourceevaltargetversionMw(handler *apis.APIHandler) []app.HandlerFunc { + // your code... + 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 0576f2086..547db17c4 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 @@ -14222,7 +14222,7 @@ type EvalTargetService interface { ListSourceEvalTargetVersions(ctx context.Context, request *ListSourceEvalTargetVersionsRequest) (r *ListSourceEvalTargetVersionsResponse, err error) BatchGetSourceEvalTargets(ctx context.Context, request *BatchGetSourceEvalTargetsRequest) (r *BatchGetSourceEvalTargetsResponse, err error) - // 获取Source评测对象版本详情信息 + // 获取Source评测对象版本的详情信息 GetSourceEvalTargetVersion(ctx context.Context, request *GetSourceEvalTargetVersionRequest) (r *GetSourceEvalTargetVersionResponse, err error) // 搜索自定义评测对象 SearchCustomEvalTarget(ctx context.Context, req *SearchCustomEvalTargetRequest) (r *SearchCustomEvalTargetResponse, err error) 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 873d49fec..5c89a23ec 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 @@ -182,7 +182,7 @@ func (l *LocalEvalTargetService) BatchGetSourceEvalTargets(ctx context.Context, } // GetSourceEvalTargetVersion -// 获取Source评测对象版本详情信息 +// 获取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) From 6e2d8a6f3e83ea091f84edc4a4f8cb87e3b49223 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Fri, 20 Mar 2026 11:52:55 +0800 Subject: [PATCH 08/57] fix Change-Id: I151ba86cd90f5474700cd7713f4466a4273f575a --- .../coze/loop/evaluation/domain/expt/expt.go | 262 +++++++++++++++++- .../loop/evaluation/domain/expt/k-expt.go | 159 +++++++++++ .../expt/coze.loop.evaluation.expt.go | 184 +++++++++++- .../expt/k-coze.loop.evaluation.expt.go | 106 +++++++ .../mysql/gorm_gen/model/experiment.gen.go | 2 + .../mysql/gorm_gen/model/expt_template.gen.go | 1 + .../mysql/gorm_gen/query/experiment.gen.go | 10 +- .../mysql/gorm_gen/query/expt_template.gen.go | 6 +- .../coze.loop.evaluation.expt.thrift | 4 + .../coze/loop/evaluation/domain/expt.thrift | 10 + .../mysql-init/init-sql/experiment.sql | 2 + .../mysql-init/init-sql/expt_template.sql | 2 +- 12 files changed, 722 insertions(+), 26 deletions(-) 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 db88c59e8..93d5e5183 100644 --- a/backend/kitex_gen/coze/loop/evaluation/domain/expt/expt.go +++ b/backend/kitex_gen/coze/loop/evaluation/domain/expt/expt.go @@ -17,6 +17,8 @@ import ( ) const ( + VisibilityHidden = "hidden" + PromptUserQueryFieldKey = "builtin_prompt_user_query" ColumnEvalTargetNameActualOutput = "actual_output" @@ -202,6 +204,8 @@ type SourceType int64 const ( SourceType_Evaluation SourceType = 1 SourceType_AutoTask SourceType = 2 + // 智能生成 + SourceType_IntelligentGen SourceType = 3 ) func (p SourceType) String() string { @@ -210,6 +214,8 @@ func (p SourceType) String() string { return "Evaluation" case SourceType_AutoTask: return "AutoTask" + case SourceType_IntelligentGen: + return "IntelligentGen" } return "" } @@ -220,6 +226,8 @@ func SourceTypeFromString(s string) (SourceType, error) { return SourceType_Evaluation, nil case "AutoTask": return SourceType_AutoTask, nil + case "IntelligentGen": + return SourceType_IntelligentGen, nil } return SourceType(0), fmt.Errorf("not a valid SourceType string") } @@ -948,6 +956,8 @@ func (p *DataType) Value() (driver.Value, error) { return int64(*p), nil } +type Visibility = string + type ExptResultExportType = string type CSVExportStatus = string @@ -962,15 +972,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"` @@ -995,6 +1007,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 *int64 `thrift:"thread_id,63,optional" frugal:"63,optional,i64" json:"thread_id" form:"thread_id" query:"thread_id"` } func NewExperiment() *Experiment { @@ -1112,6 +1126,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) { @@ -1375,6 +1401,18 @@ func (p *Experiment) GetEnableWeightedScore() (v bool) { } return *p.EnableWeightedScore } + +var Experiment_ThreadID_DEFAULT int64 + +func (p *Experiment) GetThreadID() (v int64) { + if p == nil { + return + } + if !p.IsSetThreadID() { + return Experiment_ThreadID_DEFAULT + } + return *p.ThreadID +} func (p *Experiment) SetID(val *int64) { p.ID = val } @@ -1402,6 +1440,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 } @@ -1468,6 +1509,9 @@ func (p *Experiment) SetScoreWeightConfig(val *ExptScoreWeight) { func (p *Experiment) SetEnableWeightedScore(val *bool) { p.EnableWeightedScore = val } +func (p *Experiment) SetThreadID(val *int64) { + p.ThreadID = val +} var fieldIDToName_Experiment = map[int16]string{ 1: "id", @@ -1479,6 +1523,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", @@ -1501,6 +1546,7 @@ var fieldIDToName_Experiment = map[int16]string{ 60: "expt_template_meta", 61: "score_weight_config", 62: "enable_weighted_score", + 63: "thread_id", } func (p *Experiment) IsSetID() bool { @@ -1539,6 +1585,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 } @@ -1627,6 +1677,10 @@ func (p *Experiment) IsSetEnableWeightedScore() bool { return p.EnableWeightedScore != nil } +func (p *Experiment) IsSetThreadID() bool { + return p.ThreadID != nil +} + func (p *Experiment) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -1717,6 +1771,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 { @@ -1893,6 +1955,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.I64 { + if err = p.ReadField63(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 @@ -2022,6 +2092,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 @@ -2290,6 +2371,17 @@ func (p *Experiment) ReadField62(iprot thrift.TProtocol) error { p.EnableWeightedScore = _field return nil } +func (p *Experiment) ReadField63(iprot thrift.TProtocol) error { + + var _field *int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = &v + } + p.ThreadID = _field + return nil +} func (p *Experiment) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 @@ -2333,6 +2425,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 @@ -2421,6 +2517,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 = oprot.WriteFieldStop(); err != nil { goto WriteFieldStopError @@ -2601,6 +2701,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 { @@ -3029,6 +3147,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.I64, 63); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(*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) String() string { if p == nil { @@ -3071,6 +3207,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 } @@ -3137,6 +3276,9 @@ func (p *Experiment) DeepEqual(ano *Experiment) bool { if !p.Field62DeepEqual(ano.EnableWeightedScore) { return false } + if !p.Field63DeepEqual(ano.ThreadID) { + return false + } return true } @@ -3248,6 +3390,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 { @@ -3476,6 +3630,18 @@ func (p *Experiment) Field62DeepEqual(src *bool) bool { } return true } +func (p *Experiment) Field63DeepEqual(src *int64) bool { + + if p.ThreadID == src { + return true + } else if p.ThreadID == nil || src == nil { + return false + } + if *p.ThreadID != *src { + return false + } + return true +} // 实验模板基础信息 type ExptTemplateMeta struct { @@ -3485,6 +3651,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 { @@ -3553,6 +3721,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 } @@ -3568,6 +3748,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", @@ -3575,6 +3758,7 @@ var fieldIDToName_ExptTemplateMeta = map[int16]string{ 3: "name", 4: "desc", 5: "expt_type", + 6: "visibility", } func (p *ExptTemplateMeta) IsSetID() bool { @@ -3597,6 +3781,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 @@ -3655,6 +3843,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 @@ -3740,6 +3936,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 @@ -3767,6 +3974,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 @@ -3875,6 +4086,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 { @@ -3905,6 +4134,9 @@ func (p *ExptTemplateMeta) DeepEqual(ano *ExptTemplateMeta) bool { if !p.Field5DeepEqual(ano.ExptType) { return false } + if !p.Field6DeepEqual(ano.Visibility) { + return false + } return true } @@ -3968,6 +4200,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 b52dd6740..3100d1d5d 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 @@ -180,6 +180,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:]) @@ -488,6 +502,20 @@ func (p *Experiment) FastRead(buf []byte) (int, error) { goto SkipFieldError } } + case 63: + if fieldTypeId == thrift.I64 { + 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 + } + } default: l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -634,6 +662,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 @@ -973,6 +1015,20 @@ func (p *Experiment) FastReadField62(buf []byte) (int, error) { return offset, nil } +func (p *Experiment) FastReadField63(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.ThreadID = _field + return offset, nil +} + func (p *Experiment) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } @@ -991,11 +1047,13 @@ func (p *Experiment) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset += p.fastWriteField41(buf[offset:], w) offset += p.fastWriteField45(buf[offset:], w) offset += p.fastWriteField62(buf[offset:], w) + offset += p.fastWriteField63(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 += 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) @@ -1028,6 +1086,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() @@ -1050,6 +1109,7 @@ func (p *Experiment) BLength() int { l += p.field60Length() l += p.field61Length() l += p.field62Length() + l += p.field63Length() } l += thrift.Binary.FieldStopLength() return l @@ -1136,6 +1196,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() { @@ -1362,6 +1431,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.I64, 63) + offset += thrift.Binary.WriteI64(buf[offset:], *p.ThreadID) + } + return offset +} + func (p *Experiment) field1Length() int { l := 0 if p.IsSetID() { @@ -1443,6 +1521,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() { @@ -1655,6 +1742,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.I64Length() + } + return l +} + func (p *Experiment) DeepCopy(s interface{}) error { src, ok := s.(*Experiment) if !ok { @@ -1718,6 +1814,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 @@ -1897,6 +1998,11 @@ func (p *Experiment) DeepCopy(s interface{}) error { p.EnableWeightedScore = &tmp } + if src.ThreadID != nil { + tmp := *src.ThreadID + p.ThreadID = &tmp + } + return nil } @@ -1987,6 +2093,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 @@ -2077,6 +2197,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) } @@ -2089,6 +2223,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 @@ -2102,6 +2237,7 @@ func (p *ExptTemplateMeta) BLength() int { l += p.field3Length() l += p.field4Length() l += p.field5Length() + l += p.field6Length() } l += thrift.Binary.FieldStopLength() return l @@ -2152,6 +2288,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() { @@ -2197,6 +2342,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 { @@ -2234,6 +2388,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/expt/coze.loop.evaluation.expt.go b/backend/kitex_gen/coze/loop/evaluation/expt/coze.loop.evaluation.expt.go index 222ab410c..cb7ab619f 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 @@ -2345,14 +2345,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"` @@ -2366,12 +2368,14 @@ 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"` - 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"` + // 智能评测相关 + ThreadID *int64 `thrift:"thread_id,60,optional" frugal:"60,optional,i64" json:"thread_id" form:"thread_id" query:"thread_id"` + 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 { @@ -2472,6 +2476,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) { @@ -2640,6 +2656,18 @@ func (p *SubmitExperimentRequest) GetItemRetryNum() (v int32) { return *p.ItemRetryNum } +var SubmitExperimentRequest_ThreadID_DEFAULT int64 + +func (p *SubmitExperimentRequest) GetThreadID() (v int64) { + if p == nil { + return + } + if !p.IsSetThreadID() { + return SubmitExperimentRequest_ThreadID_DEFAULT + } + return *p.ThreadID +} + var SubmitExperimentRequest_Ext_DEFAULT map[string]string func (p *SubmitExperimentRequest) GetExt() (v map[string]string) { @@ -2699,6 +2727,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 } @@ -2741,6 +2772,9 @@ func (p *SubmitExperimentRequest) SetExptTemplateID(val *int64) { func (p *SubmitExperimentRequest) SetItemRetryNum(val *int32) { p.ItemRetryNum = val } +func (p *SubmitExperimentRequest) SetThreadID(val *int64) { + p.ThreadID = val +} func (p *SubmitExperimentRequest) SetExt(val map[string]string) { p.Ext = val } @@ -2760,6 +2794,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", @@ -2774,6 +2809,7 @@ var fieldIDToName_SubmitExperimentRequest = map[int16]string{ 41: "enable_weighted_score", 42: "expt_template_id", 45: "item_retry_num", + 60: "thread_id", 100: "ext", 200: "session", 255: "Base", @@ -2807,6 +2843,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 } @@ -2863,6 +2903,10 @@ func (p *SubmitExperimentRequest) IsSetItemRetryNum() bool { return p.ItemRetryNum != nil } +func (p *SubmitExperimentRequest) IsSetThreadID() bool { + return p.ThreadID != nil +} + func (p *SubmitExperimentRequest) IsSetExt() bool { return p.Ext != nil } @@ -2959,6 +3003,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 { @@ -3071,6 +3123,14 @@ func (p *SubmitExperimentRequest) Read(iprot thrift.TProtocol) (err error) { } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 60: + if fieldTypeId == thrift.I64 { + if err = p.ReadField60(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 { @@ -3230,6 +3290,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 { @@ -3401,6 +3472,17 @@ func (p *SubmitExperimentRequest) ReadField45(iprot thrift.TProtocol) error { p.ItemRetryNum = _field return nil } +func (p *SubmitExperimentRequest) ReadField60(iprot thrift.TProtocol) error { + + var _field *int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = &v + } + p.ThreadID = _field + return nil +} func (p *SubmitExperimentRequest) ReadField100(iprot thrift.TProtocol) error { _, _, size, err := iprot.ReadMapBegin() if err != nil { @@ -3485,6 +3567,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 @@ -3541,6 +3627,10 @@ func (p *SubmitExperimentRequest) Write(oprot thrift.TProtocol) (err error) { fieldId = 45 goto WriteFieldError } + if err = p.writeField60(oprot); err != nil { + fieldId = 60 + goto WriteFieldError + } if err = p.writeField100(oprot); err != nil { fieldId = 100 goto WriteFieldError @@ -3721,6 +3811,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 { @@ -3989,6 +4097,24 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 45 end error: ", p), err) } +func (p *SubmitExperimentRequest) writeField60(oprot thrift.TProtocol) (err error) { + if p.IsSetThreadID() { + if err = oprot.WriteFieldBegin("thread_id", thrift.I64, 60); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(*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) writeField100(oprot thrift.TProtocol) (err error) { if p.IsSetExt() { if err = oprot.WriteFieldBegin("ext", thrift.MAP, 100); err != nil { @@ -4093,6 +4219,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 } @@ -4135,6 +4264,9 @@ func (p *SubmitExperimentRequest) DeepEqual(ano *SubmitExperimentRequest) bool { if !p.Field45DeepEqual(ano.ItemRetryNum) { return false } + if !p.Field60DeepEqual(ano.ThreadID) { + return false + } if !p.Field100DeepEqual(ano.Ext) { return false } @@ -4239,6 +4371,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) { @@ -4394,6 +4538,18 @@ func (p *SubmitExperimentRequest) Field45DeepEqual(src *int32) bool { } return true } +func (p *SubmitExperimentRequest) Field60DeepEqual(src *int64) bool { + + if p.ThreadID == src { + return true + } else if p.ThreadID == nil || src == nil { + return false + } + if *p.ThreadID != *src { + return false + } + return true +} func (p *SubmitExperimentRequest) 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 c28fd65bf..2a4b2492a 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 @@ -1876,6 +1876,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:]) @@ -2072,6 +2086,20 @@ func (p *SubmitExperimentRequest) FastRead(buf []byte) (int, error) { goto SkipFieldError } } + case 60: + if fieldTypeId == thrift.I64 { + 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 100: if fieldTypeId == thrift.MAP { l, err = p.FastReadField100(buf[offset:]) @@ -2260,6 +2288,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() @@ -2476,6 +2518,20 @@ func (p *SubmitExperimentRequest) FastReadField45(buf []byte) (int, error) { return offset, nil } +func (p *SubmitExperimentRequest) FastReadField60(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.ThreadID = _field + return offset, nil +} + func (p *SubmitExperimentRequest) FastReadField100(buf []byte) (int, error) { offset := 0 @@ -2550,9 +2606,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.fastWriteField60(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) @@ -2580,6 +2638,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() @@ -2594,6 +2653,7 @@ func (p *SubmitExperimentRequest) BLength() int { l += p.field41Length() l += p.field42Length() l += p.field45Length() + l += p.field60Length() l += p.field100Length() l += p.field200Length() l += p.field255Length() @@ -2679,6 +2739,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() { @@ -2819,6 +2888,15 @@ func (p *SubmitExperimentRequest) fastWriteField45(buf []byte, w thrift.NocopyWr return offset } +func (p *SubmitExperimentRequest) fastWriteField60(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetThreadID() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 60) + offset += thrift.Binary.WriteI64(buf[offset:], *p.ThreadID) + } + return offset +} + func (p *SubmitExperimentRequest) fastWriteField100(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetExt() { @@ -2926,6 +3004,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() { @@ -3060,6 +3147,15 @@ func (p *SubmitExperimentRequest) field45Length() int { return l } +func (p *SubmitExperimentRequest) field60Length() int { + l := 0 + if p.IsSetThreadID() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + } + return l +} + func (p *SubmitExperimentRequest) field100Length() int { l := 0 if p.IsSetExt() { @@ -3146,6 +3242,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{} @@ -3251,6 +3352,11 @@ func (p *SubmitExperimentRequest) DeepCopy(s interface{}) error { p.ItemRetryNum = &tmp } + if src.ThreadID != nil { + tmp := *src.ThreadID + p.ThreadID = &tmp + } + if src.Ext != nil { p.Ext = make(map[string]string, len(src.Ext)) for key, val := range src.Ext { 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 1977d92ef..c3b9a0411 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 @@ -39,6 +39,8 @@ type Experiment struct { 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"` // 最大存活时间 + Visibility int32 `gorm:"column:visibility;type:int(11) unsigned;not null;comment:可见性,默认0-可见,1-隐藏" json:"visibility"` // 可见性,默认0-可见,1-隐藏 + ThreadID int64 `gorm:"column:thread_id;type:bigint(20) unsigned;not null;comment:智能生成会话ID" json:"thread_id"` // 智能生成会话ID } // 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 c4de4747a..05e469f43 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 @@ -31,6 +31,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 ad98e086c..6fd9f744a 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 @@ -52,6 +52,8 @@ func newExperiment(db *gorm.DB, opts ...gen.DOOption) experiment { _experiment.SourceID = field.NewString(tableName, "source_id") _experiment.ExptType = field.NewInt32(tableName, "expt_type") _experiment.MaxAliveTime = field.NewInt64(tableName, "max_alive_time") + _experiment.Visibility = field.NewInt32(tableName, "visibility") + _experiment.ThreadID = field.NewInt64(tableName, "thread_id") _experiment.fillFieldMap() @@ -88,6 +90,8 @@ type experiment struct { SourceID field.String // 实验来源id ExptType field.Int32 // 实验类型,offline:1,online:2... MaxAliveTime field.Int64 // 最大存活时间 + Visibility field.Int32 // 可见性,默认0-可见,1-隐藏 + ThreadID field.Int64 // 智能生成会话ID fieldMap map[string]field.Expr } @@ -129,6 +133,8 @@ func (e *experiment) updateTableName(table string) *experiment { e.SourceID = field.NewString(table, "source_id") e.ExptType = field.NewInt32(table, "expt_type") e.MaxAliveTime = field.NewInt64(table, "max_alive_time") + e.Visibility = field.NewInt32(table, "visibility") + e.ThreadID = field.NewInt64(table, "thread_id") e.fillFieldMap() @@ -155,7 +161,7 @@ func (e *experiment) GetFieldByName(fieldName string) (field.OrderExpr, bool) { } func (e *experiment) fillFieldMap() { - e.fieldMap = make(map[string]field.Expr, 25) + e.fieldMap = make(map[string]field.Expr, 27) e.fieldMap["id"] = e.ID e.fieldMap["space_id"] = e.SpaceID e.fieldMap["created_by"] = e.CreatedBy @@ -181,6 +187,8 @@ func (e *experiment) fillFieldMap() { e.fieldMap["source_id"] = e.SourceID e.fieldMap["expt_type"] = e.ExptType e.fieldMap["max_alive_time"] = e.MaxAliveTime + e.fieldMap["visibility"] = e.Visibility + e.fieldMap["thread_id"] = e.ThreadID } 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 7f1d0b8cd..740ac1051 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 @@ -44,6 +44,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() @@ -72,6 +73,7 @@ type exptTemplate struct { CreatedAt field.Time // 创建时间 UpdatedAt field.Time // 更新时间 DeletedAt field.Field // 删除时间 + Visibility field.Int32 // 可见性,默认0-可见,1-隐藏 fieldMap map[string]field.Expr } @@ -105,6 +107,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() @@ -133,7 +136,7 @@ func (e *exptTemplate) GetFieldByName(fieldName string) (field.OrderExpr, bool) } func (e *exptTemplate) fillFieldMap() { - e.fieldMap = make(map[string]field.Expr, 17) + e.fieldMap = make(map[string]field.Expr, 18) e.fieldMap["id"] = e.ID e.fieldMap["space_id"] = e.SpaceID e.fieldMap["name"] = e.Name @@ -151,6 +154,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/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.expt.thrift b/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.expt.thrift index d1a33e892..9d455e6a9 100644 --- a/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.expt.thrift +++ b/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.expt.thrift @@ -58,6 +58,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') @@ -77,6 +78,9 @@ struct SubmitExperimentRequest { 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') + // 智能评测相关 + 60: optional i64 thread_id (api.js_conv='true', go.tag='json:"thread_id"') // 关联的智能评测会话ID + 100: optional map ext (api.body = 'ext') 200: optional common.Session session diff --git a/idl/thrift/coze/loop/evaluation/domain/expt.thrift b/idl/thrift/coze/loop/evaluation/domain/expt.thrift index f7717be10..ac3e0a8ac 100644 --- a/idl/thrift/coze/loop/evaluation/domain/expt.thrift +++ b/idl/thrift/coze/loop/evaluation/domain/expt.thrift @@ -30,8 +30,13 @@ enum ExptType { enum SourceType { Evaluation = 1 AutoTask = 2 + IntelligentGen =3 // 智能生成 } +typedef string Visibility(ts.enum="true") +const Visibility Visibility_Hidden = "hidden" + + struct Experiment { 1: optional i64 id (api.js_conv='true', go.tag='json:"id"') 2: optional string name @@ -42,6 +47,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"') @@ -70,6 +76,9 @@ struct Experiment { // 评估器得分加权配置 61: optional ExptScoreWeight score_weight_config 62: optional bool enable_weighted_score + + // 智能评测相关 + 63: optional i64 thread_id (api.js_conv='true', go.tag='json:"thread_id"') // 关联的智能评测会话ID } // 实验模板基础信息 @@ -79,6 +88,7 @@ struct ExptTemplateMeta { 3: optional string name 4: optional string desc 5: optional ExptType expt_type // 模板对应的实验类型,当前主要为 Offline + 6: optional Visibility visibility // 实验模板可见性,默认为空,可见 } // 实验三元组配置 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 5aa69a280..c18770da6 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 @@ -25,6 +25,8 @@ CREATE TABLE IF NOT EXISTS `experiment` `source_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '实验来源id', `expt_type` int unsigned NOT NULL DEFAULT '1' COMMENT '实验类型,offline:1,online:2...', `max_alive_time` bigint unsigned DEFAULT NULL COMMENT '最大存活时间', + `visibility` int unsigned NOT NULL DEFAULT '0' COMMENT '可见性,默认0-可见,1-隐藏', + `thread_id` bigint unsigned NOT NULL DEFAULT '0' COMMENT '智能生成会话ID', 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 0318fa542..3f8756cf4 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 @@ -21,7 +21,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`), From 9835ed8af77737dc0f1a12ee4f761ac5da4424cf Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Fri, 20 Mar 2026 14:25:16 +0800 Subject: [PATCH 09/57] fix Change-Id: I24fe965761919c81cbde08d5f818a8f1dfd3fb91 --- .../expt/coze.loop.evaluation.expt.go | 176 +++++++++++++++++- .../expt/k-coze.loop.evaluation.expt.go | 106 +++++++++++ .../application/convertor/experiment/expt.go | 19 ++ .../convertor/experiment/expt_template.go | 17 ++ .../evaluation/application/experiment_app.go | 2 + .../modules/evaluation/domain/entity/expt.go | 13 +- .../evaluation/domain/entity/expt_template.go | 3 + .../modules/evaluation/domain/entity/param.go | 2 + .../domain/service/expt_manage_impl.go | 6 + .../domain/service/expt_template_impl.go | 7 + .../repo/experiment/mysql/convert/expt.go | 4 + .../experiment/mysql/convert/expt_template.go | 3 + .../infra/repo/experiment/mysql/expt.go | 2 + .../coze.loop.evaluation.expt.thrift | 3 + 14 files changed, 351 insertions(+), 12 deletions(-) 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 cb7ab619f..5d2787ca9 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"` @@ -52,8 +54,10 @@ type CreateExperimentRequest struct { 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"` - 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"` + // 关联的智能评测会话ID + ThreadID *int64 `thrift:"thread_id,60,optional" frugal:"60,optional,i64" json:"thread_id" form:"thread_id" query:"thread_id"` + 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 { @@ -154,6 +158,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) { @@ -334,6 +350,18 @@ func (p *CreateExperimentRequest) GetItemRetryNum() (v int32) { return *p.ItemRetryNum } +var CreateExperimentRequest_ThreadID_DEFAULT int64 + +func (p *CreateExperimentRequest) GetThreadID() (v int64) { + if p == nil { + return + } + if !p.IsSetThreadID() { + return CreateExperimentRequest_ThreadID_DEFAULT + } + return *p.ThreadID +} + var CreateExperimentRequest_Session_DEFAULT *common.Session func (p *CreateExperimentRequest) GetSession() (v *common.Session) { @@ -381,6 +409,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 } @@ -426,6 +457,9 @@ func (p *CreateExperimentRequest) SetExptTemplateID(val *int64) { func (p *CreateExperimentRequest) SetItemRetryNum(val *int32) { p.ItemRetryNum = val } +func (p *CreateExperimentRequest) SetThreadID(val *int64) { + p.ThreadID = val +} func (p *CreateExperimentRequest) SetSession(val *common.Session) { p.Session = val } @@ -442,6 +476,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", @@ -457,6 +492,7 @@ var fieldIDToName_CreateExperimentRequest = map[int16]string{ 42: "evaluator_score_weights", 43: "expt_template_id", 45: "item_retry_num", + 60: "thread_id", 200: "session", 255: "Base", } @@ -489,6 +525,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 } @@ -549,6 +589,10 @@ func (p *CreateExperimentRequest) IsSetItemRetryNum() bool { return p.ItemRetryNum != nil } +func (p *CreateExperimentRequest) IsSetThreadID() bool { + return p.ThreadID != nil +} + func (p *CreateExperimentRequest) IsSetSession() bool { return p.Session != nil } @@ -641,6 +685,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 { @@ -761,6 +813,14 @@ func (p *CreateExperimentRequest) Read(iprot thrift.TProtocol) (err error) { } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 60: + if fieldTypeId == thrift.I64 { + if err = p.ReadField60(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } case 200: if fieldTypeId == thrift.STRUCT { if err = p.ReadField200(iprot); err != nil { @@ -912,6 +972,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 { @@ -1112,6 +1183,17 @@ func (p *CreateExperimentRequest) ReadField45(iprot thrift.TProtocol) error { p.ItemRetryNum = _field return nil } +func (p *CreateExperimentRequest) ReadField60(iprot thrift.TProtocol) error { + + var _field *int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _field = &v + } + p.ThreadID = _field + return nil +} func (p *CreateExperimentRequest) ReadField200(iprot thrift.TProtocol) error { _field := common.NewSession() if err := _field.Read(iprot); err != nil { @@ -1167,6 +1249,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 @@ -1227,6 +1313,10 @@ func (p *CreateExperimentRequest) Write(oprot thrift.TProtocol) (err error) { fieldId = 45 goto WriteFieldError } + if err = p.writeField60(oprot); err != nil { + fieldId = 60 + goto WriteFieldError + } if err = p.writeField200(oprot); err != nil { fieldId = 200 goto WriteFieldError @@ -1403,6 +1493,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 { @@ -1700,6 +1808,24 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 45 end error: ", p), err) } +func (p *CreateExperimentRequest) writeField60(oprot thrift.TProtocol) (err error) { + if p.IsSetThreadID() { + if err = oprot.WriteFieldBegin("thread_id", thrift.I64, 60); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(*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) writeField200(oprot thrift.TProtocol) (err error) { if p.IsSetSession() { if err = oprot.WriteFieldBegin("session", thrift.STRUCT, 200); err != nil { @@ -1775,6 +1901,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 } @@ -1820,6 +1949,9 @@ func (p *CreateExperimentRequest) DeepEqual(ano *CreateExperimentRequest) bool { if !p.Field45DeepEqual(ano.ItemRetryNum) { return false } + if !p.Field60DeepEqual(ano.ThreadID) { + return false + } if !p.Field200DeepEqual(ano.Session) { return false } @@ -1921,6 +2053,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) { @@ -2089,6 +2233,18 @@ func (p *CreateExperimentRequest) Field45DeepEqual(src *int32) bool { } return true } +func (p *CreateExperimentRequest) Field60DeepEqual(src *int64) bool { + + if p.ThreadID == src { + return true + } else if p.ThreadID == nil || src == nil { + return false + } + if *p.ThreadID != *src { + return false + } + return true +} func (p *CreateExperimentRequest) Field200DeepEqual(src *common.Session) bool { if !p.Session.DeepEqual(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 2a4b2492a..aad09e1f9 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,20 @@ func (p *CreateExperimentRequest) FastRead(buf []byte) (int, error) { goto SkipFieldError } } + case 60: + if fieldTypeId == thrift.I64 { + 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 200: if fieldTypeId == thrift.STRUCT { l, err = p.FastReadField200(buf[offset:]) @@ -554,6 +582,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() @@ -802,6 +844,20 @@ func (p *CreateExperimentRequest) FastReadField45(buf []byte) (int, error) { return offset, nil } +func (p *CreateExperimentRequest) FastReadField60(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.ThreadID = _field + return offset, nil +} + func (p *CreateExperimentRequest) FastReadField200(buf []byte) (int, error) { offset := 0 _field := common.NewSession() @@ -844,9 +900,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.fastWriteField60(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) @@ -874,6 +932,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() @@ -889,6 +948,7 @@ func (p *CreateExperimentRequest) BLength() int { l += p.field42Length() l += p.field43Length() l += p.field45Length() + l += p.field60Length() l += p.field200Length() l += p.field255Length() } @@ -973,6 +1033,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() { @@ -1130,6 +1199,15 @@ func (p *CreateExperimentRequest) fastWriteField45(buf []byte, w thrift.NocopyWr return offset } +func (p *CreateExperimentRequest) fastWriteField60(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetThreadID() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 60) + offset += thrift.Binary.WriteI64(buf[offset:], *p.ThreadID) + } + return offset +} + func (p *CreateExperimentRequest) fastWriteField200(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSession() { @@ -1220,6 +1298,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() { @@ -1365,6 +1452,15 @@ func (p *CreateExperimentRequest) field45Length() int { return l } +func (p *CreateExperimentRequest) field60Length() int { + l := 0 + if p.IsSetThreadID() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.I64Length() + } + return l +} + func (p *CreateExperimentRequest) field200Length() int { l := 0 if p.IsSetSession() { @@ -1436,6 +1532,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{} @@ -1554,6 +1655,11 @@ func (p *CreateExperimentRequest) DeepCopy(s interface{}) error { p.ItemRetryNum = &tmp } + if src.ThreadID != nil { + tmp := *src.ThreadID + p.ThreadID = &tmp + } + var _session *common.Session if src.Session != nil { _session = &common.Session{} diff --git a/backend/modules/evaluation/application/convertor/experiment/expt.go b/backend/modules/evaluation/application/convertor/experiment/expt.go index 566b6e1e5..ad42f6b46 100644 --- a/backend/modules/evaluation/application/convertor/experiment/expt.go +++ b/backend/modules/evaluation/application/convertor/experiment/expt.go @@ -355,6 +355,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 > 0 { + res.ThreadID = gptr.Of(experiment.ThreadID) + } // 注意:Experiment DTO 中没有 TripleConfig 字段,如果需要可以通过其他方式传递 @@ -397,6 +403,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) @@ -491,6 +500,16 @@ func ConvertCreateReq(cer *expt.CreateExperimentRequest, evaluatorVersionRunConf SourceID: cer.GetSourceID(), 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 bdbb4a2a7..0a20a4318 100644 --- a/backend/modules/evaluation/application/convertor/experiment/expt_template.go +++ b/backend/modules/evaluation/application/convertor/experiment/expt_template.go @@ -52,6 +52,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)) + } + } } // 拆分的子函数:从 triple_config 中提取三元组配置 @@ -438,6 +445,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 @@ -455,6 +469,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 diff --git a/backend/modules/evaluation/application/experiment_app.go b/backend/modules/evaluation/application/experiment_app.go index f08d1f278..9b7c874d8 100644 --- a/backend/modules/evaluation/application/experiment_app.go +++ b/backend/modules/evaluation/application/experiment_app.go @@ -450,6 +450,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, @@ -461,6 +462,7 @@ 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 中解析 diff --git a/backend/modules/evaluation/domain/entity/expt.go b/backend/modules/evaluation/domain/entity/expt.go index e4b06cf1f..f2f0303a8 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 ( @@ -48,8 +53,9 @@ const ( ) const ( - SourceType_Evaluation SourceType = 1 - SourceType_Trace SourceType = 2 + SourceType_Evaluation SourceType = 1 + SourceType_Trace SourceType = 2 + SourceType_IntelligentGen SourceType = 3 ) type ExptRunLog struct { @@ -140,6 +146,9 @@ type Experiment struct { AggregateResult *ExptAggregateResult ExptTemplateMeta *ExptTemplateMeta // 关联的实验模板基础信息(仅在查询时按需填充,包含模板 ID) + + Visibility Visibility // 实验模板可见性,默认为空,可见 + ThreadID int64 // 关联的智能评测会话ID } func (e *Experiment) ToEvaluatorRefDO() []*ExptEvaluatorRef { diff --git a/backend/modules/evaluation/domain/entity/expt_template.go b/backend/modules/evaluation/domain/entity/expt_template.go index cfb4f14ae..aabbbedc9 100644 --- a/backend/modules/evaluation/domain/entity/expt_template.go +++ b/backend/modules/evaluation/domain/entity/expt_template.go @@ -53,6 +53,7 @@ type ExptTemplateMeta struct { Name string Desc string ExptType ExptType + Visibility Visibility // 实验模板可见性,默认为空,可见 } // EvaluatorIDVersionItem 评估器ID和版本映射项 @@ -347,6 +348,7 @@ type CreateExptTemplateParam struct { EvaluatorIDVersionItems []*EvaluatorIDVersionItem // 评估器ID版本项列表(包含完整信息) TemplateConf *ExptTemplateConfiguration ExptType ExptType + Visibility *Visibility CreateEvalTargetParam *CreateEvalTargetParam } @@ -371,4 +373,5 @@ type UpdateExptTemplateMetaParam struct { Name string Description string ExptType ExptType + Visibility *Visibility } diff --git a/backend/modules/evaluation/domain/entity/param.go b/backend/modules/evaluation/domain/entity/param.go index 84e2d0f3d..bdc835d19 100644 --- a/backend/modules/evaluation/domain/entity/param.go +++ b/backend/modules/evaluation/domain/entity/param.go @@ -280,6 +280,8 @@ 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 *int64 `json:"thread_id,omitempty"` ExptTemplateID int64 `json:"expt_template_id"` ExptConf *EvaluationConfiguration `json:"expt_conf"` ItemRetryNum *int `json:"item_retry_num,omitempty"` diff --git a/backend/modules/evaluation/domain/service/expt_manage_impl.go b/backend/modules/evaluation/domain/service/expt_manage_impl.go index 3c584ca36..5eec35b66 100644 --- a/backend/modules/evaluation/domain/service/expt_manage_impl.go +++ b/backend/modules/evaluation/domain/service/expt_manage_impl.go @@ -677,6 +677,12 @@ func (e *ExptMangerImpl) CreateExpt(ctx context.Context, req *entity.CreateExptP 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_template_impl.go b/backend/modules/evaluation/domain/service/expt_template_impl.go index 3a7e5eaf3..d5d63570c 100644 --- a/backend/modules/evaluation/domain/service/expt_template_impl.go +++ b/backend/modules/evaluation/domain/service/expt_template_impl.go @@ -109,6 +109,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), }, TripleConfig: &entity.ExptTemplateTuple{ EvalSetID: param.EvalSetID, @@ -128,6 +129,9 @@ func (e *ExptTemplateManagerImpl) Create(ctx context.Context, param *entity.Crea UpdatedBy: &entity.UserInfo{UserID: gptr.Of(session.UserID)}, }, } + if param.Visibility != nil { + template.Meta.Visibility = *param.Visibility + } // 从 TemplateConf 构建 FieldMappingConfig,并根据 EvaluatorConf.ScoreWeight 设置是否启用分数权重 e.buildFieldMappingConfigAndEnableScoreWeight(template, param.TemplateConf) @@ -448,6 +452,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) + } // 更新 updated_at 和 updated_by now := time.Now() 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 27974ecbc..f72660d9f 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, } if experiment.MaxAliveTime != 0 { @@ -105,6 +107,8 @@ 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, } // 如果数据库中有模板 ID,则在 ExptTemplateMeta 中回填 ID,方便上层按模板 ID 查询和聚合 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 0f5c8e5a0..00a83eab2 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 @@ -70,6 +72,7 @@ func (ExptTemplateConverter) DO2PO(template *entity.ExptTemplate) (*model.ExptTe TargetType: int64(targetType), TargetVersionID: targetVersionID, ExptType: int32(exptType), + Visibility: int32(visibility), } if template.TemplateConf != nil { diff --git a/backend/modules/evaluation/infra/repo/experiment/mysql/expt.go b/backend/modules/evaluation/infra/repo/experiment/mysql/expt.go index 2f83375d9..5cf5a7462 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/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.expt.thrift b/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.expt.thrift index 9d455e6a9..913b3adea 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') @@ -38,6 +39,8 @@ struct CreateExperimentRequest { 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') + 60: optional i64 thread_id (api.js_conv='true', go.tag='json:"thread_id"') // 关联的智能评测会话ID + 200: optional common.Session session 255: optional base.Base Base From 893c65e480f7d9e182039eeb555fa58f872ddd2a Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Fri, 20 Mar 2026 15:06:02 +0800 Subject: [PATCH 10/57] fix Change-Id: I8a25e6837435799c63e3828c0b8167fcb9b22336 --- .../evaluation/domain/evaluator/evaluator.go | 86 ++++++++++++++++++- .../domain/evaluator/k-evaluator.go | 53 ++++++++++++ .../mysql/gorm_gen/model/dataset.gen.go | 5 +- .../convertor/evaluator/evaluator.go | 25 ++++++ .../evaluation/domain/entity/evaluator.go | 9 ++ .../evaluator/mysql/convertor/evaluator.go | 2 + .../mysql/gorm_gen/model/evaluator.gen.go | 1 + .../mysql/gorm_gen/query/evaluator.gen.go | 6 +- .../loop/evaluation/domain/evaluator.thrift | 4 + .../mysql-init/init-sql/evaluator.sql | 1 + 10 files changed, 188 insertions(+), 4 deletions(-) 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/modules/data/infra/repo/dataset/mysql/gorm_gen/model/dataset.gen.go b/backend/modules/data/infra/repo/dataset/mysql/gorm_gen/model/dataset.gen.go index 7f46be9cc..4018543a0 100644 --- a/backend/modules/data/infra/repo/dataset/mysql/gorm_gen/model/dataset.gen.go +++ b/backend/modules/data/infra/repo/dataset/mysql/gorm_gen/model/dataset.gen.go @@ -5,10 +5,13 @@ package model import ( + "encoding/json" "time" + "github.com/coze-dev/coze-loop/backend/modules/data/infra/repo/dataset/mysql/gorm_gen/model" "gorm.io/datatypes" - "gorm.io/plugin/soft_delete" + "gorm.io/gorm" + "gorm.io/gorm/schema" ) const TableNameDataset = "dataset" 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/domain/entity/evaluator.go b/backend/modules/evaluation/domain/entity/evaluator.go index ebe21ae44..4a54ac1fc 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/infra/repo/evaluator/mysql/convertor/evaluator.go b/backend/modules/evaluation/infra/repo/evaluator/mysql/convertor/evaluator.go index f0a246504..0690b4331 100644 --- a/backend/modules/evaluation/infra/repo/evaluator/mysql/convertor/evaluator.go +++ b/backend/modules/evaluation/infra/repo/evaluator/mysql/convertor/evaluator.go @@ -37,6 +37,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) @@ -77,6 +78,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/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/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`), From df4a40e82e6a50cb816a2c112bc2e428afd2ea6a Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Mon, 23 Mar 2026 20:23:06 +0800 Subject: [PATCH 11/57] fix Change-Id: Ie370b035be768b3a379e01814e269189d488f2e6 --- .../coze.loop.evaluation.eval_target.go | 78 +++++++++++++++++++ .../k-coze.loop.evaluation.eval_target.go | 56 +++++++++++++ .../expt/coze.loop.evaluation.expt.go | 78 +++++++++++++++++++ .../expt/k-coze.loop.evaluation.expt.go | 53 +++++++++++++ .../coze.loop.evaluation.eval_target.thrift | 1 + .../coze.loop.evaluation.expt.thrift | 1 + 6 files changed, 267 insertions(+) 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 547db17c4..7b25074e5 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"` 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 eaee3b4fe..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 } 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 5d2787ca9..583f18adc 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 @@ -2527,6 +2527,8 @@ type SubmitExperimentRequest struct { 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 *int64 `thrift:"thread_id,60,optional" frugal:"60,optional,i64" json:"thread_id" form:"thread_id" query:"thread_id"` Ext map[string]string `thrift:"ext,100,optional" frugal:"100,optional,map" form:"ext" json:"ext,omitempty"` @@ -2812,6 +2814,18 @@ 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 int64 func (p *SubmitExperimentRequest) GetThreadID() (v int64) { @@ -2928,6 +2942,9 @@ 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 *int64) { p.ThreadID = val } @@ -2965,6 +2982,7 @@ 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", 100: "ext", 200: "session", @@ -3059,6 +3077,10 @@ 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 } @@ -3279,6 +3301,14 @@ 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.I64 { if err = p.ReadField60(iprot); err != nil { @@ -3628,6 +3658,17 @@ 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 *int64 @@ -3783,6 +3824,10 @@ 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 @@ -4253,6 +4298,24 @@ 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.I64, 60); err != nil { @@ -4420,6 +4483,9 @@ 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 } @@ -4694,6 +4760,18 @@ 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 *int64) bool { if p.ThreadID == 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 aad09e1f9..b0ff5c59d 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 @@ -2192,6 +2192,20 @@ 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.I64 { l, err = p.FastReadField60(buf[offset:]) @@ -2624,6 +2638,20 @@ 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 @@ -2712,6 +2740,7 @@ 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.fastWriteField60(buf[offset:], w) offset += p.fastWriteField4(buf[offset:], w) offset += p.fastWriteField5(buf[offset:], w) @@ -2759,6 +2788,7 @@ func (p *SubmitExperimentRequest) BLength() int { l += p.field41Length() l += p.field42Length() l += p.field45Length() + l += p.field46Length() l += p.field60Length() l += p.field100Length() l += p.field200Length() @@ -2994,6 +3024,15 @@ 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() { @@ -3253,6 +3292,15 @@ 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() { @@ -3458,6 +3506,11 @@ func (p *SubmitExperimentRequest) DeepCopy(s interface{}) error { p.ItemRetryNum = &tmp } + if src.TrialRunItemCount != nil { + tmp := *src.TrialRunItemCount + p.TrialRunItemCount = &tmp + } + if src.ThreadID != nil { tmp := *src.ThreadID p.ThreadID = &tmp 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 8f7c1602d..0699b0234 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 { 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 913b3adea..eb3d17030 100644 --- a/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.expt.thrift +++ b/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.expt.thrift @@ -80,6 +80,7 @@ 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 i64 thread_id (api.js_conv='true', go.tag='json:"thread_id"') // 关联的智能评测会话ID From 8d3d5d59c7aac19648468a87e9b54fe39433d118 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Mon, 23 Mar 2026 20:36:52 +0800 Subject: [PATCH 12/57] fix Change-Id: Idec20a41250a4f1a2bf55b1b8ae90230a3ca54dc --- .../expt/coze.loop.evaluation.expt.go | 78 +++++++++++++++++++ .../expt/k-coze.loop.evaluation.expt.go | 53 +++++++++++++ .../coze.loop.evaluation.expt.thrift | 1 + 3 files changed, 132 insertions(+) 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 583f18adc..10a953d20 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 @@ -54,6 +54,8 @@ type CreateExperimentRequest struct { 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 *int64 `thrift:"thread_id,60,optional" frugal:"60,optional,i64" json:"thread_id" form:"thread_id" query:"thread_id"` Session *common.Session `thrift:"session,200,optional" frugal:"200,optional,common.Session" form:"session" json:"session,omitempty" query:"session"` @@ -350,6 +352,18 @@ 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 int64 func (p *CreateExperimentRequest) GetThreadID() (v int64) { @@ -457,6 +471,9 @@ 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 *int64) { p.ThreadID = val } @@ -492,6 +509,7 @@ 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", 200: "session", 255: "Base", @@ -589,6 +607,10 @@ 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 } @@ -813,6 +835,14 @@ 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.I64 { if err = p.ReadField60(iprot); err != nil { @@ -1183,6 +1213,17 @@ 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 *int64 @@ -1313,6 +1354,10 @@ 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 @@ -1808,6 +1853,24 @@ 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.I64, 60); err != nil { @@ -1949,6 +2012,9 @@ 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 } @@ -2233,6 +2299,18 @@ 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 *int64) bool { if p.ThreadID == 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 b0ff5c59d..034e18541 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 @@ -394,6 +394,20 @@ 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.I64 { l, err = p.FastReadField60(buf[offset:]) @@ -844,6 +858,20 @@ 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 @@ -900,6 +928,7 @@ 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.fastWriteField60(buf[offset:], w) offset += p.fastWriteField4(buf[offset:], w) offset += p.fastWriteField5(buf[offset:], w) @@ -948,6 +977,7 @@ func (p *CreateExperimentRequest) BLength() int { l += p.field42Length() l += p.field43Length() l += p.field45Length() + l += p.field46Length() l += p.field60Length() l += p.field200Length() l += p.field255Length() @@ -1199,6 +1229,15 @@ 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() { @@ -1452,6 +1491,15 @@ 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() { @@ -1655,6 +1703,11 @@ func (p *CreateExperimentRequest) DeepCopy(s interface{}) error { p.ItemRetryNum = &tmp } + if src.TrialRunItemCount != nil { + tmp := *src.TrialRunItemCount + p.TrialRunItemCount = &tmp + } + if src.ThreadID != nil { tmp := *src.ThreadID p.ThreadID = &tmp 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 eb3d17030..da49cb20d 100644 --- a/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.expt.thrift +++ b/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.expt.thrift @@ -38,6 +38,7 @@ 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 i64 thread_id (api.js_conv='true', go.tag='json:"thread_id"') // 关联的智能评测会话ID From ef4265f7a5073c5e0e3d5ed9932c99f0eec11c09 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Mon, 23 Mar 2026 21:30:14 +0800 Subject: [PATCH 13/57] fix Change-Id: Ib8a228a463fb70a2c3cfc3c22c472c8b1f354a77 --- .../expt/coze.loop.evaluation.expt.go | 94 ++++++++- .../expt/k-coze.loop.evaluation.expt.go | 53 +++++ .../mysql/gorm_gen/model/dataset.gen.go | 5 +- .../application/convertor/experiment/expt.go | 6 +- .../evaluation/application/experiment_app.go | 18 +- .../modules/evaluation/domain/entity/expt.go | 1 + .../evaluation/domain/entity/expt_run.go | 2 + .../modules/evaluation/domain/entity/param.go | 1 + .../domain/service/expt_manage_impl.go | 1 + .../service/expt_run_scheduler_mode_impl.go | 199 ++++++++++++++++++ .../repo/experiment/mysql/convert/expt.go | 4 + .../mysql/gorm_gen/model/experiment.gen.go | 1 + .../mysql/gorm_gen/query/experiment.gen.go | 6 +- .../coze.loop.evaluation.expt.thrift | 1 + .../mysql-init/init-sql/experiment.sql | 1 + 15 files changed, 371 insertions(+), 22 deletions(-) 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 10a953d20..0314a6a30 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 @@ -8414,14 +8414,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 { @@ -8491,6 +8493,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) { @@ -8541,6 +8555,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 } @@ -8557,6 +8574,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", @@ -8582,6 +8600,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 } @@ -8652,6 +8674,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 { @@ -8773,6 +8803,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 { @@ -8845,6 +8886,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 @@ -8973,6 +9018,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 { @@ -9068,6 +9131,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 } @@ -9141,6 +9207,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 034e18541..15ffda290 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 @@ -6257,6 +6257,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:]) @@ -6399,6 +6413,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 @@ -6465,6 +6493,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) @@ -6483,6 +6512,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() @@ -6543,6 +6573,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() { @@ -6625,6 +6664,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() { @@ -6693,6 +6741,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/modules/data/infra/repo/dataset/mysql/gorm_gen/model/dataset.gen.go b/backend/modules/data/infra/repo/dataset/mysql/gorm_gen/model/dataset.gen.go index 4018543a0..7f46be9cc 100644 --- a/backend/modules/data/infra/repo/dataset/mysql/gorm_gen/model/dataset.gen.go +++ b/backend/modules/data/infra/repo/dataset/mysql/gorm_gen/model/dataset.gen.go @@ -5,13 +5,10 @@ package model import ( - "encoding/json" "time" - "github.com/coze-dev/coze-loop/backend/modules/data/infra/repo/dataset/mysql/gorm_gen/model" "gorm.io/datatypes" - "gorm.io/gorm" - "gorm.io/gorm/schema" + "gorm.io/plugin/soft_delete" ) const TableNameDataset = "dataset" diff --git a/backend/modules/evaluation/application/convertor/experiment/expt.go b/backend/modules/evaluation/application/convertor/experiment/expt.go index ad42f6b46..d32549f3a 100644 --- a/backend/modules/evaluation/application/convertor/experiment/expt.go +++ b/backend/modules/evaluation/application/convertor/experiment/expt.go @@ -475,8 +475,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 } @@ -498,6 +501,7 @@ 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() { diff --git a/backend/modules/evaluation/application/experiment_app.go b/backend/modules/evaluation/application/experiment_app.go index 9b7c874d8..46b0a4b26 100644 --- a/backend/modules/evaluation/application/experiment_app.go +++ b/backend/modules/evaluation/application/experiment_app.go @@ -466,7 +466,8 @@ func (e *experimentApplication) SubmitExperiment(ctx context.Context, req *expt. Session: req.Session, EnableWeightedScore: req.EnableWeightedScore, // EvaluatorScoreWeights 会在 CreateExperiment 的 resolveEvaluatorVersionIDsFromCreateReq 中解析 - ItemRetryNum: req.ItemRetryNum, + ItemRetryNum: req.ItemRetryNum, + TrialRunItemCount: req.TrialRunItemCount, } if req.IsSetExptTemplateID() { createReq.ExptTemplateID = gptr.Of(req.GetExptTemplateID()) @@ -477,12 +478,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 @@ -974,7 +976,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/domain/entity/expt.go b/backend/modules/evaluation/domain/entity/expt.go index f2f0303a8..176bc844d 100644 --- a/backend/modules/evaluation/domain/entity/expt.go +++ b/backend/modules/evaluation/domain/entity/expt.go @@ -141,6 +141,7 @@ type Experiment struct { MaxAliveTime int64 SourceType SourceType SourceID string + TrialRunItemCount int64 Stats *ExptStats AggregateResult *ExptAggregateResult diff --git a/backend/modules/evaluation/domain/entity/expt_run.go b/backend/modules/evaluation/domain/entity/expt_run.go index 9d89ece48..1c6d7daf4 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/param.go b/backend/modules/evaluation/domain/entity/param.go index bdc835d19..3534175de 100644 --- a/backend/modules/evaluation/domain/entity/param.go +++ b/backend/modules/evaluation/domain/entity/param.go @@ -285,6 +285,7 @@ type CreateExptParam struct { 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"` } type ExptRunCheckOption struct { diff --git a/backend/modules/evaluation/domain/service/expt_manage_impl.go b/backend/modules/evaluation/domain/service/expt_manage_impl.go index 5eec35b66..ebcbaa560 100644 --- a/backend/modules/evaluation/domain/service/expt_manage_impl.go +++ b/backend/modules/evaluation/domain/service/expt_manage_impl.go @@ -672,6 +672,7 @@ func (e *ExptMangerImpl) CreateExpt(ctx context.Context, req *entity.CreateExptP MaxAliveTime: req.MaxAliveTime, SourceType: req.SourceType, SourceID: req.SourceID, + TrialRunItemCount: req.TrialRunItemCount, Target: tuple.Target, Evaluators: tuple.Evaluators, 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 a8106e0dd..bbdcea8a0 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 @@ -90,6 +90,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: @@ -119,6 +121,10 @@ type ExptSubmitExec struct { templateManager IExptTemplateManager } +type ExptTrialRunExec struct { + *ExptSubmitExec +} + func NewExptSubmitMode( manager IExptManager, exptItemResultRepo repo.IExptItemResultRepo, @@ -151,10 +157,203 @@ 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); 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) + } + } + 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/infra/repo/experiment/mysql/convert/expt.go b/backend/modules/evaluation/infra/repo/experiment/mysql/convert/expt.go index f72660d9f..5421456c4 100644 --- a/backend/modules/evaluation/infra/repo/experiment/mysql/convert/expt.go +++ b/backend/modules/evaluation/infra/repo/experiment/mysql/convert/expt.go @@ -62,6 +62,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 } @@ -109,6 +112,7 @@ func (ExptConverter) PO2DO(expt *model.Experiment, refs []*model.ExptEvaluatorRe MaxAliveTime: gptr.Indirect(expt.MaxAliveTime), Visibility: entity.Visibility(expt.Visibility), ThreadID: expt.ThreadID, + TrialRunItemCount: gptr.Indirect(expt.TrialRunItemCount), } // 如果数据库中有模板 ID,则在 ExptTemplateMeta 中回填 ID,方便上层按模板 ID 查询和聚合 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 c3b9a0411..2f053d98f 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 @@ -41,6 +41,7 @@ type Experiment struct { MaxAliveTime *int64 `gorm:"column:max_alive_time;type:bigint(20) unsigned;comment:最大存活时间" json:"max_alive_time"` // 最大存活时间 Visibility int32 `gorm:"column:visibility;type:int(11) unsigned;not null;comment:可见性,默认0-可见,1-隐藏" json:"visibility"` // 可见性,默认0-可见,1-隐藏 ThreadID int64 `gorm:"column:thread_id;type:bigint(20) unsigned;not null;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/query/experiment.gen.go b/backend/modules/evaluation/infra/repo/experiment/mysql/gorm_gen/query/experiment.gen.go index 6fd9f744a..91296d62d 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 @@ -54,6 +54,7 @@ func newExperiment(db *gorm.DB, opts ...gen.DOOption) experiment { _experiment.MaxAliveTime = field.NewInt64(tableName, "max_alive_time") _experiment.Visibility = field.NewInt32(tableName, "visibility") _experiment.ThreadID = field.NewInt64(tableName, "thread_id") + _experiment.MaxAliveTime = field.NewInt64(tableName, "max_alive_time") _experiment.fillFieldMap() @@ -92,6 +93,7 @@ type experiment struct { MaxAliveTime field.Int64 // 最大存活时间 Visibility field.Int32 // 可见性,默认0-可见,1-隐藏 ThreadID field.Int64 // 智能生成会话ID + MaxAliveTime field.Int64 // 试运行行数 fieldMap map[string]field.Expr } @@ -135,6 +137,7 @@ func (e *experiment) updateTableName(table string) *experiment { e.MaxAliveTime = field.NewInt64(table, "max_alive_time") e.Visibility = field.NewInt32(table, "visibility") e.ThreadID = field.NewInt64(table, "thread_id") + e.MaxAliveTime = field.NewInt64(table, "max_alive_time") e.fillFieldMap() @@ -161,7 +164,7 @@ func (e *experiment) GetFieldByName(fieldName string) (field.OrderExpr, bool) { } func (e *experiment) fillFieldMap() { - e.fieldMap = make(map[string]field.Expr, 27) + e.fieldMap = make(map[string]field.Expr, 28) e.fieldMap["id"] = e.ID e.fieldMap["space_id"] = e.SpaceID e.fieldMap["created_by"] = e.CreatedBy @@ -189,6 +192,7 @@ func (e *experiment) fillFieldMap() { e.fieldMap["max_alive_time"] = e.MaxAliveTime e.fieldMap["visibility"] = e.Visibility e.fieldMap["thread_id"] = e.ThreadID + e.fieldMap["max_alive_time"] = e.MaxAliveTime } func (e experiment) clone(db *gorm.DB) experiment { 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 da49cb20d..f3fed3143 100644 --- a/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.expt.thrift +++ b/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.expt.thrift @@ -174,6 +174,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/release/deployment/docker-compose/bootstrap/mysql-init/init-sql/experiment.sql b/release/deployment/docker-compose/bootstrap/mysql-init/init-sql/experiment.sql index c18770da6..d84b55d69 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 @@ -27,6 +27,7 @@ CREATE TABLE IF NOT EXISTS `experiment` `max_alive_time` bigint unsigned DEFAULT NULL COMMENT '最大存活时间', `visibility` int unsigned NOT NULL DEFAULT '0' COMMENT '可见性,默认0-可见,1-隐藏', `thread_id` bigint unsigned NOT NULL DEFAULT '0' COMMENT '智能生成会话ID', + `max_alive_time` 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`), From f6288a004eb8d70180130a0203c5999af3fcfe15 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Tue, 24 Mar 2026 15:14:37 +0800 Subject: [PATCH 14/57] fix Change-Id: I9378c980c541d2febf833a635e7ad6220c1e4acc --- .../domain/eval_target/eval_target.go | 1000 +++++++++++++++++ .../eval_target/eval_target_validator.go | 34 + .../domain/eval_target/k-eval_target.go | 717 ++++++++++++ .../convertor/target/eval_target.go | 101 ++ .../evaluation/domain/entity/target.go | 5 + .../evaluation/domain/entity/target_test.go | 6 + .../target/mysql/convertor/eval_target.go | 10 + .../loop/evaluation/domain/eval_target.thrift | 22 + 8 files changed, 1895 insertions(+) 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 94c298c33..cd59fd9fc 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 ) func (p EvalTargetType) String() string { @@ -71,6 +73,8 @@ func (p EvalTargetType) String() string { return "CustomRPCServer" case EvalTargetType_VolcengineAgentAgentkit: return "VolcengineAgentAgentkit" + case EvalTargetType_WebAgent: + return "WebAgent" } return "" } @@ -91,6 +95,8 @@ func EvalTargetTypeFromString(s string) (EvalTargetType, error) { return EvalTargetType_CustomRPCServer, nil case "VolcengineAgentAgentkit": return EvalTargetType_VolcengineAgentAgentkit, nil + case "WebAgent": + return EvalTargetType_WebAgent, nil } return EvalTargetType(0), fmt.Errorf("not a valid EvalTargetType string") } @@ -1441,6 +1447,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 { @@ -1545,6 +1553,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 } @@ -1569,6 +1589,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", @@ -1579,6 +1602,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 { @@ -1613,6 +1637,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 @@ -1695,6 +1723,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 @@ -1821,6 +1857,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 @@ -1860,6 +1904,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 @@ -2038,6 +2086,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 { @@ -2077,6 +2143,9 @@ func (p *EvalTargetContent) DeepEqual(ano *EvalTargetContent) bool { if !p.Field105DeepEqual(ano.CustomRPCServer) { return false } + if !p.Field106DeepEqual(ano.WebAgent) { + return false + } return true } @@ -2153,6 +2222,937 @@ func (p *EvalTargetContent) Field105DeepEqual(src *CustomRPCServer) bool { } 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.Field2DeepEqual(ano.OutputRule) { + return false + } + return true +} + +func (p *WebAgentTargetPromptConfig) Field1DeepEqual(src []*common.Message) bool { + + if len(p.MessageList) != len(src) { + return false + } + for i, v := range p.MessageList { + _src := src[i] + if !v.DeepEqual(_src) { + return false + } + } + return true +} +func (p *WebAgentTargetPromptConfig) Field2DeepEqual(src *WebAgentTargetPromptConfigOutputRule) bool { + + if !p.OutputRule.DeepEqual(src) { + return false + } + return true +} + +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 !p.IsSetMessage() { + return WebAgentTargetPromptConfigOutputRule_Message_DEFAULT + } + return p.Message +} +func (p *WebAgentTargetPromptConfigOutputRule) SetMessage(val *common.Message) { + p.Message = val +} + +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 + } + + 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 *WebAgentTargetPromptConfigOutputRule) ReadField1(iprot thrift.TProtocol) error { + _field := common.NewMessage() + if err := _field.Read(iprot); err != nil { + return err + } + p.Message = _field + return nil +} + +func (p *WebAgentTargetPromptConfigOutputRule) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("WebAgentTargetPromptConfigOutputRule"); 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 *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 *WebAgentTargetPromptConfigOutputRule) Field1DeepEqual(src *common.Message) bool { + + if !p.Message.DeepEqual(src) { + return false + } + return true +} type CustomRPCServer struct { // 应用ID 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..e765c8d52 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() { @@ -1280,6 +1317,15 @@ func (p *EvalTargetContent) field105Length() int { 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 { @@ -1369,6 +1415,677 @@ func (p *EvalTargetContent) DeepCopy(s interface{}) error { } 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 *WebAgentTargetPromptConfig) field1Length() int { + l := 0 + if p.IsSetMessageList() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.ListBeginLength() + for _, v := range p.MessageList { + _ = v + l += v.BLength() + } + } + return l +} + +func (p *WebAgentTargetPromptConfig) field2Length() int { + l := 0 + if p.IsSetOutputRule() { + l += thrift.Binary.FieldBeginLength() + l += p.OutputRule.BLength() + } + return l +} + +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.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.Message{} + if err := _elem.DeepCopy(elem); err != nil { + return err + } + } + + p.MessageList = append(p.MessageList, _elem) + } + } + + 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 + } + } + 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_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 +} + +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) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *WebAgentTargetPromptConfigOutputRule) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +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) + } + return offset +} + +func (p *WebAgentTargetPromptConfigOutputRule) field1Length() int { + l := 0 + if p.IsSetMessage() { + l += thrift.Binary.FieldBeginLength() + l += p.Message.BLength() + } + return l +} + +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.Message = _message + return nil } diff --git a/backend/modules/evaluation/application/convertor/target/eval_target.go b/backend/modules/evaluation/application/convertor/target/eval_target.go index 1ddc355ec..beb3eed42 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()) } @@ -197,6 +200,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), @@ -263,6 +274,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/domain/entity/target.go b/backend/modules/evaluation/domain/entity/target.go index ae30ff009..3a425a816 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 ) func (p EvalTargetType) String() string { @@ -74,6 +77,8 @@ func (p EvalTargetType) String() string { return "CustomRPCServer" case EvalTargetTypeVolcengineAgentAgentkit: return "VolcengineAgentKit" + case EvalTargetTypeWebAgent: + return "WebAgent" } return "" } diff --git a/backend/modules/evaluation/domain/entity/target_test.go b/backend/modules/evaluation/domain/entity/target_test.go index 4fc8a12ed..7057e4858 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()) var unknown EvalTargetType = 99 assert.Equal(t, "", unknown.String()) } @@ -61,6 +62,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/infra/repo/target/mysql/convertor/eval_target.go b/backend/modules/evaluation/infra/repo/target/mysql/convertor/eval_target.go index 3820b5b2b..cd761266d 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 @@ -68,6 +68,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 { @@ -211,6 +216,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/idl/thrift/coze/loop/evaluation/domain/eval_target.thrift b/idl/thrift/coze/loop/evaluation/domain/eval_target.thrift index f97dfad74..b587740d3 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智能体 } // Agent协议类型 From e3d1a4ee3ff61dd84ecd180bca9c8866870ab1f4 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Tue, 24 Mar 2026 15:15:49 +0800 Subject: [PATCH 15/57] fix Change-Id: Iae93d7d9f525e90e6ba100a154694db6aefbfd96 --- .../domain/entity/target_builtin_web_agent.go | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 backend/modules/evaluation/domain/entity/target_builtin_web_agent.go 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 +} From bc83651b8a533c58bfdb648be1082688fc0c154e Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Tue, 24 Mar 2026 16:58:16 +0800 Subject: [PATCH 16/57] fix Change-Id: I44f969825a48b266b850c07203d5d7d8e2067067 --- .../modules/evaluation/domain/entity/param.go | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/backend/modules/evaluation/domain/entity/param.go b/backend/modules/evaluation/domain/entity/param.go index 3534175de..e637ecb21 100644 --- a/backend/modules/evaluation/domain/entity/param.go +++ b/backend/modules/evaluation/domain/entity/param.go @@ -122,11 +122,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 { @@ -159,6 +160,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 From 4050fd4607dafe0cc1c593561b9acf55f1cde2a2 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Tue, 24 Mar 2026 17:04:43 +0800 Subject: [PATCH 17/57] fix Change-Id: Ia683abf01b1797cf1bf4bf39bf80e3f156b80585 --- .../application/convertor/experiment/expt.go | 1 + .../convertor/experiment/expt_template.go | 1 + .../evaluation/application/eval_target_app.go | 3 ++- .../modules/evaluation/domain/entity/expt.go | 25 ++++++++++--------- .../domain/service/expt_manage_impl.go | 3 ++- .../domain/service/expt_template_impl.go | 6 +++-- 6 files changed, 23 insertions(+), 16 deletions(-) diff --git a/backend/modules/evaluation/application/convertor/experiment/expt.go b/backend/modules/evaluation/application/convertor/experiment/expt.go index d32549f3a..f320258fe 100644 --- a/backend/modules/evaluation/application/convertor/experiment/expt.go +++ b/backend/modules/evaluation/application/convertor/experiment/expt.go @@ -457,6 +457,7 @@ func CreateEvalTargetParamDTO2DO(param *eval_target.CreateEvalTargetParam) *enti BotPublishVersion: param.BotPublishVersion, Region: param.Region, Env: param.Env, + OperationInstruction: param.OperationInstruction, } if param.EvalTargetType != nil { res.EvalTargetType = gptr.Of(entity.EvalTargetType(*param.EvalTargetType)) diff --git a/backend/modules/evaluation/application/convertor/experiment/expt_template.go b/backend/modules/evaluation/application/convertor/experiment/expt_template.go index 0a20a4318..7d515b466 100644 --- a/backend/modules/evaluation/application/convertor/experiment/expt_template.go +++ b/backend/modules/evaluation/application/convertor/experiment/expt_template.go @@ -980,6 +980,7 @@ func CreateEvalTargetParamDTO2DOForTemplate(param *eval_target.CreateEvalTargetP BotPublishVersion: param.BotPublishVersion, Region: param.Region, Env: param.Env, + OperationInstruction: param.OperationInstruction, } if param.EvalTargetType != nil { res.EvalTargetType = gptr.Of(entity.EvalTargetType(*param.EvalTargetType)) diff --git a/backend/modules/evaluation/application/eval_target_app.go b/backend/modules/evaluation/application/eval_target_app.go index bea655e2b..374c61806 100644 --- a/backend/modules/evaluation/application/eval_target_app.go +++ b/backend/modules/evaluation/application/eval_target_app.go @@ -89,7 +89,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, diff --git a/backend/modules/evaluation/domain/entity/expt.go b/backend/modules/evaluation/domain/entity/expt.go index 176bc844d..bbb9faf3d 100644 --- a/backend/modules/evaluation/domain/entity/expt.go +++ b/backend/modules/evaluation/domain/entity/expt.go @@ -137,10 +137,10 @@ type Experiment struct { StartAt *time.Time EndAt *time.Time - ExptType ExptType - MaxAliveTime int64 - SourceType SourceType - SourceID string + ExptType ExptType + MaxAliveTime int64 + SourceType SourceType + SourceID string TrialRunItemCount int64 Stats *ExptStats @@ -365,14 +365,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/service/expt_manage_impl.go b/backend/modules/evaluation/domain/service/expt_manage_impl.go index ebcbaa560..ac2653e8e 100644 --- a/backend/modules/evaluation/domain/service/expt_manage_impl.go +++ b/backend/modules/evaluation/domain/service/expt_manage_impl.go @@ -596,7 +596,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, diff --git a/backend/modules/evaluation/domain/service/expt_template_impl.go b/backend/modules/evaluation/domain/service/expt_template_impl.go index d5d63570c..4e698ad81 100644 --- a/backend/modules/evaluation/domain/service/expt_template_impl.go +++ b/backend/modules/evaluation/domain/service/expt_template_impl.go @@ -283,7 +283,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, @@ -801,7 +802,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, From d2977ad9eaa444209a859da585374ef221d6ab0a Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Tue, 24 Mar 2026 19:19:55 +0800 Subject: [PATCH 18/57] fix Change-Id: Ie432ceef38f7c5c633bbbd919a16f0ed21672fb7 --- backend/modules/evaluation/domain/entity/expt.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/backend/modules/evaluation/domain/entity/expt.go b/backend/modules/evaluation/domain/entity/expt.go index bbb9faf3d..4b517a378 100644 --- a/backend/modules/evaluation/domain/entity/expt.go +++ b/backend/modules/evaluation/domain/entity/expt.go @@ -174,10 +174,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 { From 55dd6504bb5001c660b71cbcfecd4fad73ad7461 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Tue, 24 Mar 2026 21:06:47 +0800 Subject: [PATCH 19/57] fix Change-Id: Iaa44743df110ac9c5627dd4f4cd4f6d185acc16d --- backend/go.sum | 1 + backend/modules/evaluation/application/wire_gen.go | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) 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/modules/evaluation/application/wire_gen.go b/backend/modules/evaluation/application/wire_gen.go index c87e0573f..572621472 100644 --- a/backend/modules/evaluation/application/wire_gen.go +++ b/backend/modules/evaluation/application/wire_gen.go @@ -293,7 +293,7 @@ func InitEvalTargetApplication(ctx context.Context, idgen2 idgen.IIDGenerator, d return evalTargetService, nil } -func InitEvalOpenAPIApplication(ctx context.Context, configFactory conf.IConfigLoaderFactory, rmqFactory mq.IFactory, cmdable redis.Cmdable, idgen2 idgen.IIDGenerator, db2 db.Provider, client promptmanageservice.Client, executeClient promptexecuteservice.Client, authClient authservice.Client, meter metrics.Meter, dataClient datasetservice.Client, userClient userservice.Client, llmClient llmruntimeservice.Client, tagClient tagservice.Client, limiterFactory limiter.IRateLimiterFactory, objectStorage fileserver.ObjectStorage, batchObjectStorage fileserver.BatchObjectStorage, auditClient audit.IAuditService, benefitService benefit.IBenefitService, ckProvider ck.Provider, plainLimiterFactory limiter.IPlainRateLimiterFactory, trajectoryAdapter rpc.ITrajectoryAdapter, fileClient fileservice.Client) (evaluation.EvalOpenAPIService, error) { +func InitEvalOpenAPIApplication(ctx context.Context, configFactory conf.IConfigLoaderFactory, rmqFactory mq.IFactory, cmdable redis.Cmdable, idgen2 idgen.IIDGenerator, db2 db.Provider, client promptmanageservice.Client, executeClient promptexecuteservice.Client, authClient authservice.Client, meter metrics.Meter, dataClient datasetservice.Client, userClient userservice.Client, llmClient llmruntimeservice.Client, tagClient tagservice.Client, limiterFactory limiter.IRateLimiterFactory, objectStorage fileserver.ObjectStorage, batchObjectStorage fileserver.BatchObjectStorage, auditClient audit.IAuditService, benefitService benefit.IBenefitService, ckProvider ck.Provider, plainLimiterFactory limiter.IPlainRateLimiterFactory, trajectoryAdapter rpc.ITrajectoryAdapter, fileClient fileservice.Client) (IEvalOpenAPIApplication, error) { iEvalAsyncDAO := dao.NewEvalAsyncDAO(cmdable) iEvalAsyncRepo := experiment.NewEvalAsyncRepo(iEvalAsyncDAO) exptEventPublisher, err := producer.NewExptEventPublisher(ctx, configFactory, rmqFactory) @@ -400,8 +400,8 @@ func InitEvalOpenAPIApplication(ctx context.Context, configFactory conf.IConfigL 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) - evalOpenAPIService := NewEvalOpenAPIApplication(iEvalAsyncRepo, exptEventPublisher, iEvalTargetService, iAuthProvider, iEvaluationSetService, evaluationSetVersionService, evaluationSetItemService, evaluationSetSchemaService, openAPIEvaluationMetrics, userInfoService, iExperimentApplication, iExptManager, exptResultService, exptAggrResultService, evaluatorService, evaluatorRecordService, iExptTemplateManager, iConfiger) - return evalOpenAPIService, nil + v3 := NewEvalOpenAPIApplication(iEvalAsyncRepo, exptEventPublisher, iEvalTargetService, iAuthProvider, iEvaluationSetService, evaluationSetVersionService, evaluationSetItemService, evaluationSetSchemaService, openAPIEvaluationMetrics, userInfoService, iExperimentApplication, iExptManager, exptResultService, exptAggrResultService, evaluatorService, evaluatorRecordService, iExptTemplateManager, iConfiger) + return v3, nil } // wire.go: From f47a8819d8d1fd54f21e02ca631dfbe368750605 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Wed, 25 Mar 2026 14:38:15 +0800 Subject: [PATCH 20/57] fix Change-Id: If4e0e9644d9f47d121b527b68dae281c0d8da30f --- .../mysql/gorm_gen/model/experiment.gen.go | 56 ++++++++-------- .../mysql/gorm_gen/query/experiment.gen.go | 64 +++++++++---------- .../mysql-init/init-sql/experiment.sql | 2 +- 3 files changed, 61 insertions(+), 61 deletions(-) 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 2f053d98f..45f446b60 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,34 +14,34 @@ 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;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;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"` // 最大存活时间 - Visibility int32 `gorm:"column:visibility;type:int(11) unsigned;not null;comment:可见性,默认0-可见,1-隐藏" json:"visibility"` // 可见性,默认0-可见,1-隐藏 - ThreadID int64 `gorm:"column:thread_id;type:bigint(20) unsigned;not null;comment:智能生成会话ID" json:"thread_id"` // 智能生成会话ID - TrialRunItemCount *int64 `gorm:"column:trial_run_item_count;type:bigint(20) unsigned;comment:试运行行数" json:"trial_run_item_count"` // 试运行行数 + 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;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;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"` // 最大存活时间 + Visibility int32 `gorm:"column:visibility;type:int(11) unsigned;not null;comment:可见性,默认0-可见,1-隐藏" json:"visibility"` // 可见性,默认0-可见,1-隐藏 + ThreadID int64 `gorm:"column:thread_id;type:bigint(20) unsigned;not null;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/query/experiment.gen.go b/backend/modules/evaluation/infra/repo/experiment/mysql/gorm_gen/query/experiment.gen.go index 91296d62d..a49a470e7 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 @@ -54,7 +54,7 @@ func newExperiment(db *gorm.DB, opts ...gen.DOOption) experiment { _experiment.MaxAliveTime = field.NewInt64(tableName, "max_alive_time") _experiment.Visibility = field.NewInt32(tableName, "visibility") _experiment.ThreadID = field.NewInt64(tableName, "thread_id") - _experiment.MaxAliveTime = field.NewInt64(tableName, "max_alive_time") + _experiment.TrialRunItemCount = field.NewInt64(tableName, "trial_run_item_count") _experiment.fillFieldMap() @@ -65,35 +65,35 @@ 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 // 最大存活时间 - Visibility field.Int32 // 可见性,默认0-可见,1-隐藏 - ThreadID field.Int64 // 智能生成会话ID - MaxAliveTime field.Int64 // 试运行行数 + 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 // 最大存活时间 + Visibility field.Int32 // 可见性,默认0-可见,1-隐藏 + ThreadID field.Int64 // 智能生成会话ID + TrialRunItemCount field.Int64 // 试运行行数 fieldMap map[string]field.Expr } @@ -137,7 +137,7 @@ func (e *experiment) updateTableName(table string) *experiment { e.MaxAliveTime = field.NewInt64(table, "max_alive_time") e.Visibility = field.NewInt32(table, "visibility") e.ThreadID = field.NewInt64(table, "thread_id") - e.MaxAliveTime = field.NewInt64(table, "max_alive_time") + e.TrialRunItemCount = field.NewInt64(table, "trial_run_item_count") e.fillFieldMap() @@ -192,7 +192,7 @@ func (e *experiment) fillFieldMap() { e.fieldMap["max_alive_time"] = e.MaxAliveTime e.fieldMap["visibility"] = e.Visibility e.fieldMap["thread_id"] = e.ThreadID - e.fieldMap["max_alive_time"] = e.MaxAliveTime + e.fieldMap["trial_run_item_count"] = e.TrialRunItemCount } func (e experiment) clone(db *gorm.DB) experiment { 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 d84b55d69..375d4181d 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 @@ -27,7 +27,7 @@ CREATE TABLE IF NOT EXISTS `experiment` `max_alive_time` bigint unsigned DEFAULT NULL COMMENT '最大存活时间', `visibility` int unsigned NOT NULL DEFAULT '0' COMMENT '可见性,默认0-可见,1-隐藏', `thread_id` bigint unsigned NOT NULL DEFAULT '0' COMMENT '智能生成会话ID', - `max_alive_time` bigint unsigned DEFAULT NULL COMMENT '试运行行数', + `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`), From 62c9cca3aa52efd4bed586fd3645ed1bccc0d869 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Wed, 25 Mar 2026 15:39:32 +0800 Subject: [PATCH 21/57] fox Change-Id: Iba43eccf72ab35c2a3371c039d5ffd6d0c057cce --- .../evaluation/infra/repo/experiment/mysql/expt_template.go | 2 ++ 1 file changed, 2 insertions(+) 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 4f5bb2080..926a9e5e2 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("experiment.visibility <> ?", int32(entity.Visibility_Hidden)) } else { db = db.Model(&model.ExptTemplate{}). Where("space_id = ?", spaceID). Where("deleted_at IS NULL") + db = db.Where("experiment.visibility <> ?", int32(entity.Visibility_Hidden)) } conds, ok := d.toConditions(filter, orders) From 0f4d9ebba333d96b114a1de3399f61c235660f03 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Wed, 25 Mar 2026 15:48:40 +0800 Subject: [PATCH 22/57] fix Change-Id: I07abe8f4d95f8f05635685fea7d0344eb4c9ea76 --- .../evaluation/infra/repo/experiment/mysql/expt_template.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 926a9e5e2..04c5a50fd 100644 --- a/backend/modules/evaluation/infra/repo/experiment/mysql/expt_template.go +++ b/backend/modules/evaluation/infra/repo/experiment/mysql/expt_template.go @@ -133,12 +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("experiment.visibility <> ?", int32(entity.Visibility_Hidden)) + 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("experiment.visibility <> ?", int32(entity.Visibility_Hidden)) + db = db.Where("expt_template.visibility <> ?", int32(entity.Visibility_Hidden)) } conds, ok := d.toConditions(filter, orders) From a56fb04547f9e67cea0145aef1456d772602c6e6 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Wed, 25 Mar 2026 16:27:39 +0800 Subject: [PATCH 23/57] fix Change-Id: Ie088042b956a4e749efcc081419737d76f858814 --- .../domain/service/expt_manage_execution_impl.go | 2 +- .../domain/service/expt_run_scheduler_mode_impl.go | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) 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 0ef0ddf99..1eb18fd94 100644 --- a/backend/modules/evaluation/domain/service/expt_manage_execution_impl.go +++ b/backend/modules/evaluation/domain/service/expt_manage_execution_impl.go @@ -302,7 +302,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) } 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 bbdcea8a0..c85aaa3f0 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 @@ -351,6 +351,14 @@ func (e *ExptTrialRunExec) ExptStart(ctx context.Context, event *entity.ExptSche 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 } From cf9ca970d3771a1b1d2a7c4c952d2fbd4ade1628 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Wed, 25 Mar 2026 16:55:25 +0800 Subject: [PATCH 24/57] fix Change-Id: I2e9bef958350025b763dd22ac4ad87191a6a086e --- .../evaluation/domain/service/expt_run_item_event_impl.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 77a6241d3..afde854f0 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 @@ -357,7 +357,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, From 1561b2149ff7a829de0b0629e338c52c43045842 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Thu, 26 Mar 2026 11:17:16 +0800 Subject: [PATCH 25/57] fix Change-Id: Ia37f4ab62a267393ea527b1d2d2396d5b8c1a5fe --- backend/modules/evaluation/domain/entity/common.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/backend/modules/evaluation/domain/entity/common.go b/backend/modules/evaluation/domain/entity/common.go index 1948661c1..5692204bc 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 用户信息结构体 From 3421ee3f33371d9cc110654be0b85edae65dcf79 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Thu, 26 Mar 2026 11:39:24 +0800 Subject: [PATCH 26/57] fix Change-Id: Iba5208c5c72699eb1d400405b1f8bcd171e14243 --- backend/modules/evaluation/domain/entity/expt.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/evaluation/domain/entity/expt.go b/backend/modules/evaluation/domain/entity/expt.go index 4b517a378..bf0382a51 100644 --- a/backend/modules/evaluation/domain/entity/expt.go +++ b/backend/modules/evaluation/domain/entity/expt.go @@ -231,7 +231,7 @@ func (t *TargetConf) Valid(ctx context.Context, targetType EvalTargetType) error if t == nil || t.TargetVersionID == 0 { return fmt.Errorf("invalid TargetConf: %v", json.Jsonify(t)) } - if targetType == EvalTargetTypeLoopPrompt || targetType == EvalTargetTypeCustomRPCServer { // prompt target might receive no input + if targetType == EvalTargetTypeLoopPrompt || targetType == EvalTargetTypeCustomRPCServer || targetType == EvalTargetTypeWebAgent { // prompt target might receive no input return nil } if t.IngressConf != nil && t.IngressConf.EvalSetAdapter != nil && len(t.IngressConf.EvalSetAdapter.FieldConfs) > 0 { From 9b7cd5bf730465fb188fbbfdd3348500d00fbdf9 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Thu, 26 Mar 2026 15:44:02 +0800 Subject: [PATCH 27/57] fix Change-Id: Iee07b274185cabe2fb5b26f014d4464b090016c1 --- .../evaluation/domain/service/expt_run_item_turn_impl.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 e8e29a633..32a295413 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 @@ -185,7 +185,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 name, content := range fields { if content.IsContentOmitted() { From b611f8a43caa8d63894afecfce9e7e20cb8f024f Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Thu, 26 Mar 2026 17:32:50 +0800 Subject: [PATCH 28/57] fix Change-Id: I1acb412c868245e90452c058af3e51fff9daf23a --- .../domain/eval_target/eval_target.go | 116 +++++++++++++++++- .../domain/eval_target/k-eval_target.go | 97 +++++++++++++++ .../domain_openapi/eval_target/eval_target.go | 116 +++++++++++++++++- .../eval_target/k-eval_target.go | 97 +++++++++++++++ .../convertor/experiment/openapi.go | 5 +- .../convertor/target/eval_target_record.go | 8 ++ .../modules/evaluation/consts/eval_target.go | 6 +- .../evaluation/domain/entity/target_record.go | 2 + .../domain/service/expt_result_impl.go | 16 +++ .../loop/evaluation/domain/eval_target.thrift | 1 + .../domain_openapi/eval_target.thrift | 1 + 11 files changed, 454 insertions(+), 11 deletions(-) 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 cd59fd9fc..8541ea7d4 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 @@ -10229,6 +10229,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 { @@ -10285,6 +10287,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 } @@ -10297,12 +10311,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 { @@ -10321,6 +10339,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 @@ -10371,6 +10393,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 @@ -10456,6 +10486,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 @@ -10479,6 +10538,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 @@ -10580,6 +10643,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 { @@ -10607,6 +10699,9 @@ func (p *EvalTargetOutputData) DeepEqual(ano *EvalTargetOutputData) bool { if !p.Field4DeepEqual(ano.TimeConsumingMs) { return false } + if !p.Field20DeepEqual(ano.Ext) { + return false + } return true } @@ -10649,6 +10744,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/k-eval_target.go b/backend/kitex_gen/coze/loop/evaluation/domain/eval_target/k-eval_target.go index e765c8d52..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 @@ -7252,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 @@ -7341,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) } @@ -7352,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 @@ -7364,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 @@ -7413,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() { @@ -7455,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 { @@ -7504,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_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/modules/evaluation/application/convertor/experiment/openapi.go b/backend/modules/evaluation/application/convertor/experiment/openapi.go index 19ac8de04..464c63f88 100644 --- a/backend/modules/evaluation/application/convertor/experiment/openapi.go +++ b/backend/modules/evaluation/application/convertor/experiment/openapi.go @@ -893,7 +893,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_record.go b/backend/modules/evaluation/application/convertor/target/eval_target_record.go index 165e2e92b..4d054a6d4 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, @@ -373,6 +375,7 @@ func ToInvokeOutputDataDO(req *openapi.ReportEvalTargetInvokeResultRequest) *ent return &entity.EvalTargetOutputData{ OutputFields: outputFields, + Ext: output.Ext, EvalTargetUsage: evalTargetUsage, EvalTargetRunError: nil, } @@ -386,7 +389,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, EvalTargetRunError: evalTargetRunError, } 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/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/service/expt_result_impl.go b/backend/modules/evaluation/domain/service/expt_result_impl.go index 7f53cb6e9..2fd51ccee 100644 --- a/backend/modules/evaluation/domain/service/expt_result_impl.go +++ b/backend/modules/evaluation/domain/service/expt_result_impl.go @@ -1813,6 +1813,16 @@ 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] + } + // TODO 批量将id2URI中的uri转换为url,写入id2URL + for _, targetRecord := range targetRecords { turnResultID, ok := targetResultID2turnResultID[targetRecord.ID] if !ok { @@ -1835,6 +1845,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, } diff --git a/idl/thrift/coze/loop/evaluation/domain/eval_target.thrift b/idl/thrift/coze/loop/evaluation/domain/eval_target.thrift index b587740d3..971fbb3f6 100644 --- a/idl/thrift/coze/loop/evaluation/domain/eval_target.thrift +++ b/idl/thrift/coze/loop/evaluation/domain/eval_target.thrift @@ -255,6 +255,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_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 { From 53e479742680d49d4cc31abc67aee2b4f7d823f0 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Thu, 26 Mar 2026 17:50:25 +0800 Subject: [PATCH 29/57] fix Change-Id: Ic9c252bca0aa59674b901b58286d6b36a26e8b1c --- .../evaluation/application/wire_gen.go | 10 +++--- .../domain/service/expt_result_impl.go | 32 ++++++++++++++++--- 2 files changed, 33 insertions(+), 9 deletions(-) diff --git a/backend/modules/evaluation/application/wire_gen.go b/backend/modules/evaluation/application/wire_gen.go index 572621472..36a8c72fa 100644 --- a/backend/modules/evaluation/application/wire_gen.go +++ b/backend/modules/evaluation/application/wire_gen.go @@ -141,7 +141,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) @@ -169,7 +170,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 } @@ -250,7 +250,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) @@ -373,7 +373,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) @@ -398,7 +399,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/domain/service/expt_result_impl.go b/backend/modules/evaluation/domain/service/expt_result_impl.go index 2fd51ccee..7f12243bc 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 @@ -412,7 +415,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 { @@ -866,6 +869,7 @@ type PayloadBuilder struct { EvalTargetService IEvalTargetService EvaluatorRecordService EvaluatorRecordService AnalysisService IEvaluationAnalysisService + FileProvider rpc.IFileProvider ExptTurnResultFilterKeyMappingEvaluatorMap map[string]*entity.ExptTurnResultFilterKeyMapping ExptTurnResultFilterKeyMappingAnnotationMap map[string]*entity.ExptTurnResultFilterKeyMapping @@ -890,6 +894,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, @@ -910,6 +915,7 @@ func NewPayloadBuilder(ctx context.Context, param *entity.MGetExperimentResultPa ExportFullContent: param.ExportFullContent, LoadEvaluatorFullContent: resolveLoadEvaluatorFullContent(param), LoadEvalTargetFullContent: resolveLoadEvalTargetFullContent(param), + FileProvider: fileProvider, } builder.ItemResults = make([]*entity.ItemResult, 0) @@ -1028,6 +1034,7 @@ type ExptResultBuilder struct { evalTargetService IEvalTargetService evaluatorRecordService EvaluatorRecordService analysisService IEvaluationAnalysisService + fileProvider rpc.IFileProvider // 控制是否保留 trajectory 字段 FullTrajectory bool @@ -1059,6 +1066,7 @@ func (b *PayloadBuilder) BuildItemResults(ctx context.Context) ([]*entity.ItemRe evaluationSetItemService: b.EvaluationSetItemService, ExptAnnotateRepo: b.ExptAnnotateRepo, analysisService: b.AnalysisService, + fileProvider: b.FileProvider, FullTrajectory: b.FullTrajectory, ExportFullContent: b.ExportFullContent, LoadEvaluatorFullContent: b.LoadEvaluatorFullContent, @@ -1138,6 +1146,7 @@ func (b *PayloadBuilder) BuildTurnResultFilter(ctx context.Context) ([]*entity.E evaluationSetItemService: b.EvaluationSetItemService, turnResultDO: b.BaseExptTurnResultDO, ExptAnnotateRepo: b.ExptAnnotateRepo, + fileProvider: b.FileProvider, FullTrajectory: b.FullTrajectory, ExportFullContent: b.ExportFullContent, LoadEvaluatorFullContent: b.LoadEvaluatorFullContent, @@ -1821,7 +1830,22 @@ func (e *ExptResultBuilder) buildTargetOutput(ctx context.Context) error { } id2URI[targetRecord.ID] = targetRecord.EvalTargetOutputData.Ext[consts.EvalTargetOutputFieldKeyScreenRecordingURI] } - // TODO 批量将id2URI中的uri转换为url,写入id2URL + 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] @@ -2205,7 +2229,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 { @@ -2455,7 +2479,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 From ed8d7353fdcdf70ab23ab913d2641b9c60bbff2d Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Thu, 26 Mar 2026 20:27:44 +0800 Subject: [PATCH 30/57] fix Change-Id: I8f81f05ce5f0644f5ede6962e36efafd40cbc19b --- backend/modules/evaluation/domain/service/expt_result_impl.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/modules/evaluation/domain/service/expt_result_impl.go b/backend/modules/evaluation/domain/service/expt_result_impl.go index 7f12243bc..d87eedb43 100644 --- a/backend/modules/evaluation/domain/service/expt_result_impl.go +++ b/backend/modules/evaluation/domain/service/expt_result_impl.go @@ -1870,7 +1870,7 @@ func (e *ExptResultBuilder) buildTargetOutput(ctx context.Context) error { } if targetRecord.EvalTargetOutputData != nil && targetRecord.EvalTargetOutputData.Ext != nil && - targetRecord.EvalTargetOutputData.Ext[consts.EvalTargetOutputFieldKeyScreenRecordingURI] == "" && + targetRecord.EvalTargetOutputData.Ext[consts.EvalTargetOutputFieldKeyScreenRecordingURI] != "" && id2URL != nil { targetRecord.EvalTargetOutputData.Ext[consts.EvalTargetOutputFieldKeyScreenRecordingURL] = id2URL[targetRecord.ID] } From 04891810554c32762d37618010e7cca63c0ca93b Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Fri, 27 Mar 2026 14:43:22 +0800 Subject: [PATCH 31/57] fix Change-Id: Ia68771b54fd94a8e3fd8306f87f3ba53a5478e9b --- backend/modules/evaluation/application/eval_target_app.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/backend/modules/evaluation/application/eval_target_app.go b/backend/modules/evaluation/application/eval_target_app.go index 374c61806..562734384 100644 --- a/backend/modules/evaluation/application/eval_target_app.go +++ b/backend/modules/evaluation/application/eval_target_app.go @@ -505,9 +505,6 @@ func (e EvalTargetApplicationImpl) GetSourceEvalTargetVersion(ctx context.Contex if strings.TrimSpace(request.GetSourceTargetID()) == "" { return nil, errorx.NewByCode(errno.CommonInvalidParamCode, errorx.WithExtraMsg("source target id is nil")) } - if strings.TrimSpace(request.GetSourceTargetVersion()) == "" { - return nil, errorx.NewByCode(errno.CommonInvalidParamCode, errorx.WithExtraMsg("source target version is nil")) - } // 鉴权 err = e.auth.Authorization(ctx, &rpc.AuthorizationParam{ ObjectID: strconv.FormatInt(request.WorkspaceID, 10), From 96f80bb44ed9c7cba60ea2ab52c4a69ff9c0a97f Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Fri, 27 Mar 2026 18:06:31 +0800 Subject: [PATCH 32/57] fix Change-Id: I714219ce93ed34e025cc42a4654c359a26466f28 --- .../loingestion/local_ingestionservice.go | 34 +++++++++++++++++++ .../coze.loop.evaluation.eval_target.thrift | 2 +- 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 backend/loop_gen/coze/loop/observability/loingestion/local_ingestionservice.go diff --git a/backend/loop_gen/coze/loop/observability/loingestion/local_ingestionservice.go b/backend/loop_gen/coze/loop/observability/loingestion/local_ingestionservice.go new file mode 100644 index 000000000..e93d66820 --- /dev/null +++ b/backend/loop_gen/coze/loop/observability/loingestion/local_ingestionservice.go @@ -0,0 +1,34 @@ +// Code generated by cozeloop. DO NOT EDIT. +package loingestion // import github.com/coze-dev/coze-loop/backend/loingestion + +import ( + "context" + + "github.com/cloudwego/kitex/pkg/endpoint" + "github.com/cloudwego/kitex/pkg/rpcinfo" + "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/ingestion" +) + +type LocalIngestionService struct { + impl ingestion.IngestionService // the service implementation + mds endpoint.Middleware +} + +func NewLocalIngestionService(impl ingestion.IngestionService, mds ...endpoint.Middleware) *LocalIngestionService { + return &LocalIngestionService{ + impl: impl, + mds: endpoint.Chain(mds...), + } +} + +func (l *LocalIngestionService) injectRPCInfo(ctx context.Context, method string) context.Context { + rpcStats := rpcinfo.AsMutableRPCStats(rpcinfo.NewRPCStats()) + ri := rpcinfo.NewRPCInfo( + rpcinfo.NewEndpointInfo("IngestionService", method, nil, nil), + rpcinfo.NewEndpointInfo("IngestionService", method, nil, nil), + rpcinfo.NewServerInvocation(), + nil, + rpcStats.ImmutableView(), + ) + return rpcinfo.NewCtxWithRPCInfo(ctx, ri) +} 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 0699b0234..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 @@ -328,7 +328,7 @@ 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评测对象版本的详情信息 + // 获取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' ) From a32b30f59ead81a565b73ddf76437affba2458a5 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Fri, 27 Mar 2026 20:29:37 +0800 Subject: [PATCH 33/57] fix Change-Id: I0f2992d178ced1aaa48bee705d62160bc169c27b --- .../mysql/gorm_gen/model/experiment.gen.go | 56 +++++++++---------- .../mysql/gorm_gen/model/expt_template.gen.go | 2 +- 2 files changed, 29 insertions(+), 29 deletions(-) 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 45f446b60..f11e85c9e 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,34 +14,34 @@ 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;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;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"` // 最大存活时间 - Visibility int32 `gorm:"column:visibility;type:int(11) unsigned;not null;comment:可见性,默认0-可见,1-隐藏" json:"visibility"` // 可见性,默认0-可见,1-隐藏 - ThreadID int64 `gorm:"column:thread_id;type:bigint(20) unsigned;not null;comment:智能生成会话ID" json:"thread_id"` // 智能生成会话ID - TrialRunItemCount *int64 `gorm:"column:trial_run_item_count;type:bigint(20) unsigned;comment:试运行行数" json:"trial_run_item_count"` // 试运行行数 + 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;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;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"` // 最大存活时间 + // Visibility int32 `gorm:"column:visibility;type:int(11) unsigned;not null;comment:可见性,默认0-可见,1-隐藏" json:"visibility"` // 可见性,默认0-可见,1-隐藏 + // ThreadID int64 `gorm:"column:thread_id;type:bigint(20) unsigned;not null;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 05e469f43..267bf82dd 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 @@ -31,7 +31,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-隐藏 + // Visibility int32 `gorm:"column:visibility;type:int(11) unsigned;not null;comment:可见性,默认0-可见,1-隐藏" json:"visibility"` // 可见性,默认0-可见,1-隐藏 } // TableName ExptTemplate's table name From c7516af974e2f0e142fb5035a40c1d8194d1c2c9 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Sat, 28 Mar 2026 14:50:45 +0800 Subject: [PATCH 34/57] fox Change-Id: I856cd7d4c7507543da6722be080eeb7109de368f --- .../infra/repo/experiment/mysql/convert/expt.go | 15 +++++++++------ .../experiment/mysql/convert/expt_template.go | 6 +++++- .../mysql/gorm_gen/model/expt_template.gen.go | 1 + 3 files changed, 15 insertions(+), 7 deletions(-) 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 5421456c4..98f422580 100644 --- a/backend/modules/evaluation/infra/repo/experiment/mysql/convert/expt.go +++ b/backend/modules/evaluation/infra/repo/experiment/mysql/convert/expt.go @@ -47,8 +47,9 @@ 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, + // TODO dsf ddl执行后放开 + // Visibility: int32(experiment.Visibility), + // ThreadID: experiment.ThreadID, } if experiment.MaxAliveTime != 0 { @@ -63,7 +64,8 @@ func (ExptConverter) DO2PO(experiment *entity.Experiment) (*model.Experiment, er expt.EvalConf = &bytes } if experiment.TrialRunItemCount != 0 { - expt.TrialRunItemCount = gptr.Of(experiment.TrialRunItemCount) + // TODO dsf ddl执行后放开 + // expt.TrialRunItemCount = gptr.Of(experiment.TrialRunItemCount) } return expt, nil @@ -110,9 +112,10 @@ 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), + // TODO dsf ddl执行后放开 + // Visibility: entity.Visibility(expt.Visibility), + // ThreadID: expt.ThreadID, + // TrialRunItemCount: gptr.Indirect(expt.TrialRunItemCount), } // 如果数据库中有模板 ID,则在 ExptTemplateMeta 中回填 ID,方便上层按模板 ID 查询和聚合 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 00a83eab2..8c4486083 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 @@ -59,6 +59,9 @@ func (ExptTemplateConverter) DO2PO(template *entity.ExptTemplate) (*model.ExptTe updatedBy = *template.BaseInfo.UpdatedBy.UserID } + // TODO dsf ddl执行后放开 + println(visibility) + po := &model.ExptTemplate{ ID: id, SpaceID: spaceID, @@ -72,7 +75,8 @@ func (ExptTemplateConverter) DO2PO(template *entity.ExptTemplate) (*model.ExptTe TargetType: int64(targetType), TargetVersionID: targetVersionID, ExptType: int32(exptType), - Visibility: int32(visibility), + // // TODO dsf ddl执行后放开 + // Visibility: int32(visibility), } if template.TemplateConf != nil { 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 267bf82dd..04278bfac 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 @@ -31,6 +31,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"` // 删除时间 + // TODO dsf ddl执行后放开 // Visibility int32 `gorm:"column:visibility;type:int(11) unsigned;not null;comment:可见性,默认0-可见,1-隐藏" json:"visibility"` // 可见性,默认0-可见,1-隐藏 } From e5d2c2e1ab5a7258eb92032d8a2a91c2217de872 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Sat, 28 Mar 2026 15:03:24 +0800 Subject: [PATCH 35/57] fix Change-Id: I8aa26a6991a6edb47408bb373eb02cbf94e31284 --- .../modules/evaluation/infra/repo/experiment/mysql/expt.go | 6 ++++-- .../evaluation/infra/repo/experiment/mysql/expt_template.go | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/backend/modules/evaluation/infra/repo/experiment/mysql/expt.go b/backend/modules/evaluation/infra/repo/experiment/mysql/expt.go index 5cf5a7462..a3b504f5c 100644 --- a/backend/modules/evaluation/infra/repo/experiment/mysql/expt.go +++ b/backend/modules/evaluation/infra/repo/experiment/mysql/expt.go @@ -110,10 +110,12 @@ 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)) + // TODO dsf ddl执行后放开 + // 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)) + // TODO dsf ddl执行后放开 + // 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 04c5a50fd..064563e50 100644 --- a/backend/modules/evaluation/infra/repo/experiment/mysql/expt_template.go +++ b/backend/modules/evaluation/infra/repo/experiment/mysql/expt_template.go @@ -133,12 +133,14 @@ 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)) + // TODO dsf ddl执行后放开 + // 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)) + // TODO dsf ddl执行后放开 + // db = db.Where("expt_template.visibility <> ?", int32(entity.Visibility_Hidden)) } conds, ok := d.toConditions(filter, orders) From bc5c28c4e7a6feaef1ef20721834a83b3c08d57a Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Mon, 30 Mar 2026 15:21:46 +0800 Subject: [PATCH 36/57] fix Change-Id: I6bd263e91f731048717f7331288dec064d92dba9 --- .../coze/loop/evaluation/domain/expt/expt.go | 22 ++++---- .../loop/evaluation/domain/expt/k-expt.go | 19 ++++--- .../coze.loop.evaluation.eval_target.go | 2 +- .../expt/coze.loop.evaluation.expt.go | 44 +++++++-------- .../expt/k-coze.loop.evaluation.expt.go | 38 +++++++------ .../loeval_target/local_evaltargetservice.go | 2 +- .../application/convertor/experiment/expt.go | 4 +- .../modules/evaluation/domain/entity/expt.go | 2 +- .../modules/evaluation/domain/entity/param.go | 2 +- .../domain/service/expt_manage_impl.go | 2 +- .../repo/experiment/mysql/convert/expt.go | 15 ++--- .../experiment/mysql/convert/expt_template.go | 6 +- .../infra/repo/experiment/mysql/expt.go | 6 +- .../repo/experiment/mysql/expt_template.go | 6 +- .../mysql/gorm_gen/model/experiment.gen.go | 56 +++++++++---------- .../mysql/gorm_gen/model/expt_template.gen.go | 3 +- .../mysql/gorm_gen/query/experiment.gen.go | 6 +- .../coze.loop.evaluation.expt.thrift | 4 +- .../coze/loop/evaluation/domain/expt.thrift | 2 +- .../mysql-init/init-sql/experiment.sql | 2 +- 20 files changed, 120 insertions(+), 123 deletions(-) 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 93d5e5183..f6d17cf52 100644 --- a/backend/kitex_gen/coze/loop/evaluation/domain/expt/expt.go +++ b/backend/kitex_gen/coze/loop/evaluation/domain/expt/expt.go @@ -1008,7 +1008,7 @@ 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 *int64 `thrift:"thread_id,63,optional" frugal:"63,optional,i64" json:"thread_id" form:"thread_id" query:"thread_id"` + ThreadID *string `thrift:"thread_id,63,optional" frugal:"63,optional,string" form:"thread_id" json:"thread_id,omitempty" query:"thread_id"` } func NewExperiment() *Experiment { @@ -1402,9 +1402,9 @@ func (p *Experiment) GetEnableWeightedScore() (v bool) { return *p.EnableWeightedScore } -var Experiment_ThreadID_DEFAULT int64 +var Experiment_ThreadID_DEFAULT string -func (p *Experiment) GetThreadID() (v int64) { +func (p *Experiment) GetThreadID() (v string) { if p == nil { return } @@ -1509,7 +1509,7 @@ func (p *Experiment) SetScoreWeightConfig(val *ExptScoreWeight) { func (p *Experiment) SetEnableWeightedScore(val *bool) { p.EnableWeightedScore = val } -func (p *Experiment) SetThreadID(val *int64) { +func (p *Experiment) SetThreadID(val *string) { p.ThreadID = val } @@ -1956,7 +1956,7 @@ func (p *Experiment) Read(iprot thrift.TProtocol) (err error) { goto SkipFieldError } case 63: - if fieldTypeId == thrift.I64 { + if fieldTypeId == thrift.STRING { if err = p.ReadField63(iprot); err != nil { goto ReadFieldError } @@ -2373,8 +2373,8 @@ func (p *Experiment) ReadField62(iprot thrift.TProtocol) error { } func (p *Experiment) ReadField63(iprot thrift.TProtocol) error { - var _field *int64 - if v, err := iprot.ReadI64(); err != nil { + var _field *string + if v, err := iprot.ReadString(); err != nil { return err } else { _field = &v @@ -3149,10 +3149,10 @@ WriteFieldEndError: } func (p *Experiment) writeField63(oprot thrift.TProtocol) (err error) { if p.IsSetThreadID() { - if err = oprot.WriteFieldBegin("thread_id", thrift.I64, 63); err != nil { + if err = oprot.WriteFieldBegin("thread_id", thrift.STRING, 63); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteI64(*p.ThreadID); err != nil { + if err := oprot.WriteString(*p.ThreadID); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -3630,14 +3630,14 @@ func (p *Experiment) Field62DeepEqual(src *bool) bool { } return true } -func (p *Experiment) Field63DeepEqual(src *int64) bool { +func (p *Experiment) Field63DeepEqual(src *string) bool { if p.ThreadID == src { return true } else if p.ThreadID == nil || src == nil { return false } - if *p.ThreadID != *src { + if strings.Compare(*p.ThreadID, *src) != 0 { return false } return true 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 3100d1d5d..522fdc97d 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 @@ -503,7 +503,7 @@ func (p *Experiment) FastRead(buf []byte) (int, error) { } } case 63: - if fieldTypeId == thrift.I64 { + if fieldTypeId == thrift.STRING { l, err = p.FastReadField63(buf[offset:]) offset += l if err != nil { @@ -1018,8 +1018,8 @@ func (p *Experiment) FastReadField62(buf []byte) (int, error) { func (p *Experiment) FastReadField63(buf []byte) (int, error) { offset := 0 - var _field *int64 - if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { return offset, err } else { offset += l @@ -1047,7 +1047,6 @@ func (p *Experiment) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset += p.fastWriteField41(buf[offset:], w) offset += p.fastWriteField45(buf[offset:], w) offset += p.fastWriteField62(buf[offset:], w) - offset += p.fastWriteField63(buf[offset:], w) offset += p.fastWriteField2(buf[offset:], w) offset += p.fastWriteField3(buf[offset:], w) offset += p.fastWriteField4(buf[offset:], w) @@ -1069,6 +1068,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 += thrift.Binary.WriteFieldStop(buf[offset:]) return offset @@ -1434,8 +1434,8 @@ func (p *Experiment) fastWriteField62(buf []byte, w thrift.NocopyWriter) int { func (p *Experiment) fastWriteField63(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetThreadID() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 63) - offset += thrift.Binary.WriteI64(buf[offset:], *p.ThreadID) + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 63) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.ThreadID) } return offset } @@ -1746,7 +1746,7 @@ func (p *Experiment) field63Length() int { l := 0 if p.IsSetThreadID() { l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.I64Length() + l += thrift.Binary.StringLengthNocopy(*p.ThreadID) } return l } @@ -1999,7 +1999,10 @@ func (p *Experiment) DeepCopy(s interface{}) error { } if src.ThreadID != nil { - tmp := *src.ThreadID + var tmp string + if *src.ThreadID != "" { + tmp = kutils.StringDeepCopy(*src.ThreadID) + } p.ThreadID = &tmp } 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 7b25074e5..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 @@ -14300,7 +14300,7 @@ type EvalTargetService interface { ListSourceEvalTargetVersions(ctx context.Context, request *ListSourceEvalTargetVersionsRequest) (r *ListSourceEvalTargetVersionsResponse, err error) BatchGetSourceEvalTargets(ctx context.Context, request *BatchGetSourceEvalTargetsRequest) (r *BatchGetSourceEvalTargetsResponse, err error) - // 获取Source评测对象版本的详情信息 + // 获取Source评测对象版本的详情 GetSourceEvalTargetVersion(ctx context.Context, request *GetSourceEvalTargetVersionRequest) (r *GetSourceEvalTargetVersionResponse, err error) // 搜索自定义评测对象 SearchCustomEvalTarget(ctx context.Context, req *SearchCustomEvalTargetRequest) (r *SearchCustomEvalTargetResponse, err error) 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 0314a6a30..5ccd052c0 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 @@ -57,7 +57,7 @@ type CreateExperimentRequest struct { // 试运行行数 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 *int64 `thrift:"thread_id,60,optional" frugal:"60,optional,i64" json:"thread_id" form:"thread_id" query:"thread_id"` + ThreadID *string `thrift:"thread_id,60,optional" frugal:"60,optional,string" form:"thread_id" json:"thread_id,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"` } @@ -364,9 +364,9 @@ func (p *CreateExperimentRequest) GetTrialRunItemCount() (v int64) { return *p.TrialRunItemCount } -var CreateExperimentRequest_ThreadID_DEFAULT int64 +var CreateExperimentRequest_ThreadID_DEFAULT string -func (p *CreateExperimentRequest) GetThreadID() (v int64) { +func (p *CreateExperimentRequest) GetThreadID() (v string) { if p == nil { return } @@ -474,7 +474,7 @@ func (p *CreateExperimentRequest) SetItemRetryNum(val *int32) { func (p *CreateExperimentRequest) SetTrialRunItemCount(val *int64) { p.TrialRunItemCount = val } -func (p *CreateExperimentRequest) SetThreadID(val *int64) { +func (p *CreateExperimentRequest) SetThreadID(val *string) { p.ThreadID = val } func (p *CreateExperimentRequest) SetSession(val *common.Session) { @@ -844,7 +844,7 @@ func (p *CreateExperimentRequest) Read(iprot thrift.TProtocol) (err error) { goto SkipFieldError } case 60: - if fieldTypeId == thrift.I64 { + if fieldTypeId == thrift.STRING { if err = p.ReadField60(iprot); err != nil { goto ReadFieldError } @@ -1226,8 +1226,8 @@ func (p *CreateExperimentRequest) ReadField46(iprot thrift.TProtocol) error { } func (p *CreateExperimentRequest) ReadField60(iprot thrift.TProtocol) error { - var _field *int64 - if v, err := iprot.ReadI64(); err != nil { + var _field *string + if v, err := iprot.ReadString(); err != nil { return err } else { _field = &v @@ -1873,10 +1873,10 @@ WriteFieldEndError: } func (p *CreateExperimentRequest) writeField60(oprot thrift.TProtocol) (err error) { if p.IsSetThreadID() { - if err = oprot.WriteFieldBegin("thread_id", thrift.I64, 60); err != nil { + if err = oprot.WriteFieldBegin("thread_id", thrift.STRING, 60); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteI64(*p.ThreadID); err != nil { + if err := oprot.WriteString(*p.ThreadID); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -2311,14 +2311,14 @@ func (p *CreateExperimentRequest) Field46DeepEqual(src *int64) bool { } return true } -func (p *CreateExperimentRequest) Field60DeepEqual(src *int64) bool { +func (p *CreateExperimentRequest) Field60DeepEqual(src *string) bool { if p.ThreadID == src { return true } else if p.ThreadID == nil || src == nil { return false } - if *p.ThreadID != *src { + if strings.Compare(*p.ThreadID, *src) != 0 { return false } return true @@ -2608,7 +2608,7 @@ type SubmitExperimentRequest struct { // 试运行行数 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 *int64 `thrift:"thread_id,60,optional" frugal:"60,optional,i64" json:"thread_id" form:"thread_id" query:"thread_id"` + ThreadID *string `thrift:"thread_id,60,optional" frugal:"60,optional,string" form:"thread_id" json:"thread_id,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"` @@ -2904,9 +2904,9 @@ func (p *SubmitExperimentRequest) GetTrialRunItemCount() (v int64) { return *p.TrialRunItemCount } -var SubmitExperimentRequest_ThreadID_DEFAULT int64 +var SubmitExperimentRequest_ThreadID_DEFAULT string -func (p *SubmitExperimentRequest) GetThreadID() (v int64) { +func (p *SubmitExperimentRequest) GetThreadID() (v string) { if p == nil { return } @@ -3023,7 +3023,7 @@ func (p *SubmitExperimentRequest) SetItemRetryNum(val *int32) { func (p *SubmitExperimentRequest) SetTrialRunItemCount(val *int64) { p.TrialRunItemCount = val } -func (p *SubmitExperimentRequest) SetThreadID(val *int64) { +func (p *SubmitExperimentRequest) SetThreadID(val *string) { p.ThreadID = val } func (p *SubmitExperimentRequest) SetExt(val map[string]string) { @@ -3388,7 +3388,7 @@ func (p *SubmitExperimentRequest) Read(iprot thrift.TProtocol) (err error) { goto SkipFieldError } case 60: - if fieldTypeId == thrift.I64 { + if fieldTypeId == thrift.STRING { if err = p.ReadField60(iprot); err != nil { goto ReadFieldError } @@ -3749,8 +3749,8 @@ func (p *SubmitExperimentRequest) ReadField46(iprot thrift.TProtocol) error { } func (p *SubmitExperimentRequest) ReadField60(iprot thrift.TProtocol) error { - var _field *int64 - if v, err := iprot.ReadI64(); err != nil { + var _field *string + if v, err := iprot.ReadString(); err != nil { return err } else { _field = &v @@ -4396,10 +4396,10 @@ WriteFieldEndError: } func (p *SubmitExperimentRequest) writeField60(oprot thrift.TProtocol) (err error) { if p.IsSetThreadID() { - if err = oprot.WriteFieldBegin("thread_id", thrift.I64, 60); err != nil { + if err = oprot.WriteFieldBegin("thread_id", thrift.STRING, 60); err != nil { goto WriteFieldBeginError } - if err := oprot.WriteI64(*p.ThreadID); err != nil { + if err := oprot.WriteString(*p.ThreadID); err != nil { return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -4850,14 +4850,14 @@ func (p *SubmitExperimentRequest) Field46DeepEqual(src *int64) bool { } return true } -func (p *SubmitExperimentRequest) Field60DeepEqual(src *int64) bool { +func (p *SubmitExperimentRequest) Field60DeepEqual(src *string) bool { if p.ThreadID == src { return true } else if p.ThreadID == nil || src == nil { return false } - if *p.ThreadID != *src { + if strings.Compare(*p.ThreadID, *src) != 0 { return false } return true 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 15ffda290..a548ec675 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 @@ -409,7 +409,7 @@ func (p *CreateExperimentRequest) FastRead(buf []byte) (int, error) { } } case 60: - if fieldTypeId == thrift.I64 { + if fieldTypeId == thrift.STRING { l, err = p.FastReadField60(buf[offset:]) offset += l if err != nil { @@ -875,8 +875,8 @@ func (p *CreateExperimentRequest) FastReadField46(buf []byte) (int, error) { func (p *CreateExperimentRequest) FastReadField60(buf []byte) (int, error) { offset := 0 - var _field *int64 - if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { return offset, err } else { offset += l @@ -929,7 +929,6 @@ func (p *CreateExperimentRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWri offset += p.fastWriteField43(buf[offset:], w) offset += p.fastWriteField45(buf[offset:], w) offset += p.fastWriteField46(buf[offset:], w) - offset += p.fastWriteField60(buf[offset:], w) offset += p.fastWriteField4(buf[offset:], w) offset += p.fastWriteField5(buf[offset:], w) offset += p.fastWriteField6(buf[offset:], w) @@ -943,6 +942,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.fastWriteField200(buf[offset:], w) offset += p.fastWriteField255(buf[offset:], w) } @@ -1241,8 +1241,8 @@ func (p *CreateExperimentRequest) fastWriteField46(buf []byte, w thrift.NocopyWr func (p *CreateExperimentRequest) fastWriteField60(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetThreadID() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 60) - offset += thrift.Binary.WriteI64(buf[offset:], *p.ThreadID) + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 60) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.ThreadID) } return offset } @@ -1504,7 +1504,7 @@ func (p *CreateExperimentRequest) field60Length() int { l := 0 if p.IsSetThreadID() { l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.I64Length() + l += thrift.Binary.StringLengthNocopy(*p.ThreadID) } return l } @@ -1709,7 +1709,10 @@ func (p *CreateExperimentRequest) DeepCopy(s interface{}) error { } if src.ThreadID != nil { - tmp := *src.ThreadID + var tmp string + if *src.ThreadID != "" { + tmp = kutils.StringDeepCopy(*src.ThreadID) + } p.ThreadID = &tmp } @@ -2260,7 +2263,7 @@ func (p *SubmitExperimentRequest) FastRead(buf []byte) (int, error) { } } case 60: - if fieldTypeId == thrift.I64 { + if fieldTypeId == thrift.STRING { l, err = p.FastReadField60(buf[offset:]) offset += l if err != nil { @@ -2708,8 +2711,8 @@ func (p *SubmitExperimentRequest) FastReadField46(buf []byte) (int, error) { func (p *SubmitExperimentRequest) FastReadField60(buf []byte) (int, error) { offset := 0 - var _field *int64 - if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { return offset, err } else { offset += l @@ -2794,7 +2797,6 @@ func (p *SubmitExperimentRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWri offset += p.fastWriteField42(buf[offset:], w) offset += p.fastWriteField45(buf[offset:], w) offset += p.fastWriteField46(buf[offset:], w) - offset += p.fastWriteField60(buf[offset:], w) offset += p.fastWriteField4(buf[offset:], w) offset += p.fastWriteField5(buf[offset:], w) offset += p.fastWriteField6(buf[offset:], w) @@ -2807,6 +2809,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.fastWriteField100(buf[offset:], w) offset += p.fastWriteField200(buf[offset:], w) offset += p.fastWriteField255(buf[offset:], w) @@ -3089,8 +3092,8 @@ func (p *SubmitExperimentRequest) fastWriteField46(buf []byte, w thrift.NocopyWr func (p *SubmitExperimentRequest) fastWriteField60(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetThreadID() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.I64, 60) - offset += thrift.Binary.WriteI64(buf[offset:], *p.ThreadID) + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 60) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.ThreadID) } return offset } @@ -3358,7 +3361,7 @@ func (p *SubmitExperimentRequest) field60Length() int { l := 0 if p.IsSetThreadID() { l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.I64Length() + l += thrift.Binary.StringLengthNocopy(*p.ThreadID) } return l } @@ -3565,7 +3568,10 @@ func (p *SubmitExperimentRequest) DeepCopy(s interface{}) error { } if src.ThreadID != nil { - tmp := *src.ThreadID + var tmp string + if *src.ThreadID != "" { + tmp = kutils.StringDeepCopy(*src.ThreadID) + } p.ThreadID = &tmp } 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 5c89a23ec..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 @@ -182,7 +182,7 @@ func (l *LocalEvalTargetService) BatchGetSourceEvalTargets(ctx context.Context, } // GetSourceEvalTargetVersion -// 获取Source评测对象版本的详情信息 +// 获取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) diff --git a/backend/modules/evaluation/application/convertor/experiment/expt.go b/backend/modules/evaluation/application/convertor/experiment/expt.go index f320258fe..eae9d6e48 100644 --- a/backend/modules/evaluation/application/convertor/experiment/expt.go +++ b/backend/modules/evaluation/application/convertor/experiment/expt.go @@ -358,8 +358,8 @@ func ToExptDTO(experiment *entity.Experiment) *domain_expt.Experiment { if experiment.Visibility == entity.Visibility_Hidden { res.Visibility = gptr.Of(domain_expt.VisibilityHidden) } - if experiment.ThreadID > 0 { - res.ThreadID = gptr.Of(experiment.ThreadID) + if experiment.ThreadID != nil { + res.ThreadID = experiment.ThreadID } // 注意:Experiment DTO 中没有 TripleConfig 字段,如果需要可以通过其他方式传递 diff --git a/backend/modules/evaluation/domain/entity/expt.go b/backend/modules/evaluation/domain/entity/expt.go index bf0382a51..92a1680ed 100644 --- a/backend/modules/evaluation/domain/entity/expt.go +++ b/backend/modules/evaluation/domain/entity/expt.go @@ -149,7 +149,7 @@ type Experiment struct { ExptTemplateMeta *ExptTemplateMeta // 关联的实验模板基础信息(仅在查询时按需填充,包含模板 ID) Visibility Visibility // 实验模板可见性,默认为空,可见 - ThreadID int64 // 关联的智能评测会话ID + ThreadID *string // 关联的智能评测会话ID } func (e *Experiment) ToEvaluatorRefDO() []*ExptEvaluatorRef { diff --git a/backend/modules/evaluation/domain/entity/param.go b/backend/modules/evaluation/domain/entity/param.go index e637ecb21..d29cced2f 100644 --- a/backend/modules/evaluation/domain/entity/param.go +++ b/backend/modules/evaluation/domain/entity/param.go @@ -288,7 +288,7 @@ type CreateExptParam struct { SourceType SourceType `json:"source_type"` SourceID string `json:"source_id"` Visibility *Visibility `json:"visibility,omitempty"` - ThreadID *int64 `json:"thread_id,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"` diff --git a/backend/modules/evaluation/domain/service/expt_manage_impl.go b/backend/modules/evaluation/domain/service/expt_manage_impl.go index ac2653e8e..d9f9f59e3 100644 --- a/backend/modules/evaluation/domain/service/expt_manage_impl.go +++ b/backend/modules/evaluation/domain/service/expt_manage_impl.go @@ -683,7 +683,7 @@ func (e *ExptMangerImpl) CreateExpt(ctx context.Context, req *entity.CreateExptP do.Visibility = *req.Visibility } if req.ThreadID != nil { - do.ThreadID = *req.ThreadID + do.ThreadID = req.ThreadID } // 如果提供了模板 ID,设置 ExptTemplateMeta 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 98f422580..5421456c4 100644 --- a/backend/modules/evaluation/infra/repo/experiment/mysql/convert/expt.go +++ b/backend/modules/evaluation/infra/repo/experiment/mysql/convert/expt.go @@ -47,9 +47,8 @@ func (ExptConverter) DO2PO(experiment *entity.Experiment) (*model.Experiment, er SourceType: int32(experiment.SourceType), SourceID: experiment.SourceID, ExptType: int32(experiment.ExptType), - // TODO dsf ddl执行后放开 - // Visibility: int32(experiment.Visibility), - // ThreadID: experiment.ThreadID, + Visibility: int32(experiment.Visibility), + ThreadID: experiment.ThreadID, } if experiment.MaxAliveTime != 0 { @@ -64,8 +63,7 @@ func (ExptConverter) DO2PO(experiment *entity.Experiment) (*model.Experiment, er expt.EvalConf = &bytes } if experiment.TrialRunItemCount != 0 { - // TODO dsf ddl执行后放开 - // expt.TrialRunItemCount = gptr.Of(experiment.TrialRunItemCount) + expt.TrialRunItemCount = gptr.Of(experiment.TrialRunItemCount) } return expt, nil @@ -112,10 +110,9 @@ func (ExptConverter) PO2DO(expt *model.Experiment, refs []*model.ExptEvaluatorRe SourceID: expt.SourceID, ExptType: entity.ExptType(expt.ExptType), MaxAliveTime: gptr.Indirect(expt.MaxAliveTime), - // TODO dsf ddl执行后放开 - // Visibility: entity.Visibility(expt.Visibility), - // ThreadID: expt.ThreadID, - // TrialRunItemCount: gptr.Indirect(expt.TrialRunItemCount), + Visibility: entity.Visibility(expt.Visibility), + ThreadID: expt.ThreadID, + TrialRunItemCount: gptr.Indirect(expt.TrialRunItemCount), } // 如果数据库中有模板 ID,则在 ExptTemplateMeta 中回填 ID,方便上层按模板 ID 查询和聚合 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 8c4486083..00a83eab2 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 @@ -59,9 +59,6 @@ func (ExptTemplateConverter) DO2PO(template *entity.ExptTemplate) (*model.ExptTe updatedBy = *template.BaseInfo.UpdatedBy.UserID } - // TODO dsf ddl执行后放开 - println(visibility) - po := &model.ExptTemplate{ ID: id, SpaceID: spaceID, @@ -75,8 +72,7 @@ func (ExptTemplateConverter) DO2PO(template *entity.ExptTemplate) (*model.ExptTe TargetType: int64(targetType), TargetVersionID: targetVersionID, ExptType: int32(exptType), - // // TODO dsf ddl执行后放开 - // Visibility: int32(visibility), + Visibility: int32(visibility), } if template.TemplateConf != nil { diff --git a/backend/modules/evaluation/infra/repo/experiment/mysql/expt.go b/backend/modules/evaluation/infra/repo/experiment/mysql/expt.go index a3b504f5c..5cf5a7462 100644 --- a/backend/modules/evaluation/infra/repo/experiment/mysql/expt.go +++ b/backend/modules/evaluation/infra/repo/experiment/mysql/expt.go @@ -110,12 +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) - // TODO dsf ddl执行后放开 - // db = db.Where("experiment.visibility <> ?", int32(entity.Visibility_Hidden)) + db = db.Where("experiment.visibility <> ?", int32(entity.Visibility_Hidden)) } else { db = db.Model(&model.Experiment{}).Where("space_id = ?", spaceID) - // TODO dsf ddl执行后放开 - // db = db.Where("visibility <> ?", int32(entity.Visibility_Hidden)) + 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 064563e50..04c5a50fd 100644 --- a/backend/modules/evaluation/infra/repo/experiment/mysql/expt_template.go +++ b/backend/modules/evaluation/infra/repo/experiment/mysql/expt_template.go @@ -133,14 +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") - // TODO dsf ddl执行后放开 - // db = db.Where("expt_template.visibility <> ?", int32(entity.Visibility_Hidden)) + 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") - // TODO dsf ddl执行后放开 - // db = db.Where("expt_template.visibility <> ?", int32(entity.Visibility_Hidden)) + 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/gorm_gen/model/experiment.gen.go b/backend/modules/evaluation/infra/repo/experiment/mysql/gorm_gen/model/experiment.gen.go index f11e85c9e..03f759258 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,34 +14,34 @@ 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;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;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"` // 最大存活时间 - // Visibility int32 `gorm:"column:visibility;type:int(11) unsigned;not null;comment:可见性,默认0-可见,1-隐藏" json:"visibility"` // 可见性,默认0-可见,1-隐藏 - // ThreadID int64 `gorm:"column:thread_id;type:bigint(20) unsigned;not null;comment:智能生成会话ID" json:"thread_id"` // 智能生成会话ID - // TrialRunItemCount *int64 `gorm:"column:trial_run_item_count;type:bigint(20) unsigned;comment:试运行行数" json:"trial_run_item_count"` // 试运行行数 + 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;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;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"` // 最大存活时间 + 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 04278bfac..05e469f43 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 @@ -31,8 +31,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"` // 删除时间 - // TODO dsf ddl执行后放开 - // Visibility int32 `gorm:"column:visibility;type:int(11) unsigned;not null;comment:可见性,默认0-可见,1-隐藏" json:"visibility"` // 可见性,默认0-可见,1-隐藏 + 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 a49a470e7..76231f914 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,7 +53,7 @@ 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.Visibility = field.NewInt32(tableName, "visibility") - _experiment.ThreadID = field.NewInt64(tableName, "thread_id") + _experiment.ThreadID = field.NewString(tableName, "thread_id") _experiment.TrialRunItemCount = field.NewInt64(tableName, "trial_run_item_count") _experiment.fillFieldMap() @@ -92,7 +92,7 @@ type experiment struct { ExptType field.Int32 // 实验类型,offline:1,online:2... MaxAliveTime field.Int64 // 最大存活时间 Visibility field.Int32 // 可见性,默认0-可见,1-隐藏 - ThreadID field.Int64 // 智能生成会话ID + ThreadID field.String // 智能生成会话ID TrialRunItemCount field.Int64 // 试运行行数 fieldMap map[string]field.Expr @@ -136,7 +136,7 @@ func (e *experiment) updateTableName(table string) *experiment { e.ExptType = field.NewInt32(table, "expt_type") e.MaxAliveTime = field.NewInt64(table, "max_alive_time") e.Visibility = field.NewInt32(table, "visibility") - e.ThreadID = field.NewInt64(table, "thread_id") + e.ThreadID = field.NewString(table, "thread_id") e.TrialRunItemCount = field.NewInt64(table, "trial_run_item_count") e.fillFieldMap() 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 f3fed3143..ecdea49ec 100644 --- a/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.expt.thrift +++ b/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.expt.thrift @@ -40,7 +40,7 @@ struct CreateExperimentRequest { 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 i64 thread_id (api.js_conv='true', go.tag='json:"thread_id"') // 关联的智能评测会话ID + 60: optional string thread_id (api.body = 'thread_id') // 关联的智能评测会话ID 200: optional common.Session session @@ -84,7 +84,7 @@ struct SubmitExperimentRequest { 46: optional i64 trial_run_item_count (api.body = 'trial_run_item_count') // 试运行行数 // 智能评测相关 - 60: optional i64 thread_id (api.js_conv='true', go.tag='json:"thread_id"') // 关联的智能评测会话ID + 60: optional string thread_id (api.body = 'thread_id') // 关联的智能评测会话ID 100: optional map ext (api.body = 'ext') diff --git a/idl/thrift/coze/loop/evaluation/domain/expt.thrift b/idl/thrift/coze/loop/evaluation/domain/expt.thrift index ac3e0a8ac..5517921a1 100644 --- a/idl/thrift/coze/loop/evaluation/domain/expt.thrift +++ b/idl/thrift/coze/loop/evaluation/domain/expt.thrift @@ -78,7 +78,7 @@ struct Experiment { 62: optional bool enable_weighted_score // 智能评测相关 - 63: optional i64 thread_id (api.js_conv='true', go.tag='json:"thread_id"') // 关联的智能评测会话ID + 63: optional string thread_id// 关联的智能评测会话ID } // 实验模板基础信息 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 375d4181d..da0698ee3 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,7 +26,7 @@ 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 '最大存活时间', `visibility` int unsigned NOT NULL DEFAULT '0' COMMENT '可见性,默认0-可见,1-隐藏', - `thread_id` bigint unsigned NOT NULL DEFAULT '0' COMMENT '智能生成会话ID', + `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`), From e956ba1f24f39436a0d2148dd5b4e08f2b3aa7e5 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Mon, 30 Mar 2026 19:12:53 +0800 Subject: [PATCH 37/57] fix Change-Id: Ib4abd32f1251b69a47aaf3a08263a58788626923 --- backend/modules/evaluation/domain/service/target_impl.go | 4 ++-- backend/modules/evaluation/domain/service/target_source.go | 2 +- .../domain/service/target_source_loopprompt_impl.go | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/backend/modules/evaluation/domain/service/target_impl.go b/backend/modules/evaluation/domain/service/target_impl.go index 0cf01d932..a4936f8cb 100644 --- a/backend/modules/evaluation/domain/service/target_impl.go +++ b/backend/modules/evaluation/domain/service/target_impl.go @@ -429,7 +429,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, @@ -448,7 +448,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, 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 6c4c90daf..1c2783b53 100644 --- a/backend/modules/evaluation/domain/service/target_source_loopprompt_impl.go +++ b/backend/modules/evaluation/domain/service/target_source_loopprompt_impl.go @@ -33,8 +33,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 { From 832f138cd3c5873a1fa3ccb4f82a57525c3ae0fb Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Mon, 30 Mar 2026 23:47:14 +0800 Subject: [PATCH 38/57] fix Change-Id: Iee48e1b8d826831fddc9d64db1513f0a5501b6f1 --- .../evaluation/domain/repo/mocks/target.go | 15 +++++++++++++ .../modules/evaluation/domain/repo/target.go | 1 + .../evaluation/domain/service/target_impl.go | 11 ++++++++++ .../repo/target/eval_target_repo_impl.go | 12 +++++++++++ .../repo/target/mysql/eval_target_record.go | 21 +++++++++++++++++++ .../target/mysql/mocks/eval_target_record.go | 15 +++++++++++++ 6 files changed, 75 insertions(+) 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/target_impl.go b/backend/modules/evaluation/domain/service/target_impl.go index a4936f8cb..b5464a6f3 100644 --- a/backend/modules/evaluation/domain/service/target_impl.go +++ b/backend/modules/evaluation/domain/service/target_impl.go @@ -620,6 +620,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/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/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() From c42013a1f961772a8cb77854cace959d8cc640c5 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Tue, 31 Mar 2026 21:11:02 +0800 Subject: [PATCH 39/57] fix Change-Id: Id17def64962447e70a6b2dc2c14c9d90c9d20df3 --- backend/modules/evaluation/domain/service/target.go | 1 + backend/modules/evaluation/domain/service/target_impl.go | 4 ++++ 2 files changed, 5 insertions(+) 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 b5464a6f3..d80cb3fd0 100644 --- a/backend/modules/evaluation/domain/service/target_impl.go +++ b/backend/modules/evaluation/domain/service/target_impl.go @@ -585,6 +585,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) From 591547a000b04213ad6bd6aee89baa55c00f0f2a Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Fri, 3 Apr 2026 11:56:21 +0800 Subject: [PATCH 40/57] fix Change-Id: Ia65b19f5c7540044cd82e7c037381998c0a01ed2 --- .../evaluation/domain/service/expt_manage_execution_impl.go | 3 +++ 1 file changed, 3 insertions(+) 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 1eb18fd94..ad0a502b5 100644 --- a/backend/modules/evaluation/domain/service/expt_manage_execution_impl.go +++ b/backend/modules/evaluation/domain/service/expt_manage_execution_impl.go @@ -633,6 +633,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 From d455a86b71e8d8f3cd6a3bc9ba95d88e90b97d24 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Wed, 8 Apr 2026 15:58:46 +0800 Subject: [PATCH 41/57] fix Change-Id: Ia7e2c944a848084e5b6c1864e02fef8db4349c7f --- .../application/convertor/experiment/expt_template.go | 1 + backend/modules/evaluation/domain/entity/expt_template.go | 1 + .../modules/evaluation/domain/service/expt_template_impl.go | 6 +++++- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/backend/modules/evaluation/application/convertor/experiment/expt_template.go b/backend/modules/evaluation/application/convertor/experiment/expt_template.go index 7d515b466..e3762dc6a 100644 --- a/backend/modules/evaluation/application/convertor/experiment/expt_template.go +++ b/backend/modules/evaluation/application/convertor/experiment/expt_template.go @@ -1030,6 +1030,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/domain/entity/expt_template.go b/backend/modules/evaluation/domain/entity/expt_template.go index aabbbedc9..eed845ff3 100644 --- a/backend/modules/evaluation/domain/entity/expt_template.go +++ b/backend/modules/evaluation/domain/entity/expt_template.go @@ -358,6 +358,7 @@ type UpdateExptTemplateParam struct { SpaceID int64 Name string Description string + EvalSetID int64 EvalSetVersionID int64 TargetVersionID int64 EvaluatorIDVersionItems []*EvaluatorIDVersionItem // 评估器ID版本项列表(包含完整信息) diff --git a/backend/modules/evaluation/domain/service/expt_template_impl.go b/backend/modules/evaluation/domain/service/expt_template_impl.go index 4e698ad81..a88a51a71 100644 --- a/backend/modules/evaluation/domain/service/expt_template_impl.go +++ b/backend/modules/evaluation/domain/service/expt_template_impl.go @@ -329,10 +329,14 @@ 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 + } // 准备更新后的 TripleConfig updatedTripleConfig := &entity.ExptTemplateTuple{ - EvalSetID: existingTemplate.GetEvalSetID(), // 不允许修改 + EvalSetID: evalSetID, // 允许修改 EvalSetVersionID: param.EvalSetVersionID, TargetID: finalTargetID, TargetVersionID: finalTargetVersionID, From 642b72d8ca4ce16ced99c613d4138184c9cb325a Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Wed, 8 Apr 2026 19:47:16 +0800 Subject: [PATCH 42/57] fix Change-Id: Ic4bbcd75374d052a135198abfd5a4f0c0193956f --- .../evaluation/application/evaluator_app.go | 3 +++ backend/modules/evaluation/pkg/conf/evaluator.go | 10 ++++++++++ .../pkg/conf/mocks/evaluator_configer.go | 14 ++++++++++++++ 3 files changed, 27 insertions(+) diff --git a/backend/modules/evaluation/application/evaluator_app.go b/backend/modules/evaluation/application/evaluator_app.go index 11ba85102..b9f49d1da 100644 --- a/backend/modules/evaluation/application/evaluator_app.go +++ b/backend/modules/evaluation/application/evaluator_app.go @@ -1265,6 +1265,9 @@ func (e *EvaluatorHandlerImpl) CheckEvaluatorName(ctx context.Context, request * } 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: 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/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() From ab860cd12c186af721f7796c4830a43e52fb2606 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Thu, 9 Apr 2026 11:03:24 +0800 Subject: [PATCH 43/57] fix Change-Id: I01feb027910110fa834da90fa1d6dc1086929954 --- backend/modules/evaluation/application/evaluator_app.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/backend/modules/evaluation/application/evaluator_app.go b/backend/modules/evaluation/application/evaluator_app.go index b9f49d1da..1e4db5140 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" @@ -1283,15 +1285,15 @@ func (e *EvaluatorHandlerImpl) checkURIEmpty(ctx context.Context, inputFields [] for _, field := range inputFields { switch gptr.Indirect(field.ContentType) { case evaluatorcommon.ContentTypeImage: - if field.GetImage() != nil && field.GetImage().GetURI() == "" { + 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() == "" { + 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() == "" { + 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: From 123ca79685dd9ab51aed150776dd2ed5926dea99 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Thu, 9 Apr 2026 20:26:12 +0800 Subject: [PATCH 44/57] fix Change-Id: I96151b3c2cc75e1386e3c64b528ef35ba0c9a022 --- .../loingestion/local_ingestionservice.go | 34 ------------------- .../coze.loop.observability.ingestion.thrift | 7 ---- 2 files changed, 41 deletions(-) delete mode 100644 backend/loop_gen/coze/loop/observability/loingestion/local_ingestionservice.go delete mode 100644 idl/thrift/coze/loop/observability/coze.loop.observability.ingestion.thrift diff --git a/backend/loop_gen/coze/loop/observability/loingestion/local_ingestionservice.go b/backend/loop_gen/coze/loop/observability/loingestion/local_ingestionservice.go deleted file mode 100644 index e93d66820..000000000 --- a/backend/loop_gen/coze/loop/observability/loingestion/local_ingestionservice.go +++ /dev/null @@ -1,34 +0,0 @@ -// Code generated by cozeloop. DO NOT EDIT. -package loingestion // import github.com/coze-dev/coze-loop/backend/loingestion - -import ( - "context" - - "github.com/cloudwego/kitex/pkg/endpoint" - "github.com/cloudwego/kitex/pkg/rpcinfo" - "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/observability/ingestion" -) - -type LocalIngestionService struct { - impl ingestion.IngestionService // the service implementation - mds endpoint.Middleware -} - -func NewLocalIngestionService(impl ingestion.IngestionService, mds ...endpoint.Middleware) *LocalIngestionService { - return &LocalIngestionService{ - impl: impl, - mds: endpoint.Chain(mds...), - } -} - -func (l *LocalIngestionService) injectRPCInfo(ctx context.Context, method string) context.Context { - rpcStats := rpcinfo.AsMutableRPCStats(rpcinfo.NewRPCStats()) - ri := rpcinfo.NewRPCInfo( - rpcinfo.NewEndpointInfo("IngestionService", method, nil, nil), - rpcinfo.NewEndpointInfo("IngestionService", method, nil, nil), - rpcinfo.NewServerInvocation(), - nil, - rpcStats.ImmutableView(), - ) - return rpcinfo.NewCtxWithRPCInfo(ctx, ri) -} 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 { - -} From 1584c2c988931c25986428c8a686dbaa230cfdd9 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Thu, 9 Apr 2026 21:10:32 +0800 Subject: [PATCH 45/57] add unit test Change-Id: Ia2755c1f51ed8d7f9ebcb4432dc415cc2cb8c7cc --- .../convertor/target/eval_target_test.go | 301 ++++++++++++++++++ .../application/evaluator_app_test.go | 126 ++++++++ .../evaluation/domain/entity/expt_test.go | 75 +++++ .../domain/service/expt_result_impl_test.go | 2 + .../expt_run_scheduler_mode_impl_test.go | 261 +++++++++++++++ .../evaluation/domain/service/mocks/target.go | 15 + .../domain/service/mocks/target_source.go | 7 +- .../domain/service/target_impl_test.go | 20 +- .../evaluation/pkg/conf/evaluator_test.go | 58 ++++ 9 files changed, 852 insertions(+), 13 deletions(-) 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 584b3212a..0a3da64ee 100755 --- a/backend/modules/evaluation/application/convertor/target/eval_target_test.go +++ b/backend/modules/evaluation/application/convertor/target/eval_target_test.go @@ -518,3 +518,304 @@ func TestCustomEvalTargetConversions(t *testing.T) { assert.Nil(t, CustomEvalTargetDTO2DO(nil)) 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)) +} diff --git a/backend/modules/evaluation/application/evaluator_app_test.go b/backend/modules/evaluation/application/evaluator_app_test.go index adf066c54..25dfd7547 100644 --- a/backend/modules/evaluation/application/evaluator_app_test.go +++ b/backend/modules/evaluation/application/evaluator_app_test.go @@ -23,6 +23,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" @@ -1381,6 +1382,131 @@ 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: "空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() diff --git a/backend/modules/evaluation/domain/entity/expt_test.go b/backend/modules/evaluation/domain/entity/expt_test.go index 5bb0768ba..1829a5018 100644 --- a/backend/modules/evaluation/domain/entity/expt_test.go +++ b/backend/modules/evaluation/domain/entity/expt_test.go @@ -7,6 +7,7 @@ import ( "testing" "time" + "github.com/bytedance/gg/gptr" "github.com/stretchr/testify/assert" ) @@ -121,3 +122,77 @@ func TestQuotaSpaceExpt_Serialize(t *testing.T) { assert.NoError(t, err) 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(3), SourceType_IntelligentGen) +} 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 e31d81b7b..f05127c13 100644 --- a/backend/modules/evaluation/domain/service/expt_result_impl_test.go +++ b/backend/modules/evaluation/domain/service/expt_result_impl_test.go @@ -2094,6 +2094,7 @@ func TestNewExptResultService(t *testing.T) { mockPublisher, mockTagAdapter, nil, + nil, ) impl, ok := svc.(*ExptResultServiceImpl) @@ -3945,6 +3946,7 @@ func TestNewPayloadBuilder_ExtFieldAndItemRunState(t *testing.T) { nil, nil, tt.itemID2ItemRunState, + nil, ) // 验证结果 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 bb67723aa..556f635a6 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 @@ -2152,6 +2152,267 @@ func TestNewSchedulerModeFactory(t *testing.T) { } } +func TestExptTrialRunExec_Mode(t *testing.T) { + exec := &ExptTrialRunExec{ExptSubmitExec: &ExptSubmitExec{}} + assert.Equal(t, entity.EvaluationModeTrialRun, exec.Mode()) +} + +func TestExptTrialRunExec_ExptStart(t *testing.T) { + testUserID := "test_user_id_123" + mockExptWithTrialRun := &entity.Experiment{ + ID: 1, + SpaceID: 3, + TrialRunItemCount: 2, + EvalSetVersionID: 1, + EvalSetID: 1, + TargetType: 1, + TargetVersionID: 1, + TargetID: 1, + EvaluatorVersionRef: []*entity.ExptEvaluatorVersionRef{{EvaluatorID: 1, EvaluatorVersionID: 1}}, + EvalConf: &entity.EvaluationConfiguration{ConnectorConf: entity.Connector{ + TargetConf: &entity.TargetConf{TargetVersionID: 1, IngressConf: &entity.TargetIngressConf{ + EvalSetAdapter: &entity.FieldAdapter{FieldConfs: []*entity.FieldConf{{FieldName: "field_name", FromField: "from_field"}}}, + }}, + EvaluatorsConf: &entity.EvaluatorsConf{EvaluatorConcurNum: ptr.Of(1), EvaluatorConf: []*entity.EvaluatorConf{ + { + EvaluatorVersionID: 1, + IngressConf: &entity.EvaluatorIngressConf{EvalSetAdapter: &entity.FieldAdapter{FieldConfs: []*entity.FieldConf{{FieldName: "field_name", FromField: "from_field"}}}}, + }, + }}, + }}, + Target: &entity.EvalTarget{ID: 1, SpaceID: 3, SourceTargetID: "source_target_id", EvalTargetType: 1, EvalTargetVersion: &entity.EvalTargetVersion{ID: 1, OutputSchema: []*entity.ArgsSchema{{Key: ptr.Of("key")}}}, BaseInfo: &entity.BaseInfo{}}, + EvalSet: &entity.EvaluationSet{ + ID: 1, SpaceID: 3, Name: "name", Description: "description", Status: 0, Spec: nil, Features: nil, ItemCount: 0, ChangeUncommitted: false, + EvaluationSetVersion: &entity.EvaluationSetVersion{ID: 1, AppID: 0, SpaceID: 3, EvaluationSetID: 1, Version: "version", VersionNum: 0, Description: "description", EvaluationSetSchema: nil, ItemCount: 0, BaseInfo: nil}, + LatestVersion: "", NextVersionNum: 0, BaseInfo: nil, BizCategory: strconv.Itoa(1), + }, + Evaluators: []*entity.Evaluator{{}}, + ExptType: 1, + } + + type fields 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 + } + + type args struct { + ctx context.Context + event *entity.ExptScheduleEvent + expt *entity.Experiment + } + + tests := []struct { + name string + prepareMock func(f *fields, ctrl *gomock.Controller, args args) + args args + wantErr bool + assertErr func(t *testing.T, err error) + nilExec bool + }{ + { + name: "nil ExptSubmitExec返回nil", + nilExec: true, + args: args{ + ctx: context.Background(), + event: &entity.ExptScheduleEvent{ + ExptID: 1, + ExptRunID: 2, + SpaceID: 3, + Session: &entity.Session{UserID: testUserID}, + }, + expt: mockExptWithTrialRun, + }, + wantErr: false, + assertErr: func(t *testing.T, err error) { assert.NoError(t, err) }, + }, + { + name: "TrialRunItemCount<=0回退到Submit.ExptStart", + args: args{ + ctx: session.WithCtxUser(context.Background(), &session.User{ID: testUserID}), + event: &entity.ExptScheduleEvent{ + ExptID: 1, + ExptRunID: 2, + SpaceID: 3, + Session: &entity.Session{UserID: testUserID}, + }, + expt: &entity.Experiment{ + ID: 1, + SpaceID: 3, + TrialRunItemCount: 0, + EvalSet: &entity.EvaluationSet{ + ID: 1, SpaceID: 3, + EvaluationSetVersion: &entity.EvaluationSetVersion{ID: 1, SpaceID: 3, EvaluationSetID: 1}, + }, + EvaluatorVersionRef: []*entity.ExptEvaluatorVersionRef{{EvaluatorID: 1, EvaluatorVersionID: 1}}, + Target: &entity.EvalTarget{ID: 1, SpaceID: 3, EvalTargetVersion: &entity.EvalTargetVersion{ID: 1, OutputSchema: []*entity.ArgsSchema{{Key: ptr.Of("key")}}}}, + Evaluators: []*entity.Evaluator{{}}, + }, + }, + prepareMock: func(f *fields, ctrl *gomock.Controller, args args) { + f.idem.EXPECT().Exist(gomock.Any(), gomock.Any()).Return(true, nil).Times(1) + }, + wantErr: false, + assertErr: func(t *testing.T, err error) { assert.NoError(t, err) }, + }, + { + name: "idem已存在返回nil", + args: args{ + ctx: session.WithCtxUser(context.Background(), &session.User{ID: testUserID}), + event: &entity.ExptScheduleEvent{ + ExptID: 1, + ExptRunID: 2, + SpaceID: 3, + Session: &entity.Session{UserID: testUserID}, + }, + expt: mockExptWithTrialRun, + }, + prepareMock: func(f *fields, ctrl *gomock.Controller, args args) { + f.idem.EXPECT().Exist(gomock.Any(), gomock.Any()).Return(true, nil).Times(1) + }, + wantErr: false, + assertErr: func(t *testing.T, err error) { assert.NoError(t, err) }, + }, + { + name: "idem检查失败", + args: args{ + ctx: session.WithCtxUser(context.Background(), &session.User{ID: testUserID}), + event: &entity.ExptScheduleEvent{ + ExptID: 1, + ExptRunID: 2, + SpaceID: 3, + Session: &entity.Session{UserID: testUserID}, + }, + expt: mockExptWithTrialRun, + }, + prepareMock: func(f *fields, ctrl *gomock.Controller, args args) { + f.idem.EXPECT().Exist(gomock.Any(), gomock.Any()).Return(false, errors.New("idem error")).Times(1) + }, + wantErr: true, + assertErr: func(t *testing.T, err error) { + assert.Error(t, err) + assert.Contains(t, err.Error(), "idem error") + }, + }, + { + name: "ListEvaluationSetItems失败", + args: args{ + ctx: session.WithCtxUser(context.Background(), &session.User{ID: testUserID}), + event: &entity.ExptScheduleEvent{ + ExptID: 1, + ExptRunID: 2, + SpaceID: 3, + Session: &entity.Session{UserID: testUserID}, + }, + expt: mockExptWithTrialRun, + }, + prepareMock: func(f *fields, ctrl *gomock.Controller, args args) { + f.idem.EXPECT().Exist(gomock.Any(), gomock.Any()).Return(false, nil).Times(1) + f.evaluationSetItemService.EXPECT().ListEvaluationSetItems(gomock.Any(), gomock.Any()).Return(nil, nil, nil, nil, errors.New("list error")).Times(1) + }, + wantErr: true, + assertErr: func(t *testing.T, err error) { + assert.Error(t, err) + assert.Contains(t, err.Error(), "list error") + }, + }, + { + name: "GenMultiIDs失败", + args: args{ + ctx: session.WithCtxUser(context.Background(), &session.User{ID: testUserID}), + event: &entity.ExptScheduleEvent{ + ExptID: 1, + ExptRunID: 2, + SpaceID: 3, + Session: &entity.Session{UserID: testUserID}, + }, + expt: mockExptWithTrialRun, + }, + prepareMock: func(f *fields, ctrl *gomock.Controller, args args) { + f.idem.EXPECT().Exist(gomock.Any(), gomock.Any()).Return(false, nil).Times(1) + f.evaluationSetItemService.EXPECT().ListEvaluationSetItems(gomock.Any(), gomock.Any()).Return([]*entity.EvaluationSetItem{ + {ItemID: 1, Turns: []*entity.Turn{{ID: 1}}}, + }, ptr.Of(int64(5)), ptr.Of(int64(5)), nil, nil).Times(1) + f.idgenerator.EXPECT().GenMultiIDs(gomock.Any(), gomock.Any()).Return(nil, errors.New("idgen error")).Times(1) + }, + wantErr: true, + assertErr: func(t *testing.T, err error) { + assert.Error(t, err) + assert.Contains(t, err.Error(), "idgen error") + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + if tt.nilExec { + exec := &ExptTrialRunExec{ExptSubmitExec: nil} + err := exec.ExptStart(tt.args.ctx, tt.args.event, tt.args.expt) + if tt.assertErr != nil { + tt.assertErr(t, err) + } + return + } + + f := &fields{ + 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), + } + + if tt.prepareMock != nil { + tt.prepareMock(f, ctrl, tt.args) + } + + exec := &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, + }, + } + + err := exec.ExptStart(tt.args.ctx, tt.args.event, tt.args.expt) + if tt.assertErr != nil { + tt.assertErr(t, err) + } + }) + } +} + func TestNewExptSubmitMode(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() 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_impl_test.go b/backend/modules/evaluation/domain/service/target_impl_test.go index 97e945740..c8dbc03d5 100755 --- a/backend/modules/evaluation/domain/service/target_impl_test.go +++ b/backend/modules/evaluation/domain/service/target_impl_test.go @@ -299,7 +299,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, @@ -310,7 +310,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) @@ -1553,7 +1553,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, @@ -1564,7 +1564,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) @@ -1577,7 +1577,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) @@ -1590,7 +1590,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) @@ -1860,7 +1860,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, @@ -1885,7 +1885,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) }, @@ -1911,7 +1911,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) @@ -1919,7 +1919,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) 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) + }) + } +} From 34d74f6a28320a02284ffcb3ba6de47c6ee94c60 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Thu, 9 Apr 2026 21:40:24 +0800 Subject: [PATCH 46/57] fix Change-Id: I6b8598c2e865a160217eb2e12c831c9329b0ee1f --- .../application/convertor/experiment/expt.go | 10 +++++----- .../application/convertor/experiment/expt_template.go | 10 +++++----- .../modules/evaluation/application/evaluator_app.go | 8 +++++--- .../evaluation/application/evaluator_app_test.go | 5 +++++ 4 files changed, 20 insertions(+), 13 deletions(-) diff --git a/backend/modules/evaluation/application/convertor/experiment/expt.go b/backend/modules/evaluation/application/convertor/experiment/expt.go index 36d819244..2a3daa5de 100644 --- a/backend/modules/evaluation/application/convertor/experiment/expt.go +++ b/backend/modules/evaluation/application/convertor/experiment/expt.go @@ -452,11 +452,11 @@ 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 { diff --git a/backend/modules/evaluation/application/convertor/experiment/expt_template.go b/backend/modules/evaluation/application/convertor/experiment/expt_template.go index ee90f4da7..2a74c62ea 100644 --- a/backend/modules/evaluation/application/convertor/experiment/expt_template.go +++ b/backend/modules/evaluation/application/convertor/experiment/expt_template.go @@ -979,11 +979,11 @@ 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 { diff --git a/backend/modules/evaluation/application/evaluator_app.go b/backend/modules/evaluation/application/evaluator_app.go index 1e4db5140..fc45c6012 100644 --- a/backend/modules/evaluation/application/evaluator_app.go +++ b/backend/modules/evaluation/application/evaluator_app.go @@ -1069,9 +1069,11 @@ func (e *EvaluatorHandlerImpl) DebugEvaluator(ctx context.Context, request *eval } // 检查uri是否传递 - err = e.checkURIs(ctx, request.InputData.InputFields) - if err != nil { - return nil, err + if request.InputData != nil { + err = e.checkURIs(ctx, request.InputData.InputFields) + if err != nil { + return nil, err + } } // URI转换处理 if request.InputData != nil { diff --git a/backend/modules/evaluation/application/evaluator_app_test.go b/backend/modules/evaluation/application/evaluator_app_test.go index 25dfd7547..6953d0ff1 100644 --- a/backend/modules/evaluation/application/evaluator_app_test.go +++ b/backend/modules/evaluation/application/evaluator_app_test.go @@ -3277,6 +3277,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) @@ -3315,6 +3316,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) @@ -3414,11 +3416,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, } // 构造带有运行时参数的请求 @@ -3439,6 +3443,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()). From 61d90c715500c86e6dba7b7f12b73b27f2ed3f48 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Fri, 10 Apr 2026 11:07:53 +0800 Subject: [PATCH 47/57] fix Change-Id: I459dc58ffd3e54187079da8f519bba49ada1c88e --- backend/modules/evaluation/application/evaluator_app_test.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/backend/modules/evaluation/application/evaluator_app_test.go b/backend/modules/evaluation/application/evaluator_app_test.go index 6953d0ff1..12f1a297c 100644 --- a/backend/modules/evaluation/application/evaluator_app_test.go +++ b/backend/modules/evaluation/application/evaluator_app_test.go @@ -2094,7 +2094,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). From 35c709afd8a1b99af0fe65a1d41d0811938f5a2a Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Fri, 10 Apr 2026 14:15:11 +0800 Subject: [PATCH 48/57] fix Change-Id: I6cff506657c5fbbc20d84f572be15010b7b90295 --- .../application/evaluator_app_test.go | 114 +++++++++++ .../evaluation/domain/entity/expt_test.go | 144 +++++++++++++ .../expt_run_scheduler_mode_impl_test.go | 190 ++++++++++++++++++ .../domain/service/target_impl_test.go | 54 +++++ 4 files changed, 502 insertions(+) diff --git a/backend/modules/evaluation/application/evaluator_app_test.go b/backend/modules/evaluation/application/evaluator_app_test.go index 12f1a297c..9bcbe3135 100644 --- a/backend/modules/evaluation/application/evaluator_app_test.go +++ b/backend/modules/evaluation/application/evaluator_app_test.go @@ -1484,6 +1484,120 @@ func TestEvaluatorHandlerImpl_checkURIs(t *testing.T) { }, 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{}, diff --git a/backend/modules/evaluation/domain/entity/expt_test.go b/backend/modules/evaluation/domain/entity/expt_test.go index 1829a5018..e24511563 100644 --- a/backend/modules/evaluation/domain/entity/expt_test.go +++ b/backend/modules/evaluation/domain/entity/expt_test.go @@ -196,3 +196,147 @@ func TestVisibility_Hidden(t *testing.T) { func TestSourceType_IntelligentGen(t *testing.T) { assert.Equal(t, SourceType(3), 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) +} 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 556f635a6..bb9fe164f 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 @@ -2152,6 +2152,31 @@ func TestNewSchedulerModeFactory(t *testing.T) { } } +func TestNewExptTrialRunMode(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + exec := NewExptTrialRunMode( + svcmocks.NewMockIExptManager(ctrl), + mock_repo.NewMockIExptItemResultRepo(ctrl), + mock_repo.NewMockIExptStatsRepo(ctrl), + mock_repo.NewMockIExptTurnResultRepo(ctrl), + idgenmocks.NewMockIIDGenerator(ctrl), + svcmocks.NewMockEvaluationSetItemService(ctrl), + mock_repo.NewMockIExperimentRepo(ctrl), + idemmocks.NewMockIdempotentService(ctrl), + configmocks.NewMockIConfiger(ctrl), + eventmocks.NewMockExptEventPublisher(ctrl), + svcmocks.NewMockEvaluatorRecordService(ctrl), + svcmocks.NewMockExptResultService(ctrl), + svcmocks.NewMockIExptTemplateManager(ctrl), + ) + + assert.NotNil(t, exec) + assert.NotNil(t, exec.ExptSubmitExec) + assert.Equal(t, entity.EvaluationModeTrialRun, exec.Mode()) +} + func TestExptTrialRunExec_Mode(t *testing.T) { exec := &ExptTrialRunExec{ExptSubmitExec: &ExptSubmitExec{}} assert.Equal(t, entity.EvaluationModeTrialRun, exec.Mode()) @@ -2351,6 +2376,171 @@ func TestExptTrialRunExec_ExptStart(t *testing.T) { assert.Contains(t, err.Error(), "idgen error") }, }, + { + name: "BatchCreateNX turns失败", + args: args{ + ctx: session.WithCtxUser(context.Background(), &session.User{ID: testUserID}), + event: &entity.ExptScheduleEvent{ + ExptID: 1, ExptRunID: 2, SpaceID: 3, + Session: &entity.Session{UserID: testUserID}, + }, + expt: mockExptWithTrialRun, + }, + prepareMock: func(f *fields, ctrl *gomock.Controller, args args) { + 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(5)), ptr.Of(int64(5)), nil, nil) + f.idgenerator.EXPECT().GenMultiIDs(gomock.Any(), gomock.Any()).Return([]int64{1, 2}, nil) + f.exptTurnResultRepo.EXPECT().BatchCreateNX(gomock.Any(), gomock.Any()).Return(errors.New("batch create turns error")) + }, + wantErr: true, + assertErr: func(t *testing.T, err error) { + assert.Contains(t, err.Error(), "batch create turns error") + }, + }, + { + name: "BatchCreateNX items失败", + args: args{ + ctx: session.WithCtxUser(context.Background(), &session.User{ID: testUserID}), + event: &entity.ExptScheduleEvent{ + ExptID: 1, ExptRunID: 2, SpaceID: 3, + Session: &entity.Session{UserID: testUserID}, + }, + expt: mockExptWithTrialRun, + }, + prepareMock: func(f *fields, ctrl *gomock.Controller, args args) { + 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(5)), ptr.Of(int64(5)), nil, nil) + f.idgenerator.EXPECT().GenMultiIDs(gomock.Any(), gomock.Any()).Return([]int64{1, 2}, nil) + f.exptTurnResultRepo.EXPECT().BatchCreateNX(gomock.Any(), gomock.Any()).Return(nil) + f.exptItemResultRepo.EXPECT().BatchCreateNX(gomock.Any(), gomock.Any()).Return(errors.New("batch create items error")) + }, + wantErr: true, + assertErr: func(t *testing.T, err error) { + assert.Contains(t, err.Error(), "batch create items error") + }, + }, + { + name: "BatchCreateNXRunLogs失败", + args: args{ + ctx: session.WithCtxUser(context.Background(), &session.User{ID: testUserID}), + event: &entity.ExptScheduleEvent{ + ExptID: 1, ExptRunID: 2, SpaceID: 3, + Session: &entity.Session{UserID: testUserID}, + }, + expt: mockExptWithTrialRun, + }, + prepareMock: func(f *fields, ctrl *gomock.Controller, args args) { + 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(5)), ptr.Of(int64(5)), nil, nil) + f.idgenerator.EXPECT().GenMultiIDs(gomock.Any(), gomock.Any()).Return([]int64{1, 2}, 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{3}, nil) + f.exptItemResultRepo.EXPECT().BatchCreateNXRunLogs(gomock.Any(), gomock.Any()).Return(errors.New("batch create runlogs error")) + }, + wantErr: true, + assertErr: func(t *testing.T, err error) { + assert.Contains(t, err.Error(), "batch create runlogs error") + }, + }, + { + name: "UpdateByExptID失败", + args: args{ + ctx: session.WithCtxUser(context.Background(), &session.User{ID: testUserID}), + event: &entity.ExptScheduleEvent{ + ExptID: 1, ExptRunID: 2, SpaceID: 3, + Session: &entity.Session{UserID: testUserID}, + }, + expt: mockExptWithTrialRun, + }, + prepareMock: func(f *fields, ctrl *gomock.Controller, args args) { + 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}}}, + {ItemID: 2, Turns: []*entity.Turn{{ID: 2}}}, + }, ptr.Of(int64(2)), ptr.Of(int64(2)), nil, nil) + f.idgenerator.EXPECT().GenMultiIDs(gomock.Any(), gomock.Any()).Return([]int64{1, 2, 3, 4}, 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{5, 6}, 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("update stats error")) + }, + wantErr: true, + assertErr: func(t *testing.T, err error) { + assert.Contains(t, err.Error(), "update stats error") + }, + }, + { + name: "exptRepo.Update失败", + args: args{ + ctx: session.WithCtxUser(context.Background(), &session.User{ID: testUserID}), + event: &entity.ExptScheduleEvent{ + ExptID: 1, ExptRunID: 2, SpaceID: 3, + Session: &entity.Session{UserID: testUserID}, + }, + expt: mockExptWithTrialRun, + }, + prepareMock: func(f *fields, ctrl *gomock.Controller, args args) { + 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}}}, + {ItemID: 2, Turns: []*entity.Turn{{ID: 2}}}, + }, ptr.Of(int64(2)), ptr.Of(int64(2)), nil, nil) + f.idgenerator.EXPECT().GenMultiIDs(gomock.Any(), gomock.Any()).Return([]int64{1, 2, 3, 4}, 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{5, 6}, 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 expt error")) + }, + wantErr: true, + assertErr: func(t *testing.T, err error) { + assert.Contains(t, err.Error(), "update expt error") + }, + }, + { + name: "idem.Set失败", + args: args{ + ctx: session.WithCtxUser(context.Background(), &session.User{ID: testUserID}), + event: &entity.ExptScheduleEvent{ + ExptID: 1, ExptRunID: 2, SpaceID: 3, + Session: &entity.Session{UserID: testUserID}, + }, + expt: mockExptWithTrialRun, + }, + prepareMock: func(f *fields, ctrl *gomock.Controller, args args) { + 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}}}, + {ItemID: 2, Turns: []*entity.Turn{{ID: 2}}}, + }, ptr.Of(int64(2)), ptr.Of(int64(2)), nil, nil) + f.idgenerator.EXPECT().GenMultiIDs(gomock.Any(), gomock.Any()).Return([]int64{1, 2, 3, 4}, 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{5, 6}, 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(args.expt, 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(errors.New("idem set error")) + }, + wantErr: true, + assertErr: func(t *testing.T, err error) { + assert.Contains(t, err.Error(), "idem set error") + }, + }, } for _, tt := range tests { diff --git a/backend/modules/evaluation/domain/service/target_impl_test.go b/backend/modules/evaluation/domain/service/target_impl_test.go index c8dbc03d5..59c3eeeba 100755 --- a/backend/modules/evaluation/domain/service/target_impl_test.go +++ b/backend/modules/evaluation/domain/service/target_impl_test.go @@ -800,6 +800,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 { @@ -2099,3 +2137,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) +} From 770598f2226228fade0da9ef5cd56cdb3e7ae928 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Tue, 14 Apr 2026 21:25:27 +0800 Subject: [PATCH 49/57] merge main Change-Id: I9c0bbad7633ed67c1ba219431a73da31ec8cded3 --- .../domain/eval_target/eval_target.go | 9 - .../coze/loop/evaluation/domain/expt/expt.go | 110 +++----- .../loop/evaluation/domain/expt/k-expt.go | 55 ++-- .../expt/coze.loop.evaluation.expt.go | 265 +++++++++--------- .../expt/k-coze.loop.evaluation.expt.go | 172 +++++++----- .../application/convertor/experiment/expt.go | 4 +- .../convertor/experiment/expt_template.go | 4 +- .../convertor/target/eval_target_test.go | 5 +- .../evaluation/application/experiment_app.go | 6 +- 9 files changed, 302 insertions(+), 328 deletions(-) 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 272b04795..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,10 +53,8 @@ const ( EvalTargetType_CustomRPCServer EvalTargetType = 6 // 火山智能体Agentkit EvalTargetType_VolcengineAgentAgentkit EvalTargetType = 7 -<<<<<<< HEAD // Web智能体 EvalTargetType_WebAgent EvalTargetType = 8 -======= // CozeBot在线(评测过程中不执行对象,仅用于展示对象) EvalTargetType_CozeBotOnline EvalTargetType = 11 // Prompt在线(评测过程中不执行对象,仅用于展示对象) @@ -69,7 +67,6 @@ const ( EvalTargetType_CustomRPCServerOnline EvalTargetType = 15 // 火山智能体Agentkit在线(评测过程中不执行对象,仅用于展示对象) EvalTargetType_VolcengineAgentAgentkitOnline EvalTargetType = 16 ->>>>>>> main ) func (p EvalTargetType) String() string { @@ -88,10 +85,8 @@ func (p EvalTargetType) String() string { return "CustomRPCServer" case EvalTargetType_VolcengineAgentAgentkit: return "VolcengineAgentAgentkit" -<<<<<<< HEAD case EvalTargetType_WebAgent: return "WebAgent" -======= case EvalTargetType_CozeBotOnline: return "CozeBotOnline" case EvalTargetType_CozeLoopPromptOnline: @@ -104,7 +99,6 @@ func (p EvalTargetType) String() string { return "CustomRPCServerOnline" case EvalTargetType_VolcengineAgentAgentkitOnline: return "VolcengineAgentAgentkitOnline" ->>>>>>> main } return "" } @@ -125,10 +119,8 @@ func EvalTargetTypeFromString(s string) (EvalTargetType, error) { return EvalTargetType_CustomRPCServer, nil case "VolcengineAgentAgentkit": return EvalTargetType_VolcengineAgentAgentkit, nil -<<<<<<< HEAD case "WebAgent": return EvalTargetType_WebAgent, nil -======= case "CozeBotOnline": return EvalTargetType_CozeBotOnline, nil case "CozeLoopPromptOnline": @@ -141,7 +133,6 @@ func EvalTargetTypeFromString(s string) (EvalTargetType, error) { return EvalTargetType_CustomRPCServerOnline, nil case "VolcengineAgentAgentkitOnline": return EvalTargetType_VolcengineAgentAgentkitOnline, nil ->>>>>>> main } return EvalTargetType(0), fmt.Errorf("not a valid EvalTargetType string") } 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 5e8c13717..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,9 +19,8 @@ import ( ) const ( -<<<<<<< HEAD VisibilityHidden = "hidden" -======= + Manual = "manual" OpenAPI = "openapi" @@ -43,7 +42,6 @@ const ( FrequencySaturday = "saturday" FrequencySunday = "sunday" ->>>>>>> main PromptUserQueryFieldKey = "builtin_prompt_user_query" @@ -230,12 +228,9 @@ type SourceType int64 const ( SourceType_Evaluation SourceType = 1 SourceType_AutoTask SourceType = 2 -<<<<<<< HEAD - // 智能生成 - SourceType_IntelligentGen SourceType = 3 -======= SourceType_Workflow SourceType = 3 ->>>>>>> main + // 智能生成 + SourceType_IntelligentGen SourceType = 4 ) func (p SourceType) String() string { @@ -244,13 +239,10 @@ func (p SourceType) String() string { return "Evaluation" case SourceType_AutoTask: return "AutoTask" -<<<<<<< HEAD - case SourceType_IntelligentGen: - return "IntelligentGen" -======= case SourceType_Workflow: return "Workflow" ->>>>>>> main + case SourceType_IntelligentGen: + return "IntelligentGen" } return "" } @@ -261,13 +253,10 @@ func SourceTypeFromString(s string) (SourceType, error) { return SourceType_Evaluation, nil case "AutoTask": return SourceType_AutoTask, nil -<<<<<<< HEAD - case "IntelligentGen": - return SourceType_IntelligentGen, nil -======= case "Workflow": return SourceType_Workflow, nil ->>>>>>> main + case "IntelligentGen": + return SourceType_IntelligentGen, nil } return SourceType(0), fmt.Errorf("not a valid SourceType string") } @@ -1006,13 +995,11 @@ func (p *DataType) Value() (driver.Value, error) { return int64(*p), nil } -<<<<<<< HEAD type Visibility = string -======= + type ExptTriggerType = string type Frequency = string ->>>>>>> main type ExptResultExportType = string @@ -1063,14 +1050,11 @@ 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"` -<<<<<<< HEAD // 智能评测相关 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"` ->>>>>>> main } func NewExperiment() *Experiment { @@ -1464,7 +1448,6 @@ func (p *Experiment) GetEnableWeightedScore() (v bool) { return *p.EnableWeightedScore } -<<<<<<< HEAD var Experiment_ThreadID_DEFAULT string func (p *Experiment) GetThreadID() (v string) { @@ -1475,7 +1458,8 @@ func (p *Experiment) GetThreadID() (v string) { return Experiment_ThreadID_DEFAULT } return *p.ThreadID -======= +} + var Experiment_TriggerType_DEFAULT ExptTriggerType func (p *Experiment) GetTriggerType() (v ExptTriggerType) { @@ -1498,7 +1482,6 @@ func (p *Experiment) GetExptSource() (v *ExptSource) { return Experiment_ExptSource_DEFAULT } return p.ExptSource ->>>>>>> main } func (p *Experiment) SetID(val *int64) { p.ID = val @@ -1596,16 +1579,14 @@ func (p *Experiment) SetScoreWeightConfig(val *ExptScoreWeight) { func (p *Experiment) SetEnableWeightedScore(val *bool) { p.EnableWeightedScore = val } -<<<<<<< HEAD func (p *Experiment) SetThreadID(val *string) { p.ThreadID = val -======= +} func (p *Experiment) SetTriggerType(val *ExptTriggerType) { p.TriggerType = val } func (p *Experiment) SetExptSource(val *ExptSource) { p.ExptSource = val ->>>>>>> main } var fieldIDToName_Experiment = map[int16]string{ @@ -1641,12 +1622,9 @@ var fieldIDToName_Experiment = map[int16]string{ 60: "expt_template_meta", 61: "score_weight_config", 62: "enable_weighted_score", -<<<<<<< HEAD 63: "thread_id", -======= 70: "trigger_type", 71: "expt_source", ->>>>>>> main } func (p *Experiment) IsSetID() bool { @@ -1777,17 +1755,16 @@ func (p *Experiment) IsSetEnableWeightedScore() bool { return p.EnableWeightedScore != nil } -<<<<<<< HEAD func (p *Experiment) IsSetThreadID() bool { return p.ThreadID != nil -======= +} + func (p *Experiment) IsSetTriggerType() bool { return p.TriggerType != nil } func (p *Experiment) IsSetExptSource() bool { return p.ExptSource != nil ->>>>>>> main } func (p *Experiment) Read(iprot thrift.TProtocol) (err error) { @@ -2064,11 +2041,14 @@ func (p *Experiment) Read(iprot thrift.TProtocol) (err error) { } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } -<<<<<<< HEAD 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 { @@ -2080,7 +2060,6 @@ func (p *Experiment) Read(iprot thrift.TProtocol) (err error) { case 71: if fieldTypeId == thrift.STRUCT { if err = p.ReadField71(iprot); err != nil { ->>>>>>> main goto ReadFieldError } } else if err = iprot.Skip(fieldTypeId); err != nil { @@ -2494,23 +2473,25 @@ func (p *Experiment) ReadField62(iprot thrift.TProtocol) error { p.EnableWeightedScore = _field return nil } -<<<<<<< HEAD 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 ->>>>>>> main if v, err := iprot.ReadString(); err != nil { return err } else { _field = &v } -<<<<<<< HEAD - p.ThreadID = _field -======= p.TriggerType = _field return nil } @@ -2520,7 +2501,6 @@ func (p *Experiment) ReadField71(iprot thrift.TProtocol) error { return err } p.ExptSource = _field ->>>>>>> main return nil } @@ -2658,17 +2638,16 @@ func (p *Experiment) Write(oprot thrift.TProtocol) (err error) { fieldId = 62 goto WriteFieldError } -<<<<<<< HEAD if err = p.writeField63(oprot); err != nil { fieldId = 63 -======= + goto WriteFieldError + } if err = p.writeField70(oprot); err != nil { fieldId = 70 goto WriteFieldError } if err = p.writeField71(oprot); err != nil { fieldId = 71 ->>>>>>> main goto WriteFieldError } } @@ -3297,21 +3276,30 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 62 end error: ", p), err) } -<<<<<<< HEAD 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 { goto WriteFieldBeginError } if err := oprot.WriteString(*p.TriggerType); err != nil { ->>>>>>> main return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -3320,11 +3308,6 @@ func (p *Experiment) writeField70(oprot thrift.TProtocol) (err error) { } return nil WriteFieldBeginError: -<<<<<<< HEAD - 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) -======= return thrift.PrependError(fmt.Sprintf("%T write field 70 begin error: ", p), err) WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 70 end error: ", p), err) @@ -3346,7 +3329,6 @@ WriteFieldBeginError: return thrift.PrependError(fmt.Sprintf("%T write field 71 begin error: ", p), err) WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 71 end error: ", p), err) ->>>>>>> main } func (p *Experiment) String() string { @@ -3459,14 +3441,13 @@ func (p *Experiment) DeepEqual(ano *Experiment) bool { if !p.Field62DeepEqual(ano.EnableWeightedScore) { return false } -<<<<<<< HEAD if !p.Field63DeepEqual(ano.ThreadID) { -======= + return false + } if !p.Field70DeepEqual(ano.TriggerType) { return false } if !p.Field71DeepEqual(ano.ExptSource) { ->>>>>>> main return false } return true @@ -3820,7 +3801,6 @@ func (p *Experiment) Field62DeepEqual(src *bool) bool { } return true } -<<<<<<< HEAD func (p *Experiment) Field63DeepEqual(src *string) bool { if p.ThreadID == src { @@ -3829,7 +3809,10 @@ func (p *Experiment) Field63DeepEqual(src *string) bool { return false } if strings.Compare(*p.ThreadID, *src) != 0 { -======= + return false + } + return true +} func (p *Experiment) Field70DeepEqual(src *ExptTriggerType) bool { if p.TriggerType == src { @@ -3845,7 +3828,6 @@ func (p *Experiment) Field70DeepEqual(src *ExptTriggerType) bool { func (p *Experiment) Field71DeepEqual(src *ExptSource) bool { if !p.ExptSource.DeepEqual(src) { ->>>>>>> main return false } return true 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 75fd50e35..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 @@ -506,11 +506,20 @@ func (p *Experiment) FastRead(buf []byte) (int, error) { goto SkipFieldError } } -<<<<<<< HEAD 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:]) @@ -528,7 +537,6 @@ func (p *Experiment) FastRead(buf []byte) (int, error) { case 71: if fieldTypeId == thrift.STRUCT { l, err = p.FastReadField71(buf[offset:]) ->>>>>>> main offset += l if err != nil { goto ReadFieldError @@ -1039,26 +1047,30 @@ func (p *Experiment) FastReadField62(buf []byte) (int, error) { return offset, nil } -<<<<<<< HEAD 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 var _field *ExptTriggerType ->>>>>>> main if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { return offset, err } else { offset += l _field = &v } -<<<<<<< HEAD - p.ThreadID = _field -======= p.TriggerType = _field return offset, nil } @@ -1072,7 +1084,6 @@ func (p *Experiment) FastReadField71(buf []byte) (int, error) { offset += l } p.ExptSource = _field ->>>>>>> main return offset, nil } @@ -1115,12 +1126,9 @@ 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) -<<<<<<< HEAD offset += p.fastWriteField63(buf[offset:], w) -======= offset += p.fastWriteField70(buf[offset:], w) offset += p.fastWriteField71(buf[offset:], w) ->>>>>>> main } offset += thrift.Binary.WriteFieldStop(buf[offset:]) return offset @@ -1161,12 +1169,9 @@ func (p *Experiment) BLength() int { l += p.field60Length() l += p.field61Length() l += p.field62Length() -<<<<<<< HEAD l += p.field63Length() -======= l += p.field70Length() l += p.field71Length() ->>>>>>> main } l += thrift.Binary.FieldStopLength() return l @@ -1488,13 +1493,15 @@ func (p *Experiment) fastWriteField62(buf []byte, w thrift.NocopyWriter) int { return offset } -<<<<<<< HEAD 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() { @@ -1509,7 +1516,6 @@ func (p *Experiment) fastWriteField71(buf []byte, w thrift.NocopyWriter) int { if p.IsSetExptSource() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 71) offset += p.ExptSource.FastWriteNocopy(buf[offset:], w) ->>>>>>> main } return offset } @@ -1816,13 +1822,15 @@ func (p *Experiment) field62Length() int { return l } -<<<<<<< HEAD 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() { @@ -1837,7 +1845,6 @@ func (p *Experiment) field71Length() int { if p.IsSetExptSource() { l += thrift.Binary.FieldBeginLength() l += p.ExptSource.BLength() ->>>>>>> main } return l } @@ -2089,7 +2096,6 @@ func (p *Experiment) DeepCopy(s interface{}) error { p.EnableWeightedScore = &tmp } -<<<<<<< HEAD if src.ThreadID != nil { var tmp string if *src.ThreadID != "" { @@ -2097,7 +2103,7 @@ func (p *Experiment) DeepCopy(s interface{}) error { } p.ThreadID = &tmp } -======= + if src.TriggerType != nil { tmp := *src.TriggerType p.TriggerType = &tmp @@ -2111,7 +2117,6 @@ func (p *Experiment) DeepCopy(s interface{}) error { } } p.ExptSource = _exptSource ->>>>>>> main return nil } 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 519e1a0ff..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 @@ -50,7 +50,6 @@ 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 为权重) -<<<<<<< HEAD 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" ` @@ -58,18 +57,10 @@ type CreateExperimentRequest struct { // 试运行行数 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"` - 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"` - 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"` ->>>>>>> main + 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 { @@ -362,7 +353,6 @@ func (p *CreateExperimentRequest) GetItemRetryNum() (v int32) { return *p.ItemRetryNum } -<<<<<<< HEAD var CreateExperimentRequest_TrialRunItemCount_DEFAULT int64 func (p *CreateExperimentRequest) GetTrialRunItemCount() (v int64) { @@ -385,7 +375,8 @@ func (p *CreateExperimentRequest) GetThreadID() (v string) { return CreateExperimentRequest_ThreadID_DEFAULT } return *p.ThreadID -======= +} + var CreateExperimentRequest_TriggerType_DEFAULT expt.ExptTriggerType func (p *CreateExperimentRequest) GetTriggerType() (v expt.ExptTriggerType) { @@ -396,7 +387,6 @@ func (p *CreateExperimentRequest) GetTriggerType() (v expt.ExptTriggerType) { return CreateExperimentRequest_TriggerType_DEFAULT } return *p.TriggerType ->>>>>>> main } var CreateExperimentRequest_Session_DEFAULT *common.Session @@ -494,16 +484,14 @@ func (p *CreateExperimentRequest) SetExptTemplateID(val *int64) { func (p *CreateExperimentRequest) SetItemRetryNum(val *int32) { p.ItemRetryNum = val } -<<<<<<< HEAD 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 ->>>>>>> main } func (p *CreateExperimentRequest) SetSession(val *common.Session) { p.Session = val @@ -537,12 +525,9 @@ var fieldIDToName_CreateExperimentRequest = map[int16]string{ 42: "evaluator_score_weights", 43: "expt_template_id", 45: "item_retry_num", -<<<<<<< HEAD 46: "trial_run_item_count", 60: "thread_id", -======= 50: "trigger_type", ->>>>>>> main 200: "session", 255: "Base", } @@ -639,17 +624,16 @@ func (p *CreateExperimentRequest) IsSetItemRetryNum() bool { return p.ItemRetryNum != nil } -<<<<<<< HEAD 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 ->>>>>>> main } func (p *CreateExperimentRequest) IsSetSession() bool { @@ -872,7 +856,6 @@ func (p *CreateExperimentRequest) Read(iprot thrift.TProtocol) (err error) { } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } -<<<<<<< HEAD case 46: if fieldTypeId == thrift.I64 { if err = p.ReadField46(iprot); err != nil { @@ -884,11 +867,14 @@ func (p *CreateExperimentRequest) Read(iprot thrift.TProtocol) (err error) { 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 { ->>>>>>> main goto ReadFieldError } } else if err = iprot.Skip(fieldTypeId); err != nil { @@ -1256,7 +1242,6 @@ func (p *CreateExperimentRequest) ReadField45(iprot thrift.TProtocol) error { p.ItemRetryNum = _field return nil } -<<<<<<< HEAD func (p *CreateExperimentRequest) ReadField46(iprot thrift.TProtocol) error { var _field *int64 @@ -1271,21 +1256,23 @@ func (p *CreateExperimentRequest) ReadField46(iprot thrift.TProtocol) error { 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 ->>>>>>> main if v, err := iprot.ReadString(); err != nil { return err } else { _field = &v } -<<<<<<< HEAD - p.ThreadID = _field -======= p.TriggerType = _field ->>>>>>> main return nil } func (p *CreateExperimentRequest) ReadField200(iprot thrift.TProtocol) error { @@ -1407,17 +1394,16 @@ func (p *CreateExperimentRequest) Write(oprot thrift.TProtocol) (err error) { fieldId = 45 goto WriteFieldError } -<<<<<<< HEAD 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 ->>>>>>> main goto WriteFieldError } if err = p.writeField200(oprot); err != nil { @@ -1911,21 +1897,12 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 45 end error: ", p), err) } -<<<<<<< HEAD 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 { -======= -func (p *CreateExperimentRequest) writeField50(oprot thrift.TProtocol) (err error) { - if p.IsSetTriggerType() { - if err = oprot.WriteFieldBegin("trigger_type", thrift.STRING, 50); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteString(*p.TriggerType); err != nil { ->>>>>>> main return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -1934,7 +1911,6 @@ func (p *CreateExperimentRequest) writeField50(oprot thrift.TProtocol) (err erro } return nil WriteFieldBeginError: -<<<<<<< HEAD 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) @@ -1956,11 +1932,24 @@ 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 { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.TriggerType); 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) ->>>>>>> main } func (p *CreateExperimentRequest) writeField200(oprot thrift.TProtocol) (err error) { if p.IsSetSession() { @@ -2085,14 +2074,13 @@ func (p *CreateExperimentRequest) DeepEqual(ano *CreateExperimentRequest) bool { if !p.Field45DeepEqual(ano.ItemRetryNum) { return false } -<<<<<<< HEAD if !p.Field46DeepEqual(ano.TrialRunItemCount) { return false } if !p.Field60DeepEqual(ano.ThreadID) { -======= + return false + } if !p.Field50DeepEqual(ano.TriggerType) { ->>>>>>> main return false } if !p.Field200DeepEqual(ano.Session) { @@ -2376,7 +2364,6 @@ func (p *CreateExperimentRequest) Field45DeepEqual(src *int32) bool { } return true } -<<<<<<< HEAD func (p *CreateExperimentRequest) Field46DeepEqual(src *int64) bool { if p.TrialRunItemCount == src { @@ -2397,7 +2384,10 @@ func (p *CreateExperimentRequest) Field60DeepEqual(src *string) bool { 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 { @@ -2406,7 +2396,6 @@ func (p *CreateExperimentRequest) Field50DeepEqual(src *expt.ExptTriggerType) bo return false } if strings.Compare(*p.TriggerType, *src) != 0 { ->>>>>>> main return false } return true @@ -2690,27 +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 为权重) -<<<<<<< HEAD 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"` - 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"` - 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"` ->>>>>>> main + 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 { @@ -2991,7 +2971,6 @@ func (p *SubmitExperimentRequest) GetItemRetryNum() (v int32) { return *p.ItemRetryNum } -<<<<<<< HEAD var SubmitExperimentRequest_TrialRunItemCount_DEFAULT int64 func (p *SubmitExperimentRequest) GetTrialRunItemCount() (v int64) { @@ -3014,7 +2993,8 @@ func (p *SubmitExperimentRequest) GetThreadID() (v string) { return SubmitExperimentRequest_ThreadID_DEFAULT } return *p.ThreadID -======= +} + var SubmitExperimentRequest_TriggerType_DEFAULT expt.ExptTriggerType func (p *SubmitExperimentRequest) GetTriggerType() (v expt.ExptTriggerType) { @@ -3037,7 +3017,6 @@ func (p *SubmitExperimentRequest) GetTimeRange() (v *expt.TaskTimeRange) { return SubmitExperimentRequest_TimeRange_DEFAULT } return p.TimeRange ->>>>>>> main } var SubmitExperimentRequest_Ext_DEFAULT map[string]string @@ -3144,19 +3123,17 @@ func (p *SubmitExperimentRequest) SetExptTemplateID(val *int64) { func (p *SubmitExperimentRequest) SetItemRetryNum(val *int32) { p.ItemRetryNum = val } -<<<<<<< HEAD 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 } func (p *SubmitExperimentRequest) SetTimeRange(val *expt.TaskTimeRange) { p.TimeRange = val ->>>>>>> main } func (p *SubmitExperimentRequest) SetExt(val map[string]string) { p.Ext = val @@ -3192,13 +3169,10 @@ var fieldIDToName_SubmitExperimentRequest = map[int16]string{ 41: "enable_weighted_score", 42: "expt_template_id", 45: "item_retry_num", -<<<<<<< HEAD 46: "trial_run_item_count", 60: "thread_id", -======= 50: "trigger_type", 51: "time_range", ->>>>>>> main 100: "ext", 200: "session", 255: "Base", @@ -3292,21 +3266,20 @@ func (p *SubmitExperimentRequest) IsSetItemRetryNum() bool { return p.ItemRetryNum != nil } -<<<<<<< HEAD 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 } func (p *SubmitExperimentRequest) IsSetTimeRange() bool { return p.TimeRange != nil ->>>>>>> main } func (p *SubmitExperimentRequest) IsSetExt() bool { @@ -3525,29 +3498,33 @@ func (p *SubmitExperimentRequest) Read(iprot thrift.TProtocol) (err error) { } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } -<<<<<<< HEAD case 46: if fieldTypeId == thrift.I64 { if err = p.ReadField46(iprot); err != nil { -======= - case 50: - if fieldTypeId == thrift.STRING { - if err = p.ReadField50(iprot); err != nil { ->>>>>>> main goto ReadFieldError } } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } -<<<<<<< HEAD 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 { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } case 51: if fieldTypeId == thrift.STRUCT { if err = p.ReadField51(iprot); err != nil { ->>>>>>> main goto ReadFieldError } } else if err = iprot.Skip(fieldTypeId); err != nil { @@ -3894,22 +3871,14 @@ func (p *SubmitExperimentRequest) ReadField45(iprot thrift.TProtocol) error { p.ItemRetryNum = _field return nil } -<<<<<<< HEAD func (p *SubmitExperimentRequest) ReadField46(iprot thrift.TProtocol) error { var _field *int64 if v, err := iprot.ReadI64(); err != nil { -======= -func (p *SubmitExperimentRequest) ReadField50(iprot thrift.TProtocol) error { - - var _field *expt.ExptTriggerType - if v, err := iprot.ReadString(); err != nil { ->>>>>>> main return err } else { _field = &v } -<<<<<<< HEAD p.TrialRunItemCount = _field return nil } @@ -3922,7 +3891,16 @@ func (p *SubmitExperimentRequest) ReadField60(iprot thrift.TProtocol) error { _field = &v } p.ThreadID = _field -======= + return nil +} +func (p *SubmitExperimentRequest) ReadField50(iprot thrift.TProtocol) error { + + var _field *expt.ExptTriggerType + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } p.TriggerType = _field return nil } @@ -3932,7 +3910,6 @@ func (p *SubmitExperimentRequest) ReadField51(iprot thrift.TProtocol) error { return err } p.TimeRange = _field ->>>>>>> main return nil } func (p *SubmitExperimentRequest) ReadField100(iprot thrift.TProtocol) error { @@ -4079,21 +4056,20 @@ func (p *SubmitExperimentRequest) Write(oprot thrift.TProtocol) (err error) { fieldId = 45 goto WriteFieldError } -<<<<<<< HEAD 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 } if err = p.writeField51(oprot); err != nil { fieldId = 51 ->>>>>>> main goto WriteFieldError } if err = p.writeField100(oprot); err != nil { @@ -4562,21 +4538,12 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 45 end error: ", p), err) } -<<<<<<< HEAD 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 { -======= -func (p *SubmitExperimentRequest) writeField50(oprot thrift.TProtocol) (err error) { - if p.IsSetTriggerType() { - if err = oprot.WriteFieldBegin("trigger_type", thrift.STRING, 50); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteString(*p.TriggerType); err != nil { ->>>>>>> main return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -4585,7 +4552,6 @@ func (p *SubmitExperimentRequest) writeField50(oprot thrift.TProtocol) (err erro } return nil WriteFieldBeginError: -<<<<<<< HEAD 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) @@ -4596,7 +4562,32 @@ func (p *SubmitExperimentRequest) writeField60(oprot thrift.TProtocol) (err erro 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 { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.TriggerType); 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) @@ -4607,7 +4598,6 @@ func (p *SubmitExperimentRequest) writeField51(oprot thrift.TProtocol) (err erro goto WriteFieldBeginError } if err := p.TimeRange.Write(oprot); err != nil { ->>>>>>> main return err } if err = oprot.WriteFieldEnd(); err != nil { @@ -4616,15 +4606,9 @@ func (p *SubmitExperimentRequest) writeField51(oprot thrift.TProtocol) (err erro } return nil WriteFieldBeginError: -<<<<<<< HEAD - 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) -======= return thrift.PrependError(fmt.Sprintf("%T write field 51 begin error: ", p), err) WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 51 end error: ", p), err) ->>>>>>> main } func (p *SubmitExperimentRequest) writeField100(oprot thrift.TProtocol) (err error) { if p.IsSetExt() { @@ -4775,17 +4759,16 @@ func (p *SubmitExperimentRequest) DeepEqual(ano *SubmitExperimentRequest) bool { if !p.Field45DeepEqual(ano.ItemRetryNum) { return false } -<<<<<<< HEAD if !p.Field46DeepEqual(ano.TrialRunItemCount) { return false } if !p.Field60DeepEqual(ano.ThreadID) { -======= + return false + } if !p.Field50DeepEqual(ano.TriggerType) { return false } if !p.Field51DeepEqual(ano.TimeRange) { ->>>>>>> main return false } if !p.Field100DeepEqual(ano.Ext) { @@ -5059,7 +5042,6 @@ func (p *SubmitExperimentRequest) Field45DeepEqual(src *int32) bool { } return true } -<<<<<<< HEAD func (p *SubmitExperimentRequest) Field46DeepEqual(src *int64) bool { if p.TrialRunItemCount == src { @@ -5068,21 +5050,10 @@ func (p *SubmitExperimentRequest) Field46DeepEqual(src *int64) bool { return false } if *p.TrialRunItemCount != *src { -======= -func (p *SubmitExperimentRequest) Field50DeepEqual(src *expt.ExptTriggerType) bool { - - if p.TriggerType == src { - return true - } else if p.TriggerType == nil || src == nil { - return false - } - if strings.Compare(*p.TriggerType, *src) != 0 { ->>>>>>> main return false } return true } -<<<<<<< HEAD func (p *SubmitExperimentRequest) Field60DeepEqual(src *string) bool { if p.ThreadID == src { @@ -5091,11 +5062,25 @@ func (p *SubmitExperimentRequest) Field60DeepEqual(src *string) bool { 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 { + return true + } else if p.TriggerType == nil || src == nil { + return false + } + if strings.Compare(*p.TriggerType, *src) != 0 { + return false + } + return true +} func (p *SubmitExperimentRequest) Field51DeepEqual(src *expt.TaskTimeRange) bool { if !p.TimeRange.DeepEqual(src) { ->>>>>>> main return false } return true 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 3b5676157..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 @@ -394,7 +394,6 @@ func (p *CreateExperimentRequest) FastRead(buf []byte) (int, error) { goto SkipFieldError } } -<<<<<<< HEAD case 46: if fieldTypeId == thrift.I64 { l, err = p.FastReadField46(buf[offset:]) @@ -412,11 +411,20 @@ func (p *CreateExperimentRequest) FastRead(buf []byte) (int, error) { 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:]) ->>>>>>> main offset += l if err != nil { goto ReadFieldError @@ -864,7 +872,6 @@ func (p *CreateExperimentRequest) FastReadField45(buf []byte) (int, error) { return offset, nil } -<<<<<<< HEAD func (p *CreateExperimentRequest) FastReadField46(buf []byte) (int, error) { offset := 0 @@ -883,23 +890,27 @@ 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 var _field *expt.ExptTriggerType ->>>>>>> main if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { return offset, err } else { offset += l _field = &v } -<<<<<<< HEAD - p.ThreadID = _field -======= p.TriggerType = _field ->>>>>>> main return offset, nil } @@ -959,11 +970,8 @@ 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) -<<<<<<< HEAD offset += p.fastWriteField60(buf[offset:], w) -======= offset += p.fastWriteField50(buf[offset:], w) ->>>>>>> main offset += p.fastWriteField200(buf[offset:], w) offset += p.fastWriteField255(buf[offset:], w) } @@ -998,12 +1006,9 @@ func (p *CreateExperimentRequest) BLength() int { l += p.field42Length() l += p.field43Length() l += p.field45Length() -<<<<<<< HEAD l += p.field46Length() l += p.field60Length() -======= l += p.field50Length() ->>>>>>> main l += p.field200Length() l += p.field255Length() } @@ -1254,7 +1259,6 @@ func (p *CreateExperimentRequest) fastWriteField45(buf []byte, w thrift.NocopyWr return offset } -<<<<<<< HEAD func (p *CreateExperimentRequest) fastWriteField46(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetTrialRunItemCount() { @@ -1269,13 +1273,15 @@ func (p *CreateExperimentRequest) fastWriteField60(buf []byte, w thrift.NocopyWr 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() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 50) offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.TriggerType) ->>>>>>> main } return offset } @@ -1524,7 +1530,6 @@ func (p *CreateExperimentRequest) field45Length() int { return l } -<<<<<<< HEAD func (p *CreateExperimentRequest) field46Length() int { l := 0 if p.IsSetTrialRunItemCount() { @@ -1539,13 +1544,15 @@ func (p *CreateExperimentRequest) field60Length() int { 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() { l += thrift.Binary.FieldBeginLength() l += thrift.Binary.StringLengthNocopy(*p.TriggerType) ->>>>>>> main } return l } @@ -1744,7 +1751,6 @@ func (p *CreateExperimentRequest) DeepCopy(s interface{}) error { p.ItemRetryNum = &tmp } -<<<<<<< HEAD if src.TrialRunItemCount != nil { tmp := *src.TrialRunItemCount p.TrialRunItemCount = &tmp @@ -1756,11 +1762,11 @@ func (p *CreateExperimentRequest) DeepCopy(s interface{}) error { tmp = kutils.StringDeepCopy(*src.ThreadID) } p.ThreadID = &tmp -======= + } + if src.TriggerType != nil { tmp := *src.TriggerType p.TriggerType = &tmp ->>>>>>> main } var _session *common.Session @@ -2295,15 +2301,9 @@ func (p *SubmitExperimentRequest) FastRead(buf []byte) (int, error) { goto SkipFieldError } } -<<<<<<< HEAD case 46: if fieldTypeId == thrift.I64 { l, err = p.FastReadField46(buf[offset:]) -======= - case 50: - if fieldTypeId == thrift.STRING { - l, err = p.FastReadField50(buf[offset:]) ->>>>>>> main offset += l if err != nil { goto ReadFieldError @@ -2315,15 +2315,37 @@ func (p *SubmitExperimentRequest) FastRead(buf []byte) (int, error) { goto SkipFieldError } } -<<<<<<< HEAD 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:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } case 51: if fieldTypeId == thrift.STRUCT { l, err = p.FastReadField51(buf[offset:]) ->>>>>>> main offset += l if err != nil { goto ReadFieldError @@ -2753,25 +2775,16 @@ func (p *SubmitExperimentRequest) FastReadField45(buf []byte) (int, error) { return offset, nil } -<<<<<<< HEAD func (p *SubmitExperimentRequest) FastReadField46(buf []byte) (int, error) { offset := 0 var _field *int64 if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { -======= -func (p *SubmitExperimentRequest) FastReadField50(buf []byte) (int, error) { - offset := 0 - - var _field *expt.ExptTriggerType - if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { ->>>>>>> main return offset, err } else { offset += l _field = &v } -<<<<<<< HEAD p.TrialRunItemCount = _field return offset, nil } @@ -2787,7 +2800,19 @@ func (p *SubmitExperimentRequest) FastReadField60(buf []byte) (int, error) { _field = &v } p.ThreadID = _field -======= + return offset, nil +} + +func (p *SubmitExperimentRequest) FastReadField50(buf []byte) (int, error) { + offset := 0 + + var _field *expt.ExptTriggerType + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } p.TriggerType = _field return offset, nil } @@ -2801,7 +2826,6 @@ func (p *SubmitExperimentRequest) FastReadField51(buf []byte) (int, error) { offset += l } p.TimeRange = _field ->>>>>>> main return offset, nil } @@ -2892,12 +2916,9 @@ 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) -<<<<<<< HEAD offset += p.fastWriteField60(buf[offset:], w) -======= offset += p.fastWriteField50(buf[offset:], w) offset += p.fastWriteField51(buf[offset:], w) ->>>>>>> main offset += p.fastWriteField100(buf[offset:], w) offset += p.fastWriteField200(buf[offset:], w) offset += p.fastWriteField255(buf[offset:], w) @@ -2932,13 +2953,10 @@ func (p *SubmitExperimentRequest) BLength() int { l += p.field41Length() l += p.field42Length() l += p.field45Length() -<<<<<<< HEAD l += p.field46Length() l += p.field60Length() -======= l += p.field50Length() l += p.field51Length() ->>>>>>> main l += p.field100Length() l += p.field200Length() l += p.field255Length() @@ -3173,36 +3191,38 @@ func (p *SubmitExperimentRequest) fastWriteField45(buf []byte, w thrift.NocopyWr return offset } -<<<<<<< HEAD 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) -======= -func (p *SubmitExperimentRequest) fastWriteField50(buf []byte, w thrift.NocopyWriter) int { - offset := 0 - if p.IsSetTriggerType() { - offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 50) - offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.TriggerType) ->>>>>>> main } return offset } -<<<<<<< HEAD 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() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 50) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.TriggerType) + } + return offset +} + func (p *SubmitExperimentRequest) fastWriteField51(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetTimeRange() { offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 51) offset += p.TimeRange.FastWriteNocopy(buf[offset:], w) ->>>>>>> main } return offset } @@ -3457,36 +3477,38 @@ func (p *SubmitExperimentRequest) field45Length() int { return l } -<<<<<<< HEAD func (p *SubmitExperimentRequest) field46Length() int { l := 0 if p.IsSetTrialRunItemCount() { l += thrift.Binary.FieldBeginLength() l += thrift.Binary.I64Length() -======= -func (p *SubmitExperimentRequest) field50Length() int { - l := 0 - if p.IsSetTriggerType() { - l += thrift.Binary.FieldBeginLength() - l += thrift.Binary.StringLengthNocopy(*p.TriggerType) ->>>>>>> main } return l } -<<<<<<< HEAD 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() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.TriggerType) + } + return l +} + func (p *SubmitExperimentRequest) field51Length() int { l := 0 if p.IsSetTimeRange() { l += thrift.Binary.FieldBeginLength() l += p.TimeRange.BLength() ->>>>>>> main } return l } @@ -3687,7 +3709,6 @@ func (p *SubmitExperimentRequest) DeepCopy(s interface{}) error { p.ItemRetryNum = &tmp } -<<<<<<< HEAD if src.TrialRunItemCount != nil { tmp := *src.TrialRunItemCount p.TrialRunItemCount = &tmp @@ -3700,7 +3721,7 @@ func (p *SubmitExperimentRequest) DeepCopy(s interface{}) error { } p.ThreadID = &tmp } -======= + if src.TriggerType != nil { tmp := *src.TriggerType p.TriggerType = &tmp @@ -3714,7 +3735,6 @@ func (p *SubmitExperimentRequest) DeepCopy(s interface{}) error { } } p.TimeRange = _timeRange ->>>>>>> main if src.Ext != nil { p.Ext = make(map[string]string, len(src.Ext)) diff --git a/backend/modules/evaluation/application/convertor/experiment/expt.go b/backend/modules/evaluation/application/convertor/experiment/expt.go index 48b749eed..879ae694a 100644 --- a/backend/modules/evaluation/application/convertor/experiment/expt.go +++ b/backend/modules/evaluation/application/convertor/experiment/expt.go @@ -357,17 +357,15 @@ func ToExptDTO(experiment *entity.Experiment) *domain_expt.Experiment { TargetRuntimeParam: trtp, EvaluatorIDVersionList: evaluatorIDVersionList, } -<<<<<<< HEAD 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 ->>>>>>> main } // 注意:Experiment DTO 中没有 TripleConfig 字段,如果需要可以通过其他方式传递 diff --git a/backend/modules/evaluation/application/convertor/experiment/expt_template.go b/backend/modules/evaluation/application/convertor/experiment/expt_template.go index d0588fa26..d8e34c9c5 100644 --- a/backend/modules/evaluation/application/convertor/experiment/expt_template.go +++ b/backend/modules/evaluation/application/convertor/experiment/expt_template.go @@ -61,17 +61,15 @@ func fillCreateTemplateMeta(param *entity.CreateExptTemplateParam, req *expt.Cre param.Name = meta.GetName() param.Description = meta.GetDesc() param.ExptType = entity.ExptType(gptr.Indirect(meta.ExptType)) -<<<<<<< HEAD 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() ->>>>>>> main } } 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 3a040fc2d..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,7 +519,6 @@ func TestCustomEvalTargetConversions(t *testing.T) { assert.Nil(t, CustomEvalTargetDO2DTO(nil)) } -<<<<<<< HEAD func TestWebAgentDTO2DO(t *testing.T) { t.Parallel() @@ -819,7 +818,8 @@ func TestEvalTargetVersionDO2DTO_WebAgent(t *testing.T) { 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() @@ -855,5 +855,4 @@ func TestEvalTargetDO2DTO_OnlineTypeSameDTOAsBase(t *testing.T) { } assert.Equal(t, EvalTargetDO2DTO(base), EvalTargetDO2DTO(online)) ->>>>>>> main } diff --git a/backend/modules/evaluation/application/experiment_app.go b/backend/modules/evaluation/application/experiment_app.go index 68ccdd9ff..69fbdd4de 100644 --- a/backend/modules/evaluation/application/experiment_app.go +++ b/backend/modules/evaluation/application/experiment_app.go @@ -504,13 +504,9 @@ func (e *experimentApplication) SubmitExperiment(ctx context.Context, req *expt. Session: req.Session, EnableWeightedScore: req.EnableWeightedScore, // EvaluatorScoreWeights 会在 CreateExperiment 的 resolveEvaluatorVersionIDsFromCreateReq 中解析 -<<<<<<< HEAD ItemRetryNum: req.ItemRetryNum, TrialRunItemCount: req.TrialRunItemCount, -======= - ItemRetryNum: req.ItemRetryNum, - TriggerType: gptr.Of(triggerType), ->>>>>>> main + TriggerType: gptr.Of(triggerType), } if req.IsSetExptTemplateID() { createReq.ExptTemplateID = gptr.Of(req.GetExptTemplateID()) From 7ee1e1d0902e33a83623780daab6c1a082fa93f3 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Tue, 14 Apr 2026 21:38:43 +0800 Subject: [PATCH 50/57] fix Change-Id: I0dbe881aa683b10756f8a6f4a8bdadfcc0aa638d --- backend/go.sum | 1 + .../evaluation/application/wire_gen.go | 4 - .../evaluation/domain/entity/expt_test.go | 3 +- .../service/expt_run_scheduler_mode_impl.go | 2 +- .../expt_run_scheduler_mode_impl_test.go | 402 ------------------ 5 files changed, 3 insertions(+), 409 deletions(-) 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/modules/evaluation/application/wire_gen.go b/backend/modules/evaluation/application/wire_gen.go index 2c32c1894..da2d2cf87 100644 --- a/backend/modules/evaluation/application/wire_gen.go +++ b/backend/modules/evaluation/application/wire_gen.go @@ -298,11 +298,7 @@ func InitEvalTargetApplication(ctx context.Context, idgen2 idgen.IIDGenerator, d return evalTargetService, nil } -<<<<<<< HEAD -func InitEvalOpenAPIApplication(ctx context.Context, configFactory conf.IConfigLoaderFactory, rmqFactory mq.IFactory, cmdable redis.Cmdable, idgen2 idgen.IIDGenerator, db2 db.Provider, client promptmanageservice.Client, executeClient promptexecuteservice.Client, authClient authservice.Client, meter metrics.Meter, dataClient datasetservice.Client, userClient userservice.Client, llmClient llmruntimeservice.Client, tagClient tagservice.Client, limiterFactory limiter.IRateLimiterFactory, objectStorage fileserver.ObjectStorage, batchObjectStorage fileserver.BatchObjectStorage, auditClient audit.IAuditService, benefitService benefit.IBenefitService, ckProvider ck.Provider, plainLimiterFactory limiter.IPlainRateLimiterFactory, trajectoryAdapter rpc.ITrajectoryAdapter, fileClient fileservice.Client) (IEvalOpenAPIApplication, error) { -======= func InitEvalOpenAPIApplication(ctx context.Context, configFactory conf.IConfigLoaderFactory, rmqFactory mq.IFactory, cmdable redis.Cmdable, idgen2 idgen.IIDGenerator, db2 db.Provider, client promptmanageservice.Client, executeClient promptexecuteservice.Client, authClient authservice.Client, meter metrics.Meter, dataClient datasetservice.Client, userClient userservice.Client, llmClient llmruntimeservice.Client, tagClient tagservice.Client, limiterFactory limiter.IRateLimiterFactory, objectStorage fileserver.ObjectStorage, batchObjectStorage fileserver.BatchObjectStorage, auditClient audit.IAuditService, benefitService benefit.IBenefitService, ckProvider ck.Provider, plainLimiterFactory limiter.IPlainRateLimiterFactory, trajectoryAdapter rpc.ITrajectoryAdapter, fileClient fileservice.Client, taskClient taskservice.Client) (IEvalOpenAPIApplication, error) { ->>>>>>> main iEvalAsyncDAO := dao.NewEvalAsyncDAO(cmdable) iEvalAsyncRepo := experiment.NewEvalAsyncRepo(iEvalAsyncDAO) exptEventPublisher, err := producer.NewExptEventPublisher(ctx, configFactory, rmqFactory) diff --git a/backend/modules/evaluation/domain/entity/expt_test.go b/backend/modules/evaluation/domain/entity/expt_test.go index f5f05bcd5..319904ea7 100644 --- a/backend/modules/evaluation/domain/entity/expt_test.go +++ b/backend/modules/evaluation/domain/entity/expt_test.go @@ -123,7 +123,6 @@ func TestQuotaSpaceExpt_Serialize(t *testing.T) { assert.NotNil(t, b) } -<<<<<<< HEAD func TestExperiment_AsyncCallTarget_WebAgent(t *testing.T) { tests := []struct { name string @@ -195,7 +194,7 @@ func TestVisibility_Hidden(t *testing.T) { } func TestSourceType_IntelligentGen(t *testing.T) { - assert.Equal(t, SourceType(3), SourceType_IntelligentGen) + assert.Equal(t, SourceType(4), SourceType_IntelligentGen) } func TestExperiment_AsyncExec(t *testing.T) { 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 70809075f..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 @@ -349,7 +349,7 @@ func (e *ExptTrialRunExec) ExptStart(ctx context.Context, event *entity.ExptSche } } if templateID > 0 && e.templateManager != nil { - if err := e.templateManager.UpdateExptInfo(ctx, templateID, event.SpaceID, event.ExptID, entity.ExptStatus_Processing, 0); err != 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 { 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 1590720df..af4d5e759 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,68 +2070,6 @@ func TestNewSchedulerModeFactory(t *testing.T) { } } -func TestNewExptTrialRunMode(t *testing.T) { - ctrl := gomock.NewController(t) - defer ctrl.Finish() - - exec := NewExptTrialRunMode( - svcmocks.NewMockIExptManager(ctrl), - mock_repo.NewMockIExptItemResultRepo(ctrl), - mock_repo.NewMockIExptStatsRepo(ctrl), - mock_repo.NewMockIExptTurnResultRepo(ctrl), - idgenmocks.NewMockIIDGenerator(ctrl), - svcmocks.NewMockEvaluationSetItemService(ctrl), - mock_repo.NewMockIExperimentRepo(ctrl), - idemmocks.NewMockIdempotentService(ctrl), - configmocks.NewMockIConfiger(ctrl), - eventmocks.NewMockExptEventPublisher(ctrl), - svcmocks.NewMockEvaluatorRecordService(ctrl), - svcmocks.NewMockExptResultService(ctrl), - svcmocks.NewMockIExptTemplateManager(ctrl), - ) - - assert.NotNil(t, exec) - assert.NotNil(t, exec.ExptSubmitExec) - assert.Equal(t, entity.EvaluationModeTrialRun, exec.Mode()) -} - -func TestExptTrialRunExec_Mode(t *testing.T) { - exec := &ExptTrialRunExec{ExptSubmitExec: &ExptSubmitExec{}} - assert.Equal(t, entity.EvaluationModeTrialRun, exec.Mode()) -} - -func TestExptTrialRunExec_ExptStart(t *testing.T) { - testUserID := "test_user_id_123" - mockExptWithTrialRun := &entity.Experiment{ - ID: 1, - SpaceID: 3, - TrialRunItemCount: 2, - EvalSetVersionID: 1, - EvalSetID: 1, - TargetType: 1, - TargetVersionID: 1, - TargetID: 1, - EvaluatorVersionRef: []*entity.ExptEvaluatorVersionRef{{EvaluatorID: 1, EvaluatorVersionID: 1}}, - EvalConf: &entity.EvaluationConfiguration{ConnectorConf: entity.Connector{ - TargetConf: &entity.TargetConf{TargetVersionID: 1, IngressConf: &entity.TargetIngressConf{ - EvalSetAdapter: &entity.FieldAdapter{FieldConfs: []*entity.FieldConf{{FieldName: "field_name", FromField: "from_field"}}}, - }}, - EvaluatorsConf: &entity.EvaluatorsConf{EvaluatorConcurNum: ptr.Of(1), EvaluatorConf: []*entity.EvaluatorConf{ - { - EvaluatorVersionID: 1, - IngressConf: &entity.EvaluatorIngressConf{EvalSetAdapter: &entity.FieldAdapter{FieldConfs: []*entity.FieldConf{{FieldName: "field_name", FromField: "from_field"}}}}, - }, - }}, - }}, - Target: &entity.EvalTarget{ID: 1, SpaceID: 3, SourceTargetID: "source_target_id", EvalTargetType: 1, EvalTargetVersion: &entity.EvalTargetVersion{ID: 1, OutputSchema: []*entity.ArgsSchema{{Key: ptr.Of("key")}}}, BaseInfo: &entity.BaseInfo{}}, - EvalSet: &entity.EvaluationSet{ - ID: 1, SpaceID: 3, Name: "name", Description: "description", Status: 0, Spec: nil, Features: nil, ItemCount: 0, ChangeUncommitted: false, - EvaluationSetVersion: &entity.EvaluationSetVersion{ID: 1, AppID: 0, SpaceID: 3, EvaluationSetID: 1, Version: "version", VersionNum: 0, Description: "description", EvaluationSetSchema: nil, ItemCount: 0, BaseInfo: nil}, - LatestVersion: "", NextVersionNum: 0, BaseInfo: nil, BizCategory: strconv.Itoa(1), - }, - Evaluators: []*entity.Evaluator{{}}, - ExptType: 1, -======= func TestExptSubmitExec_createItemTurnResults_errors(t *testing.T) { type fields struct { exptItemResultRepo *mock_repo.MockIExptItemResultRepo @@ -2256,205 +2194,6 @@ func TestExptSubmitExec_ExptStart_error_scenarios(t *testing.T) { name string prepareMock func(f *fields, ctrl *gomock.Controller, args args) args args -<<<<<<< HEAD - wantErr bool - assertErr func(t *testing.T, err error) - nilExec bool - }{ - { - name: "nil ExptSubmitExec返回nil", - nilExec: true, - args: args{ - ctx: context.Background(), - event: &entity.ExptScheduleEvent{ - ExptID: 1, - ExptRunID: 2, - SpaceID: 3, - Session: &entity.Session{UserID: testUserID}, - }, - expt: mockExptWithTrialRun, - }, - wantErr: false, - assertErr: func(t *testing.T, err error) { assert.NoError(t, err) }, - }, - { - name: "TrialRunItemCount<=0回退到Submit.ExptStart", - args: args{ - ctx: session.WithCtxUser(context.Background(), &session.User{ID: testUserID}), - event: &entity.ExptScheduleEvent{ - ExptID: 1, - ExptRunID: 2, - SpaceID: 3, - Session: &entity.Session{UserID: testUserID}, - }, - expt: &entity.Experiment{ - ID: 1, - SpaceID: 3, - TrialRunItemCount: 0, - EvalSet: &entity.EvaluationSet{ - ID: 1, SpaceID: 3, - EvaluationSetVersion: &entity.EvaluationSetVersion{ID: 1, SpaceID: 3, EvaluationSetID: 1}, - }, - EvaluatorVersionRef: []*entity.ExptEvaluatorVersionRef{{EvaluatorID: 1, EvaluatorVersionID: 1}}, - Target: &entity.EvalTarget{ID: 1, SpaceID: 3, EvalTargetVersion: &entity.EvalTargetVersion{ID: 1, OutputSchema: []*entity.ArgsSchema{{Key: ptr.Of("key")}}}}, - Evaluators: []*entity.Evaluator{{}}, - }, - }, - prepareMock: func(f *fields, ctrl *gomock.Controller, args args) { - f.idem.EXPECT().Exist(gomock.Any(), gomock.Any()).Return(true, nil).Times(1) - }, - wantErr: false, - assertErr: func(t *testing.T, err error) { assert.NoError(t, err) }, - }, - { - name: "idem已存在返回nil", - args: args{ - ctx: session.WithCtxUser(context.Background(), &session.User{ID: testUserID}), - event: &entity.ExptScheduleEvent{ - ExptID: 1, - ExptRunID: 2, - SpaceID: 3, - Session: &entity.Session{UserID: testUserID}, - }, - expt: mockExptWithTrialRun, - }, - prepareMock: func(f *fields, ctrl *gomock.Controller, args args) { - f.idem.EXPECT().Exist(gomock.Any(), gomock.Any()).Return(true, nil).Times(1) - }, - wantErr: false, - assertErr: func(t *testing.T, err error) { assert.NoError(t, err) }, - }, - { - name: "idem检查失败", - args: args{ - ctx: session.WithCtxUser(context.Background(), &session.User{ID: testUserID}), - event: &entity.ExptScheduleEvent{ - ExptID: 1, - ExptRunID: 2, - SpaceID: 3, - Session: &entity.Session{UserID: testUserID}, - }, - expt: mockExptWithTrialRun, - }, - prepareMock: func(f *fields, ctrl *gomock.Controller, args args) { - f.idem.EXPECT().Exist(gomock.Any(), gomock.Any()).Return(false, errors.New("idem error")).Times(1) - }, - wantErr: true, - assertErr: func(t *testing.T, err error) { - assert.Error(t, err) - assert.Contains(t, err.Error(), "idem error") - }, - }, - { - name: "ListEvaluationSetItems失败", - args: args{ - ctx: session.WithCtxUser(context.Background(), &session.User{ID: testUserID}), - event: &entity.ExptScheduleEvent{ - ExptID: 1, - ExptRunID: 2, - SpaceID: 3, - Session: &entity.Session{UserID: testUserID}, - }, - expt: mockExptWithTrialRun, - }, - prepareMock: func(f *fields, ctrl *gomock.Controller, args args) { - f.idem.EXPECT().Exist(gomock.Any(), gomock.Any()).Return(false, nil).Times(1) - f.evaluationSetItemService.EXPECT().ListEvaluationSetItems(gomock.Any(), gomock.Any()).Return(nil, nil, nil, nil, errors.New("list error")).Times(1) - }, - wantErr: true, - assertErr: func(t *testing.T, err error) { - assert.Error(t, err) - assert.Contains(t, err.Error(), "list error") - }, - }, - { - name: "GenMultiIDs失败", - args: args{ - ctx: session.WithCtxUser(context.Background(), &session.User{ID: testUserID}), - event: &entity.ExptScheduleEvent{ - ExptID: 1, - ExptRunID: 2, - SpaceID: 3, - Session: &entity.Session{UserID: testUserID}, - }, - expt: mockExptWithTrialRun, - }, - prepareMock: func(f *fields, ctrl *gomock.Controller, args args) { - f.idem.EXPECT().Exist(gomock.Any(), gomock.Any()).Return(false, nil).Times(1) - f.evaluationSetItemService.EXPECT().ListEvaluationSetItems(gomock.Any(), gomock.Any()).Return([]*entity.EvaluationSetItem{ - {ItemID: 1, Turns: []*entity.Turn{{ID: 1}}}, - }, ptr.Of(int64(5)), ptr.Of(int64(5)), nil, nil).Times(1) - f.idgenerator.EXPECT().GenMultiIDs(gomock.Any(), gomock.Any()).Return(nil, errors.New("idgen error")).Times(1) - }, - wantErr: true, - assertErr: func(t *testing.T, err error) { - assert.Error(t, err) - assert.Contains(t, err.Error(), "idgen error") - }, - }, - { - name: "BatchCreateNX turns失败", - args: args{ - ctx: session.WithCtxUser(context.Background(), &session.User{ID: testUserID}), - event: &entity.ExptScheduleEvent{ - ExptID: 1, ExptRunID: 2, SpaceID: 3, - Session: &entity.Session{UserID: testUserID}, - }, - expt: mockExptWithTrialRun, - }, - prepareMock: func(f *fields, ctrl *gomock.Controller, args args) { - 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(5)), ptr.Of(int64(5)), nil, nil) - f.idgenerator.EXPECT().GenMultiIDs(gomock.Any(), gomock.Any()).Return([]int64{1, 2}, nil) - f.exptTurnResultRepo.EXPECT().BatchCreateNX(gomock.Any(), gomock.Any()).Return(errors.New("batch create turns error")) - }, - wantErr: true, - assertErr: func(t *testing.T, err error) { - assert.Contains(t, err.Error(), "batch create turns error") - }, - }, - { - name: "BatchCreateNX items失败", - args: args{ - ctx: session.WithCtxUser(context.Background(), &session.User{ID: testUserID}), - event: &entity.ExptScheduleEvent{ - ExptID: 1, ExptRunID: 2, SpaceID: 3, - Session: &entity.Session{UserID: testUserID}, - }, - expt: mockExptWithTrialRun, - }, - prepareMock: func(f *fields, ctrl *gomock.Controller, args args) { - 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(5)), ptr.Of(int64(5)), nil, nil) - f.idgenerator.EXPECT().GenMultiIDs(gomock.Any(), gomock.Any()).Return([]int64{1, 2}, nil) - f.exptTurnResultRepo.EXPECT().BatchCreateNX(gomock.Any(), gomock.Any()).Return(nil) - f.exptItemResultRepo.EXPECT().BatchCreateNX(gomock.Any(), gomock.Any()).Return(errors.New("batch create items error")) - }, - wantErr: true, - assertErr: func(t *testing.T, err error) { - assert.Contains(t, err.Error(), "batch create items error") - }, - }, - { - name: "BatchCreateNXRunLogs失败", - args: args{ - ctx: session.WithCtxUser(context.Background(), &session.User{ID: testUserID}), - event: &entity.ExptScheduleEvent{ - ExptID: 1, ExptRunID: 2, SpaceID: 3, - Session: &entity.Session{UserID: testUserID}, - }, - expt: mockExptWithTrialRun, - }, - prepareMock: func(f *fields, ctrl *gomock.Controller, args args) { - 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(5)), ptr.Of(int64(5)), nil, nil) -======= assertErr func(t *testing.T, err error) }{ { @@ -2514,99 +2253,10 @@ func TestExptSubmitExec_ExptStart_error_scenarios(t *testing.T) { Return([]*entity.EvaluationSetItem{ {ItemID: 1, Turns: []*entity.Turn{{ID: 1}}}, }, ptr.Of(int64(1)), ptr.Of(int64(1)), nil, nil) ->>>>>>> main f.idgenerator.EXPECT().GenMultiIDs(gomock.Any(), gomock.Any()).Return([]int64{1, 2}, 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{3}, nil) -<<<<<<< HEAD - f.exptItemResultRepo.EXPECT().BatchCreateNXRunLogs(gomock.Any(), gomock.Any()).Return(errors.New("batch create runlogs error")) - }, - wantErr: true, - assertErr: func(t *testing.T, err error) { - assert.Contains(t, err.Error(), "batch create runlogs error") - }, - }, - { - name: "UpdateByExptID失败", - args: args{ - ctx: session.WithCtxUser(context.Background(), &session.User{ID: testUserID}), - event: &entity.ExptScheduleEvent{ - ExptID: 1, ExptRunID: 2, SpaceID: 3, - Session: &entity.Session{UserID: testUserID}, - }, - expt: mockExptWithTrialRun, - }, - prepareMock: func(f *fields, ctrl *gomock.Controller, args args) { - 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}}}, - {ItemID: 2, Turns: []*entity.Turn{{ID: 2}}}, - }, ptr.Of(int64(2)), ptr.Of(int64(2)), nil, nil) - f.idgenerator.EXPECT().GenMultiIDs(gomock.Any(), gomock.Any()).Return([]int64{1, 2, 3, 4}, 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{5, 6}, 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("update stats error")) - }, - wantErr: true, - assertErr: func(t *testing.T, err error) { - assert.Contains(t, err.Error(), "update stats error") - }, - }, - { - name: "exptRepo.Update失败", - args: args{ - ctx: session.WithCtxUser(context.Background(), &session.User{ID: testUserID}), - event: &entity.ExptScheduleEvent{ - ExptID: 1, ExptRunID: 2, SpaceID: 3, - Session: &entity.Session{UserID: testUserID}, - }, - expt: mockExptWithTrialRun, - }, - prepareMock: func(f *fields, ctrl *gomock.Controller, args args) { - 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}}}, - {ItemID: 2, Turns: []*entity.Turn{{ID: 2}}}, - }, ptr.Of(int64(2)), ptr.Of(int64(2)), nil, nil) - f.idgenerator.EXPECT().GenMultiIDs(gomock.Any(), gomock.Any()).Return([]int64{1, 2, 3, 4}, 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{5, 6}, 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 expt error")) - }, - wantErr: true, - assertErr: func(t *testing.T, err error) { - assert.Contains(t, err.Error(), "update expt error") - }, - }, - { - name: "idem.Set失败", - args: args{ - ctx: session.WithCtxUser(context.Background(), &session.User{ID: testUserID}), - event: &entity.ExptScheduleEvent{ - ExptID: 1, ExptRunID: 2, SpaceID: 3, - Session: &entity.Session{UserID: testUserID}, - }, - expt: mockExptWithTrialRun, - }, - prepareMock: func(f *fields, ctrl *gomock.Controller, args args) { - 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}}}, - {ItemID: 2, Turns: []*entity.Turn{{ID: 2}}}, - }, ptr.Of(int64(2)), ptr.Of(int64(2)), nil, nil) - f.idgenerator.EXPECT().GenMultiIDs(gomock.Any(), gomock.Any()).Return([]int64{1, 2, 3, 4}, 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{5, 6}, 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()). @@ -2669,27 +2319,16 @@ func TestExptSubmitExec_ExptStart_error_scenarios(t *testing.T) { 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{3}, nil) ->>>>>>> main 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) -<<<<<<< HEAD - f.exptRepo.EXPECT().GetByID(gomock.Any(), gomock.Any(), gomock.Any()).Return(args.expt, 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(errors.New("idem set error")) - }, - wantErr: true, - assertErr: func(t *testing.T, err error) { - assert.Contains(t, err.Error(), "idem set error") -======= f.templateManager.EXPECT().UpdateExptInfo(gomock.Any(), int64(42), int64(3), int64(1), entity.ExptStatus_Processing, int64(0), gomock.Nil()).Return(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) }, assertErr: func(t *testing.T, err error) { assert.NoError(t, err) ->>>>>>> main }, }, } @@ -2699,18 +2338,6 @@ func TestExptSubmitExec_ExptStart_error_scenarios(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() -<<<<<<< HEAD - if tt.nilExec { - exec := &ExptTrialRunExec{ExptSubmitExec: nil} - err := exec.ExptStart(tt.args.ctx, tt.args.event, tt.args.expt) - if tt.assertErr != nil { - tt.assertErr(t, err) - } - return - } - -======= ->>>>>>> main f := &fields{ manager: svcmocks.NewMockIExptManager(ctrl), exptItemResultRepo: mock_repo.NewMockIExptItemResultRepo(ctrl), @@ -2727,34 +2354,6 @@ func TestExptSubmitExec_ExptStart_error_scenarios(t *testing.T) { templateManager: svcmocks.NewMockIExptTemplateManager(ctrl), } -<<<<<<< HEAD - if tt.prepareMock != nil { - tt.prepareMock(f, ctrl, tt.args) - } - - exec := &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, - }, - } - - err := exec.ExptStart(tt.args.ctx, tt.args.event, tt.args.expt) - if tt.assertErr != nil { - tt.assertErr(t, err) - } -======= tt.prepareMock(f, ctrl, tt.args) e := &ExptSubmitExec{ @@ -2775,7 +2374,6 @@ func TestExptSubmitExec_ExptStart_error_scenarios(t *testing.T) { err := e.ExptStart(tt.args.ctx, tt.args.event, tt.args.expt) tt.assertErr(t, err) ->>>>>>> main }) } } From db54277d2d2921464e3976299a0eda631928e85e Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Tue, 14 Apr 2026 22:02:12 +0800 Subject: [PATCH 51/57] fix Change-Id: Ie520d956b151d34f4971e7ab34d9f30a724de5eb --- backend/modules/evaluation/domain/entity/expt_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/modules/evaluation/domain/entity/expt_test.go b/backend/modules/evaluation/domain/entity/expt_test.go index 319904ea7..4f3881940 100644 --- a/backend/modules/evaluation/domain/entity/expt_test.go +++ b/backend/modules/evaluation/domain/entity/expt_test.go @@ -340,6 +340,7 @@ func TestWithOptions(t *testing.T) { 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()) From 7b9f880db8779e60f5844c7891cb6cfe274dddf1 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Tue, 14 Apr 2026 23:25:58 +0800 Subject: [PATCH 52/57] fix Change-Id: I29143d63486f5e22e46e63fb9fbca2964b2182ac --- .../repo/experiment/mysql/expt_template_test.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) 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" From 31576c073b84ed4833aa5d97bb90123617433883 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Wed, 15 Apr 2026 01:00:13 +0800 Subject: [PATCH 53/57] fix Change-Id: Id7d09467e9d0517c0ac25c34db59baa3b133a352 --- .../convertor/evaluator/evaluator_test.go | 14 + .../convertor/experiment/expt_test.go | 59 + .../application/eval_target_app_test.go | 206 ++++ .../evaluation/domain/entity/expt_run_test.go | 1001 ++++++++++++++++- .../expt_manage_execution_impl_test.go | 216 ++++ .../expt_run_scheduler_mode_impl_test.go | 331 ++++++ 6 files changed, 1818 insertions(+), 9 deletions(-) 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_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/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/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/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_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 From dc461e52eaaf43246f3bd06f42d5dc87d1a27786 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Wed, 15 Apr 2026 11:37:41 +0800 Subject: [PATCH 54/57] fix Change-Id: I8d3e2aa6dcd711f7b8b3e0d8674d986f4e2831e9 --- .../target/eval_target_record_test.go | 136 +++++ .../application/evaluator_app_test.go | 189 +++++++ .../evaluation/domain/entity/expt_test.go | 111 +++++ .../domain/service/expt_template_impl_test.go | 463 ++++++++++++++++++ 4 files changed, 899 insertions(+) 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/evaluator_app_test.go b/backend/modules/evaluation/application/evaluator_app_test.go index 8df16136d..36bd47989 100644 --- a/backend/modules/evaluation/application/evaluator_app_test.go +++ b/backend/modules/evaluation/application/evaluator_app_test.go @@ -9136,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/domain/entity/expt_test.go b/backend/modules/evaluation/domain/entity/expt_test.go index 4f3881940..e93fda5b9 100644 --- a/backend/modules/evaluation/domain/entity/expt_test.go +++ b/backend/modules/evaluation/domain/entity/expt_test.go @@ -348,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/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) +} From c3736f36386856168fe7196f62f5998064c217e5 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Wed, 15 Apr 2026 14:29:16 +0800 Subject: [PATCH 55/57] fix Change-Id: Ie0020a3a3b7fe7c288381cee03052b48f3176ec8 --- .../evaluator/evaluator_content_test.go | 30 ++ .../evaluator/evaluator_output_data_test.go | 58 +++ .../application/experiment_app_test.go | 352 +++++++++++++++ .../evaluation/domain/entity/common_test.go | 335 ++++++++++++++ .../domain/entity/evaluator_test.go | 412 ++++++++++++++++++ 5 files changed, 1187 insertions(+) create mode 100644 backend/modules/evaluation/application/convertor/evaluator/evaluator_content_test.go 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/experiment_app_test.go b/backend/modules/evaluation/application/experiment_app_test.go index 23cfc09bd..7d1d9bec5 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/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_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) + }) + } +} From 470691c74a1296b7bf1808000c338593f9fecf06 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Wed, 15 Apr 2026 14:47:15 +0800 Subject: [PATCH 56/57] fix Change-Id: Ifcf5a23214d0e9c332e89be0154f26b676b0c0f9 --- .../evaluation/application/experiment_app_test.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/backend/modules/evaluation/application/experiment_app_test.go b/backend/modules/evaluation/application/experiment_app_test.go index 7d1d9bec5..4808d4780 100644 --- a/backend/modules/evaluation/application/experiment_app_test.go +++ b/backend/modules/evaluation/application/experiment_app_test.go @@ -6808,8 +6808,8 @@ func TestExperimentApplication_ListExperimentTemplates_MoreBranches(t *testing.T 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 + nil, // nil, should be skipped + {Field: gptr.Of("invalid_field"), IsAsc: gptr.Of(true)}, // invalid field, should be skipped }, }) assert.NoError(t, err) @@ -6847,9 +6847,9 @@ func TestExperimentApplication_BatchGetExperimentResult_MoreBranches(t *testing. 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), + WorkspaceID: validWorkspaceID, + ExperimentIds: []int64{baselineExptID}, + BaselineExperimentID: gptr.Of(baselineExptID), }) assert.NoError(t, err) assert.NotNil(t, resp) @@ -6859,8 +6859,8 @@ func TestExperimentApplication_BatchGetExperimentResult_MoreBranches(t *testing. 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), + WorkspaceID: validWorkspaceID, + BaselineExperimentID: gptr.Of(baselineExptID), }) assert.Error(t, err) }) From f572afcb4be38841876c37fbbaf68350b6de93b4 Mon Sep 17 00:00:00 2001 From: dushaofeng Date: Wed, 15 Apr 2026 15:25:43 +0800 Subject: [PATCH 57/57] fix Change-Id: Ia438a84664854a83c128552ff14601a17b4c95ee --- .../handler/coze/loop/apis/eval_target_service.go | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) 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 cc3c6caf0..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,9 +9,6 @@ import ( "context" "github.com/cloudwego/hertz/pkg/app" - "github.com/cloudwego/hertz/pkg/protocol/consts" - - eval_target "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/eval_target" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/evaltargetservice" ) @@ -110,15 +107,5 @@ func GetEvalTargetOutputFieldContent(ctx context.Context, c *app.RequestContext) // GetSourceEvalTargetVersion . // @router /api/evaluation/v1/eval_targets/get_source_version [GET] func GetSourceEvalTargetVersion(ctx context.Context, c *app.RequestContext) { - var err error - var req eval_target.GetSourceEvalTargetVersionRequest - err = c.BindAndValidate(&req) - if err != nil { - c.String(consts.StatusBadRequest, err.Error()) - return - } - - resp := new(eval_target.GetSourceEvalTargetVersionResponse) - - c.JSON(consts.StatusOK, resp) + invokeAndRender(ctx, c, localEvalTargetSvc.GetSourceEvalTargetVersion) }