feat(admin, i18n): enhance reports, draws, config, and player workflows

This commit is contained in:
2026-06-08 17:41:55 +08:00
parent af982bb9f7
commit 7e65c53732
55 changed files with 1986 additions and 804 deletions

View File

@@ -1,6 +1,10 @@
import { buildPageMetadata } from "@/lib/page-metadata";
import { AdminPermissionGate } from "@/components/admin/admin-permission-gate";
import { DrawDetailConsole } from "@/modules/draws/draw-detail-console";
import { PRD_DRAW_ACCESS_ANY } from "@/lib/admin-prd";
import type { Metadata } from "next";
export const metadata: Metadata = buildPageMetadata("draws", "drawDetail");
export default async function AdminDrawDetailPage(props: {
params: Promise<{ drawId: string }>;

View File

@@ -1,12 +1,7 @@
import { notFound } from "next/navigation";
import { AdminPermissionGate } from "@/components/admin/admin-permission-gate";
import { PRD_REPORTS_VIEW_ACCESS_ANY } from "@/lib/admin-prd";
import { notFound, redirect } from "next/navigation";
import { buildPageMetadata } from "@/lib/page-metadata";
import { ReportsConsole } from "@/modules/reports/reports-console";
import type { Metadata } from "next";
type Category = "profit" | "wallet" | "risk" | "audit";
export const metadata: Metadata = buildPageMetadata("reports", "title");
export default async function AdminReportsCategoryPage({
@@ -18,9 +13,5 @@ export default async function AdminReportsCategoryPage({
if (!["profit", "wallet", "risk", "audit"].includes(category)) {
notFound();
}
return (
<AdminPermissionGate requiredAny={PRD_REPORTS_VIEW_ACCESS_ANY}>
<ReportsConsole initialCategory={category as Category} />
</AdminPermissionGate>
);
redirect("/admin/reports");
}

View File

@@ -1,13 +1,9 @@
import type { ReactNode } from "react";
import { ModuleScaffold } from "@/components/admin/module-scaffold";
import { ReportsSubnav } from "@/modules/reports/reports-subnav";
export default function AdminReportsLayout({ children }: { children: ReactNode }) {
return (
<ModuleScaffold>
<div className="sticky top-14 z-20 bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/80">
<ReportsSubnav />
</div>
{children}
</ModuleScaffold>
);

View File

@@ -1,16 +1,5 @@
import { notFound } from "next/navigation";
import { AdminPermissionGate } from "@/components/admin/admin-permission-gate";
import { PRD_REPORTS_VIEW_ACCESS_ANY } from "@/lib/admin-prd";
import { buildPageMetadata } from "@/lib/page-metadata";
import { ReportsConsole } from "@/modules/reports/reports-console";
import type { Metadata } from "next";
import { redirect } from "next/navigation";
export const metadata: Metadata = buildPageMetadata("reports", "legacyTitle");
export default function AdminReportsLegacyPage(): React.ReactElement {
return (
<AdminPermissionGate requiredAny={PRD_REPORTS_VIEW_ACCESS_ANY}>
<ReportsConsole initialCategory="legacy" />
</AdminPermissionGate>
);
export default function AdminReportsLegacyPage() {
redirect("/admin/reports/profit");
}

View File

@@ -1,5 +1,11 @@
import { redirect } from "next/navigation";
import { AdminPermissionGate } from "@/components/admin/admin-permission-gate";
import { PRD_REPORTS_VIEW_ACCESS_ANY } from "@/lib/admin-prd";
import { ReportsConsole } from "@/modules/reports/reports-console";
export default function AdminReportsPage() {
redirect("/admin/reports/profit");
return (
<AdminPermissionGate requiredAny={PRD_REPORTS_VIEW_ACCESS_ANY}>
<ReportsConsole />
</AdminPermissionGate>
);
}