feat(vorlagen): Versionierung, Unveraenderlichkeit und JSON-Austausch (#23)
Prüfung / pruefung (push) Canceled after 0s
Prüfung / e2e (push) Canceled after 0s

This commit was merged in pull request #23.
This commit is contained in:
2026-09-25 06:10:01 +00:00
parent ecc3c579df
commit d8d5444e9f
41 changed files with 4006 additions and 104 deletions
+17 -10
View File
@@ -106,7 +106,7 @@ model Einstellung {
/// Ziel-OU fuer deaktivierte Konten, Vorbelegung im Offboarding.
gesperrteOu String?
erstelltAm DateTime @default(now())
geaendertAm DateTime @updatedAt
geaendertAm DateTime @default(now()) @updatedAt
}
model Kunde {
@@ -123,7 +123,7 @@ model Kunde {
notizen String?
archiviert Boolean @default(false)
erstelltAm DateTime @default(now())
geaendertAm DateTime @updatedAt
geaendertAm DateTime @default(now()) @updatedAt
abteilungen Abteilung[]
benutzerbindungen BenutzerKunde[]
@@ -155,7 +155,7 @@ model Benutzer {
sitzungenUngueltigAb DateTime?
letzteAnmeldungAm DateTime?
erstelltAm DateTime @default(now())
geaendertAm DateTime @updatedAt
geaendertAm DateTime @default(now()) @updatedAt
abgeschlosseneLaeufe Lauf[] @relation("LaufAbgeschlossenVon")
archivierteLaeufe Lauf[] @relation("LaufArchiviertVon")
@@ -219,7 +219,7 @@ model Verzeichnisquelle {
/// hier landet – rohe Bind-Fehler koennen das Passwort enthalten.
letzterAbgleichFehler String?
erstelltAm DateTime @default(now())
geaendertAm DateTime @updatedAt
geaendertAm DateTime @default(now()) @updatedAt
kunde Kunde @relation(fields: [kundeId], references: [id], onDelete: Restrict)
mitarbeiter Mitarbeiter[]
@@ -254,7 +254,7 @@ model Mitarbeiter {
herkunft Herkunft @default(MANUELL)
zuletztGesehenAm DateTime?
erstelltAm DateTime @default(now())
geaendertAm DateTime @updatedAt
geaendertAm DateTime @default(now()) @updatedAt
kunde Kunde @relation(fields: [kundeId], references: [id], onDelete: Restrict)
quelle Verzeichnisquelle? @relation(fields: [quelleId], references: [id], onDelete: Restrict)
@@ -284,7 +284,7 @@ model Abteilung {
notizen String?
archiviert Boolean @default(false)
erstelltAm DateTime @default(now())
geaendertAm DateTime @updatedAt
geaendertAm DateTime @default(now()) @updatedAt
kunde Kunde @relation(fields: [kundeId], references: [id], onDelete: Restrict)
laeufe Lauf[]
@@ -325,7 +325,7 @@ model Geraet {
archiviert Boolean @default(false)
registriertAm DateTime?
erstelltAm DateTime @default(now())
geaendertAm DateTime @updatedAt
geaendertAm DateTime @default(now()) @updatedAt
kunde Kunde @relation(fields: [kundeId], references: [id], onDelete: Restrict)
mitarbeiter Mitarbeiter? @relation(fields: [mitarbeiterId], references: [id], onDelete: Restrict)
@@ -378,7 +378,7 @@ model Vorlage {
kundeId String?
archiviert Boolean @default(false)
erstelltAm DateTime @default(now())
geaendertAm DateTime @updatedAt
geaendertAm DateTime @default(now()) @updatedAt
kunde Kunde? @relation(fields: [kundeId], references: [id], onDelete: Restrict)
versionen VorlagenVersion[]
@@ -401,6 +401,13 @@ model VorlagenVersion {
veroeffentlichtAm DateTime?
veroeffentlichtVonId String?
erstelltAm DateTime @default(now())
/// Wird bei jeder Aenderung am Entwurf neu gesetzt und dient als Stand, den
/// der Editor beim Laden mitbekommt und beim Speichern zurueckschickt. Weicht
/// er ab, hat jemand anderes zwischenzeitlich gespeichert — ohne diese Pruefung
/// ueberschriebe der zweite Redakteur die Arbeit des ersten spurlos, und weil
/// Entwuerfe bewusst nicht protokolliert werden, waere sie auch nicht
/// wiederherstellbar.
geaendertAm DateTime @default(now()) @updatedAt
vorlage Vorlage @relation(fields: [vorlageId], references: [id], onDelete: Cascade)
veroeffentlichtVon Benutzer? @relation("VersionVeroeffentlichtVon", fields: [veroeffentlichtVonId], references: [id], onDelete: Restrict)
@@ -502,7 +509,7 @@ model Lauf {
archiviertAm DateTime?
archiviertVonId String?
erstelltAm DateTime @default(now())
geaendertAm DateTime @updatedAt
geaendertAm DateTime @default(now()) @updatedAt
vorlagenVersion VorlagenVersion @relation(fields: [vorlagenVersionId], references: [id], onDelete: Restrict)
kunde Kunde @relation(fields: [kundeId], references: [id], onDelete: Restrict)
@@ -538,7 +545,7 @@ model Schrittergebnis {
/// Pflicht bei NICHT_ZUTREFFEND und FEHLGESCHLAGEN, erzwungen im Service.
notiz String?
aktualisiertVonId String?
aktualisiertAm DateTime @updatedAt
aktualisiertAm DateTime @default(now()) @updatedAt
erstelltAm DateTime @default(now())
lauf Lauf @relation(fields: [laufId], references: [id], onDelete: Restrict)