ERP-04: Export von Belegen mit zugeordneten Metadaten an das ERP-System, aufbauend auf erpconnector (ERP-01) und fieldmapping (ENG-04).
Neues Paket connect/internal/erpexport: BuildPayload rendert Beleg-Metadaten über eine gespeicherte Feld-Mapping-Konfiguration; Store exportiert über erpconnector.Client.Write, mit Exponential-Backoff-Retry und Deduplizierung je Beleg (UNIQUE (tenant_slug, connector_instance_id, beleg_id)).
Kleine Erweiterung von erpconnector.Write: 401/403 werden zusätzlich als ErrPermanent klassifiziert (fuer Retry-Klassifizierung), keine Verhaltensänderung für bestehende Aufrufer.
Kein reales ERP-System verfügbar — Tests laufen gegen einen In-Prozess-Referenzserver (wie bei M365-01/DMS2-03), dokumentiert in connect/docs/ERP-04-PRUEFPROTOKOLL.md.
## Zusammenfassung
- ERP-04: Export von Belegen mit zugeordneten Metadaten an das ERP-System, aufbauend auf `erpconnector` (ERP-01) und `fieldmapping` (ENG-04).
- Neues Paket `connect/internal/erpexport`: `BuildPayload` rendert Beleg-Metadaten über eine gespeicherte Feld-Mapping-Konfiguration; `Store` exportiert über `erpconnector.Client.Write`, mit Exponential-Backoff-Retry und Deduplizierung je Beleg (`UNIQUE (tenant_slug, connector_instance_id, beleg_id)`).
- Kleine Erweiterung von `erpconnector.Write`: 401/403 werden zusätzlich als `ErrPermanent` klassifiziert (fuer Retry-Klassifizierung), keine Verhaltensänderung für bestehende Aufrufer.
- Migration `connect/migrations/0010_erp_exports.{up,down}.sql`.
## Einschränkung
Kein reales ERP-System verfügbar — Tests laufen gegen einen In-Prozess-Referenzserver (wie bei M365-01/DMS2-03), dokumentiert in `connect/docs/ERP-04-PRUEFPROTOKOLL.md`.
## Prüfungen (siehe connect/docs/ERP-04-PRUEFPROTOKOLL.md)
1. Testbeleg im ERP nach Export mit korrekten Metadaten auffindbar — PASS (`TestStore_Start_SuccessWithCorrectMetadata`)
2. Simulierter Exportfehler löst Retry aus — PASS (`TestStore_Start_TransientFailureSchedulesRetryThenSucceeds`, `TestStore_Start_PermanentFailureDoesNotRetry`)
3. Doppelversand im Test ausgeschlossen — PASS (`TestStore_Start_AlreadyExportedBelegNotSentTwice`)
## Test plan
- [x] `go build ./...` (Modul `connect/`)
- [x] `go vet ./...` (Modul `connect/`)
- [x] `go test ./internal/erpexport/... ./internal/erpconnector/...` — alle Tests PASS
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Export von Belegen mit Feld-Mapping-Metadaten an das ERP, mit
Retry-Backoff und Deduplizierung ueber die Beleg-ID (ERP-04).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
patrick
merged commit 28272b1835 into main2026-09-28 02:39:42 +02:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Zusammenfassung
erpconnector(ERP-01) undfieldmapping(ENG-04).connect/internal/erpexport:BuildPayloadrendert Beleg-Metadaten über eine gespeicherte Feld-Mapping-Konfiguration;Storeexportiert übererpconnector.Client.Write, mit Exponential-Backoff-Retry und Deduplizierung je Beleg (UNIQUE (tenant_slug, connector_instance_id, beleg_id)).erpconnector.Write: 401/403 werden zusätzlich alsErrPermanentklassifiziert (fuer Retry-Klassifizierung), keine Verhaltensänderung für bestehende Aufrufer.connect/migrations/0010_erp_exports.{up,down}.sql.Einschränkung
Kein reales ERP-System verfügbar — Tests laufen gegen einen In-Prozess-Referenzserver (wie bei M365-01/DMS2-03), dokumentiert in
connect/docs/ERP-04-PRUEFPROTOKOLL.md.Prüfungen (siehe connect/docs/ERP-04-PRUEFPROTOKOLL.md)
TestStore_Start_SuccessWithCorrectMetadata)TestStore_Start_TransientFailureSchedulesRetryThenSucceeds,TestStore_Start_PermanentFailureDoesNotRetry)TestStore_Start_AlreadyExportedBelegNotSentTwice)Test plan
go build ./...(Modulconnect/)go vet ./...(Modulconnect/)go test ./internal/erpexport/... ./internal/erpconnector/...— alle Tests PASS🤖 Generated with Claude Code