From 7d3dced24df5722aab048332b8a044ceb174908a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krzysztof=20D=C4=85browski?= Date: Mon, 10 Aug 2026 11:48:48 +0200 Subject: [PATCH 1/5] Add IsONe flag --- internal/db/models/training_dataset.go | 1 + internal/handler/queue_handler.go | 4 +++ internal/service/training_dataset_service.go | 29 ++++++++++++++++++++ 3 files changed, 34 insertions(+) diff --git a/internal/db/models/training_dataset.go b/internal/db/models/training_dataset.go index fb95001..e0423fd 100644 --- a/internal/db/models/training_dataset.go +++ b/internal/db/models/training_dataset.go @@ -11,6 +11,7 @@ type TrainingDataset struct { gorm.Model Name string `gorm:"type:varchar(255);not null;uniqueIndex"` AODFiles []jalien.AODFile `gorm:"serializer:json"` + IsONe bool AnchorProdTimestampFrom time.Time AnchorProdTimestampTo time.Time UserId uint diff --git a/internal/handler/queue_handler.go b/internal/handler/queue_handler.go index 978432f..480f43c 100644 --- a/internal/handler/queue_handler.go +++ b/internal/handler/queue_handler.go @@ -103,10 +103,14 @@ func (qh *QueueHandler) QueryTask(w http.ResponseWriter, r *http.Request) { response := struct { ID uint AODFiles []jalien.AODFile + IsONe bool + IsData bool Configuration interface{} }{ ID: tt.ID, AODFiles: tt.TrainingDataset.AODFiles, + IsONe: tt.TrainingDataset.IsONe, + IsData: false, Configuration: tt.Configuration, } diff --git a/internal/service/training_dataset_service.go b/internal/service/training_dataset_service.go index 97568a1..147479e 100644 --- a/internal/service/training_dataset_service.go +++ b/internal/service/training_dataset_service.go @@ -94,6 +94,16 @@ func (s *TrainingDatasetService) Create(td *models.TrainingDataset) error { td.AnchorProdTimestampFrom = timestampFrom td.AnchorProdTimestampTo = timestampTo + isONe, err := resolveDatasetIsONe(td.AODFiles, s.MonalisaService) + if err != nil { + var external *ErrExternalServiceTimeout + if errors.As(err, &external) { + return err + } + return InternalError("resolve training dataset IsONe", err) + } + td.IsONe = isONe + err = s.TrainingDataset.Create(td) if err != nil { @@ -154,3 +164,22 @@ func (s *TrainingDatasetService) FindAods(path string) ([]jalien.AODFile, error) return aodFiles, nil } + +func resolveDatasetIsONe(aodFiles []jalien.AODFile, monalisaService IMonalisaService) (bool, error) { + runList, err := monalisaService.GetRunList() + if err != nil { + return false, mapMonalisaError("GetRunList", err) + } + + for _, aod := range aodFiles { + if aod.LHCPeriod != "" { + desc := runList.TagToDesc[aod.LHCPeriod] + if strings.Contains(desc, "O-O") || strings.Contains(desc, "OO") || + strings.Contains(desc, "Ne-Ne") || strings.Contains(desc, "NeNe") { + return true, nil + } + } + } + + return false, nil +} From 4410f21b88931f9a9b072d0d3a0180b4bb21548c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krzysztof=20D=C4=85browski?= Date: Mon, 10 Aug 2026 11:56:56 +0200 Subject: [PATCH 2/5] small fix --- test/integration/training_dataset_handler_test.go | 2 +- test/repository/training_dataset_repository_test.go | 2 +- test/repository/training_task_repository_test.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test/integration/training_dataset_handler_test.go b/test/integration/training_dataset_handler_test.go index d3e48c3..52e5057 100644 --- a/test/integration/training_dataset_handler_test.go +++ b/test/integration/training_dataset_handler_test.go @@ -173,7 +173,7 @@ func mockDatasetTimestampRange(ut *IntegrationTestUtils, period string, minRun, TagToRuns: map[string][]uint64{ period: {minRun, maxRun}, }, - }, nil).Once() + }, nil) ut.CCDB.On("GetRunInformation", minRun).Return(&ccdb.RunInformation{ RunNumber: minRun, SOR: uint64(time.Now().Add(-time.Hour).UnixMilli()), diff --git a/test/repository/training_dataset_repository_test.go b/test/repository/training_dataset_repository_test.go index a8edb13..264de58 100644 --- a/test/repository/training_dataset_repository_test.go +++ b/test/repository/training_dataset_repository_test.go @@ -40,7 +40,7 @@ func TestTrainingDatasetRepository_Create(t *testing.T) { mock.ExpectBegin() mock.ExpectQuery(`INSERT INTO "training_datasets" (.+) RETURNING "id"`). - WithArgs(AnyTime(), AnyTime(), AnyTime(), trainingDataset.Name, marshalAODFiles(t, trainingDataset), AnyTime(), AnyTime(), 1). + WithArgs(AnyTime(), AnyTime(), AnyTime(), trainingDataset.Name, marshalAODFiles(t, trainingDataset), false, AnyTime(), AnyTime(), 1). WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(1)) mock.ExpectCommit() diff --git a/test/repository/training_task_repository_test.go b/test/repository/training_task_repository_test.go index 6776241..017667a 100644 --- a/test/repository/training_task_repository_test.go +++ b/test/repository/training_task_repository_test.go @@ -48,7 +48,7 @@ func TestTrainingTaskRepository_Create(t *testing.T) { mock.ExpectBegin() mock.ExpectQuery(`INSERT INTO "training_datasets" (.+) RETURNING "id"`). - WithArgs(AnyTime(), AnyTime(), AnyTime(), trainingDataset.Name, marshalAODFiles(t, trainingDataset), AnyTime(), AnyTime(), 1). + WithArgs(AnyTime(), AnyTime(), AnyTime(), trainingDataset.Name, marshalAODFiles(t, trainingDataset), false, AnyTime(), AnyTime(), 1). WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(1)) mock.ExpectQuery(`INSERT INTO "training_tasks" (.+) RETURNING "id"`). WithArgs(AnyTime(), AnyTime(), AnyTime(), trainingTask.Name, trainingTask.Status, 1, 1, nil, marshalTrainingTaskConfig(t, trainingTask)). From 8ccf61963658638d33d511ec0c0079104ee1a798 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krzysztof=20D=C4=85browski?= Date: Tue, 11 Aug 2026 10:56:31 +0200 Subject: [PATCH 3/5] add a comment --- internal/handler/queue_handler.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/handler/queue_handler.go b/internal/handler/queue_handler.go index 480f43c..6bc032f 100644 --- a/internal/handler/queue_handler.go +++ b/internal/handler/queue_handler.go @@ -110,7 +110,7 @@ func (qh *QueueHandler) QueryTask(w http.ResponseWriter, r *http.Request) { ID: tt.ID, AODFiles: tt.TrainingDataset.AODFiles, IsONe: tt.TrainingDataset.IsONe, - IsData: false, + IsData: false, // For now we don't use any real experimental data (only simulated data). Configuration: tt.Configuration, } From 8764d0348f5c153651c48d80501c4d59524007fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krzysztof=20D=C4=85browski?= Date: Tue, 11 Aug 2026 11:01:29 +0200 Subject: [PATCH 4/5] fix --- internal/handler/queue_handler.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/handler/queue_handler.go b/internal/handler/queue_handler.go index 6bc032f..09bea31 100644 --- a/internal/handler/queue_handler.go +++ b/internal/handler/queue_handler.go @@ -110,7 +110,8 @@ func (qh *QueueHandler) QueryTask(w http.ResponseWriter, r *http.Request) { ID: tt.ID, AODFiles: tt.TrainingDataset.AODFiles, IsONe: tt.TrainingDataset.IsONe, - IsData: false, // For now we don't use any real experimental data (only simulated data). + // For now we don't use any real experimental data (simulated data only). + IsData: false, Configuration: tt.Configuration, } From db942887aad4d305695ddc5c8d055151fe237b45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krzysztof=20D=C4=85browski?= Date: Tue, 11 Aug 2026 11:04:35 +0200 Subject: [PATCH 5/5] fix2 --- internal/handler/queue_handler.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/internal/handler/queue_handler.go b/internal/handler/queue_handler.go index 09bea31..12e402b 100644 --- a/internal/handler/queue_handler.go +++ b/internal/handler/queue_handler.go @@ -110,8 +110,7 @@ func (qh *QueueHandler) QueryTask(w http.ResponseWriter, r *http.Request) { ID: tt.ID, AODFiles: tt.TrainingDataset.AODFiles, IsONe: tt.TrainingDataset.IsONe, - // For now we don't use any real experimental data (simulated data only). - IsData: false, + IsData: false, // For now we don't use any real experimental data (simulated data only). Configuration: tt.Configuration, }