Verbesserung der Dokumentation und implementierung von automation funktion in pck_auto_import

This commit is contained in:
2026-04-21 14:51:50 +02:00
parent b2233e7da0
commit a5e2fc6720
7 changed files with 166 additions and 48 deletions

View File

@@ -4,7 +4,7 @@
Der Service empfängt einen HTTP-Trigger von der APEX Automation, verbindet sich mit einem
SFTP-Server, lädt neue ZIP-Dateien herunter, entpackt sie und lädt den Inhalt in OCI Object
Storage hoch. Anschließend wird der ORDS-Endpunkt `pck_auto_import.p_process_incoming_files`
Storage hoch. Anschließend wird der ORDS-Endpunkt `pck_auto_import.p_process_incoming_ba_data`
aufgerufen, der die DB-Verarbeitung anstößt. Das Scheduling bleibt bei APEX — der Service
selbst hat keinen eigenen Scheduler.
@@ -34,7 +34,7 @@ FileProcessingPipeline [ManagedExecutor — Hintergrund-Thread]
│ └─ .processed (Erfolg) oder .error (Fehler)
├─→ OrdsNotificationService.notify() [MicroProfile REST Client]
│ └─ POST pck_auto_import.p_process_incoming_files
│ └─ POST pck_auto_import.p_process_incoming_ba_data
└─→ Cleanup: lokale Dateien löschen [immer, im finally]
@@ -105,7 +105,7 @@ galabau.oci.private-key-path=${OCI_PRIVATE_KEY_PATH}
# ORDS
galabau.ords.base-url=http://ords:8080
galabau.ords.process-incoming-path=/ords/.../auto_import/process_incoming
galabau.ords.process-incoming-path=/ords/.../net_storage/process_incoming_ba_data
galabau.ords.api-key=${GALABAU_ORDS_API_KEY}
quarkus.rest-client.ords-client.url=${galabau.ords.base-url}

View File

@@ -49,7 +49,7 @@ FileProcessingPipeline [Hintergrund-Thread — für jede neue ZIP]
## Projektstruktur (Maven)
```
backend-n8n-replacement/
quarkus-automaton/
├── pom.xml (Java 25, Quarkus 3.x LTS)
├── src/main/java/de/galabau/
@@ -150,7 +150,7 @@ galabau.oci.private-key-path=${OCI_PRIVATE_KEY_PATH} # z.B. /etc/oci/private-k
# ORDS
galabau.ords.base-url=http://ords:8080
galabau.ords.process-incoming-path=/ords/.../net_storage/process_incoming
galabau.ords.process-incoming-path=/ords/.../net_storage/process_incoming_ba_data
galabau.ords.api-key=${GALABAU_ORDS_API_KEY}
# Fehlerbehandlung
@@ -160,7 +160,7 @@ galabau.retry.backoff-ms=1000
**Credential-Strategie:**
- Alle Passwörter und API-Keys über `${ENV_VAR_NAME}` — Quarkus liest Umgebungsvariablen nativ
- OCI-Auth via **Instance Principal** — kein Key-Management, keine Rotation (empfohlen auf OKE)
- OCI-Auth via **SimpleAuthenticationDetailsProvider** — Credentials aus Env-Vars, Private Key als gemountetes Kubernetes Secret (PEM-Datei); entspricht dem was `apex_web_service` mit OCI Web Credential intern tut (OCI HTTP Signature V1)
- Deployment: Kubernetes Secrets → Environment Injection für Passwörter/API-Keys
---
@@ -249,7 +249,7 @@ n8n fire-and-forget-Verhalten.
| SFTP-Verbindung fehlgeschlagen | transient | nein | Nächster APEX-Lauf (1h) versucht es |
| ZIP beschädigt | persistent | nein | ZIP auf SFTP umbenennen zu `.error`, Log |
| OCI-Verbindung fehlgeschlagen (z.B. 503) | transient | ja (exponential backoff) | @Retry |
| OCI-Upload einer Datei schlägt fehl | persistent | nein | Bereits hochgeladene löschen, ZIP belassen, Log |
| OCI-Upload einer Datei schlägt fehl | persistent | nein | SFTP-Rename zu `.error`, Log — bereits hochgeladene OCI-Dateien bleiben (idempotent) |
| ORDS-Aufruf schlägt fehl | transient | ja (2-3x) | Marker liegt vor → APEX Automation schlägt beim nächsten Lauf ein |
| Allgemein technischer Fehler | fallabhängig | siehe SmallRye Fault Tolerance | Exception-Log |
@@ -300,7 +300,7 @@ public class FileEntry {
## SFTP-Verarbeitung mit SSHJ
Siehe `plan_camel_integration.md` für Details zur SSHJ-Integration (Host-Key-Verification,
Siehe `docs/SFTP-Integration.md` für Details zur SSHJ-Integration (Host-Key-Verification,
Credentials, Fehlerbehandlung).
### Verarbeitungslogik
@@ -580,7 +580,7 @@ MDC nach jeder ZIP mit `MDC.clear()` leeren — damit kein Kontext in die nächs
- [x] Concurrency Guard: **AtomicBoolean** (kein Doppellauf bei schnellen APEX-Retries)
- [x] SFTP-Lösung: **SSHJ** (`com.hierynomus:sshj`) — leichtgewichtiger SFTP-Client
- [x] SFTP Host-Key: **Fingerprint-basiert** via `galabau.sftp.host-key-fingerprint` in Config
- [x] OCI Auth: **SimpleAuthenticationDetailsProvider** (Credentials via Env-Vars + gemountetes Kubernetes Secret für Private Key)
- [x] OCI Auth: **SimpleAuthenticationDetailsProvider** (Credentials via Env-Vars + gemountetes Kubernetes Secret für Private Key — entspricht `apex_web_service` mit OCI Credential)
- [x] OCI SDK: **OCI Java SDK** (HTTP Signature V1 automatisch)
- [x] ZIP: **Apache Commons Compress**
- [x] REST Clients: **MicroProfile REST Client** (configKey-basiert)

View File

@@ -288,4 +288,4 @@ galabau.sftp.password=${GALABAU_SFTP_PASSWORD}
galabau.api.key=${GALABAU_API_KEY}
```
Siehe `plan_n8n_replacement_quarkus.md` für vollständige Konfigurationsübersicht.
Siehe `docs/Plan.md` für vollständige Konfigurationsübersicht.