fix: Smart-Matching-Bug, Dashboard-Auth, Trainer-Exklusion & pm2/maci-Betrieb #1
Loading…
Reference in a new issue
No description provided.
Delete branch "a1/live-node-fixes-2027"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Zusammenfassung
Adressiert die kritischen/hohen Befunde aus
docs/runbooks/partner-portal-audit-2026-09-26.md(Etappe 5 im Todo):getSmartMatch()bekam nie einegeoLookup-Tabelle →/api/partners/matchlandete immer im generischen Fallback. Jetzt lädt der Server eine echte PLZ→Koordinaten-Tabelle (8.298 deutsche Postleitzahlen,src/data/plz-centroids.json) beim Start./api/partner/dashboardwar unauthentifiziert abrufbar (Partner-/Umsatzdaten fremder Partner einsehbar). Jetzt perdashboard_tokengeschützt./auth/verifyimplementiert — der bisher nie eingelöste Magic-Link-Token tauscht sich jetzt einmalig (Single-Use, gehasht) gegen den Dashboard-Token.approvePartner()verlangt jetzt einen explizitentier-Parameter statt stillvorteil_10zu vergeben (Leitlinie 3: kein Rabatt ohne geprüfte Gegenleistung)./api/admin/partners/:id/approveist jetzt perX-Admin-Keygeschützt (war komplett offen).POST /api/partners/onboardlehnttype=trainerjetzt ab und verweist auf/trainer-werden/, damit die UI-Exklusion auch serverseitig durchgesetzt wird.processAllotmentReleases()(21-Tage-Kontingent-Verfall) wurde nirgends aufgerufen — jetzt stündlicher Check insrc/index.js.dashboard_token,kuerzel,tagessatzergänzt (Trainer-Freigabe-Flow aus Pflichtenheft 7.2 vorbereitet).ecosystem.config.cjsfür pm2/Infisical-Betrieb auf maci nach dem bestehenden Muster (team,motokompass) ergänzt. Neues Infisical-Projektkurven-schule-partnerangelegt,runtime-all-Identity hat Viewer-Zugriff, Port3009reserviert (frei lautlsof-Check gegen die anderen maci-Apps).Architekturentscheidung (siehe Chat-Verlauf mit André)
Node (
src/) wird die neue Quelle der Wahrheit, betrieben via pm2/Infisical auf maci — analog zuteam/motokompass. Neue öffentliche URL:partner.kurvenschule.cloud(Cloudflare-Tunnel-Eintrag folgt in separatem, nicht-code Schritt auf maci). Die bestehende PHP-Bridge (public/api.php) unterneu.kurven.schule/partner/bleibt vorerst als Legacy-Pfad bestehen.Test plan
npm test— 29/29 grün (9 neue Tests: Dashboard-Auth, echter Matching-Treffer über die PLZ-Tabelle, Trainer-Ablehnung, kompletter Approve→Verify→Dashboard-Flow, Admin-Key-Schutz, Pflicht-Tier)pm2 start ecosystem.config.cjsauf maci,curl https://partner.kurvenschule.cloud/healthnach Cloudflared-Ingress-Ergänzung🤖 Generated with Claude Code