From 1e30a2133297817da69a233d0c83502efc7feeb8 Mon Sep 17 00:00:00 2001 From: liushengyang Date: Tue, 28 Oct 2025 14:17:26 +0800 Subject: [PATCH 1/2] fix(evaluation): panic --- .../evaluation/domain/service/expt_manage_impl.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/backend/modules/evaluation/domain/service/expt_manage_impl.go b/backend/modules/evaluation/domain/service/expt_manage_impl.go index 1f00cc59f..bf85e4947 100644 --- a/backend/modules/evaluation/domain/service/expt_manage_impl.go +++ b/backend/modules/evaluation/domain/service/expt_manage_impl.go @@ -36,7 +36,7 @@ import ( ) func NewExptManager( - // tupleSvc IExptTupleService, +// tupleSvc IExptTupleService, exptResultService ExptResultService, exptRepo repo.IExperimentRepo, exptRunLogRepo repo.IExptRunLogRepo, @@ -561,10 +561,12 @@ func (e *ExptMangerImpl) CreateExpt(ctx context.Context, req *entity.CreateExptP EvalSet: tuple.EvalSet, } - if req.CreateEvalTargetParam != nil { + if !req.CreateEvalTargetParam.IsNull() { do.TargetType = gptr.Indirect(req.CreateEvalTargetParam.EvalTargetType) - do.TargetID = versionedTargetID.TargetID - do.TargetVersionID = versionedTargetID.VersionID + if versionedTargetID != nil { + do.TargetID = versionedTargetID.TargetID + do.TargetVersionID = versionedTargetID.VersionID + } if do.EvalConf != nil && do.EvalConf.ConnectorConf.TargetConf != nil { do.EvalConf.ConnectorConf.TargetConf.TargetVersionID = do.TargetVersionID } From 8d21c20eed75b357e87cb4bed83e7bde91d8eade Mon Sep 17 00:00:00 2001 From: liushengyang Date: Wed, 17 Sep 2025 11:16:08 +0800 Subject: [PATCH 2/2] fix(evaluation): BatchGetExperimentResult with sorted turn results fix(evaluation): BatchGetExperimentResult panic --- .../domain/service/expt_manage_impl.go | 1 - .../domain/service/expt_result_impl.go | 16 ++++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/backend/modules/evaluation/domain/service/expt_manage_impl.go b/backend/modules/evaluation/domain/service/expt_manage_impl.go index bf85e4947..ad932e634 100644 --- a/backend/modules/evaluation/domain/service/expt_manage_impl.go +++ b/backend/modules/evaluation/domain/service/expt_manage_impl.go @@ -36,7 +36,6 @@ import ( ) func NewExptManager( -// tupleSvc IExptTupleService, exptResultService ExptResultService, exptRepo repo.IExperimentRepo, exptRunLogRepo repo.IExptRunLogRepo, diff --git a/backend/modules/evaluation/domain/service/expt_result_impl.go b/backend/modules/evaluation/domain/service/expt_result_impl.go index 34f88d0ed..88d3209c7 100644 --- a/backend/modules/evaluation/domain/service/expt_result_impl.go +++ b/backend/modules/evaluation/domain/service/expt_result_impl.go @@ -873,13 +873,15 @@ func (b *PayloadBuilder) BuildItemResults(ctx context.Context) ([]*entity.ItemRe wg.Wait() close(resultCh) - var exptResultBuildersWithResult []*ExptResultBuilder // 任务结果 - var errors []error + var ( + errors []error + exptIDToResultBuilder = make(map[int64]*ExptResultBuilder) + ) for exptResultBuilder := range resultCh { if exptResultBuilder.Err != nil { errors = append(errors, fmt.Errorf("ExptID %d: %v", exptResultBuilder.ExptID, exptResultBuilder.Err)) } else { - exptResultBuildersWithResult = append(exptResultBuildersWithResult, exptResultBuilder) + exptIDToResultBuilder[exptResultBuilder.ExptID] = exptResultBuilder } } if len(errors) > 0 { @@ -887,7 +889,13 @@ func (b *PayloadBuilder) BuildItemResults(ctx context.Context) ([]*entity.ItemRe return nil, fmt.Errorf("build expt result fail, errors:%v", errors) } - b.ExptResultBuilders = exptResultBuildersWithResult + resultedBuilders := make([]*ExptResultBuilder, 0, len(exptIDToResultBuilder)) + for _, exptID := range b.ExptIDs { + if got := exptIDToResultBuilder[exptID]; got != nil { + resultedBuilders = append(resultedBuilders, exptIDToResultBuilder[exptID]) + } + } + b.ExptResultBuilders = resultedBuilders // 填充数据 err := b.fillItemResults(ctx)