feat: build reporting workbench workflow
This commit is contained in:
+209
-114
@@ -8,7 +8,7 @@ import { RouteLoadBoundary } from './RouteLoadBoundary';
|
||||
|
||||
function lazyNamed(loader: () => Promise<unknown>, exportName: string): LazyExoticComponent<ComponentType<any>> {
|
||||
return lazy(async () => {
|
||||
const loaded = await loader() as Record<string, ComponentType>;
|
||||
const loaded = (await loader()) as Record<string, ComponentType>;
|
||||
const component = loaded[exportName];
|
||||
if (!component) throw new Error(`Lazy route export ${exportName} was not found`);
|
||||
return { default: component };
|
||||
@@ -16,53 +16,135 @@ function lazyNamed(loader: () => Promise<unknown>, exportName: string): LazyExot
|
||||
}
|
||||
|
||||
const AdminAnalyticsPage = lazyNamed(() => import('@/apps/admin/AdminAnalyticsPage'), 'AdminAnalyticsPage');
|
||||
const AdminChannelGroupFormPage = lazyNamed(() => import('@/apps/admin/AdminChannelGroupFormPage'), 'AdminChannelGroupFormPage');
|
||||
const AdminChannelGroupFormPage = lazyNamed(
|
||||
() => import('@/apps/admin/AdminChannelGroupFormPage'),
|
||||
'AdminChannelGroupFormPage',
|
||||
);
|
||||
const AdminChannelGroupsPage = lazyNamed(() => import('@/apps/admin/AdminChannelGroupsPage'), 'AdminChannelGroupsPage');
|
||||
const AdminChannelsPage = lazyNamed(() => import('@/apps/admin/AdminChannelsPage'), 'AdminChannelsPage');
|
||||
const AdminChannelReportPage = lazyNamed(() => import('@/apps/admin/AdminChannelReportPage'), 'AdminChannelReportPage');
|
||||
const AdminCustomerDetailPage = lazyNamed(() => import('@/apps/admin/AdminCustomerDetailPage'), 'AdminCustomerDetailPage');
|
||||
const AdminCustomerDetailPage = lazyNamed(
|
||||
() => import('@/apps/admin/AdminCustomerDetailPage'),
|
||||
'AdminCustomerDetailPage',
|
||||
);
|
||||
const AdminCustomerFormPage = lazyNamed(() => import('@/apps/admin/AdminCustomerFormPage'), 'AdminCustomerFormPage');
|
||||
const AdminCustomersPage = lazyNamed(() => import('@/apps/admin/AdminCustomersPage'), 'AdminCustomersPage');
|
||||
const AdminDrainageFieldsPage = lazyNamed(() => import('@/apps/admin/AdminDrainageFieldsPage'), 'AdminDrainageFieldsPage');
|
||||
const AdminDrainageDetectionRulesPage = lazyNamed(() => import('@/apps/admin/AdminDrainageDetectionRulesPage'), 'AdminDrainageDetectionRulesPage');
|
||||
const AdminDownstreamDeliveriesPage = lazyNamed(() => import('@/apps/admin/AdminDownstreamDeliveriesPage'), 'AdminDownstreamDeliveriesPage');
|
||||
const AdminDownstreamRecoveryStatusesPage = lazyNamed(() => import('@/apps/admin/AdminDownstreamRecoveryStatusesPage'), 'AdminDownstreamRecoveryStatusesPage');
|
||||
const AdminEnterpriseApplicationsPage = lazyNamed(() => import('@/apps/admin/AdminEnterpriseApplicationsPage'), 'AdminEnterpriseApplicationsPage');
|
||||
const AdminEnterpriseBlacklistPage = lazyNamed(() => import('@/apps/admin/AdminEnterpriseBlacklistPage'), 'AdminEnterpriseBlacklistPage');
|
||||
const AdminEnterpriseSignaturesPage = lazyNamed(() => import('@/apps/admin/AdminEnterpriseSignaturesPage'), 'AdminEnterpriseSignaturesPage');
|
||||
const AdminEnterpriseTemplatesPage = lazyNamed(() => import('@/apps/admin/AdminEnterpriseTemplatesPage'), 'AdminEnterpriseTemplatesPage');
|
||||
const AdminGlobalBlacklistPage = lazyNamed(() => import('@/apps/admin/AdminGlobalBlacklistPage'), 'AdminGlobalBlacklistPage');
|
||||
const AdminGatewaySubmitExceptionsPage = lazyNamed(() => import('@/apps/admin/AdminGatewaySubmitExceptionsPage'), 'AdminGatewaySubmitExceptionsPage');
|
||||
const AdminDrainageFieldsPage = lazyNamed(
|
||||
() => import('@/apps/admin/AdminDrainageFieldsPage'),
|
||||
'AdminDrainageFieldsPage',
|
||||
);
|
||||
const AdminDrainageDetectionRulesPage = lazyNamed(
|
||||
() => import('@/apps/admin/AdminDrainageDetectionRulesPage'),
|
||||
'AdminDrainageDetectionRulesPage',
|
||||
);
|
||||
const AdminDownstreamDeliveriesPage = lazyNamed(
|
||||
() => import('@/apps/admin/AdminDownstreamDeliveriesPage'),
|
||||
'AdminDownstreamDeliveriesPage',
|
||||
);
|
||||
const AdminDownstreamRecoveryStatusesPage = lazyNamed(
|
||||
() => import('@/apps/admin/AdminDownstreamRecoveryStatusesPage'),
|
||||
'AdminDownstreamRecoveryStatusesPage',
|
||||
);
|
||||
const AdminEnterpriseApplicationsPage = lazyNamed(
|
||||
() => import('@/apps/admin/AdminEnterpriseApplicationsPage'),
|
||||
'AdminEnterpriseApplicationsPage',
|
||||
);
|
||||
const AdminEnterpriseBlacklistPage = lazyNamed(
|
||||
() => import('@/apps/admin/AdminEnterpriseBlacklistPage'),
|
||||
'AdminEnterpriseBlacklistPage',
|
||||
);
|
||||
const AdminEnterpriseSignaturesPage = lazyNamed(
|
||||
() => import('@/apps/admin/AdminEnterpriseSignaturesPage'),
|
||||
'AdminEnterpriseSignaturesPage',
|
||||
);
|
||||
const AdminEnterpriseTemplatesPage = lazyNamed(
|
||||
() => import('@/apps/admin/AdminEnterpriseTemplatesPage'),
|
||||
'AdminEnterpriseTemplatesPage',
|
||||
);
|
||||
const AdminGlobalBlacklistPage = lazyNamed(
|
||||
() => import('@/apps/admin/AdminGlobalBlacklistPage'),
|
||||
'AdminGlobalBlacklistPage',
|
||||
);
|
||||
const AdminGatewaySubmitExceptionsPage = lazyNamed(
|
||||
() => import('@/apps/admin/AdminGatewaySubmitExceptionsPage'),
|
||||
'AdminGatewaySubmitExceptionsPage',
|
||||
);
|
||||
const AdminHome = lazyNamed(() => import('@/apps/admin/AdminHome'), 'AdminHome');
|
||||
const AdminMonitorPage = lazyNamed(() => import('@/apps/admin/AdminMonitorPage'), 'AdminMonitorPage');
|
||||
const AdminPhoneSegmentsPage = lazyNamed(() => import('@/apps/admin/AdminPhoneSegmentsPage'), 'AdminPhoneSegmentsPage');
|
||||
const AdminRechargeRecordsPage = lazyNamed(() => import('@/apps/admin/AdminRechargeRecordsPage'), 'AdminRechargeRecordsPage');
|
||||
const AdminReconciliationReportsPage = lazyNamed(() => import('@/apps/admin/AdminReconciliationReportsPage'), 'AdminReconciliationReportsPage');
|
||||
const AdminRechargeRecordsPage = lazyNamed(
|
||||
() => import('@/apps/admin/AdminRechargeRecordsPage'),
|
||||
'AdminRechargeRecordsPage',
|
||||
);
|
||||
const AdminReconciliationReportsPage = lazyNamed(
|
||||
() => import('@/apps/admin/AdminReconciliationReportsPage'),
|
||||
'AdminReconciliationReportsPage',
|
||||
);
|
||||
const AdminProfitReportsPage = lazyNamed(() => import('@/apps/admin/AdminProfitReportsPage'), 'AdminProfitReportsPage');
|
||||
const AdminQualityReportsPage = lazyNamed(() => import('@/apps/admin/AdminQualityReportsPage'), 'AdminQualityReportsPage');
|
||||
const AdminQualityReportsPage = lazyNamed(
|
||||
() => import('@/apps/admin/AdminQualityReportsPage'),
|
||||
'AdminQualityReportsPage',
|
||||
);
|
||||
const AdminReportRecordsPage = lazyNamed(() => import('@/apps/admin/AdminReportRecordsPage'), 'AdminReportRecordsPage');
|
||||
const AdminReportTasksPage = lazyNamed(() => import('@/apps/admin/AdminReportTasksPage'), 'AdminReportTasksPage');
|
||||
const AdminReportMaterialsPage = lazyNamed(() => import('@/apps/admin/AdminReportMaterialsPage'), 'AdminReportMaterialsPage');
|
||||
const AdminSensitiveWordsPage = lazyNamed(() => import('@/apps/admin/AdminSensitiveWordsPage'), 'AdminSensitiveWordsPage');
|
||||
const AdminReportMaterialsPage = lazyNamed(
|
||||
() => import('@/apps/admin/AdminReportMaterialsPage'),
|
||||
'AdminReportMaterialsPage',
|
||||
);
|
||||
const AdminReportBatchesPage = lazyNamed(() => import('@/apps/admin/AdminReportBatchesPage'), 'AdminReportBatchesPage');
|
||||
const AdminSensitiveWordsPage = lazyNamed(
|
||||
() => import('@/apps/admin/AdminSensitiveWordsPage'),
|
||||
'AdminSensitiveWordsPage',
|
||||
);
|
||||
const AdminSmsAuditPage = lazyNamed(() => import('@/apps/admin/AdminSmsAuditPage'), 'AdminSmsAuditPage');
|
||||
const AdminRiskRulesPage = lazyNamed(() => import('@/apps/admin/AdminRiskRulesPage'), 'AdminRiskRulesPage');
|
||||
const AdminSmsApplicationFormPage = lazyNamed(() => import('@/apps/admin/AdminSmsApplicationFormPage'), 'AdminSmsApplicationFormPage');
|
||||
const AdminSmsApplicationFormPage = lazyNamed(
|
||||
() => import('@/apps/admin/AdminSmsApplicationFormPage'),
|
||||
'AdminSmsApplicationFormPage',
|
||||
);
|
||||
const AdminSmsRecordsPage = lazyNamed(() => import('@/apps/admin/AdminSmsRecordsPage'), 'AdminSmsRecordsPage');
|
||||
const AdminSmsTaskProgressPage = lazyNamed(() => import('@/apps/admin/AdminSmsTaskProgressPage'), 'AdminSmsTaskProgressPage');
|
||||
const AdminSmsUplinkRecordsPage = lazyNamed(() => import('@/apps/admin/AdminSmsUplinkRecordsPage'), 'AdminSmsUplinkRecordsPage');
|
||||
const AdminSignatureAuditPage = lazyNamed(() => import('@/apps/admin/AdminSignatureAuditPage'), 'AdminSignatureAuditPage');
|
||||
const AdminSignatureRetirementPage = lazyNamed(() => import('@/apps/admin/AdminSignatureRetirementPage'), 'AdminSignatureRetirementPage');
|
||||
const AdminSmsTaskProgressPage = lazyNamed(
|
||||
() => import('@/apps/admin/AdminSmsTaskProgressPage'),
|
||||
'AdminSmsTaskProgressPage',
|
||||
);
|
||||
const AdminSmsUplinkRecordsPage = lazyNamed(
|
||||
() => import('@/apps/admin/AdminSmsUplinkRecordsPage'),
|
||||
'AdminSmsUplinkRecordsPage',
|
||||
);
|
||||
const AdminSignatureAuditPage = lazyNamed(
|
||||
() => import('@/apps/admin/AdminSignatureAuditPage'),
|
||||
'AdminSignatureAuditPage',
|
||||
);
|
||||
const AdminSignatureRetirementPage = lazyNamed(
|
||||
() => import('@/apps/admin/AdminSignatureRetirementPage'),
|
||||
'AdminSignatureRetirementPage',
|
||||
);
|
||||
const AdminDrainageAuditPage = lazyNamed(() => import('@/apps/admin/AdminDrainageAuditPage'), 'AdminDrainageAuditPage');
|
||||
const AdminSystemLogsPage = lazyNamed(() => import('@/apps/admin/AdminSystemLogsPage'), 'AdminSystemLogsPage');
|
||||
const AdminSystemMonitoringPage = lazyNamed(() => import('@/apps/admin/system-monitoring/AdminSystemMonitoringPage'), 'AdminSystemMonitoringPage');
|
||||
const AdminSecurityDetectionPage = lazyNamed(() => import('@/apps/admin/security-detection/AdminSecurityDetectionPage'), 'AdminSecurityDetectionPage');
|
||||
const AdminSystemMonitoringPage = lazyNamed(
|
||||
() => import('@/apps/admin/system-monitoring/AdminSystemMonitoringPage'),
|
||||
'AdminSystemMonitoringPage',
|
||||
);
|
||||
const AdminSecurityDetectionPage = lazyNamed(
|
||||
() => import('@/apps/admin/security-detection/AdminSecurityDetectionPage'),
|
||||
'AdminSecurityDetectionPage',
|
||||
);
|
||||
const AdminTemplateAuditPage = lazyNamed(() => import('@/apps/admin/AdminTemplateAuditPage'), 'AdminTemplateAuditPage');
|
||||
const AdminUsersPage = lazyNamed(() => import('@/apps/admin/AdminUsersPage'), 'AdminUsersPage');
|
||||
const AdminEnterpriseAuditPage = lazyNamed(() => import('@/apps/admin/AdminEnterpriseAuditPage'), 'AdminEnterpriseAuditPage');
|
||||
const ClientApplicationsPage = lazyNamed(() => import('@/apps/client/ClientApplicationsPage'), 'ClientApplicationsPage');
|
||||
const AdminEnterpriseAuditPage = lazyNamed(
|
||||
() => import('@/apps/admin/AdminEnterpriseAuditPage'),
|
||||
'AdminEnterpriseAuditPage',
|
||||
);
|
||||
const ClientApplicationsPage = lazyNamed(
|
||||
() => import('@/apps/client/ClientApplicationsPage'),
|
||||
'ClientApplicationsPage',
|
||||
);
|
||||
const ClientBatchTasksPage = lazyNamed(() => import('@/apps/client/ClientBatchTasksPage'), 'ClientBatchTasksPage');
|
||||
const ClientBillingPage = lazyNamed(() => import('@/apps/client/ClientBillingPage'), 'ClientBillingPage');
|
||||
const ClientEnterpriseAuthPage = lazyNamed(() => import('@/apps/client/ClientEnterpriseAuthPage'), 'ClientEnterpriseAuthPage');
|
||||
const ClientEnterpriseAuthPage = lazyNamed(
|
||||
() => import('@/apps/client/ClientEnterpriseAuthPage'),
|
||||
'ClientEnterpriseAuthPage',
|
||||
);
|
||||
const ClientHome = lazyNamed(() => import('@/apps/client/ClientHome'), 'ClientHome');
|
||||
const ClientHttpApiPage = lazyNamed(() => import('@/apps/client/ClientHttpApiPage'), 'ClientHttpApiPage');
|
||||
const ClientSendDetailPage = lazyNamed(() => import('@/apps/client/ClientSendDetailPage'), 'ClientSendDetailPage');
|
||||
@@ -70,98 +152,111 @@ const ClientSendPage = lazyNamed(() => import('@/apps/client/ClientSendPage'), '
|
||||
const ClientSignaturesPage = lazyNamed(() => import('@/apps/client/ClientSignaturesPage'), 'ClientSignaturesPage');
|
||||
const ClientSystemLogsPage = lazyNamed(() => import('@/apps/client/ClientSystemLogsPage'), 'ClientSystemLogsPage');
|
||||
const ClientTemplatesPage = lazyNamed(() => import('@/apps/client/ClientTemplatesPage'), 'ClientTemplatesPage');
|
||||
const ClientUplinkMessagesPage = lazyNamed(() => import('@/apps/client/ClientUplinkMessagesPage'), 'ClientUplinkMessagesPage');
|
||||
const ClientUplinkMessagesPage = lazyNamed(
|
||||
() => import('@/apps/client/ClientUplinkMessagesPage'),
|
||||
'ClientUplinkMessagesPage',
|
||||
);
|
||||
const ClientUsersPage = lazyNamed(() => import('@/apps/client/ClientUsersPage'), 'ClientUsersPage');
|
||||
|
||||
export function AppRoutes() {
|
||||
return (
|
||||
<RouteLoadBoundary>
|
||||
<Suspense fallback={<div className="page-stack"><div className="surface ui-table__empty">页面加载中...</div></div>}>
|
||||
<Suspense
|
||||
fallback={
|
||||
<div className="page-stack">
|
||||
<div className="surface ui-table__empty">页面加载中...</div>
|
||||
</div>
|
||||
}
|
||||
>
|
||||
<Routes>
|
||||
<Route path="/" element={<Navigate to="/client" replace />} />
|
||||
<Route path="/client/login" element={<LoginPage portal="client" />} />
|
||||
<Route path="/admin/login" element={<LoginPage portal="admin" />} />
|
||||
<Route path="/client" element={<ClientLayout />}>
|
||||
<Route index element={<ClientHome />} />
|
||||
<Route path="send" element={<ClientSendPage />} />
|
||||
<Route path="batch-tasks" element={<ClientBatchTasksPage />} />
|
||||
<Route path="send-detail" element={<ClientSendDetailPage />} />
|
||||
<Route path="uplink-messages" element={<ClientUplinkMessagesPage />} />
|
||||
<Route path="applications" element={<ClientApplicationsPage />} />
|
||||
<Route path="http-api" element={<ClientHttpApiPage />} />
|
||||
<Route path="templates" element={<ClientTemplatesPage />} />
|
||||
<Route path="signatures" element={<ClientSignaturesPage />} />
|
||||
<Route path="mms-signatures" element={<PagePlaceholder />} />
|
||||
<Route path="mms-templates" element={<PagePlaceholder />} />
|
||||
<Route path="mms-send" element={<PagePlaceholder />} />
|
||||
<Route path="mms-batch-tasks" element={<PagePlaceholder />} />
|
||||
<Route path="mms-send-detail" element={<PagePlaceholder />} />
|
||||
<Route path="mms-uplink-messages" element={<PagePlaceholder />} />
|
||||
<Route path="billing" element={<ClientBillingPage />} />
|
||||
<Route path="enterprise-auth" element={<ClientEnterpriseAuthPage />} />
|
||||
<Route path="users" element={<ClientUsersPage />} />
|
||||
<Route path="system-logs" element={<ClientSystemLogsPage />} />
|
||||
<Route path="*" element={<PagePlaceholder />} />
|
||||
</Route>
|
||||
<Route path="/admin" element={<AdminLayout />}>
|
||||
<Route index element={<AdminHome />} />
|
||||
<Route path="monitor" element={<AdminMonitorPage />} />
|
||||
<Route path="gateway-submit-exceptions" element={<AdminGatewaySubmitExceptionsPage />} />
|
||||
<Route path="analytics" element={<AdminAnalyticsPage />} />
|
||||
<Route path="customers" element={<AdminCustomersPage />} />
|
||||
<Route path="customers/new" element={<AdminCustomerFormPage />} />
|
||||
<Route path="customers/:enterpriseId" element={<AdminCustomerDetailPage />} />
|
||||
<Route path="customers/:enterpriseId/edit" element={<AdminCustomerFormPage />} />
|
||||
<Route path="customers/:enterpriseId/sms-apps/new" element={<AdminSmsApplicationFormPage />} />
|
||||
<Route path="customers/:enterpriseId/sms-apps/:appId/edit" element={<AdminSmsApplicationFormPage />} />
|
||||
<Route path="customers/:enterpriseId/mms-apps/new" element={<PagePlaceholder />} />
|
||||
<Route path="customers/:enterpriseId/mms-apps/:appId/edit" element={<PagePlaceholder />} />
|
||||
<Route path="customer-enterprises" element={<AdminCustomersPage basePath="/admin/customer-enterprises" />} />
|
||||
<Route path="customer-enterprises/new" element={<AdminCustomerFormPage />} />
|
||||
<Route path="customer-enterprises/:enterpriseId" element={<AdminCustomerDetailPage />} />
|
||||
<Route path="customer-enterprises/:enterpriseId/edit" element={<AdminCustomerFormPage />} />
|
||||
<Route path="enterprise-applications" element={<AdminEnterpriseApplicationsPage />} />
|
||||
<Route path="enterprise-signatures" element={<AdminEnterpriseSignaturesPage />} />
|
||||
<Route path="enterprise-templates" element={<AdminEnterpriseTemplatesPage />} />
|
||||
<Route path="templates" element={<AdminTemplateAuditPage />} />
|
||||
<Route path="signatures" element={<AdminSignatureAuditPage />} />
|
||||
<Route path="drainage-audits" element={<AdminDrainageAuditPage />} />
|
||||
<Route path="enterprise-audit" element={<AdminEnterpriseAuditPage />} />
|
||||
<Route path="sms-audit" element={<AdminSmsAuditPage />} />
|
||||
<Route path="risk-rules" element={<AdminRiskRulesPage />} />
|
||||
<Route path="signature-retirement" element={<AdminSignatureRetirementPage />} />
|
||||
<Route path="report-tasks" element={<AdminReportTasksPage />} />
|
||||
<Route path="report-materials" element={<AdminReportMaterialsPage />} />
|
||||
<Route path="report-records" element={<AdminReportRecordsPage />} />
|
||||
<Route path="sms-task-progress" element={<AdminSmsTaskProgressPage />} />
|
||||
<Route path="mms-task-progress" element={<PagePlaceholder />} />
|
||||
<Route path="sms-records" element={<AdminSmsRecordsPage />} />
|
||||
<Route path="mms-records" element={<PagePlaceholder />} />
|
||||
<Route path="sms-uplink-records" element={<AdminSmsUplinkRecordsPage />} />
|
||||
<Route path="downstream-deliveries" element={<AdminDownstreamDeliveriesPage />} />
|
||||
<Route path="downstream-recovery-statuses" element={<AdminDownstreamRecoveryStatusesPage />} />
|
||||
<Route path="recharge-records" element={<AdminRechargeRecordsPage />} />
|
||||
<Route path="reconciliation-reports" element={<AdminReconciliationReportsPage />} />
|
||||
<Route path="profit-reports" element={<AdminProfitReportsPage />} />
|
||||
<Route path="quality-reports" element={<AdminQualityReportsPage />} />
|
||||
<Route path="channels" element={<AdminChannelsPage />} />
|
||||
<Route path="channels/:channelId/reports" element={<AdminChannelReportPage />} />
|
||||
<Route path="channel-groups" element={<AdminChannelGroupsPage />} />
|
||||
<Route path="channel-groups/new" element={<AdminChannelGroupFormPage />} />
|
||||
<Route path="channel-groups/:groupId/edit" element={<AdminChannelGroupFormPage />} />
|
||||
<Route path="mms-channels" element={<PagePlaceholder />} />
|
||||
<Route path="enterprise-blacklist" element={<AdminEnterpriseBlacklistPage />} />
|
||||
<Route path="global-blacklist" element={<AdminGlobalBlacklistPage />} />
|
||||
<Route path="sensitive-words" element={<AdminSensitiveWordsPage />} />
|
||||
<Route path="users" element={<AdminUsersPage />} />
|
||||
<Route path="phone-segments" element={<AdminPhoneSegmentsPage />} />
|
||||
<Route path="drainage-fields" element={<AdminDrainageFieldsPage />} />
|
||||
<Route path="drainage-detection-rules" element={<AdminDrainageDetectionRulesPage />} />
|
||||
<Route path="system-logs" element={<AdminSystemLogsPage />} />
|
||||
<Route path="system-monitoring" element={<AdminSystemMonitoringPage />} />
|
||||
<Route path="security-detection" element={<AdminSecurityDetectionPage />} />
|
||||
<Route path="*" element={<PagePlaceholder />} />
|
||||
</Route>
|
||||
<Route path="/" element={<Navigate to="/client" replace />} />
|
||||
<Route path="/client/login" element={<LoginPage portal="client" />} />
|
||||
<Route path="/admin/login" element={<LoginPage portal="admin" />} />
|
||||
<Route path="/client" element={<ClientLayout />}>
|
||||
<Route index element={<ClientHome />} />
|
||||
<Route path="send" element={<ClientSendPage />} />
|
||||
<Route path="batch-tasks" element={<ClientBatchTasksPage />} />
|
||||
<Route path="send-detail" element={<ClientSendDetailPage />} />
|
||||
<Route path="uplink-messages" element={<ClientUplinkMessagesPage />} />
|
||||
<Route path="applications" element={<ClientApplicationsPage />} />
|
||||
<Route path="http-api" element={<ClientHttpApiPage />} />
|
||||
<Route path="templates" element={<ClientTemplatesPage />} />
|
||||
<Route path="signatures" element={<ClientSignaturesPage />} />
|
||||
<Route path="mms-signatures" element={<PagePlaceholder />} />
|
||||
<Route path="mms-templates" element={<PagePlaceholder />} />
|
||||
<Route path="mms-send" element={<PagePlaceholder />} />
|
||||
<Route path="mms-batch-tasks" element={<PagePlaceholder />} />
|
||||
<Route path="mms-send-detail" element={<PagePlaceholder />} />
|
||||
<Route path="mms-uplink-messages" element={<PagePlaceholder />} />
|
||||
<Route path="billing" element={<ClientBillingPage />} />
|
||||
<Route path="enterprise-auth" element={<ClientEnterpriseAuthPage />} />
|
||||
<Route path="users" element={<ClientUsersPage />} />
|
||||
<Route path="system-logs" element={<ClientSystemLogsPage />} />
|
||||
<Route path="*" element={<PagePlaceholder />} />
|
||||
</Route>
|
||||
<Route path="/admin" element={<AdminLayout />}>
|
||||
<Route index element={<AdminHome />} />
|
||||
<Route path="monitor" element={<AdminMonitorPage />} />
|
||||
<Route path="gateway-submit-exceptions" element={<AdminGatewaySubmitExceptionsPage />} />
|
||||
<Route path="analytics" element={<AdminAnalyticsPage />} />
|
||||
<Route path="customers" element={<AdminCustomersPage />} />
|
||||
<Route path="customers/new" element={<AdminCustomerFormPage />} />
|
||||
<Route path="customers/:enterpriseId" element={<AdminCustomerDetailPage />} />
|
||||
<Route path="customers/:enterpriseId/edit" element={<AdminCustomerFormPage />} />
|
||||
<Route path="customers/:enterpriseId/sms-apps/new" element={<AdminSmsApplicationFormPage />} />
|
||||
<Route path="customers/:enterpriseId/sms-apps/:appId/edit" element={<AdminSmsApplicationFormPage />} />
|
||||
<Route path="customers/:enterpriseId/mms-apps/new" element={<PagePlaceholder />} />
|
||||
<Route path="customers/:enterpriseId/mms-apps/:appId/edit" element={<PagePlaceholder />} />
|
||||
<Route
|
||||
path="customer-enterprises"
|
||||
element={<AdminCustomersPage basePath="/admin/customer-enterprises" />}
|
||||
/>
|
||||
<Route path="customer-enterprises/new" element={<AdminCustomerFormPage />} />
|
||||
<Route path="customer-enterprises/:enterpriseId" element={<AdminCustomerDetailPage />} />
|
||||
<Route path="customer-enterprises/:enterpriseId/edit" element={<AdminCustomerFormPage />} />
|
||||
<Route path="enterprise-applications" element={<AdminEnterpriseApplicationsPage />} />
|
||||
<Route path="enterprise-signatures" element={<AdminEnterpriseSignaturesPage />} />
|
||||
<Route path="enterprise-templates" element={<AdminEnterpriseTemplatesPage />} />
|
||||
<Route path="templates" element={<AdminTemplateAuditPage />} />
|
||||
<Route path="signatures" element={<AdminSignatureAuditPage />} />
|
||||
<Route path="drainage-audits" element={<AdminDrainageAuditPage />} />
|
||||
<Route path="enterprise-audit" element={<AdminEnterpriseAuditPage />} />
|
||||
<Route path="sms-audit" element={<AdminSmsAuditPage />} />
|
||||
<Route path="risk-rules" element={<AdminRiskRulesPage />} />
|
||||
<Route path="signature-retirement" element={<AdminSignatureRetirementPage />} />
|
||||
<Route path="report-tasks" element={<AdminReportTasksPage />} />
|
||||
<Route path="report-materials" element={<AdminReportMaterialsPage />} />
|
||||
<Route path="report-batches" element={<AdminReportBatchesPage />} />
|
||||
<Route path="report-records" element={<AdminReportRecordsPage />} />
|
||||
<Route path="sms-task-progress" element={<AdminSmsTaskProgressPage />} />
|
||||
<Route path="mms-task-progress" element={<PagePlaceholder />} />
|
||||
<Route path="sms-records" element={<AdminSmsRecordsPage />} />
|
||||
<Route path="mms-records" element={<PagePlaceholder />} />
|
||||
<Route path="sms-uplink-records" element={<AdminSmsUplinkRecordsPage />} />
|
||||
<Route path="downstream-deliveries" element={<AdminDownstreamDeliveriesPage />} />
|
||||
<Route path="downstream-recovery-statuses" element={<AdminDownstreamRecoveryStatusesPage />} />
|
||||
<Route path="recharge-records" element={<AdminRechargeRecordsPage />} />
|
||||
<Route path="reconciliation-reports" element={<AdminReconciliationReportsPage />} />
|
||||
<Route path="profit-reports" element={<AdminProfitReportsPage />} />
|
||||
<Route path="quality-reports" element={<AdminQualityReportsPage />} />
|
||||
<Route path="channels" element={<AdminChannelsPage />} />
|
||||
<Route path="channels/:channelId/reports" element={<AdminChannelReportPage />} />
|
||||
<Route path="channel-groups" element={<AdminChannelGroupsPage />} />
|
||||
<Route path="channel-groups/new" element={<AdminChannelGroupFormPage />} />
|
||||
<Route path="channel-groups/:groupId/edit" element={<AdminChannelGroupFormPage />} />
|
||||
<Route path="mms-channels" element={<PagePlaceholder />} />
|
||||
<Route path="enterprise-blacklist" element={<AdminEnterpriseBlacklistPage />} />
|
||||
<Route path="global-blacklist" element={<AdminGlobalBlacklistPage />} />
|
||||
<Route path="sensitive-words" element={<AdminSensitiveWordsPage />} />
|
||||
<Route path="users" element={<AdminUsersPage />} />
|
||||
<Route path="phone-segments" element={<AdminPhoneSegmentsPage />} />
|
||||
<Route path="drainage-fields" element={<AdminDrainageFieldsPage />} />
|
||||
<Route path="drainage-detection-rules" element={<AdminDrainageDetectionRulesPage />} />
|
||||
<Route path="system-logs" element={<AdminSystemLogsPage />} />
|
||||
<Route path="system-monitoring" element={<AdminSystemMonitoringPage />} />
|
||||
<Route path="security-detection" element={<AdminSecurityDetectionPage />} />
|
||||
<Route path="*" element={<PagePlaceholder />} />
|
||||
</Route>
|
||||
</Routes>
|
||||
</Suspense>
|
||||
</RouteLoadBoundary>
|
||||
|
||||
Reference in New Issue
Block a user