BLZ-Bankdaten: Laufzeit-Auto-Update ins Volume + Einstellungen-Seite
Statt npm-Rebuild-Wartung aktualisiert sich der Bankleitzahlen-Datensatz jetzt zur Laufzeit. Ein Scheduler (taeglich 03:30 + Catch-up 90s) prueft gemaess konfigurierbarem Intervall und laedt current.json/next.json von npm/jsDelivr (Paket bankdata-germany) in das neue Bind-Mount-Volume BANKDATA_DIR (./data/bankdata -> /app/bankdata). Lookup bevorzugt den Volume-Datensatz vor den ins Image gebackenen Daten (Fallback). Es wird kein Fremdcode ausgefuehrt - nur JSON gelesen und die current+next-Delta-Logik nachgebaut. Validierung (>=1000 Eintraege, Format) + atomarer Write (tmp+rename) schuetzen den guten Stand vor Muell. Datenschutz: Der Updater sendet keine Kundendaten, laedt nur eine oeffentliche Datendatei; abschaltbar; bei Fehler/ohne Egress greift Builtin. Neue Einstellungen-Seite /settings/bank-data zeigt Datenstand, Update- Verfuegbarkeit und bietet "Jetzt aktualisieren" + Auto-Update-Schalter + Intervall. Endpoints GET /api/settings/blz, POST /api/settings/blz/update-now. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1139,6 +1139,36 @@ export const appSettingsApi = {
|
||||
},
|
||||
};
|
||||
|
||||
// BLZ-/Bankdaten (Bundesbank-Bankleitzahlen) – Status + Auto-Update
|
||||
export interface BlzStatus {
|
||||
activeSource: 'volume' | 'builtin';
|
||||
activeVersion: string;
|
||||
builtinVersion: string;
|
||||
entryCount: number;
|
||||
nextValidFrom: string | null;
|
||||
fetchedAt: string | null;
|
||||
autoUpdateEnabled: boolean;
|
||||
intervalDays: number;
|
||||
lastCheckedAt: string | null;
|
||||
lastUpdatedAt: string | null;
|
||||
latestVersion: string | null;
|
||||
updateAvailable: boolean;
|
||||
lastError: string | null;
|
||||
}
|
||||
|
||||
export const blzDataApi = {
|
||||
getStatus: async () => {
|
||||
const res = await api.get<ApiResponse<BlzStatus>>('/settings/blz');
|
||||
return res.data;
|
||||
},
|
||||
updateNow: async (force = false) => {
|
||||
const res = await api.post<ApiResponse<{ result: { changed: boolean; version: string; message: string }; status: BlzStatus }>>(
|
||||
`/settings/blz/update-now${force ? '?force=1' : ''}`,
|
||||
);
|
||||
return res.data;
|
||||
},
|
||||
};
|
||||
|
||||
// Backup & Restore
|
||||
export interface BackupInfo {
|
||||
name: string;
|
||||
|
||||
Reference in New Issue
Block a user