fn build_final_columns(
base_columns: &[CsvColumnDefinition],
service_columns: &[ExerciseServiceCsvExportColumn],
) -> Result<(Vec<CsvColumnDefinition>, HashMap<String, String>), ControllerError>Expand description
Merges base and service columns ensuring unique keys and mapping; errors on duplicate original service keys or final name collisions.