From c5592621a48d96266249ab34639724ebd5a6bb6d Mon Sep 17 00:00:00 2001 From: JetSprow Date: Thu, 30 Apr 2026 21:48:59 +1000 Subject: [PATCH] polish: refine lite admin controls --- src/actions/admin/plans.ts | 3 - .../_components/announcements-table.tsx | 2 +- .../announcements/announcement-actions.tsx | 2 +- .../_components/audit-logs-table.tsx | 6 +- src/app/(admin)/admin/backups/page.tsx | 2 +- .../(admin)/admin/backups/restore-form.tsx | 8 +- .../dashboard/_components/recent-section.tsx | 4 +- .../[id]/_components/tabs/inbounds-tab.tsx | 4 +- .../nodes/_components/node-card-list.tsx | 6 +- .../admin/nodes/inbound-delete-button.tsx | 2 +- src/app/(admin)/admin/nodes/node-actions.tsx | 10 +- src/app/(admin)/admin/nodes/node-form.tsx | 10 +- .../admin/orders/_components/orders-table.tsx | 2 +- .../(admin)/admin/payments/config-form.tsx | 17 +-- src/app/(admin)/admin/plans/plan-actions.tsx | 2 +- .../admin/plans/plan-basics-section.tsx | 6 +- src/app/(admin)/admin/plans/plan-form.tsx | 3 +- .../admin/plans/plan-policy-section.tsx | 95 ++++++++------ .../admin/plans/proxy-config-section.tsx | 20 +-- .../services/_components/services-table.tsx | 4 +- .../admin/services/service-actions.tsx | 2 +- .../(admin)/admin/services/service-form.tsx | 4 +- .../(admin)/admin/settings/settings-form.tsx | 116 ++++++++++-------- .../subscription-risk-geo-details.tsx | 6 +- .../_components/subscription-risk-table.tsx | 6 +- .../(admin)/admin/subscription-risk/page.tsx | 2 +- .../subscription-access-risk-section.tsx | 4 +- .../_components/subscriptions-table.tsx | 2 +- .../subscriptions/subscription-actions.tsx | 2 +- .../_components/admin-support-reply-form.tsx | 8 +- .../_components/admin-support-table.tsx | 2 +- .../tasks/_components/task-launch-panel.tsx | 2 +- .../tasks/_components/task-runs-table.tsx | 6 +- .../_components/traffic-clients-table.tsx | 2 +- .../admin/users/_components/users-table.tsx | 2 +- src/app/(admin)/admin/users/user-actions.tsx | 2 +- src/app/(auth)/_components/auth-shell.tsx | 2 +- .../forgot-password-client.tsx | 4 +- .../verify-email-request-client.tsx | 4 +- .../_components/payment-detail-panels.tsx | 4 +- .../[orderId]/_components/payment-frame.tsx | 4 +- .../_components/payment-method-selector.tsx | 2 +- .../_components/payment-success-card.tsx | 4 +- .../pay/[orderId]/pay-page-client.tsx | 6 +- .../_components/account-invite-card.tsx | 2 +- .../_components/account-password-card.tsx | 4 +- .../_components/account-profile-card.tsx | 2 +- src/app/(user)/cart/cart-client.tsx | 4 +- src/app/(user)/cart/page.tsx | 2 +- .../_components/notification-list.tsx | 2 +- .../notifications/notification-actions.tsx | 2 +- .../orders/_components/user-orders-table.tsx | 2 +- src/app/(user)/orders/order-actions.tsx | 2 +- src/app/(user)/store/page.tsx | 2 +- src/app/(user)/store/pending-order-banner.tsx | 2 +- .../(user)/store/proxy-purchase-fields.tsx | 6 +- src/app/(user)/store/proxy-signal-grid.tsx | 2 +- .../store/store-latency-recommendations.tsx | 2 +- src/app/(user)/subscriptions/[id]/page.tsx | 4 +- .../_components/active-subscription-card.tsx | 2 +- .../active-subscriptions-section.tsx | 4 +- .../aggregate-subscription-card.tsx | 2 +- .../history-subscriptions-section.tsx | 2 +- .../proxy-subscription-details.tsx | 4 +- .../_components/renewal-button.tsx | 4 +- .../_components/reset-access-button.tsx | 2 +- .../streaming-subscription-details.tsx | 2 +- .../_components/traffic-topup-dialog.tsx | 4 +- src/app/(user)/subscriptions/page.tsx | 2 +- .../streaming-credential-card.tsx | 4 +- .../create-support-ticket-form.tsx | 8 +- .../_components/support-ticket-reply-form.tsx | 8 +- .../_components/user-support-ticket-table.tsx | 2 +- src/app/(user)/support/page.tsx | 2 +- src/app/verify-email/verify-email-client.tsx | 2 +- src/components/admin/log-delete-button.tsx | 2 +- src/components/shared/metric-card.tsx | 2 +- src/components/shared/page-shell.tsx | 4 +- src/components/shared/traffic-trend-chart.tsx | 4 +- .../subscription-detail-cards.tsx | 4 +- .../subscription-risk-review-actions.tsx | 22 ++-- .../subscription-timeline-section.tsx | 2 +- .../support/admin-ticket-actions.tsx | 2 +- .../support/user-ticket-actions.tsx | 4 +- src/components/ui/boolean-toggle.tsx | 4 +- src/components/ui/inline-help.tsx | 42 +++++++ .../subscription-risk-restriction-gate.tsx | 6 +- 87 files changed, 326 insertions(+), 272 deletions(-) create mode 100644 src/components/ui/inline-help.tsx diff --git a/src/actions/admin/plans.ts b/src/actions/admin/plans.ts index bb34764..4ed2c98 100644 --- a/src/actions/admin/plans.ts +++ b/src/actions/admin/plans.ts @@ -389,9 +389,6 @@ export async function updatePlan(id: string, formData: FormData) { const nodeId = data.nodeId ?? existing.nodeId; if (!nodeId) throw new Error("代理套餐必须选择节点"); - if (data.totalTrafficGb == null || data.totalTrafficGb <= 0) { - throw new Error("代理套餐必须填写总流量池,且大于 0"); - } const inboundIds = parseInboundIds(data.inboundIds, data.inboundId); if (inboundIds.length === 0) { diff --git a/src/app/(admin)/admin/announcements/_components/announcements-table.tsx b/src/app/(admin)/admin/announcements/_components/announcements-table.tsx index a05567e..02a9ae4 100644 --- a/src/app/(admin)/admin/announcements/_components/announcements-table.tsx +++ b/src/app/(admin)/admin/announcements/_components/announcements-table.tsx @@ -32,7 +32,7 @@ export function AnnouncementsTable({ announcements, users }: AnnouncementsTableP (
diff --git a/src/app/(admin)/admin/announcements/announcement-actions.tsx b/src/app/(admin)/admin/announcements/announcement-actions.tsx index 8061c36..8870b0c 100644 --- a/src/app/(admin)/admin/announcements/announcement-actions.tsx +++ b/src/app/(admin)/admin/announcements/announcement-actions.tsx @@ -63,7 +63,7 @@ export function AnnouncementActions({ size="sm" variant="destructive" title="删除这条公告?" - description="公告本体和已经同步的站内通知会一起删除,此操作无法恢复。" + description="会删除公告和同步通知,无法恢复。" confirmLabel="删除公告" successMessage="公告已删除" errorMessage="删除失败" diff --git a/src/app/(admin)/admin/audit-logs/_components/audit-logs-table.tsx b/src/app/(admin)/admin/audit-logs/_components/audit-logs-table.tsx index dcd26ec..e4c66ab 100644 --- a/src/app/(admin)/admin/audit-logs/_components/audit-logs-table.tsx +++ b/src/app/(admin)/admin/audit-logs/_components/audit-logs-table.tsx @@ -24,7 +24,7 @@ export function AuditLogsTable({ logs }: { logs: AuditLog[] }) { (
@@ -36,7 +36,7 @@ export function AuditLogsTable({ logs }: { logs: AuditLog[] }) { id={log.id} target="AUDIT_LOGS" title="删除这条审计日志?" - description="删除后无法恢复。系统会记录一条新的删除审计,用于保留后台操作痕迹。" + description="会新增一条删除审计记录。" successMessage="审计日志已删除" />
@@ -99,7 +99,7 @@ export function AuditLogsTable({ logs }: { logs: AuditLog[] }) { id={log.id} target="AUDIT_LOGS" title="删除这条审计日志?" - description="删除后无法恢复。系统会记录一条新的删除审计,用于保留后台操作痕迹。" + description="会新增一条删除审计记录。" successMessage="审计日志已删除" />
diff --git a/src/app/(admin)/admin/backups/page.tsx b/src/app/(admin)/admin/backups/page.tsx index 331165f..4187f30 100644 --- a/src/app/(admin)/admin/backups/page.tsx +++ b/src/app/(admin)/admin/backups/page.tsx @@ -26,7 +26,7 @@ export default function BackupsPage() {

导出数据库

- 导出为可恢复的 SQL 脚本,适合在升级、迁移和大规模配置调整前做完整备份。 + 导出 SQL 备份,升级或迁移前建议保存。

diff --git a/src/app/(admin)/admin/backups/restore-form.tsx b/src/app/(admin)/admin/backups/restore-form.tsx index 4ccdbfd..3e9b210 100644 --- a/src/app/(admin)/admin/backups/restore-form.tsx +++ b/src/app/(admin)/admin/backups/restore-form.tsx @@ -33,9 +33,7 @@ export function RestoreBackupForm() {

恢复数据库

-

- 支持上传 SQL 备份文件或直接粘贴 SQL。恢复会覆盖当前数据库对象,请确认备份来源可信。 -

+

上传或粘贴 SQL。恢复会覆盖当前数据库。

@@ -46,13 +44,13 @@ export function RestoreBackupForm() {
- +
-