9b4a25799f
Replace fixed ackText with a rule-based AckProvider that picks response templates by message type and intent (translate, summary, rewrite, poster, ppt, mindmap, code, search, schedule). Pure sync, zero I/O, auto-falls back to config.ackText on any error. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
54 lines
1.8 KiB
TypeScript
54 lines
1.8 KiB
TypeScript
import { Navigate, Route, Routes } from 'react-router-dom';
|
|
import { OpsLayout } from './components/OpsLayout';
|
|
import { RequireOps } from './components/RequireOps';
|
|
import { RequireAdmin } from './components/RequireAdmin';
|
|
import { AdminLayout } from './components/AdminLayout';
|
|
import { AnalyticsPage } from './pages/AnalyticsPage';
|
|
import { CreatorsPage } from './pages/CreatorsPage';
|
|
import { FeaturedPage } from './pages/FeaturedPage';
|
|
import { ReportsPage } from './pages/ReportsPage';
|
|
import { ReviewPage } from './pages/ReviewPage';
|
|
import { SummaryPage } from './pages/admin/SummaryPage';
|
|
import { UsersPage } from './pages/admin/UsersPage';
|
|
import { BillingPage } from './pages/admin/BillingPage';
|
|
import { WechatPage } from './pages/admin/WechatPage';
|
|
|
|
export function App() {
|
|
return (
|
|
<Routes>
|
|
{/* Plaza ops console */}
|
|
<Route
|
|
element={
|
|
<RequireOps>
|
|
<OpsLayout />
|
|
</RequireOps>
|
|
}
|
|
>
|
|
<Route index element={<ReviewPage />} />
|
|
<Route path="reports" element={<ReportsPage />} />
|
|
<Route path="featured" element={<FeaturedPage />} />
|
|
<Route path="creators" element={<CreatorsPage />} />
|
|
<Route path="analytics" element={<AnalyticsPage />} />
|
|
</Route>
|
|
|
|
{/* Super-admin console */}
|
|
<Route
|
|
path="admin"
|
|
element={
|
|
<RequireAdmin>
|
|
<AdminLayout />
|
|
</RequireAdmin>
|
|
}
|
|
>
|
|
<Route index element={<SummaryPage />} />
|
|
<Route path="users" element={<UsersPage />} />
|
|
<Route path="billing" element={<BillingPage />} />
|
|
<Route path="wechat" element={<WechatPage />} />
|
|
<Route path="*" element={<Navigate to="/admin" replace />} />
|
|
</Route>
|
|
|
|
<Route path="*" element={<Navigate to="/" replace />} />
|
|
</Routes>
|
|
);
|
|
}
|