feat(backend): CSV-Import für Stammdaten (Modul 33)
Neues ImportModule mit einem abhängigkeitsfreien CSV-Parser (src/import/csv.ts, RFC4180-artig: Quoting, escapte Anführungszeichen, CRLF/LF) passend zum bereits im ExportModule verwendeten Schreibformat, sodass exportierte CSVs unverändert wieder importierbar sind. Endpunkt: POST /import/:entity (multipart, nur Administrator) für apiaries, colonies, queens. Jede Zeile wird über die exakt gleichen class-validator-DTOs geprüft, die auch die regulären POST-Endpunkte nutzen (CreateApiaryDto/CreateColonyDto/CreateQueenDto) – keine duplizierte Validierungslogik. Ergebnisbericht pro Zeile (erstellt/übersprungen/Fehler + Meldung): - Colonies/Queens: Zeilen mit bereits existierendem Code werden übersprungen statt einen Fehler zu werfen (idempotenter Re-Import) - Colonies lösen den Bienenstand über eine "apiaryName"-Spalte auf (case-insensitive), da eine CSV keine internen IDs kennen kann; unbekannter Name → Fehlerzeile statt Abbruch des gesamten Imports Unit-Tests für den CSV-Parser (Quoting, escapte Anführungszeichen, CRLF, leere Zeilen) und den ImportService (alle drei Entitäten, Validierungsfehler, Duplikat-Skip, unbekannter Bienenstand). E2E-Tests über echten multipart-Upload (Rollenprüfung, Dateiendungsprüfung, alle drei Entitäten, Re-Import-Idempotenz).
This commit is contained in:
1 parent
e051ad956b
commit
4f2f31c05f
8 files changed
+763
No files matched your search
@@ -31,6 +31,7 @@ import { StatisticsModule } from './statistics/statistics.module';
|
||||
import { WebhooksModule } from './webhooks/webhooks.module';
|
||||
import { DocumentsModule } from './documents/documents.module';
|
||||
import { AutomationModule } from './automation/automation.module';
|
||||
import { ImportModule } from './import/import.module';
|
||||
import { JwtAuthGuard } from './auth/guards/jwt-auth.guard';
|
||||
import { RolesGuard } from './auth/guards/roles.guard';
|
||||
|
||||
@@ -67,6 +68,7 @@ import { RolesGuard } from './auth/guards/roles.guard';
|
||||
WebhooksModule,
|
||||
DocumentsModule,
|
||||
AutomationModule,
|
||||
ImportModule,
|
||||
],
|
||||
controllers: [],
|
||||
providers: [
|
||||
|
||||
Reference in new issue
Block a user