Aufträge laufen als pg-boss-Jobs im worker. Der Phasen-Runner der Engine kennt weder Proxmox noch Datenbank; eine Senke schreibt Phasen und Log in die DB und meldet per NOTIFY, die app streamt per SSE an Web und CLI (Last-Event-ID, Herzschlag, Polling-Fallback im Browser). VMIDs vergibt eine Advisory-Sperre je Server zusammen mit einer Reservierungstabelle; zehn parallele Reservierungen im Test bekommen zehn verschiedene IDs. Der Proxmox-Client hat einen Trockenmodus für den Dry-Run: Lesendes echt, Schreibendes nur aufgezeichnet. Live-Ansicht im Aufbau der CLI-Ausgabe. Im echten Betrieb aufgefallen: ssh2 und pg sind CommonJS und brauchen im worker Default-Importe. Closes #006 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
36 lines
1015 B
TypeScript
36 lines
1015 B
TypeScript
import type { AuftragsArt, AuftragsStatus, GastTyp, PhasenStatus } from "@/generated/prisma/enums";
|
||
|
||
/** Was die API über einen Auftrag herausgibt – geteilt von Server, Web-GUI und (als JSON) CLI. */
|
||
export type AuftragSicht = {
|
||
id: string;
|
||
kurzId: string;
|
||
art: AuftragsArt;
|
||
status: AuftragsStatus;
|
||
kopf: string;
|
||
server: { name: string; titel: string };
|
||
knoten: string | null;
|
||
gastTyp: GastTyp | null;
|
||
vmid: number | null;
|
||
name: string | null;
|
||
distributionId: string | null;
|
||
profile: string[];
|
||
ergebnis: unknown;
|
||
fehler: unknown;
|
||
erstelltVon: string;
|
||
erstelltAm: string;
|
||
gestartetAm: string | null;
|
||
beendetAm: string | null;
|
||
phasen: Array<{
|
||
schluessel: string;
|
||
titel: string;
|
||
status: PhasenStatus;
|
||
detail: string | null;
|
||
ursache: string | null;
|
||
hinweis: string | null;
|
||
gestartetAm: string | null;
|
||
beendetAm: string | null;
|
||
}>;
|
||
};
|
||
|
||
export type LogZeile = { id: string; zeit: string; stufe: string; phase: string | null; nachricht: string };
|