refactor(i18n, admin): remove page guide components and documentation links across modules

Deleted AdminPageGuide component and ADMIN_DOC_LINKS constants. Removed pageGuide text from Chinese translations and eliminated guide displays from agents, draws, integration sites, players, reports, and settlement center consoles. Cleaned up unused CardDescription elements in reconcile console.
This commit is contained in:
2026-06-15 18:06:43 +08:00
parent 641c87ff50
commit b774e22352
15 changed files with 7 additions and 79 deletions

View File

@@ -1,37 +0,0 @@
"use client";
import Link from "next/link";
import { BookOpenIcon } from "lucide-react";
import { useTranslation } from "react-i18next";
import { cn } from "@/lib/utils";
type AdminPageGuideProps = {
guide: string;
docHref?: string;
className?: string;
};
export function AdminPageGuide({ guide, docHref, className }: AdminPageGuideProps): React.ReactElement {
const { t } = useTranslation("common");
return (
<div
className={cn(
"rounded-lg border border-border/80 bg-muted/25 px-4 py-3 text-sm leading-6 text-muted-foreground",
className,
)}
>
<p>{guide}</p>
{docHref ? (
<Link
href={docHref}
className="mt-2 inline-flex items-center gap-1.5 text-xs font-medium text-primary underline-offset-2 hover:underline"
>
<BookOpenIcon className="size-3.5 shrink-0" aria-hidden />
{t("docs.learnMore")}
</Link>
) : null}
</div>
);
}

View File

@@ -123,7 +123,7 @@
"bindAccountPasswordRequired": "该代理尚未绑定登录账号,请填写初始密码以创建账号", "bindAccountPasswordRequired": "该代理尚未绑定登录账号,请填写初始密码以创建账号",
"bindAccountHint": "该代理尚无登录账号,保存时将自动创建并绑定。", "bindAccountHint": "该代理尚无登录账号,保存时将自动创建并绑定。",
"modelGuide": "代理层负责数据范围Scope与授权上限Ceiling账号权限请通过角色分配。", "modelGuide": "代理层负责数据范围Scope与授权上限Ceiling账号权限请通过角色分配。",
"pageGuide": "这里统一管理代理树、代理角色、代理账号与下放上限。平台账号和平台角色请到各自的平台治理页面维护。", "pageGuide": "",
"summary": { "summary": {
"currentSiteNodes": "当前线路节点总数", "currentSiteNodes": "当前线路节点总数",
"currentSiteAgents": "当前线路经营代理数", "currentSiteAgents": "当前线路经营代理数",

View File

@@ -42,7 +42,7 @@
"integrationSites": { "integrationSites": {
"title": "接入站点", "title": "接入站点",
"description": "由运营在后台维护各主站对接参数并通过权限控制谁能查看或修改。site_code 创建后不可修改。", "description": "由运营在后台维护各主站对接参数并通过权限控制谁能查看或修改。site_code 创建后不可修改。",
"pageGuide": "钱包盘客户须先创建接入站点并保存 SSO/钱包密钥;技术联调见 API 对接文档。", "pageGuide": "",
"create": "新建站点", "create": "新建站点",
"edit": "编辑", "edit": "编辑",
"save": "保存", "save": "保存",

View File

@@ -1,7 +1,7 @@
{ {
"title": "期号", "title": "期号",
"statusListTitle": "期号列表", "statusListTitle": "期号列表",
"pageGuide": "管理期号生命周期:批量生成计划、封盘、开奖审核与结算。封盘后不可改时间;超管可在冷静期内重开。", "pageGuide": "",
"generatePlan": "批量生成期开奖计划", "generatePlan": "批量生成期开奖计划",
"generating": "生成中…", "generating": "生成中…",
"generateSuccess": "已生成 {{created}} 期,当前缓冲 {{upcoming}}/{{target}}", "generateSuccess": "已生成 {{created}} 期,当前缓冲 {{upcoming}}/{{target}}",

View File

@@ -1,6 +1,6 @@
{ {
"title": "玩家", "title": "玩家",
"pageGuide": "钱包盘与信用盘玩家统一管理;详情页按 funding_mode 展示不同流水与操作。", "pageGuide": "",
"detailTitle": "玩家详情", "detailTitle": "玩家详情",
"listTitle": "玩家列表", "listTitle": "玩家列表",
"viewDetail": "查看详情", "viewDetail": "查看详情",

View File

@@ -1,7 +1,7 @@
{ {
"title": "报表中心", "title": "报表中心",
"subtitle": "集中查看运营、资金、风控与审计报表,统一按维度筛选后导出。", "subtitle": "集中查看运营、资金、风控与审计报表,统一按维度筛选后导出。",
"pageGuide": "按期号、玩家、玩法等维度查看盈亏与风险;具备导出权限可发起异步导出任务。", "pageGuide": "",
"exportPanel": "导出设置", "exportPanel": "导出设置",
"chooseReport": "选择要导出的报表", "chooseReport": "选择要导出的报表",
"libraryTitle": "报表类型", "libraryTitle": "报表类型",

View File

@@ -1,7 +1,7 @@
{ {
"title": "结算中心", "title": "结算中心",
"subtitle": "账期关账、账单确认与收付登记", "subtitle": "账期关账、账单确认与收付登记",
"pageGuide": "信用盘代理账期:站点财务开账/关账;绑定代理仅可查看本线账单并作为收款方登记收付。", "pageGuide": "",
"subtitleList": "账期列表:开账、关账;列表已含账期汇总,行内「查看详情」进入账单与下注流水。", "subtitleList": "账期列表:开账、关账;列表已含账期汇总,行内「查看详情」进入账单与下注流水。",
"period": { "period": {
"title": "账期", "title": "账期",

View File

@@ -1,11 +0,0 @@
export const ADMIN_DOC_LINKS = {
overview: "/docs/admin",
roles: "/docs/admin/roles",
siteSetup: "/docs/admin/site-setup",
draws: "/docs/admin/draws",
settlementCenter: "/docs/admin/settlement-center",
agents: "/docs/admin/agents",
players: "/docs/admin/players",
reports: "/docs/admin/reports",
faq: "/docs/admin/faq",
} as const;

View File

@@ -21,8 +21,6 @@ import { AgentLineProvisionWizard } from "@/modules/agents/agent-line-provision-
import { AgentLineSidebar } from "@/modules/agents/agent-line-sidebar"; import { AgentLineSidebar } from "@/modules/agents/agent-line-sidebar";
import { AgentProfileFields } from "@/modules/agents/agent-profile-fields"; import { AgentProfileFields } from "@/modules/agents/agent-profile-fields";
import { AdminLoadingState } from "@/components/admin/admin-loading-state"; import { AdminLoadingState } from "@/components/admin/admin-loading-state";
import { AdminPageGuide } from "@/components/admin/admin-page-guide";
import { ADMIN_DOC_LINKS } from "@/lib/admin-doc-links";
import { AdminNoIntegrationSiteState } from "@/components/admin/admin-no-integration-site-state"; import { AdminNoIntegrationSiteState } from "@/components/admin/admin-no-integration-site-state";
import { Button } from "@/components/ui/button"; import { Button } from "@/components/ui/button";
import { import {
@@ -968,7 +966,6 @@ export function AgentsConsole(): React.ReactElement {
return ( return (
<div className="flex min-h-0 flex-1 flex-col gap-0"> <div className="flex min-h-0 flex-1 flex-col gap-0">
<AdminPageGuide guide={t("pageGuide")} docHref={ADMIN_DOC_LINKS.agents} className="mb-4 px-1" />
<ConfirmDialog /> <ConfirmDialog />
{canViewAgents && err ? <p className="px-1 text-sm text-destructive">{err}</p> : null} {canViewAgents && err ? <p className="px-1 text-sm text-destructive">{err}</p> : null}

View File

@@ -17,8 +17,6 @@ import {
import { useAdminDateTimeFormatter } from "@/hooks/use-admin-datetime-formatter"; import { useAdminDateTimeFormatter } from "@/hooks/use-admin-datetime-formatter";
import { LOTTERY_SCHEDULE_TIMEZONE } from "@/lib/lottery-schedule-timezone"; import { LOTTERY_SCHEDULE_TIMEZONE } from "@/lib/lottery-schedule-timezone";
import { AdminTableLoadingRow } from "@/components/admin/admin-loading-state"; import { AdminTableLoadingRow } from "@/components/admin/admin-loading-state";
import { AdminPageGuide } from "@/components/admin/admin-page-guide";
import { ADMIN_DOC_LINKS } from "@/lib/admin-doc-links";
import { AdminTableNoResourceRow } from "@/components/admin/admin-no-resource-state"; import { AdminTableNoResourceRow } from "@/components/admin/admin-no-resource-state";
import { AdminRowActionsMenu } from "@/components/admin/admin-row-actions-menu"; import { AdminRowActionsMenu } from "@/components/admin/admin-row-actions-menu";
import { Button } from "@/components/ui/button"; import { Button } from "@/components/ui/button";
@@ -251,7 +249,6 @@ export function DrawsIndexConsole() {
return ( return (
<> <>
<AdminPageGuide guide={t("pageGuide")} docHref={ADMIN_DOC_LINKS.draws} className="mb-4" />
<Card className="admin-list-card"> <Card className="admin-list-card">
<CardHeader className="admin-list-header flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between"> <CardHeader className="admin-list-header flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between">
<CardTitle className="admin-list-title">{t("statusListTitle")}</CardTitle> <CardTitle className="admin-list-title">{t("statusListTitle")}</CardTitle>

View File

@@ -19,8 +19,6 @@ import {
putAdminIntegrationSite, putAdminIntegrationSite,
} from "@/api/admin-integration-sites"; } from "@/api/admin-integration-sites";
import { AdminPageCard } from "@/components/admin/admin-page-card"; import { AdminPageCard } from "@/components/admin/admin-page-card";
import { AdminPageGuide } from "@/components/admin/admin-page-guide";
import { ADMIN_DOC_LINKS } from "@/lib/admin-doc-links";
import { AdminNoResourceState } from "@/components/admin/admin-no-resource-state"; import { AdminNoResourceState } from "@/components/admin/admin-no-resource-state";
import { AdminRowActionsMenu } from "@/components/admin/admin-row-actions-menu"; import { AdminRowActionsMenu } from "@/components/admin/admin-row-actions-menu";
import { AdminStatusBadge } from "@/components/admin/admin-status-badge"; import { AdminStatusBadge } from "@/components/admin/admin-status-badge";
@@ -529,11 +527,6 @@ export function IntegrationSitesConsole({
return ( return (
<> <>
<AdminPageGuide
guide={t("integrationSites.pageGuide")}
docHref={ADMIN_DOC_LINKS.siteSetup}
className="mb-4"
/>
<AdminPageCard <AdminPageCard
title={t("integrationSites.title")} title={t("integrationSites.title")}
description={t("integrationSites.description")} description={t("integrationSites.description")}

View File

@@ -23,8 +23,6 @@ import {
import { flattenAgentTree, type FlatAgentOption } from "@/lib/admin-agent-tree"; import { flattenAgentTree, type FlatAgentOption } from "@/lib/admin-agent-tree";
import { useAdminSiteCodeOptions } from "@/hooks/use-admin-site-code-options"; import { useAdminSiteCodeOptions } from "@/hooks/use-admin-site-code-options";
import { AdminAgentCell, AdminAgentHead } from "@/components/admin/admin-agent-columns"; import { AdminAgentCell, AdminAgentHead } from "@/components/admin/admin-agent-columns";
import { AdminPageGuide } from "@/components/admin/admin-page-guide";
import { ADMIN_DOC_LINKS } from "@/lib/admin-doc-links";
import { AdminTableNoResourceRow } from "@/components/admin/admin-no-resource-state"; import { AdminTableNoResourceRow } from "@/components/admin/admin-no-resource-state";
import { AdminListPaginationFooter } from "@/components/admin/admin-list-pagination-footer"; import { AdminListPaginationFooter } from "@/components/admin/admin-list-pagination-footer";
import { AdminRowActionsMenu } from "@/components/admin/admin-row-actions-menu"; import { AdminRowActionsMenu } from "@/components/admin/admin-row-actions-menu";
@@ -427,7 +425,6 @@ export function PlayersConsole(): React.ReactElement {
return ( return (
<div className="flex w-full max-w-none flex-col gap-6"> <div className="flex w-full max-w-none flex-col gap-6">
<AdminPageGuide guide={t("pageGuide")} docHref={ADMIN_DOC_LINKS.players} />
<Card className="admin-list-card"> <Card className="admin-list-card">
<CardHeader className="admin-list-header flex flex-col gap-4"> <CardHeader className="admin-list-header flex flex-col gap-4">
<div className="flex flex-col gap-2 sm:flex-row sm:items-center sm:gap-3"> <div className="flex flex-col gap-2 sm:flex-row sm:items-center sm:gap-3">

View File

@@ -20,7 +20,7 @@ import { AdminListPaginationFooter } from "@/components/admin/admin-list-paginat
import { AdminRowActionsMenu } from "@/components/admin/admin-row-actions-menu"; import { AdminRowActionsMenu } from "@/components/admin/admin-row-actions-menu";
import { AdminStatusBadge } from "@/components/admin/admin-status-badge"; import { AdminStatusBadge } from "@/components/admin/admin-status-badge";
import { Button, buttonVariants } from "@/components/ui/button"; import { Button, buttonVariants } from "@/components/ui/button";
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from "@/components/ui/dialog"; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from "@/components/ui/dialog";
import { Input } from "@/components/ui/input"; import { Input } from "@/components/ui/input";
import { Label } from "@/components/ui/label"; import { Label } from "@/components/ui/label";
@@ -334,7 +334,6 @@ export function ReconcileConsole(): React.ReactElement {
<Card className="admin-list-card"> <Card className="admin-list-card">
<CardHeader className="admin-list-header"> <CardHeader className="admin-list-header">
<CardTitle className="admin-list-title">{t("createTitle")}</CardTitle> <CardTitle className="admin-list-title">{t("createTitle")}</CardTitle>
<CardDescription>{t("createDesc")}</CardDescription>
</CardHeader> </CardHeader>
<CardContent className="admin-list-content pt-4"> <CardContent className="admin-list-content pt-4">
<div className="grid gap-4 xl:grid-cols-[minmax(0,1fr)_minmax(0,1fr)]"> <div className="grid gap-4 xl:grid-cols-[minmax(0,1fr)_minmax(0,1fr)]">
@@ -515,7 +514,6 @@ export function ReconcileConsole(): React.ReactElement {
<CardHeader className="admin-list-header flex flex-row flex-wrap items-end justify-between gap-4"> <CardHeader className="admin-list-header flex flex-row flex-wrap items-end justify-between gap-4">
<div> <div>
<CardTitle className="admin-list-title">{t("jobsTitle")}</CardTitle> <CardTitle className="admin-list-title">{t("jobsTitle")}</CardTitle>
<CardDescription>{t("jobsDesc")}</CardDescription>
</div> </div>
<Button type="button" variant="secondary" size="sm" onClick={() => void loadJobs()}> <Button type="button" variant="secondary" size="sm" onClick={() => void loadJobs()}>
{t("refresh")} {t("refresh")}

View File

@@ -46,8 +46,6 @@ import { adminHasAnyPermission } from "@/lib/admin-permissions";
import { PRD_REPORT_EXPORT, PRD_REPORT_VIEW } from "@/lib/admin-prd"; import { PRD_REPORT_EXPORT, PRD_REPORT_VIEW } from "@/lib/admin-prd";
import { useAdminProfile } from "@/stores/admin-session"; import { useAdminProfile } from "@/stores/admin-session";
import { adminAgentDisplayLabel } from "@/components/admin/admin-agent-columns"; import { adminAgentDisplayLabel } from "@/components/admin/admin-agent-columns";
import { AdminPageGuide } from "@/components/admin/admin-page-guide";
import { ADMIN_DOC_LINKS } from "@/lib/admin-doc-links";
import { AdminNoResourceState, AdminTableNoResourceRow } from "@/components/admin/admin-no-resource-state"; import { AdminNoResourceState, AdminTableNoResourceRow } from "@/components/admin/admin-no-resource-state";
import { AdminDateRangeField } from "@/components/admin/admin-date-range-field"; import { AdminDateRangeField } from "@/components/admin/admin-date-range-field";
import { AdminListPaginationFooter } from "@/components/admin/admin-list-pagination-footer"; import { AdminListPaginationFooter } from "@/components/admin/admin-list-pagination-footer";
@@ -1622,7 +1620,6 @@ export function ReportsConsole({ initialCategory }: { initialCategory?: ReportCa
return ( return (
<div className="mx-auto flex w-full max-w-7xl flex-col gap-4"> <div className="mx-auto flex w-full max-w-7xl flex-col gap-4">
<AdminPageGuide guide={t("pageGuide")} docHref={ADMIN_DOC_LINKS.reports} />
<Card className="admin-list-card"> <Card className="admin-list-card">
<CardHeader className="admin-list-header pb-3"> <CardHeader className="admin-list-header pb-3">
<div className="flex flex-col gap-3"> <div className="flex flex-col gap-3">

View File

@@ -10,8 +10,6 @@ import { toast } from "sonner";
import { getSettlementPeriods, type SettlementPeriodRow } from "@/api/admin-agent-settlement"; import { getSettlementPeriods, type SettlementPeriodRow } from "@/api/admin-agent-settlement";
import { getAdminIntegrationSites } from "@/api/admin-integration-sites"; import { getAdminIntegrationSites } from "@/api/admin-integration-sites";
import { AdminLoadingState } from "@/components/admin/admin-loading-state"; import { AdminLoadingState } from "@/components/admin/admin-loading-state";
import { AdminPageGuide } from "@/components/admin/admin-page-guide";
import { ADMIN_DOC_LINKS } from "@/lib/admin-doc-links";
import { AdminNoIntegrationSiteState } from "@/components/admin/admin-no-integration-site-state"; import { AdminNoIntegrationSiteState } from "@/components/admin/admin-no-integration-site-state";
import { AgentBillDetail } from "@/modules/settlement/agent-bill-detail"; import { AgentBillDetail } from "@/modules/settlement/agent-bill-detail";
import { SettlementCenterPeriodDetail } from "@/modules/settlement/settlement-center-period-detail"; import { SettlementCenterPeriodDetail } from "@/modules/settlement/settlement-center-period-detail";
@@ -300,7 +298,6 @@ export function SettlementCenterShell(): React.ReactElement {
return ( return (
<div className="mx-auto flex w-full max-w-7xl flex-col gap-4"> <div className="mx-auto flex w-full max-w-7xl flex-col gap-4">
<AdminPageGuide guide={t("pageGuide")} docHref={ADMIN_DOC_LINKS.settlementCenter} />
{shellBootstrapping ? ( {shellBootstrapping ? (
<AdminLoadingState /> <AdminLoadingState />
) : siteId === null && siteOptions.length === 0 && boundAgent === null ? ( ) : siteId === null && siteOptions.length === 0 && boundAgent === null ? (