feat(admin, settlement, dashboard): strengthen permission gating and billing workflows

This commit is contained in:
2026-06-09 13:44:19 +08:00
parent 7e65c53732
commit b7278e68a4
41 changed files with 900 additions and 199 deletions

View File

@@ -35,7 +35,6 @@ import { drawStatusLabel, hallPreviewDiffersFromDbStatus } from "./draw-display"
import { DrawStatusBadge } from "./draw-status-badge";
import {
PRD_DRAW_REOPEN_MANAGE,
PRD_DRAW_RESULT_MANAGE,
PRD_PAYOUT_MANAGE,
PRD_PAYOUT_REVIEW,
} from "./draw-prd";
@@ -173,7 +172,7 @@ export function DrawDetailConsole({ drawId }: { drawId: string }) {
label: t("manualClose"),
variant: "outline",
enabled: ["pending", "open"].includes(data.status),
onConfirm: () => postAdminManualCloseDraw(idNum),
onConfirm: async () => { await postAdminManualCloseDraw(idNum); },
confirmTitle: t("confirm.manualCloseTitle"),
confirmDescription: t("confirm.manualCloseDescription"),
},
@@ -182,7 +181,7 @@ export function DrawDetailConsole({ drawId }: { drawId: string }) {
label: t("cancelBeforeDraw"),
variant: "outline",
enabled: ["pending", "open", "closing", "closed"].includes(data.status),
onConfirm: () => postAdminCancelDraw(idNum),
onConfirm: async () => { await postAdminCancelDraw(idNum); },
confirmTitle: t("confirm.cancelDrawTitle"),
confirmDescription: t("confirm.cancelDrawDescription"),
},
@@ -191,7 +190,7 @@ export function DrawDetailConsole({ drawId }: { drawId: string }) {
label: t("rngAutoGenerate"),
variant: "outline",
enabled: data.status === "closed",
onConfirm: () => postAdminRunDrawRng(idNum),
onConfirm: async () => { await postAdminRunDrawRng(idNum); },
confirmTitle: t("confirm.rngDrawTitle"),
confirmDescription: t("confirm.rngDrawDescription"),
},
@@ -204,7 +203,7 @@ export function DrawDetailConsole({ drawId }: { drawId: string }) {
label: t("cooldownReopen"),
variant: "destructive",
enabled: data.status === "cooldown",
onConfirm: () => postAdminReopenDraw(idNum),
onConfirm: async () => { await postAdminReopenDraw(idNum); },
confirmTitle: t("confirm.reopenTitle"),
confirmDescription: t("confirm.reopenDescription"),
confirmVariant: "destructive",
@@ -217,7 +216,7 @@ export function DrawDetailConsole({ drawId }: { drawId: string }) {
label: t("runSettlement"),
variant: "outline",
enabled: data.status === "settling",
onConfirm: () => postAdminRunDrawSettlement(idNum),
onConfirm: async () => { await postAdminRunDrawSettlement(idNum); },
confirmTitle: t("confirm.runSettlementTitle"),
confirmDescription: t("confirm.runSettlementDescription"),
});