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

@@ -40,9 +40,10 @@ function downloadBlob(blob: Blob, filename: string): void {
type ReportJobsPanelProps = {
canExport: boolean;
refreshToken?: number;
reportType?: string;
};
export function ReportJobsPanel({ canExport, refreshToken = 0 }: ReportJobsPanelProps) {
export function ReportJobsPanel({ canExport, refreshToken = 0, reportType }: ReportJobsPanelProps) {
const { t } = useTranslation(["reports", "common"]);
const tRef = useTranslationRef(["reports", "common"]);
const formatTs = useAdminDateTimeFormatter();
@@ -53,7 +54,7 @@ export function ReportJobsPanel({ canExport, refreshToken = 0 }: ReportJobsPanel
const loadJobs = useCallback(async () => {
setLoading(true);
try {
const data = await getAdminReportJobs({ page: 1, per_page: 10 });
const data = await getAdminReportJobs({ page: 1, per_page: 10, report_type: reportType || undefined });
setJobs(data.items);
} catch (e) {
toast.error(e instanceof LotteryApiBizError ? e.message : tRef.current("tasks.loadFailed"));
@@ -61,7 +62,7 @@ export function ReportJobsPanel({ canExport, refreshToken = 0 }: ReportJobsPanel
} finally {
setLoading(false);
}
}, []);
}, [reportType, tRef]);
useAsyncEffect(() => {
void loadJobs();
@@ -100,7 +101,9 @@ export function ReportJobsPanel({ canExport, refreshToken = 0 }: ReportJobsPanel
</Button>
</CardHeader>
<CardContent className="pt-2">
<p className="mb-3 text-xs text-muted-foreground">{t("exportHint")}</p>
<p className="mb-3 text-xs text-muted-foreground">
{reportType ? t("tasks.currentReportHint") : t("exportHint")}
</p>
<Table>
<TableHeader>
<TableRow>