Aktenzeichen-Muster je Vorlage, Startskript für die Entwicklung
Richtigstellung zuerst: der vorige Commit trägt die Nachricht "Nichts davon gebaut", enthält aber bereits die Schema-Änderung an CaseTemplate und CaseCounter. Ein abgebrochener Aufruf hatte die Datei schon geschrieben, und das nachfolgende `git add -A` hat sie mitgenommen. Die Nachricht war damit falsch. Hier ist die Änderung vollständig und geprüft. Das Muster des Aktenzeichens gehört zur Vorlage: Präfix und Stellenzahl je Fallart, ein Nummernkreis je Präfix und Jahr. Die Abteilung führt gewachsene Präfixe wie AKT-PA-2026-62843 neben dem AfiS-2026-0042 aus dem Glossar. Die Migration ist von Hand geschrieben, weil der Wechsel des Primärschlüssels auf CaseCounter den bestehenden Zähler erhalten muss: eine zurückgesetzte Nummer wäre ein doppeltes Aktenzeichen. Vorher und nachher geprüft. parseCaseNumber zerlegt von hinten, damit Präfixe mit Bindestrich funktionieren. Ein Test belegt, dass AKT-PA und AfiS getrennte Nummernkreise führen. Dazu start.sh für die lokale Entwicklung, solange der Dockge-Stack nicht läuft: Datenbank hochfahren, Migrationen, Grundzustand, Worker und Web. Mit --ohne-worker für Arbeit ohne Discord und --nur-db für die Datenbank allein.
This commit is contained in:
@@ -36,7 +36,13 @@ const CLEARANCE_LEVELS = [
|
||||
* mit allen Feldtypen baut Phase 3, hier steht nur, was eine Akte zum Laufen
|
||||
* braucht.
|
||||
*/
|
||||
const TEMPLATES = [
|
||||
const TEMPLATES: {
|
||||
key: string
|
||||
name: string
|
||||
description: string
|
||||
numberPrefix?: string
|
||||
numberPadding?: number
|
||||
}[] = [
|
||||
{
|
||||
key: 'korruptionsverdacht',
|
||||
name: 'Korruptionsverdacht',
|
||||
@@ -96,18 +102,32 @@ async function main(): Promise<void> {
|
||||
for (const template of TEMPLATES) {
|
||||
await db.caseTemplate.upsert({
|
||||
where: { key_version: { key: template.key, version: 1 } },
|
||||
create: { ...template, version: 1, fields: TEMPLATE_FIELDS, isActive: true },
|
||||
create: {
|
||||
...template,
|
||||
numberPrefix: template.numberPrefix ?? 'AfiS',
|
||||
numberPadding: template.numberPadding ?? 4,
|
||||
version: 1,
|
||||
fields: TEMPLATE_FIELDS,
|
||||
isActive: true,
|
||||
},
|
||||
// Muster und Felder bleiben unangetastet: was der Leiter im
|
||||
// Vorlagen-Editor eingestellt hat, überschreibt der Seed nicht.
|
||||
update: { name: template.name, description: template.description },
|
||||
})
|
||||
}
|
||||
console.log(`[seed] ${TEMPLATES.length} Startvorlagen`)
|
||||
|
||||
// Ein Nummernkreis je Präfix und Jahr. Angelegt wird er beim ersten Fall
|
||||
// von selbst; hier steht er nur, damit ein frischer Bestand nachvollziehbar
|
||||
// bei null beginnt.
|
||||
const year = new Date().getFullYear()
|
||||
await db.caseCounter.upsert({
|
||||
where: { year },
|
||||
create: { year, lastNumber: 0 },
|
||||
update: {},
|
||||
})
|
||||
for (const prefix of [...new Set(TEMPLATES.map((t) => t.numberPrefix ?? 'AfiS'))]) {
|
||||
await db.caseCounter.upsert({
|
||||
where: { prefix_year: { prefix, year } },
|
||||
create: { prefix, year, lastNumber: 0 },
|
||||
update: {},
|
||||
})
|
||||
}
|
||||
console.log(`[seed] Aktenzeichen-Zähler für ${year}`)
|
||||
|
||||
// entry.edit_own, entry.edit_any und entry.retract sind bewusst keiner Rolle
|
||||
|
||||
Reference in New Issue
Block a user