FinalizeRawDataActivity.Execute
Purpose
Определяет post-record outcome для raw-data stage после записи metadata в terry.raw_data_files.
Код: internal/worker/loader/finalize_raw_data.go
Flow
flowchart TD
Start([Start]) --> Validate[Validate data_source_id, output.raw_data, loader_config_id]
Validate --> Valid{Valid?}
Valid -- No --> Invalid[Return non-retryable validation error]
Valid -- Yes --> Resolve[Resolve current loader config]
Resolve --> Processor{Processor settings non-empty?}
Processor -- No --> Success[Set status = success]
Success --> NoProcessor[Set has_processor = false and processor_requested = false]
Processor -- Yes --> Requesting[Set status = requesting_transform]
Requesting --> Flags[Set has_processor = true and processor_requested = true]
Flags --> IsNew{raw_data.is_new?}
IsNew -- Yes --> NotifyFlag[Set new_raw_data_notification_requested = true]
IsNew -- No --> NoNotify[Set new_raw_data_notification_requested = false]
NoProcessor --> Output[Return updated IngestionOutput]
NotifyFlag --> Output
NoNotify --> Output
Output --> End([End])
Invalid --> End
Input / Output
Input (loader.FinalizeRawDataRequest):
- data_source_id
- output
Output (loader.IngestionOutput):
- status: success или requesting_transform
- has_processor
- processor_requested
- new_raw_data_notification_requested
Behavior
- Резолвит current loader config для
data_source_id. - Считает, что обработчик есть, если
processor_settingsсодержит непустойmode,handler,result_pathили непустойoptions. - Если обработчика нет, возвращает
status=successиprocessor_requested=false. - Если обработчик есть, возвращает
status=requesting_transformиprocessor_requested=true. raw_data.is_new=trueвключает только флагnew_raw_data_notification_requested.- StructuredDataStore выполняется отдельным workflow activity после finalize.
Error Taxonomy
- invalid
data_source_id: non-retryable validation error - ошибка resolve loader config: retryable или typed resolver error