feat(exc): 专长交易 read-only monitoring pages

New nav group with four pages against the Exc admin API:
- /exc/demands — status/mode filters, detail sheet with related
  services, quotes and dispatch rounds
- /exc/dispatches — status/round filters
- /exc/orders — status/payment filters, detail sheet with items and
  状态流转 audit trail
- /exc/providers — status/verified filters, detail sheet with dispatch
  settings and status logs

Co-Authored-By: Claude Fable 5 <[email protected]>
This commit is contained in:
2026-07-11 14:54:58 +08:00
co-authored by Claude Fable 5
parent f5a7249969
commit ddf07bbf58
10 changed files with 2211 additions and 2 deletions
+84
View File
@@ -27,6 +27,10 @@ import { Route as AuthedStudioRobotAuthorsRouteImport } from './routes/_authed/s
import { Route as AuthedStudioCategoryBriefsRouteImport } from './routes/_authed/studio/category-briefs'
import { Route as AuthedStudioArticlesRouteImport } from './routes/_authed/studio/articles'
import { Route as AuthedStudioAgentTokensRouteImport } from './routes/_authed/studio/agent-tokens'
import { Route as AuthedExcProvidersRouteImport } from './routes/_authed/exc/providers'
import { Route as AuthedExcOrdersRouteImport } from './routes/_authed/exc/orders'
import { Route as AuthedExcDispatchesRouteImport } from './routes/_authed/exc/dispatches'
import { Route as AuthedExcDemandsRouteImport } from './routes/_authed/exc/demands'
import { Route as AuthedCategoriesPendingRouteImport } from './routes/_authed/categories/pending'
const LoginRoute = LoginRouteImport.update({
@@ -122,6 +126,26 @@ const AuthedStudioAgentTokensRoute = AuthedStudioAgentTokensRouteImport.update({
path: '/studio/agent-tokens',
getParentRoute: () => AuthedRoute,
} as any)
const AuthedExcProvidersRoute = AuthedExcProvidersRouteImport.update({
id: '/exc/providers',
path: '/exc/providers',
getParentRoute: () => AuthedRoute,
} as any)
const AuthedExcOrdersRoute = AuthedExcOrdersRouteImport.update({
id: '/exc/orders',
path: '/exc/orders',
getParentRoute: () => AuthedRoute,
} as any)
const AuthedExcDispatchesRoute = AuthedExcDispatchesRouteImport.update({
id: '/exc/dispatches',
path: '/exc/dispatches',
getParentRoute: () => AuthedRoute,
} as any)
const AuthedExcDemandsRoute = AuthedExcDemandsRouteImport.update({
id: '/exc/demands',
path: '/exc/demands',
getParentRoute: () => AuthedRoute,
} as any)
const AuthedCategoriesPendingRoute = AuthedCategoriesPendingRouteImport.update({
id: '/categories/pending',
path: '/categories/pending',
@@ -139,6 +163,10 @@ export interface FileRoutesByFullPath {
'/robots': typeof AuthedRobotsRoute
'/sid': typeof AuthedSidRoute
'/categories/pending': typeof AuthedCategoriesPendingRoute
'/exc/demands': typeof AuthedExcDemandsRoute
'/exc/dispatches': typeof AuthedExcDispatchesRoute
'/exc/orders': typeof AuthedExcOrdersRoute
'/exc/providers': typeof AuthedExcProvidersRoute
'/studio/agent-tokens': typeof AuthedStudioAgentTokensRoute
'/studio/articles': typeof AuthedStudioArticlesRoute
'/studio/category-briefs': typeof AuthedStudioCategoryBriefsRoute
@@ -159,6 +187,10 @@ export interface FileRoutesByTo {
'/sid': typeof AuthedSidRoute
'/': typeof AuthedIndexRoute
'/categories/pending': typeof AuthedCategoriesPendingRoute
'/exc/demands': typeof AuthedExcDemandsRoute
'/exc/dispatches': typeof AuthedExcDispatchesRoute
'/exc/orders': typeof AuthedExcOrdersRoute
'/exc/providers': typeof AuthedExcProvidersRoute
'/studio/agent-tokens': typeof AuthedStudioAgentTokensRoute
'/studio/articles': typeof AuthedStudioArticlesRoute
'/studio/category-briefs': typeof AuthedStudioCategoryBriefsRoute
@@ -181,6 +213,10 @@ export interface FileRoutesById {
'/_authed/sid': typeof AuthedSidRoute
'/_authed/': typeof AuthedIndexRoute
'/_authed/categories/pending': typeof AuthedCategoriesPendingRoute
'/_authed/exc/demands': typeof AuthedExcDemandsRoute
'/_authed/exc/dispatches': typeof AuthedExcDispatchesRoute
'/_authed/exc/orders': typeof AuthedExcOrdersRoute
'/_authed/exc/providers': typeof AuthedExcProvidersRoute
'/_authed/studio/agent-tokens': typeof AuthedStudioAgentTokensRoute
'/_authed/studio/articles': typeof AuthedStudioArticlesRoute
'/_authed/studio/category-briefs': typeof AuthedStudioCategoryBriefsRoute
@@ -203,6 +239,10 @@ export interface FileRouteTypes {
| '/robots'
| '/sid'
| '/categories/pending'
| '/exc/demands'
| '/exc/dispatches'
| '/exc/orders'
| '/exc/providers'
| '/studio/agent-tokens'
| '/studio/articles'
| '/studio/category-briefs'
@@ -223,6 +263,10 @@ export interface FileRouteTypes {
| '/sid'
| '/'
| '/categories/pending'
| '/exc/demands'
| '/exc/dispatches'
| '/exc/orders'
| '/exc/providers'
| '/studio/agent-tokens'
| '/studio/articles'
| '/studio/category-briefs'
@@ -244,6 +288,10 @@ export interface FileRouteTypes {
| '/_authed/sid'
| '/_authed/'
| '/_authed/categories/pending'
| '/_authed/exc/demands'
| '/_authed/exc/dispatches'
| '/_authed/exc/orders'
| '/_authed/exc/providers'
| '/_authed/studio/agent-tokens'
| '/_authed/studio/articles'
| '/_authed/studio/category-briefs'
@@ -387,6 +435,34 @@ declare module '@tanstack/react-router' {
preLoaderRoute: typeof AuthedStudioAgentTokensRouteImport
parentRoute: typeof AuthedRoute
}
'/_authed/exc/providers': {
id: '/_authed/exc/providers'
path: '/exc/providers'
fullPath: '/exc/providers'
preLoaderRoute: typeof AuthedExcProvidersRouteImport
parentRoute: typeof AuthedRoute
}
'/_authed/exc/orders': {
id: '/_authed/exc/orders'
path: '/exc/orders'
fullPath: '/exc/orders'
preLoaderRoute: typeof AuthedExcOrdersRouteImport
parentRoute: typeof AuthedRoute
}
'/_authed/exc/dispatches': {
id: '/_authed/exc/dispatches'
path: '/exc/dispatches'
fullPath: '/exc/dispatches'
preLoaderRoute: typeof AuthedExcDispatchesRouteImport
parentRoute: typeof AuthedRoute
}
'/_authed/exc/demands': {
id: '/_authed/exc/demands'
path: '/exc/demands'
fullPath: '/exc/demands'
preLoaderRoute: typeof AuthedExcDemandsRouteImport
parentRoute: typeof AuthedRoute
}
'/_authed/categories/pending': {
id: '/_authed/categories/pending'
path: '/categories/pending'
@@ -407,6 +483,10 @@ interface AuthedRouteChildren {
AuthedSidRoute: typeof AuthedSidRoute
AuthedIndexRoute: typeof AuthedIndexRoute
AuthedCategoriesPendingRoute: typeof AuthedCategoriesPendingRoute
AuthedExcDemandsRoute: typeof AuthedExcDemandsRoute
AuthedExcDispatchesRoute: typeof AuthedExcDispatchesRoute
AuthedExcOrdersRoute: typeof AuthedExcOrdersRoute
AuthedExcProvidersRoute: typeof AuthedExcProvidersRoute
AuthedStudioAgentTokensRoute: typeof AuthedStudioAgentTokensRoute
AuthedStudioArticlesRoute: typeof AuthedStudioArticlesRoute
AuthedStudioCategoryBriefsRoute: typeof AuthedStudioCategoryBriefsRoute
@@ -427,6 +507,10 @@ const AuthedRouteChildren: AuthedRouteChildren = {
AuthedSidRoute: AuthedSidRoute,
AuthedIndexRoute: AuthedIndexRoute,
AuthedCategoriesPendingRoute: AuthedCategoriesPendingRoute,
AuthedExcDemandsRoute: AuthedExcDemandsRoute,
AuthedExcDispatchesRoute: AuthedExcDispatchesRoute,
AuthedExcOrdersRoute: AuthedExcOrdersRoute,
AuthedExcProvidersRoute: AuthedExcProvidersRoute,
AuthedStudioAgentTokensRoute: AuthedStudioAgentTokensRoute,
AuthedStudioArticlesRoute: AuthedStudioArticlesRoute,
AuthedStudioCategoryBriefsRoute: AuthedStudioCategoryBriefsRoute,