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:
Harlekin
2026-09-02 12:10:34 +02:00
parent ac4aae294c
commit cf4321a3bd
6 changed files with 259 additions and 28 deletions
+6 -2
View File
@@ -56,12 +56,16 @@ export async function createCase(
const template = await db.caseTemplate.findFirst({
where: { key: input.templateKey, isActive: true },
orderBy: { version: 'desc' },
select: { id: true, key: true },
select: { id: true, key: true, numberPrefix: true, numberPadding: true },
})
if (!template) throw new AccessError('template-missing')
return db.$transaction(async (tx) => {
const caseNumber = await nextCaseNumber(tx)
// Das Muster kommt aus der Vorlage, jede Fallart hat ihren Nummernkreis.
const caseNumber = await nextCaseNumber(tx, {
prefix: template.numberPrefix,
padding: template.numberPadding,
})
const created = await tx.case.create({
data: {