@page "/clusters/{ClusterId}/draft/{GenerationId:long}/import-equipment" @using Microsoft.AspNetCore.Components.Authorization @using ZB.MOM.WW.OtOpcUa.Admin.Services @using ZB.MOM.WW.OtOpcUa.Configuration.Entities @inject DriverInstanceService DriverSvc @inject UnsService UnsSvc @inject EquipmentImportBatchService BatchSvc @inject NavigationManager Nav @inject AuthenticationStateProvider AuthProvider

Equipment CSV import

Cluster @ClusterId · draft generation @GenerationId
Back to draft
Accepts @EquipmentCsvImporter.VersionMarker-headered CSV per Stream B.3. Required columns: @string.Join(", ", EquipmentCsvImporter.RequiredColumns). Optional columns cover the OPC 40010 Identification fields. Paste the file contents or upload directly — the parser runs client-stream-side and shows a row-level preview before anything lands in the draft. ZTag + SAPID uniqueness across the fleet is NOT enforced here yet (see task #197); for now the finalise may fail at commit time if a reservation conflict exists.