feat(portal): add logical group admin page
This commit is contained in:
@@ -10,7 +10,10 @@
|
||||
- `https://sub.tksea.top/portal/` 的静态页面源码
|
||||
- `tksea-portal/admin/index.html`
|
||||
- `https://sub.tksea.top/portal/admin/` 的管理首页
|
||||
- 统一收纳“新增模型 / 供应商目录”和“导入供应商帐号”入口
|
||||
- 统一收纳“逻辑分组 / 路由”“新增模型 / 供应商目录”和“导入供应商帐号”入口
|
||||
- `tksea-portal/admin/logical-groups.html`
|
||||
- `https://sub.tksea.top/portal/admin/logical-groups.html`
|
||||
- 维护 `logical_group / public_model / route / shadow_group` 的最小运营页
|
||||
- `tksea-portal/admin/providers.html`
|
||||
- `https://sub.tksea.top/portal/admin/providers.html`
|
||||
- 用现有 CRM API 做 pack/provider 浏览、preview-import、import,以及 provider manifest 草稿生成
|
||||
|
||||
@@ -372,6 +372,7 @@
|
||||
<main class="shell">
|
||||
<nav class="topnav" aria-label="Admin Navigation">
|
||||
<a href="/portal/admin/">管理首页</a>
|
||||
<a href="/portal/admin/logical-groups.html">逻辑分组 / 路由</a>
|
||||
<a href="/portal/admin/providers.html">新增模型 / 供应商目录</a>
|
||||
<a href="/portal/admin/batch-import.html" class="is-current">导入供应商帐号</a>
|
||||
<a href="/portal/" target="_blank" rel="noreferrer">用户 Portal</a>
|
||||
|
||||
@@ -250,6 +250,7 @@
|
||||
<main class="shell">
|
||||
<nav class="topnav" aria-label="Admin Navigation">
|
||||
<a href="/portal/admin/" class="is-current">管理首页</a>
|
||||
<a href="/portal/admin/logical-groups.html">逻辑分组 / 路由</a>
|
||||
<a href="/portal/admin/providers.html">新增模型 / 供应商目录</a>
|
||||
<a href="/portal/admin/batch-import.html">导入供应商帐号</a>
|
||||
<a href="/portal/" target="_blank" rel="noreferrer">用户 Portal</a>
|
||||
@@ -276,6 +277,10 @@
|
||||
<div class="metric-label">统一入口</div>
|
||||
<div class="metric-value">/portal/admin/</div>
|
||||
</div>
|
||||
<div class="metric">
|
||||
<div class="metric-label">Logical Group</div>
|
||||
<div class="metric-value">/logical-groups</div>
|
||||
</div>
|
||||
<div class="metric">
|
||||
<div class="metric-label">Provider 目录</div>
|
||||
<div class="metric-value">/providers</div>
|
||||
@@ -288,6 +293,28 @@
|
||||
</section>
|
||||
|
||||
<section class="grid">
|
||||
<article class="card panel">
|
||||
<h2>逻辑分组 / 路由</h2>
|
||||
<p>
|
||||
这页给插件前置路由使用,负责维护 <code>logical_group</code>、<code>public_model</code>、
|
||||
<code>route</code> 与 <code>shadow_host_id / shadow_group_id</code> 的关系。当前首版已经能直接调
|
||||
<code>/api/logical-groups</code> 系列接口,适合先把 canonical shadow route 收进统一管理面。
|
||||
</p>
|
||||
<div class="cta-row">
|
||||
<a class="cta primary" href="/portal/admin/logical-groups.html">打开逻辑分组页</a>
|
||||
</div>
|
||||
<ul class="list">
|
||||
<li>
|
||||
<strong>适用动作</strong>
|
||||
创建 logical group、绑定 public model、维护 route 与 shadow group 映射。
|
||||
</li>
|
||||
<li>
|
||||
<strong>默认 API Base</strong>
|
||||
<code>https://sub.tksea.top/portal-admin-api</code>
|
||||
</li>
|
||||
</ul>
|
||||
</article>
|
||||
|
||||
<article class="card panel">
|
||||
<h2>新增模型 / 供应商目录</h2>
|
||||
<p>
|
||||
@@ -337,8 +364,8 @@
|
||||
<section class="status-grid">
|
||||
<article class="status-card status-available">
|
||||
<div class="metric-label">可立即使用</div>
|
||||
<strong>Provider 浏览 + 导入</strong>
|
||||
<p>依赖现有 <code>/api/packs</code>、<code>/api/providers/*</code>、<code>/api/batch-import/*</code> 即可完成。</p>
|
||||
<strong>逻辑分组 + Provider 导入</strong>
|
||||
<p>依赖现有 <code>/api/logical-groups</code>、<code>/api/packs</code>、<code>/api/providers/*</code>、<code>/api/batch-import/*</code> 即可完成。</p>
|
||||
</article>
|
||||
<article class="status-card status-note">
|
||||
<div class="metric-label">当前边界</div>
|
||||
|
||||
1350
deploy/tksea-portal/admin/logical-groups.html
Normal file
1350
deploy/tksea-portal/admin/logical-groups.html
Normal file
File diff suppressed because it is too large
Load Diff
@@ -359,6 +359,7 @@
|
||||
<main class="shell">
|
||||
<nav class="topnav" aria-label="Admin Navigation">
|
||||
<a href="/portal/admin/">管理首页</a>
|
||||
<a href="/portal/admin/logical-groups.html">逻辑分组 / 路由</a>
|
||||
<a href="/portal/admin/providers.html" class="is-current">新增模型 / 供应商目录</a>
|
||||
<a href="/portal/admin/batch-import.html">导入供应商帐号</a>
|
||||
<a href="/portal/" target="_blank" rel="noreferrer">用户 Portal</a>
|
||||
|
||||
@@ -169,6 +169,7 @@ tksea portal deployed
|
||||
remote: ${REMOTE}
|
||||
portal url: https://sub.tksea.top/portal/
|
||||
portal admin home url: https://sub.tksea.top/portal/admin/
|
||||
logical groups admin url: https://sub.tksea.top/portal/admin/logical-groups.html
|
||||
provider admin url: https://sub.tksea.top/portal/admin/providers.html
|
||||
batch import admin url: https://sub.tksea.top/portal/admin/batch-import.html
|
||||
batch import admin url: https://sub.tksea.top/portal/admin-batch-import.html
|
||||
|
||||
@@ -325,6 +325,12 @@ write_body() {
|
||||
}
|
||||
|
||||
case "$url" in
|
||||
*/api/admin/session/login)
|
||||
write_body '{"authenticated":true,"username":"portal-admin"}'
|
||||
;;
|
||||
*/api/admin/session)
|
||||
write_body '{"authenticated":true,"login_enabled":true,"username":"portal-admin"}'
|
||||
;;
|
||||
*/api/hosts)
|
||||
write_body '{"host_id":"remote43-current-host"}'
|
||||
;;
|
||||
@@ -490,6 +496,8 @@ EOF
|
||||
KEY="/does/not/matter" \
|
||||
REMOTE="fake@host" \
|
||||
CRM_BASE="http://127.0.0.1:18088" \
|
||||
CRM_ADMIN_USERNAME="portal-admin" \
|
||||
CRM_ADMIN_PASSWORD="portal-pass" \
|
||||
HOST_BASE="http://127.0.0.1:18087" \
|
||||
CRM_HOST_BASE="http://127.0.0.1:18093" \
|
||||
REMOTE_HOST_BASE="http://127.0.0.1:18093" \
|
||||
|
||||
@@ -5,6 +5,7 @@ ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
||||
HTML_FILE="$ROOT_DIR/deploy/tksea-portal/index.html"
|
||||
ADMIN_HTML_FILE="$ROOT_DIR/deploy/tksea-portal/admin-batch-import.html"
|
||||
ADMIN_HOME_FILE="$ROOT_DIR/deploy/tksea-portal/admin/index.html"
|
||||
ADMIN_LOGICAL_GROUPS_FILE="$ROOT_DIR/deploy/tksea-portal/admin/logical-groups.html"
|
||||
ADMIN_PROVIDERS_FILE="$ROOT_DIR/deploy/tksea-portal/admin/providers.html"
|
||||
ADMIN_BATCH_FILE="$ROOT_DIR/deploy/tksea-portal/admin/batch-import.html"
|
||||
NGINX_FILE="$ROOT_DIR/deploy/tksea-portal/nginx.sub.tksea.top.conf.example"
|
||||
@@ -26,6 +27,7 @@ assert_contains_file() {
|
||||
[[ -f "$HTML_FILE" ]] || fail "missing $HTML_FILE"
|
||||
[[ -f "$ADMIN_HTML_FILE" ]] || fail "missing $ADMIN_HTML_FILE"
|
||||
[[ -f "$ADMIN_HOME_FILE" ]] || fail "missing $ADMIN_HOME_FILE"
|
||||
[[ -f "$ADMIN_LOGICAL_GROUPS_FILE" ]] || fail "missing $ADMIN_LOGICAL_GROUPS_FILE"
|
||||
[[ -f "$ADMIN_PROVIDERS_FILE" ]] || fail "missing $ADMIN_PROVIDERS_FILE"
|
||||
[[ -f "$ADMIN_BATCH_FILE" ]] || fail "missing $ADMIN_BATCH_FILE"
|
||||
[[ -f "$NGINX_FILE" ]] || fail "missing $NGINX_FILE"
|
||||
@@ -51,6 +53,7 @@ assert_contains_file "$HTML_FILE" "deepseek-chat"
|
||||
|
||||
assert_contains_file "$ADMIN_HTML_FILE" "Batch Import Admin"
|
||||
assert_contains_file "$ADMIN_HTML_FILE" "/portal/admin/"
|
||||
assert_contains_file "$ADMIN_HTML_FILE" "/portal/admin/logical-groups.html"
|
||||
assert_contains_file "$ADMIN_HTML_FILE" "/portal/admin/providers.html"
|
||||
assert_contains_file "$ADMIN_HTML_FILE" "/portal/admin/batch-import.html"
|
||||
assert_contains_file "$ADMIN_HTML_FILE" "/portal-admin-api"
|
||||
@@ -65,13 +68,32 @@ assert_contains_file "$ADMIN_HTML_FILE" "reused"
|
||||
assert_contains_file "$ADMIN_HTML_FILE" "reactivated"
|
||||
|
||||
assert_contains_file "$ADMIN_HOME_FILE" "Admin Portal"
|
||||
assert_contains_file "$ADMIN_HOME_FILE" "/portal/admin/logical-groups.html"
|
||||
assert_contains_file "$ADMIN_HOME_FILE" "/portal/admin/providers.html"
|
||||
assert_contains_file "$ADMIN_HOME_FILE" "/portal/admin/batch-import.html"
|
||||
assert_contains_file "$ADMIN_HOME_FILE" "/portal-admin-api"
|
||||
assert_contains_file "$ADMIN_HOME_FILE" "浏览器提交到 CRM"
|
||||
assert_contains_file "$ADMIN_HOME_FILE" "逻辑分组 / 路由"
|
||||
|
||||
assert_contains_file "$ADMIN_LOGICAL_GROUPS_FILE" "Logical Group Admin"
|
||||
assert_contains_file "$ADMIN_LOGICAL_GROUPS_FILE" "/portal/admin/"
|
||||
assert_contains_file "$ADMIN_LOGICAL_GROUPS_FILE" "/portal/admin/logical-groups.html"
|
||||
assert_contains_file "$ADMIN_LOGICAL_GROUPS_FILE" "/portal/admin/providers.html"
|
||||
assert_contains_file "$ADMIN_LOGICAL_GROUPS_FILE" "/portal/admin/batch-import.html"
|
||||
assert_contains_file "$ADMIN_LOGICAL_GROUPS_FILE" "/api/admin/session/login"
|
||||
assert_contains_file "$ADMIN_LOGICAL_GROUPS_FILE" "/api/admin/session/logout"
|
||||
assert_contains_file "$ADMIN_LOGICAL_GROUPS_FILE" "/api/admin/session"
|
||||
assert_contains_file "$ADMIN_LOGICAL_GROUPS_FILE" "/api/logical-groups"
|
||||
assert_contains_file "$ADMIN_LOGICAL_GROUPS_FILE" "logical_group"
|
||||
assert_contains_file "$ADMIN_LOGICAL_GROUPS_FILE" "shadow_group_id"
|
||||
assert_contains_file "$ADMIN_LOGICAL_GROUPS_FILE" "shadow_host_id"
|
||||
assert_contains_file "$ADMIN_LOGICAL_GROUPS_FILE" "首版页面只覆盖新增与查看"
|
||||
assert_contains_file "$ADMIN_LOGICAL_GROUPS_FILE" 'credentials: "include"'
|
||||
assert_contains_file "$ADMIN_LOGICAL_GROUPS_FILE" "/portal-admin-api"
|
||||
|
||||
assert_contains_file "$ADMIN_PROVIDERS_FILE" "Provider Admin"
|
||||
assert_contains_file "$ADMIN_PROVIDERS_FILE" "管理员登录"
|
||||
assert_contains_file "$ADMIN_PROVIDERS_FILE" "/portal/admin/logical-groups.html"
|
||||
assert_contains_file "$ADMIN_PROVIDERS_FILE" "/api/admin/session/login"
|
||||
assert_contains_file "$ADMIN_PROVIDERS_FILE" "/api/admin/session/logout"
|
||||
assert_contains_file "$ADMIN_PROVIDERS_FILE" "/api/admin/session"
|
||||
@@ -114,6 +136,7 @@ assert_contains_file "$NGINX_FILE" "location /kimi-portal-proxy/"
|
||||
|
||||
assert_contains_file "$DEPLOY_SCRIPT" "portal url: https://sub.tksea.top/portal/"
|
||||
assert_contains_file "$DEPLOY_SCRIPT" "portal admin home url: https://sub.tksea.top/portal/admin/"
|
||||
assert_contains_file "$DEPLOY_SCRIPT" "logical groups admin url: https://sub.tksea.top/portal/admin/logical-groups.html"
|
||||
assert_contains_file "$DEPLOY_SCRIPT" "provider admin url: https://sub.tksea.top/portal/admin/providers.html"
|
||||
assert_contains_file "$DEPLOY_SCRIPT" "batch import admin url: https://sub.tksea.top/portal/admin/batch-import.html"
|
||||
assert_contains_file "$DEPLOY_SCRIPT" "batch import admin url: https://sub.tksea.top/portal/admin-batch-import.html"
|
||||
|
||||
Reference in New Issue
Block a user