The session built: Appointments page: a single list, newest first. Block Time: edit and delete. Customer CSV export: with barber notes excluded. Guest-link regression test: a test that an appointment id alone is rejected, plus fixes to the stale docs. It built the scheduler, job runner with live progress, backup and restore, and the health alerts. Its own report says a real delete-and-restore on throwaway Docker passed, but I haven’t repeated that. It also says real SMTP and large dumps were not exercised. The manager image needs rebuilding for the backups to work, because it now installs 7zip.
This commit is contained in:
95 files changed
+7955
-150
No files matched your search
@@ -0,0 +1,17 @@
|
||||
import { NextResponse } from "next/server";
|
||||
import { readJob } from "@/lib/jobs";
|
||||
|
||||
export const dynamic = "force-dynamic";
|
||||
|
||||
/**
|
||||
* Polled by the JobProgress component. Behind the Manager login like
|
||||
* every route (see proxy.ts). A job record holds step names, a log tail
|
||||
* and a result summary — never secrets (the restore passphrase only ever
|
||||
* lives in the running job's closure).
|
||||
*/
|
||||
export async function GET(_request: Request, { params }: { params: Promise<{ id: string }> }) {
|
||||
const { id } = await params;
|
||||
const job = await readJob(id);
|
||||
if (!job) return NextResponse.json({ error: "No such job." }, { status: 404 });
|
||||
return NextResponse.json(job, { headers: { "Cache-Control": "no-store" } });
|
||||
}
|
||||
Reference in new issue
Block a user