L8 Notdienst: mobile Erfassung /m/emergency in drei Schritten
Kunde suchen oder vorläufig anlegen, Einsatzort mit Ansprechpartner, Grund mit optionaler Sprachnotiz, Beginn und Team; Start über die Sync-Op. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,25 @@
|
||||
import { ModulePlaceholder } from "@/components/module-placeholder";
|
||||
import { getTranslations } from "next-intl/server";
|
||||
import { moduleGuard } from "@/server/action-guard";
|
||||
import { can, ctxFromGuard } from "@/server/services/context";
|
||||
import { emergencyTeamOptions } from "@/server/services/emergency/lookup";
|
||||
import { EmergencyWizard } from "@/components/emergency/emergency-wizard";
|
||||
|
||||
export default function Page() {
|
||||
return <ModulePlaceholder moduleKey="emergency" />;
|
||||
/** `/m/emergency` — Notdienst erfassen (spec §19.2, US-010): max. 3 steps, then straight into the call-out. */
|
||||
export default async function EmergencyPage() {
|
||||
const ctx = ctxFromGuard(await moduleGuard("emergency")());
|
||||
const t = await getTranslations("emergency.capture");
|
||||
if (!can(ctx, "emergency:create") || !can(ctx, "field:execute")) {
|
||||
return <p className="p-4 text-[15px]">{t("noAccess")}</p>;
|
||||
}
|
||||
const teams = await emergencyTeamOptions(ctx);
|
||||
|
||||
return (
|
||||
<main className="space-y-4 p-4">
|
||||
<div>
|
||||
<h1 className="text-[26px]">{t("title")}</h1>
|
||||
<p className="text-[15px] text-muted-foreground">{t("sub")}</p>
|
||||
</div>
|
||||
<EmergencyWizard teams={teams} userId={ctx.userId} />
|
||||
</main>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user