feat: Sagen, wenn Oberflaeche und Server auseinanderlaufen

Ein "npm run build" allein startet den Dienst nicht neu. Die Oberflaeche
ruft dann Endpunkte auf, die es serverseitig noch gar nicht gibt - und das
sieht aus wie ein Fehler in der Funktion, nicht wie ein halbes Update.
Genau daran ging gerade eine Stunde Fehlersuche drauf: Die Aufstellung
eines Ausgaben-Anteils blieb leer, weil der Server den Endpunkt nicht
kannte.

Vite setzt den Commit beim Bauen ins Bundle, die Oberflaeche vergleicht
ihn beim Start mit dem, den der Server unter /api/version meldet. Weichen
sie ab, steht der Hinweis samt Kommando ueber jeder Seite. Kennt eine der
beiden Seiten ihren Stand nicht, schweigt der Hinweis - falscher Alarm
waere schlimmer als keiner.

Beide Richtungen im Browser geprueft: bei verschiedenen Staenden erscheint
er, bei gleichen nicht.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Guido
2026-08-30 15:28:05 +02:00
co-authored by Claude Opus 5
parent 07ff0f2f8d
commit 175d9f50e0
4 changed files with 86 additions and 0 deletions
+15
View File
@@ -1,12 +1,27 @@
import { execSync } from "node:child_process";
import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
// Der Commit, aus dem dieses Bundle stammt. Die Oberflaeche vergleicht ihn mit
// dem, den der Server meldet – laufen beide auseinander, wurde gebaut, aber der
// Dienst nicht neu gestartet. Das kostete schon mehrfach eine halbe Stunde
// Fehlersuche an einer Funktion, die es serverseitig noch gar nicht gab.
function commit() {
try {
return execSync("git rev-parse --short HEAD", { encoding: "utf8" }).trim();
} catch {
return ""; // Kein Git zur Hand – dann wird nichts verglichen.
}
}
// Im Dev-Modus wird /api an das lokale Backend weitergeleitet. Anders als in der
// Vorlage wird der /api-Präfix NICHT entfernt – das Backend bedient die Routen
// bewusst unter /api/... (ein Prozess liefert API und SPA gemeinsam aus).
// In Produktion liefert derselbe FastAPI-Prozess das gebaute Frontend mit aus.
export default defineConfig({
plugins: [react()],
define: { __APP_SHA__: JSON.stringify(commit()) },
server: {
port: 5173,
proxy: {