Merge branch 'wartung/einstellungen-stand-altreste' into wartung/restarbeiten
# Conflicts: # deploy/deploy.sh
This commit is contained in:
@@ -9,9 +9,9 @@ import { fehlerText, laeuftNoch } from "./anzeige"
|
||||
import { melden } from "./meldungen"
|
||||
import { stromVerbunden } from "./strom"
|
||||
import type {
|
||||
AktionsErgebnis, AufraeumKandidat, Hinweis, HomelabLauf, HomelabStand, Instanz, Job, Modell, Nutzung, PartnerStatus,
|
||||
Radar,
|
||||
Sicherung, Start, UpdateDetails, ZielAktion, ZielStand,
|
||||
AktionsErgebnis, Altrest, AufraeumKandidat, EinstellungenStand, Hinweis, HomelabLauf, HomelabStand, Instanz,
|
||||
InstanzMitStand, Job, Modell, Nutzung, PartnerStatus, Radar, Sicherung, Start, TelegramTest, UpdateDetails,
|
||||
ZielAktion, ZielStand,
|
||||
} from "./typen"
|
||||
import { gbText } from "./zeit"
|
||||
|
||||
@@ -302,3 +302,62 @@ export const useHomelabHinweise = (aktiv: boolean) =>
|
||||
enabled: aktiv,
|
||||
refetchInterval: takt(60_000),
|
||||
})
|
||||
|
||||
// --- Einstellungen, Software-Stand, Altreste (seit 24.09.2026) --------------------------------------------------
|
||||
|
||||
/** Update-Zeitfenster und Radar-Schalter der KI-Box, samt nächstem Lauf laut systemd. */
|
||||
export const useEinstellungenStand = (aktiv: boolean) =>
|
||||
useQuery({
|
||||
queryKey: ["einstellungen"],
|
||||
queryFn: () => api<EinstellungenStand>("/api/einstellungen"),
|
||||
enabled: aktiv,
|
||||
retry: false,
|
||||
})
|
||||
|
||||
export const useUpdateFensterSetzen = () =>
|
||||
useAktion(
|
||||
(f: { tag: number; uhrzeit: string }) => post<AktionsErgebnis>("/api/einstellungen/update-fenster", f),
|
||||
{ erfolg: (_, e) => (e as AktionsErgebnis).text ?? "Gespeichert.", neuLaden: ["einstellungen", "start"] },
|
||||
)
|
||||
|
||||
export const useRadarSchalten = () =>
|
||||
useAktion((an: boolean) => post<AktionsErgebnis>("/api/einstellungen/radar", { an }), {
|
||||
erfolg: (_, e) => (e as AktionsErgebnis).text ?? "Geschaltet.",
|
||||
neuLaden: ["einstellungen", "start", "radar"],
|
||||
})
|
||||
|
||||
/** Testmeldung über den echten Meldeweg der KI-Box oder des Homelab-Teils (lib/instanz.ts findet die Instanz). */
|
||||
export const useTelegramTest = () =>
|
||||
useAktion(
|
||||
(ziel: "box" | "homelab") =>
|
||||
post<TelegramTest>(ziel === "homelab" ? "/api/homelab/einstellungen/telegram-test" : "/api/einstellungen/telegram-test"),
|
||||
{ erfolg: (_, e) => e.text ?? "Die Testmeldung ist raus.", neuLaden: [] },
|
||||
)
|
||||
|
||||
/** Software-Stand dieser Instanz und der anderen (über /api/partner/instanz). */
|
||||
export const useSoftwareStand = (aktiv: boolean, mitPartner: boolean) =>
|
||||
useQueries({
|
||||
queries: [
|
||||
{ queryKey: ["stand", "hier"], queryFn: () => api<InstanzMitStand>("/api/instanz"), enabled: aktiv },
|
||||
{
|
||||
queryKey: ["stand", "partner"],
|
||||
queryFn: () => api<InstanzMitStand>("/api/partner/instanz"),
|
||||
enabled: aktiv && mitPartner,
|
||||
retry: false,
|
||||
},
|
||||
],
|
||||
})
|
||||
|
||||
/** Altreste neben dem Betrieb (Test-Ordner, alte Umgebungen, Worktrees …) — nur, was noch da ist. */
|
||||
export const useAltreste = () =>
|
||||
useQuery({
|
||||
queryKey: ["altreste"],
|
||||
queryFn: () => api<{ altreste: Altrest[] }>("/api/aufraeumen/altreste"),
|
||||
staleTime: 60_000,
|
||||
})
|
||||
|
||||
export const useAltrestLoeschen = () =>
|
||||
useAktion((a: Altrest) => post<AktionsErgebnis>("/api/aufraeumen/altreste/loeschen", { id: a.id }), {
|
||||
erfolg: (_, e) => (e as AktionsErgebnis).text ?? "Gelöscht.",
|
||||
neuLaden: ["altreste", "start"],
|
||||
})
|
||||
|
||||
@@ -304,3 +304,74 @@ export interface HomelabLauf {
|
||||
text: string | null
|
||||
schritte: string[]
|
||||
}
|
||||
|
||||
// --- Einstellungen, Software-Stand, Altreste (seit 24.09.2026) --------------------------------------------------
|
||||
|
||||
/** Welcher Stand einer Instanz seit wann live ist (services/software_stand.py). */
|
||||
export interface SoftwareStand {
|
||||
/** "deploy" = Stand-Datei des Deploys, "git" = aus dem Checkout gelesen (Entwicklung), sonst "unbekannt". */
|
||||
quelle: "deploy" | "git" | "unbekannt"
|
||||
commit: string | null
|
||||
betreff: string | null
|
||||
/** ISO-Zeit des Commits */
|
||||
commit_datum: string | null
|
||||
/** ISO-Zeit des Deploys, nur mit Stand-Datei */
|
||||
deploy_zeit: string | null
|
||||
}
|
||||
|
||||
/** GET /api/instanz bzw. /api/partner/instanz, seit 24.09.2026 mit dem Software-Stand. */
|
||||
export interface InstanzMitStand extends Instanz {
|
||||
stand?: SoftwareStand
|
||||
}
|
||||
|
||||
/** Einstellungen der KI-Box samt dem, was systemd daraus gemacht hat (GET /api/einstellungen). */
|
||||
export interface EinstellungenStand {
|
||||
/** false, wo es kein systemd gibt (Entwicklung am PC): Dann lässt sich nichts schalten. */
|
||||
schaltbar: boolean
|
||||
update_fenster: {
|
||||
/** 1 = Montag … 7 = Sonntag */
|
||||
tag: number
|
||||
/** "HH:MM" */
|
||||
uhrzeit: string
|
||||
tag_name: string
|
||||
/** Wann die Box nach einem Update neu starten darf, z. B. „Sonntag 04:00–06:59“. */
|
||||
neustart_fenster: string
|
||||
timer_aktiv: boolean
|
||||
naechster_lauf: string | null
|
||||
/** false: Der Timer läuft noch nach einem anderen Plan als eingestellt. */
|
||||
wirksam: boolean
|
||||
}
|
||||
radar: {
|
||||
/** Was eingestellt ist. */
|
||||
an: boolean
|
||||
/** Was systemd sagt: „schlaeft“ = abgeschaltet und nicht im Autostart. */
|
||||
zustand: "an" | "schlaeft" | "aus" | "unbekannt"
|
||||
naechster_lauf: string | null
|
||||
wirksam: boolean
|
||||
}
|
||||
}
|
||||
|
||||
/** Antwort des Telegram-Tests (POST /api/einstellungen/telegram-test bzw. /api/homelab/einstellungen/telegram-test). */
|
||||
export interface TelegramTest extends AktionsErgebnis {
|
||||
gesendet: boolean
|
||||
/** Über Hermes oder direkt an die Telegram-Bot-API. */
|
||||
weg: "hermes" | "direkt" | null
|
||||
/** Warum nicht, aus dem Melde-Log. */
|
||||
grund: string | null
|
||||
instanz: string
|
||||
/** ISO-Zeit des Tests */
|
||||
zeit: string
|
||||
kennung?: string
|
||||
}
|
||||
|
||||
/** Ein Altrest neben dem Betrieb (GET /api/aufraeumen/altreste). */
|
||||
export interface Altrest {
|
||||
/** Kennung aus der festen Liste — gelöscht wird nur darüber, nie über einen Pfad. */
|
||||
id: string
|
||||
name: string
|
||||
pfade: string[]
|
||||
groesse_bytes: number
|
||||
/** fertig lesbar, z. B. „7,7 GB“ */
|
||||
groesse: string
|
||||
hinweis: string
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user