3.4 KiB
name, description, metadata
| name | description | metadata | ||||||
|---|---|---|---|---|---|---|---|---|
| project-sap-mock-fixtures | SAP-Abgleich-Testfixtures + symmetrische Mail-Rettung — FERTIG inkl. E2E (Stand 2026-06-02). |
|
Erledigt 2026-06-02 — Branch test/migration-sap-fixtures (3 Commits: a92ba63 Rehydrator-Spec-Nachzug zu 0aab04e, 7bd0727 Fixtures+Rescue, d2b9475 E2E). Alle 61 Tests in plato-customer-be grün.
Was gebaut wurde:
data/master-20.json— 20 saubere Originale ausdata/customer.db(echte Namen/Mails/craft_seller), erzeugt mitscripts/build-master.mjs(skalierbar:node scripts/build-master.mjs 500).scripts/build-fixtures.mjs→data/fixtures/migration-source.sqlite(20, Legacy-Schema, Fall-Marker inopt1ausgeschrieben) +sap-master.sqlite(10 SAP-Matches) +expectations.json(Test-Vertrag je customer_number).- Aufteilung der 10 SAP-Seite: 2 abw. E-Mail (Fall A/B), 2 abw. Adresse, 1 beides, 2 Stammdaten-Korrektur, 3 identisch. Die anderen 10 sind reine Migrationssätze (origin=PlaTo). Match läuft NUR über
customer_number→ echte Nummer bleibt, Testfall steckt inopt1(nicht in der Nummer!).
Logik-Änderung (Wegwerf-Code) sap-adapter.ts overwriteWithSap: verdrängte Kunden-Mail wird als Kontakt gerettet; liegt sie schon an einem Kontakt → stattdessen die SAP-Mail retten (origin='SAP'). So überleben beide Mails immer als Kontakt. (Marcus' Wunsch: Trigger am Kunden, Kontakt-Check sinnvoll, dann SAP-Mail restaurieren.)
Zwei Knackpunkte (nicht offensichtlich):
- SAP-Query liefert
verband_nummer = customer_numberIMMER mit + baut craft_seller aus der kv neu → sonst ist jeder Match fälschlichchanged. Quelle setzt für die 10 deshalbverband_nummer = customer_numberund craft_seller = Original (round-trippt). - E2E-Seam:
getFromSapmocken, dahinterSapMockService.buildCustomerXml+sapXmlToCustomer(jetzt exportiert),SAP_MOCK_DB-Env auf die Fixture-DB. So läuft SAP echt durch, nur HTTP raus. Test:apps/plato-customer-be/src/migration/sap-fixtures.e2e.spec.ts.
Hinweis: Fixtures enthalten echte Kunden-/Außendienst-PII, liegen dauerhaft in der Historie (war so gewollt). Nächste Prio bleibt Sync-Tests/Refactoring, siehe project-naechste-schritte.
Update 2026-06-08:
test/migration-sap-fixturesist Vorfahr vondevelopment→ Fixtures + E2E + Lift liegen alle aufdevelopment(dort fixen, nicht auf dem alten Branch).- mobile-Gap gefixt (commit
8001207aufdevelopment):liftSingleContactPhoneToMobile(Wegwerf, utilcontact-phone.util.ts, kam in8e98c10NACH den Fixtures) hebt die einzige gepflegte Kontaktnummer aufcustomer.mobile— der E2E prüfte das Feld nicht. JetztexpectedMobileje importiertem Satz inexpectations.json(7 geliftet, 10 leer) + Assertion. Test grün (26 in der spec, 80 gesamt). - DEV-Mock = fixer Stamm (dauerhaft, NICHT im Repo): Live gegen DEV verifiziert (Browser-Import → echte Postgres, alle Erwartungen grün: 17/10-SAP/7-PlaTo/20/20/3). Dafür das geteilte
backend-Deployment (ns1401-plato-development) so umgebaut und bewusst stehen gelassen (Marcus: „fixer bekannter Stamm"): ConfigMapsap-mock-master(=sap-master.sqlite, 40 KB) als Volume gemountet unter/app/apps/sap-mock/sap-master.sqlite+ envSAP_MOCK_DBdarauf.SAP_MOCK_ENABLED=trueohnehin gesetzt. Die Image-crm.sqlite(30 MB generisch) bleibt daneben ungenutzt. Image warbackend:0.28.2.