Files
sub2api-cn-relay-manager/deploy
phamnazage-jpg 09f7c07de3
Some checks failed
CI / Build & Test (push) Has been cancelled
CI / Lint (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / Docker Build (push) Has been cancelled
CI / Release (push) Has been cancelled
feat(portal): make provider/batch-import form fields self-explanatory + auto-fill
Problem: provider manifest form had all-empty fields with cryptic
placeholders, users had to know what model IDs to type.

Fix on /portal/admin/providers.html (Provider Manifest 草稿):
- DISPLAY NAME: datalist of common vendors (OpenAI / DeepSeek /
  硅基流动 / Moonshot / 智谱 / Anthropic / 零一万物 / MiniMax / Qwen / Baichuan / 混元)
- PLATFORM: datalist of common platforms (openai / openai-compatible /
  deepseek / anthropic / gemini / zhipu / moonshot / minimax / qwen / ...)
- SMOKE TEST MODEL: datalist of common smoke models + auto-fills with
  first model from MODELS field if user leaves it empty
- BASE URL PLACEHOLDER: datalist of common base URLs (12 presets)
- MODELS: chip-row of 11 common models (gpt-5.4, gpt-5.4-mini,
  deepseek-chat, MiniMax-M2.7-highspeed, kimi-k2.6, glm-4.6,
  claude-sonnet-4-5, gemini-2.5-pro, qwen3-coder-plus, gpt-4o, o4-mini)
  + clear button. Click chip → append to MODELS field (dedup).
- KEYS textarea: 6 rows + example placeholder (sk-example-1/2/3)

Fix on /portal/admin-batch-import.html (发起导入):
- HOST ID: datalist of common host_ids + hint about loading pack first
- ENTRIES textarea: 6 rows + multi-line hint explaining
  base_url|api_key|model1,model2 format, optional model, batch import

JS change: syncDraftHelperState() in providers.html now auto-fills
smoke_test_model with first model if user hasn't filled it yet.
Also fixed: 2 duplicate copies of syncDraftHelperState (from
earlier batch script restoration) — both now have the new logic.

Verification:
- bash scripts/test/test_tksea_portal_assets.sh → PASS
- bash scripts/test/verify_frontend_smoke.sh → PASS
- browser_console click test: gpt-5.4 + deepseek-chat + kimi-k2.6 chips
  → models='gpt-5.4,deepseek-chat,kimi-k2.6' + smoke='gpt-5.4' auto-fill ✓
- screenshot: /tmp/portal-screenshots/admin-providers-v5.png
2026-06-03 11:24:54 +08:00
..

deploy 目录说明

日期2026-05-27

deploy/ 用来存放部署目标会直接消费的静态资产或配置模板。

当前内容:

  • tksea-portal/index.html
    • 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 草稿生成
    • 当前也可直接调用服务端 provider_drafts API把 manifest 草稿持久化到 CRM SQLite并支持更新 / 删除 / 发布到 pack 仓库
  • tksea-portal/admin/batch-import.html
    • https://sub.tksea.top/portal/admin/batch-import.html
    • 结构化入口地址,当前跳转到 legacy admin-batch-import.html
  • tksea-portal/admin-batch-import.html
    • https://sub.tksea.top/portal/admin-batch-import.html 的最小管理页
    • 直接消费 POST /api/batch-import/runsGET /api/batch-import/runs/*
  • tksea-portal/nginx.sub.tksea.top.conf.example
    • sub.tksea.top 上 portal 路由与代理示例
    • 当前同时包含 /portal-proxy/ 宿主用户态代理与 /portal-admin-api/ CRM 管理态代理

它和 scripts/ 的边界如下:

  • deploy/
    • 放静态页、Nginx/Caddy/Env 模板、会被复制到目标机上的文件
  • scripts/
    • 放执行复制、部署、reload、验收的脚本

当前对应关系:

  • 资产:deploy/tksea-portal/*
  • 部署脚本:scripts/deploy/deploy_tksea_portal.sh
  • 资产回归:scripts/test/test_tksea_portal_assets.sh