diff --git a/global/CLAUDE.md b/global/CLAUDE.md index 5412ed1..7137f45 100644 --- a/global/CLAUDE.md +++ b/global/CLAUDE.md @@ -25,6 +25,11 @@ - Vor verändernden Aktionen (Install, neue Dependencies, neue Dateien, Commit, Multi-File-Edit) erst kurz den Plan zeigen (was + warum), dann Go abwarten. Lese-/Suchaktionen laufen ohne Vorankündigung. +# PROD-Umgebungen + +- Jede Interaktion mit einer PROD-Umgebung (Cluster, Pods, Deployments, Secrets) nur auf ausdrückliche Ansage. Ohne explizite Nennung von „PROD" bezieht sich jede Aktion auf DEV/den aktuellen Kontext. +- Das gilt auch für reine Lese-/Statusabfragen — die Lese-Ausnahme greift bei PROD nicht. + # Git - KEIN Hinweis auf Claude in Commit-Messages: kein „Co-Authored-By: Claude", kein „Generated with Claude Code", keine Claude-Trailer oder -Erwähnungen. Gilt für alle Repos, auch in PR-Beschreibungen. diff --git a/wuerth-plato/memory/MEMORY.md b/wuerth-plato/memory/MEMORY.md index a600808..1326dda 100644 --- a/wuerth-plato/memory/MEMORY.md +++ b/wuerth-plato/memory/MEMORY.md @@ -2,6 +2,7 @@ - [Feedback: Priorisierung entlang Test-Linie](feedback_priorisierung.md) — "was ermöglicht Kollegen früh zu testen" schlägt techn. Priorität - [Feedback: Push macht der User](feedback_push_macht_user.md) — committen ok, git push macht Marcus selbst - [Feedback: Keine nativen Alerts](feedback_no_native_alerts.md) — kein window.alert/confirm; ConfirmDialog bzw. errorList nutzen +- [Feedback: Klare Benennung](feedback_klare_benennung.md) — Komponenten konkret nennen (kein „BE"); einfache, kurze Sätze - [Projekt: Login-Loop Ursache+Fix](project_login_loop_rootcause.md) — SW fing OIDC-Callback ab; injectManifest-SW + code-Denylist + cookie secure:'auto' - [Feedback: Keine IP-Configs bei Netzfragen](feedback_no_ip_configs.md) — VPN-DNS + Proxy statt IP-Listen/Subnetz-Routen - [Feedback: Dedizierte Skripte statt Ad-hoc](feedback_dedizierte_skripte.md) — geprüfte Skripte per allow, keine improvisierten Mutationen; Konzept vertagt diff --git a/wuerth-plato/memory/feedback_klare_benennung.md b/wuerth-plato/memory/feedback_klare_benennung.md new file mode 100644 index 0000000..f14d6bc --- /dev/null +++ b/wuerth-plato/memory/feedback_klare_benennung.md @@ -0,0 +1,14 @@ +--- +name: feedback_klare_benennung +description: Komponenten konkret benennen statt mehrdeutiger Abkürzungen; einfach formulieren +metadata: + node_type: memory + type: feedback + originSessionId: 8e135c09-283f-459e-870a-a4f4bb366969 +--- + +Keine mehrdeutigen Abkürzungen wie „BE" verwenden — im Projekt gibt es mehrere Backend-/Deployment-Komponenten (NestJS-Pod `plato-customer-be`, gitops-Repo, Postgres-Pod), da ist „BE" wertlos. Komponente immer konkret beim Namen nennen. + +**Warum:** Marcus verliert bei verschachtelten Sätzen + Abkürzungen den Faden und wird zu Recht ungehalten. „BE ist nicht hilfreich bei mehr als einer BE-Komponente." + +**How to apply:** Konkrete Namen (`plato-customer-be`-Pod, OpenShift-Route, F5-LB, gitops-Repo) statt Kürzeln. Kurze, gerade Sätze; ein Gedanke pro Satz; keine eingeschobenen Nebenketten. Erklärung nur so lang wie die Frage verlangt. Verwandt: [[feedback_ort_zuerst]]. diff --git a/wuerth-plato/memory/project_prod_ist_stand.md b/wuerth-plato/memory/project_prod_ist_stand.md index c08cdc7..9837bc9 100644 --- a/wuerth-plato/memory/project_prod_ist_stand.md +++ b/wuerth-plato/memory/project_prod_ist_stand.md @@ -32,4 +32,4 @@ Reihenfolge der Blocker, die fielen: (1) Secrets gesealt+aktiviert; (2) Dockerfi **Noch offen / nicht testbar:** ghcr-Pull-Berechtigung auf Prod (Pull via `default-dockercfg`, kein explizites `imagePullSecrets`) — scheitert aktuell am nicht-existenten Tag, nicht erkennbar an Auth. Zeigt sich erst mit echtem Tag. Außerdem: SAP-Secret fehlt für Prod komplett (dev hat `plato-sap-secrets.sealed.yaml`, prod nicht; `production/backend.yaml` referenziert SAP auch nicht). -Deploy-Mechanik siehe PDF `ressources/GitHub CICD to OpenShift.pdf`: Image nur auf `development` gebaut + wiederverwendet, Prod via PR-Kommentar `.deploy to production`, Prod-ArgoCD vermutlich `autoSync: false` → manueller Sync. Dev-Cluster = ocp-dev01 läuft sauber (backend 0.38.1). +Deploy-Mechanik siehe PDF `ressources/GitHub CICD to OpenShift.pdf`: Image nur auf `development` gebaut + wiederverwendet. Prod-Promotion = **Merge PR `development → main` von Hand** (das ist der manuelle Schritt); ArgoCD synct danach automatisch los (Korrektur Marcus 2026-06-23: NICHT manueller Sync). Dev-Cluster = ocp-dev01 läuft sauber (backend 0.38.1). diff --git a/wuerth-plato/memory/sap-config.md b/wuerth-plato/memory/sap-config.md index 4f5556e..eb4b7b3 100644 --- a/wuerth-plato/memory/sap-config.md +++ b/wuerth-plato/memory/sap-config.md @@ -38,6 +38,10 @@ curl -sv -u 'sy08804394:' \ **SAP-Rechte fehlen (2026-06-17):** Der technische User `sy08804394` hat KEINE Rechte auf dem Endpoint → echter Import läuft nicht. Technisch fährt aber alles hoch. +**Update 2026-06-23 — Rechte jetzt da, Call grün:** Aus dem DEV-Pod (`backend-...`, ns `1401-plato-development`) liefert derselbe User `sy08804394` **HTTP 200** mit gültigem OData-XML (`CustomerID='1205619',Salesorg='0001'`). Damit ist der Parser-Erwartungswert bestätigt: Antwort ist XML mit `d:`-Tags (`d:Salesorg`, `d:CustomerID`, `d:SalesrepNumber` …) → `sapXmlToCustomer` passt. Test-Rig im Pod: kein curl vorhanden → über `node` + undici `request` (NICHT globalen fetch — der kollidiert mit der node_modules-undici-Version: „invalid onRequestStart method") mit `ProxyAgent(HTTPS_PROXY)` und Basic-Auth-Header. + +**PROD ebenfalls grün (2026-06-23):** Derselbe Test aus dem PROD-Pod (ns `1401-plato-production`) liefert auch HTTP 200 + identisches XML. SAP-URL + Creds sind in DEV- und PROD-Overlay identisch → beide Umgebungen erreichen SAP gleichermaßen. + **Mock vollständig aus Runtime/Prod entfernt (2026-06-17):** - backend `development` commit `30591b8`: `apps/sap-mock/` (standalone), `sap-mock.controller.ts`, `sap-mock.module.ts` und das `app.module.ts`-Wiring gelöscht. Build grün. - **Für Tests bewusst behalten:** `sap-mock.service.ts` + `sap-reverse-query.ts` (nutzt der E2E via `buildCustomerXml`), `sap-fixtures.e2e.spec.ts`, `data/fixtures/`, `scripts/build-*.mjs`. Werden vom App-Code nicht mehr importiert → fliegen aus dem Prod-Bundle.