Aufgabenliste: 3. Tab "Geplante Jobs" mit vollem Lauf-Verlauf (neue scheduled_job_run-Tabelle, inkl. Auto-Update) #178
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Ziel
In der Aufgabenliste (
TaskDock.svelte, aktuell Tabs "Aktuell" + "Alle Nodes (Verlauf)") einen dritten Tab "Geplante Jobs" ergaenzen, der den vollen Verlauf der geplanten Scheduler-Jobs zeigt — also jeden einzelnen Lauf eines Crontab-/Command-Jobs auf VM oder Node, plus die Auto-Update-Laeufe (#174).Problem / Ist-Zustand
ScheduledJob(server/models/scheduled_job.py) speichert nur den letzten Lauf:last_run_at,last_status,last_output. Keine Run-Historie, kein/runs-Endpoint.schedule_router.pyhat nur/jobs,/jobs/{id},/jobs/{id}/run,/job-types— keine Verlaufs-Liste.launch_bulk_job, ihr Ergebnis landet innode_auto_update.last_summary(auch nur letzter Lauf).→ Fuer "jeder Lauf eine Zeile" fehlt die Datenquelle. Muss mit angelegt werden.
Backend — neue Tabelle
scheduled_job_run(1 Zeile pro Lauf) + MigrationHead ist aktuell
0022_auto_update_dist→ neue Migration0023_scheduled_job_run.Felder:
id(UUID PK)job_id(FK → scheduled_jobs.id, nullable — Auto-Update hat keinen ScheduledJob)sourceenum:scheduler|auto_update(Herkunft, fuer Filter/Badge)job_type(z. B.command.run,backup,vm.auto_update)name(Job-Name bzw. "Auto-Update ")node_name,vmid(nullable)started_at,finished_atstatusenum:ok|error|running|cancelledoutput(Text, gekuerzt z. B. 4k)summary(JSONB, optional — bei Auto-Update: ok/fail/reboot_required-Counts)(started_at desc)+node_name.Schreibstellen (History-Insert)
scheduler.py~Z.95-100): wo aktuelllast_run_at/last_status/last_outputgesetzt werden, zusaetzlich eineScheduledJobRun-Zeile inserten (source=scheduler).last_*am Job bleibt fuer die Schnellanzeige erhalten.update_router.launch_bulk_jobAbschluss bzw.auto_update_router.run_auto_update_for_node): pro Lauf eineScheduledJobRun(source=auto_update, summary=ok/fail/reboot_required).Neuer Endpoint
GET /api/schedule/runs?limit=&node_name=&source=→ letzte N Laeufe, mandanten-gescoped (require_read+list_user_accessible_nodes, Scope-WHERE vor LIMIT — Muster aus #108). Default sinnvoll begrenzt (z. B. 100).Frontend — 3. Tab im TaskDock
TaskDock.svelte: dritter Tab "Geplante Jobs" neben current/all (Z.183-185). Beim AktivierenloadJobRuns().td-tab,td-table), keine neue Optik erfinden.loadAllTasksinlib/stores/tasks.svelte.ts.Akzeptanz
scheduled_job_run-Zeile;ScheduledJob.last_*bleibt fuer Schnellanzeige.Bezug
#174 (Auto-Update-Laeufe als Quelle), Scheduler (
scheduler.py/schedule_router.py), #108 (Scope-Muster fuer den neuen Endpoint), Task-Center (TaskDock.svelte,tasks.svelte.ts).Branch
feat/scheduled-job-run-history