feat(db): Datenmodell, erste Migration und Seed (#003)
Prisma 7.10 mit Postgres-Adapter, 23 Modelle inklusive Rechnungen mit Positionen, Seed fuer Administrator, Warnregeln und Demo-Daten, Testdatenbank fuer Vitest. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,24 +1,24 @@
|
||||
# #003 Datenmodell und Migrationen
|
||||
**Status:** offen
|
||||
**Status:** erledigt
|
||||
**Meilenstein:** v0.1.0
|
||||
**Labels:** backend, datenbank
|
||||
**Geschätzt:** 5 h **Tatsächlich:** –
|
||||
**Geschätzt:** 5 h **Tatsächlich:** 0 h 25 min
|
||||
|
||||
## Ziel
|
||||
Vollständiges Prisma-Schema gemäß `docs/architektur.md` Abschnitt 3, erste Migration, Seed mit Admin-User und optionalen Demo-Daten.
|
||||
|
||||
## Aufgaben
|
||||
- [ ] Docker-Compose für lokale Entwicklung (nur PostgreSQL)
|
||||
- [ ] Prisma-Schema: Customer, Site, Host, Tag, Report, SubscriptionKey, ServerIdHistory, SubscriptionPeriod, PurchaseInvoice(+Item), SalesInvoice(+Item), Attachment, AgentToken, EnrollmentToken, Alert, Notification, AlertRuleSetting, NotificationChannel, User, AuditLog, Setting
|
||||
- [ ] Indizes für Suche (Key, Server-ID, Hostname, IP, Rechnungsnummer)
|
||||
- [ ] Erste Migration
|
||||
- [ ] Seed: Admin-User aus Umgebungsvariablen, Standard-Warnregeln, optional Demo-Daten (`SEED_DEMO=1`)
|
||||
- [ ] DB-Client-Singleton, Test-Datenbank-Setup für Vitest
|
||||
- [x] Docker-Compose für lokale Entwicklung (nur PostgreSQL)
|
||||
- [x] Prisma-Schema: Customer, Site, Host, Tag, Report, SubscriptionKey, ServerIdHistory, SubscriptionPeriod, PurchaseInvoice(+Item), SalesInvoice(+Item), Attachment, AgentToken, EnrollmentToken, Alert, Notification, AlertRuleSetting, NotificationChannel, User, AuditLog, Setting
|
||||
- [x] Indizes für Suche (Key, Server-ID, Hostname, IP, Rechnungsnummer)
|
||||
- [x] Erste Migration
|
||||
- [x] Seed: Admin-User aus Umgebungsvariablen, Standard-Warnregeln, optional Demo-Daten (`SEED_DEMO=1`)
|
||||
- [x] DB-Client-Singleton, Test-Datenbank-Setup für Vitest
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- [ ] `npx prisma migrate dev` läuft auf leerer DB durch
|
||||
- [ ] `npx prisma db seed` legt Admin und Standard-Regeln an, idempotent
|
||||
- [ ] Beträge als Decimal, Zeitstempel in UTC
|
||||
- [x] `npx prisma migrate dev` läuft auf leerer DB durch
|
||||
- [x] `npx prisma db seed` legt Admin und Standard-Regeln an, idempotent
|
||||
- [x] Beträge als Decimal, Zeitstempel in UTC
|
||||
|
||||
## Abhängigkeiten
|
||||
#001
|
||||
@@ -26,3 +26,7 @@ Vollständiges Prisma-Schema gemäß `docs/architektur.md` Abschnitt 3, erste Mi
|
||||
## Notizen / Entscheidungen
|
||||
- Host-Identität über Agent-Token/`agentId`, nicht über Server-ID (siehe Architektur).
|
||||
- Rechnungen als eigene Entitäten mit Positionen, damit Sammelbestellungen und Sammelrechnungen abbildbar sind.
|
||||
- Prisma 7.10.0 statt der npm-Kennzeichnung „latest“: dort liegt derzeit ein Release Candidate (8.0.0-rc).
|
||||
- Prisma 7 benötigt einen Treiber-Adapter; im Einsatz ist `@prisma/adapter-pg`.
|
||||
- Der Seed legt Demo-Daten aus `src/mock/data.ts` an, damit Prototyp und Datenbank dieselben Beispiele zeigen. Die Sammelrechnung PX-2025-88213 deckt bewusst zwei Laufzeiten ab.
|
||||
- Passwörter werden mit argon2id gehasht (`@node-rs/argon2`, vorkompiliert – kein Build-Toolchain nötig).
|
||||
|
||||
Reference in New Issue
Block a user