@@ -163,6 +163,19 @@ func TestExperimentApplication_CreateExperiment(t *testing.T) {
163163 },
164164 },
165165 mockSetup : func () {
166+ mockEvaluatorService .EXPECT ().BatchGetEvaluatorVersion (gomock .Any (), gomock .Any (), []int64 {10001 }, false ).Return ([]* entity.Evaluator {
167+ {
168+ ID : 3 ,
169+ SpaceID : validWorkspaceID ,
170+ EvaluatorType : entity .EvaluatorTypePrompt ,
171+ PromptEvaluatorVersion : & entity.PromptEvaluatorVersion {
172+ SpaceID : validWorkspaceID ,
173+ ID : 10001 ,
174+ EvaluatorID : 3 ,
175+ Version : "v1" ,
176+ },
177+ },
178+ }, nil )
166179 mockEvaluatorService .EXPECT ().BatchGetBuiltinEvaluator (gomock .Any (), []int64 {1 , 1 }).Return ([]* entity.Evaluator {
167180 {
168181 ID : 1 ,
@@ -178,8 +191,10 @@ func TestExperimentApplication_CreateExperiment(t *testing.T) {
178191 mockEvaluatorService .EXPECT ().BatchGetEvaluatorByIDAndVersion (gomock .Any (), gomock .Any ()).Return ([]* entity.Evaluator {
179192 {
180193 ID : 2 ,
194+ SpaceID : validWorkspaceID ,
181195 EvaluatorType : entity .EvaluatorTypePrompt ,
182196 PromptEvaluatorVersion : & entity.PromptEvaluatorVersion {
197+ SpaceID : validWorkspaceID ,
183198 ID : 20200 ,
184199 EvaluatorID : 2 ,
185200 Version : "1.0.0" ,
@@ -234,6 +249,63 @@ func TestExperimentApplication_CreateExperiment(t *testing.T) {
234249 },
235250 wantErr : true ,
236251 },
252+ {
253+ name : "cross_workspace_evaluator_id_version_list_rejected" ,
254+ req : & exptpb.CreateExperimentRequest {
255+ WorkspaceID : validWorkspaceID ,
256+ EvaluatorIDVersionList : []* evaluator.EvaluatorIDVersionItem {
257+ {EvaluatorID : gptr .Of (int64 (2 )), Version : gptr .Of ("1.0.0" )},
258+ },
259+ },
260+ mockSetup : func () {
261+ mockEvaluatorService .EXPECT ().BatchGetEvaluatorByIDAndVersion (gomock .Any (), gomock .Any ()).Return ([]* entity.Evaluator {
262+ {
263+ ID : 2 ,
264+ SpaceID : validWorkspaceID + 1 , // 其他空间
265+ EvaluatorType : entity .EvaluatorTypePrompt ,
266+ Builtin : false ,
267+ PromptEvaluatorVersion : & entity.PromptEvaluatorVersion {
268+ SpaceID : validWorkspaceID + 1 ,
269+ ID : 20200 ,
270+ EvaluatorID : 2 ,
271+ Version : "1.0.0" ,
272+ },
273+ },
274+ }, nil )
275+ },
276+ wantErr : true ,
277+ wantCode : errno .EvaluatorVersionNotFoundCode ,
278+ },
279+ {
280+ name : "cross_workspace_builtin_evaluator_id_version_list_allowed" ,
281+ req : & exptpb.CreateExperimentRequest {
282+ WorkspaceID : validWorkspaceID ,
283+ EvaluatorIDVersionList : []* evaluator.EvaluatorIDVersionItem {
284+ {EvaluatorID : gptr .Of (int64 (9 )), Version : gptr .Of ("1.0.0" )},
285+ },
286+ CreateEvalTargetParam : & eval_target.CreateEvalTargetParam {
287+ EvalTargetType : gptr .Of (domain_eval_target .EvalTargetType_CozeBot ),
288+ },
289+ },
290+ mockSetup : func () {
291+ mockEvaluatorService .EXPECT ().BatchGetEvaluatorByIDAndVersion (gomock .Any (), gomock .Any ()).Return ([]* entity.Evaluator {
292+ {
293+ ID : 9 ,
294+ SpaceID : validWorkspaceID + 2 , // 预置评估器通常属于平台空间
295+ EvaluatorType : entity .EvaluatorTypePrompt ,
296+ Builtin : true , // 预置评估器允许跨空间复用
297+ PromptEvaluatorVersion : & entity.PromptEvaluatorVersion {
298+ SpaceID : validWorkspaceID + 2 ,
299+ ID : 90900 ,
300+ EvaluatorID : 9 ,
301+ Version : "1.0.0" ,
302+ },
303+ },
304+ }, nil )
305+ mockManager .EXPECT ().CreateExpt (gomock .Any (), gomock .Any (), gomock .Any ()).Return (validExpt , nil )
306+ },
307+ wantErr : false ,
308+ },
237309 {
238310 name : "skip_missing_evaluators" ,
239311 req : & exptpb.CreateExperimentRequest {
@@ -248,6 +320,19 @@ func TestExperimentApplication_CreateExperiment(t *testing.T) {
248320 },
249321 },
250322 mockSetup : func () {
323+ mockEvaluatorService .EXPECT ().BatchGetEvaluatorVersion (gomock .Any (), gomock .Any (), []int64 {10001 }, false ).Return ([]* entity.Evaluator {
324+ {
325+ ID : 3 ,
326+ SpaceID : validWorkspaceID ,
327+ EvaluatorType : entity .EvaluatorTypePrompt ,
328+ PromptEvaluatorVersion : & entity.PromptEvaluatorVersion {
329+ SpaceID : validWorkspaceID ,
330+ ID : 10001 ,
331+ EvaluatorID : 3 ,
332+ Version : "v1" ,
333+ },
334+ },
335+ }, nil )
251336 mockEvaluatorService .EXPECT ().BatchGetBuiltinEvaluator (gomock .Any (), []int64 {1 }).Return ([]* entity.Evaluator {
252337 {
253338 ID : 1 ,
0 commit comments