diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 148c024..d544556 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -59,6 +59,9 @@ const UserPortal = React.lazy(() => import('@/pages/UserPortal')); const WechatBot = React.lazy(() => import('@/pages/front/WechatBot')); const ImBotHub = React.lazy(() => import('@/pages/front/ImBotHub')); const AppServices = React.lazy(() => import('@/pages/front/AppServices')); +const MarketProducts = React.lazy(() => import('@/pages/front/MarketProducts')); +const MarketProductDetail = React.lazy(() => import('@/pages/front/MarketProductDetail')); +const MarketProductsAdmin = React.lazy(() => import('@/pages/admin/MarketProductsAdmin')); const pageFallback =
+ 审核 / 挂起 / 恢复 / 下线 独立可部署产品(MuMuAINovel 等)。共 {total} 条记录。 +
+| 名称 | +Slug | +形态 | +计费 | +状态 | +上架时间 | +操作 | +
|---|---|---|---|---|---|---|
|
+
+
+ 🚀
+ {p.name}
+ |
+ {p.slug} | +{p.product_kind} | +{p.billing_plan} | ++ {sc.label} + | +{(p.published_at || '').slice(0, 10) || '—'} | + e.stopPropagation()}>
+
+ {p.status === 'pending' && (
+
+ )}
+ {p.status === 'active' && (
+
+ )}
+ {p.status === 'suspended' && (
+
+ )}
+ {p.status !== 'deprecated' && (
+
+ )}
+
+ |
+
{product.description || '暂无描述'}
++ 本产品采用 OIDC 单点登录。点击右侧"{product.requires_approval ? '申请访问' : '立即打开'}"按钮后, + 平台会生成一次性 OIDC 跳转地址,自动携带短期 Bearer Token。重定向到产品端后将获得你的身份与权限范围。 +
+
+{`# 1. 获取跳转地址(后端已封装为 launch_url,浏览器可直接跳转)
+POST /app/api/market/products/${product.id}/launch
+Authorization: Bearer
+
+# 2. 跳转后产品在 Authorization 头拿到短期 token,验证身份后进入主界面
+GET ${product.endpoint_url || 'https://.../api/me'}
+Authorization: Bearer `}
+
+ + 浏览平台已上架的 AI 应用产品。每个产品均为独立可部署服务,通过 OIDC 单点登录接入,健康状态实时探针。 +
+{p.description || '暂无描述'}
+