msolarczek and Claude Opus 5
d9290a187c
L15 Testphase & Onboarding: Selbstanmeldung mit Double-Opt-in, Plattform-Wizard, Nur-Lesen-Sperre, Export, Lebenszyklus-Job
...
- Datenmodell: Testphasen-Lebenszyklus am Mandanten (plan, trialEndsAt, readOnlySince, deletionDueAt,
Versandmarker), TrialSignup (Plattform, Hashes statt Klartext), TenantExport (RLS), Onboarding-Status
- /testen: 5-Schritte-Wizard (Betrieb, Admin-Konto, Enddatum, Einrichtung, Zusammenfassung),
Bestätigung per POST, direkte Anmeldung über login-ticket; Rate-Limit je IP/E-Mail, Honeypot,
Enumeration-Schutz, Slug-Kollisionen
- Plattform: Wizard „Testmandant anlegen“ mit Einladung, Badges/Filter, Enddatum ändern,
umwandeln, beenden, Löschung vormerken/abbrechen (Bestätigung + Audit)
- Schreibsperre nach Ablauf zentral in moduleGuard und requireApiContext (non-GET über withApi),
Upload-Routen, Einstellungen/Nutzerverwaltung, Worker-Jobs; Banner Backoffice + mobil
- Datenexport (ZIP mit CSV/JSON + Dateien) als Worker-Job, auch im Nur-Lesen-Zustand
- Täglicher Job trial-lifecycle: Erinnerungen 7/3/1, Ablauf, Löschhinweis, Löschung über das Offboarding
- Erste-Schritte-Checkliste im Dashboard, Mail-Vorlagen de/en, Tests + Smoke, Betriebsdoku
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-09-15 19:01:47 +02:00
msolarczek and Claude Opus 5
b0aedb5d23
L10b Betrieb & Aufräumen: Lotse-Betrieb – Aufbewahrung KI-Protokoll und Token-Kontingent
...
Aufräumpunkt k (Spec §31):
- Aufbewahrung: services/lotse/retention.ts leert input/output und createdById von
AiGeneration-Einträgen älter als AI_GENERATION_RETENTION_DAYS (Default 180), Metadaten bleiben,
Audit je Mandant. Queue/Processor ai-retention, täglicher BullMQ-Job-Scheduler beim Start des
craftvia-worker.
- Kontingent: services/lotse/budget.ts (Tokens ein+aus je Kalendermonat, TenantSettings-Wert vor
Env AI_MONTHLY_TOKEN_LIMIT, 0 = unbegrenzt). Lotse-Entwurf und Sprachnotiz-Zusammenfassung
→ blocked budget_exceeded mit Klartext; Import-Extraktion fällt auf manuelle Erfassung zurück
(Hinweis ai_budget_exceeded). /settings/lotse: Kontingent setzen, Verbrauch anzeigen.
- scripts/test-betrieb-audit.ts: Audit nach Commit/Rollback/verschachtelt, Merge atomar und in
äußerer Transaktion, Audit „read", Aufbewahrung (Frist, Metadaten, Idempotenz, Mandant B),
Kontingent (Mandant/Env/Vormonat/unbegrenzt, Rollen, Audit).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-09-14 18:19:19 +02:00
msolarczek and Claude Opus 5
a7d4b02a13
Merge lane/lotse in feature/craftvia-mvp
...
Konflikt gelöst: nav.ts Icon-Imports (Siren aus L8, Compass aus L9).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-09-14 17:44:06 +02:00
msolarczek and Claude Opus 5
7825245901
Fix: /dashboard 500 – buttonCls aus Client-Modul herausgelöst
...
Server-Komponenten (Dashboard, Aufträge, Suche, Checklisten, Auftragsdetail) riefen
buttonCls() aus einem "use client"-Modul auf; das bricht zur Laufzeit (gemeldet von L8).
Neu: src/components/work-orders/button-cls.ts (server-sicher), action-form re-exportiert.
Nachweis: authentifizierter HTTP-Smoke (Backoffice 13 Seiten, Monteur 6 Seiten) alle 200,
/dashboard vorher 500. tsc/lint grün.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-09-14 17:27:46 +02:00
msolarczek and Claude Opus 5
9a3d472682
L9 Lotse – KI-Assistent: UI im Berichtseditor, Auftragsdetail, Sprachnotizen und Einstellungen
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-09-14 17:19:38 +02:00
msolarczek and Claude Opus 5
d9476d324b
Merge lane/auftraege in feature/craftvia-mvp
...
Konflikte gelöst: Header mit Suche (L2) und Glocke (L6), Audit-Labels vereinigt
(ohne doppeltes sync_operation), Navigation mit Benachrichtigungen und Auftragsvorlagen.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-09-14 12:36:21 +02:00
msolarczek and Claude Opus 5
b96016d593
L2 Aufträge & Backoffice: Backoffice-UI (Liste, Detail, Konflikte, Dashboard, Suche, Einstellungen) + Texte de/en
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-09-14 12:30:32 +02:00
msolarczek and Claude Opus 5
dfbc92bb4d
L6 Benachrichtigungen & Audit: Audit-Viewer mit Filter und Diff
...
- /settings/audit (audit:read): Filter Zeitraum, Benutzer, Aktion, Objektart,
Objekt-ID; Pagination; Detail-Popup mit before/after-Diff, Ergebnis, IP/User-Agent
(derzeit nicht erfasst, Fundament-Bedarf).
- Service services/audit/viewer.ts, strikt mandantengebunden über ctx.db.
- Audit-Entity-Labels für alle Craftvia-Entitäten.
- Test scripts/test-benachrichtigungen-inbox-audit.ts (46 Prüfungen): Posteingang,
Mandantentrennung, Rollen/Scope, Mailkonfiguration, Audit-Viewer.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-09-14 12:12:51 +02:00
msolarczek and Claude Opus 5
879012415e
L6 Benachrichtigungen & Audit: Glocke, Posteingang, Nutzer-Einstellungen, Mailkonfiguration
...
- Glocke im Backoffice-Header (ungelesen-Zähler, letzte 10, alle gelesen), mobil
einbindbar über variant="mobile".
- /notifications mit Filter gelesen/ungelesen/Art, Öffnen markiert gelesen (nur
relative Links), Pagination.
- /account Abschnitt Benachrichtigungen: E-Mail-Opt-out je Typ, Notdienst Pflicht.
- /settings/email (tenant:manage): Absendername, Antwortadresse, Empfänger Notdienst
und Abrechnung; Validierung gegen Header-Injection, max. 20 Adressen, Audit.
- Actions unter actions/notifications mit moduleGuard + guard; Navigation ergänzt.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-09-14 12:12:21 +02:00
msolarczek and Claude Opus 5
8491c7f173
Fundament: ISMS-Module entfernt; Craftvia-Rollen, Module, Navigation, i18n-Split
...
- ISMS-Routen, Actions, Server-/Lib-Code, Komponenten, Prisma-Modelle, Seeds,
Importer, Skripte und ISMS-Tests entfernt (Fundament bleibt: Auth, Identity,
MFA/WebAuthn, RBAC, Audit, Mail, Storage, Backup/DSGVO, Plattform-Admin)
- Schema auf Fundament-Modelle reduziert; TenantSettings generisch (+phone/email)
- TENANT_MODELS (db.ts, backup/topology.ts) und PII-Felder ausgedünnt
- RBAC: Rollen tenant-admin/backoffice/team-lead/technician + Craftvia-Permissions
- Modul-Katalog (customers, sites, teams, work_orders, imports, field, reports,
emergency, documents, notifications, lotse) + Navigation aus src/lib/nav.ts
- Modul-Routen mit requireModule-Layout und Platzhalterseite
- Message-Katalog je Namespace (messages/<locale>/<namespace>.json), fs-Loader
- check-module-guards: Modul-Key aus src/server/actions/<moduleKey>/
- Provisionierung, Admin-Konsole, Einstellungen, Files-Route, Mail entkoppelt
- Seed minimal (demo/demo2, Nutzer je Rolle); Fundament-Tests auf Role/
NotificationPreference-Fixtures umgestellt
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-09-14 11:35:44 +02:00
msolarczek and Claude Opus 5
c8e6f30a27
Basis: Certvia dev@a48c5fb als Fundament für Craftvia
...
CI / build-and-check (push) Canceled after 0s
CI / audit (push) Canceled after 0s
CI / sbom (push) Canceled after 0s
Unveränderter Stand von certvia/dev (a48c5fb) plus Craftvia-Spezifikation
und Brandbook unter docs/craftvia/. ISMS-Module werden im Folgecommit entfernt.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-09-14 11:05:39 +02:00