- portal.css: 777-line real design system (Linear/Vercel 信息建筑派)
* tokens: spacing 4/8/12/16/24/32/48, type 12/13/14/15/17/20/24/32/44
* colors: ink/paper/accent/success/warn/danger × 50/100/500/900
* teal #14b8a6 1:1 aligned with host sub2api Vue/Tailwind
* dark-first; light override for public portal
* components: page-hero, stat-card, card, status, pill, btn-primary,
toast-host, empty, skeleton, drawer, tabs
- portal.js: window.Sub2ApiPortal — toast, lucide 1.75px stroke SVG
icon registry (shield/group/activity/route/health/account/provider/
import/check/x/alert/info/copy/edit/trash/plus/refresh/...),
copyToClipboard, theme auto/dark/light, drawer, renderModernAdminNav
- admin-common.css: 4KB legacy shim — maps old class names
(.topnav/.primary/.secondary/.ghost/.danger/.metric/.statusbar/.stat/
.eyebrow/.hero-points/.page-hero__eyebrow/.shell/.fade-in/.topline/
.chip/.tag/.mono/.meta-card/.meta-label/.status-pill/.inline-code/
.tone-*) onto new tokens without breaking admin-common.js nav contract
Evidence:
- bash scripts/test/test_tksea_portal_assets.sh → PASS (70+ string assertions)
- bash scripts/test/verify_frontend_smoke.sh → PASS (chromium headless 7 pages)
deploy 目录说明
日期:2026-05-27
deploy/ 用来存放部署目标会直接消费的静态资产或配置模板。
当前内容:
tksea-portal/index.htmlhttps://sub.tksea.top/portal/的静态页面源码
tksea-portal/admin/index.htmlhttps://sub.tksea.top/portal/admin/的管理首页- 统一收纳“逻辑分组 / 路由”“新增模型 / 供应商目录”和“导入供应商帐号”入口
tksea-portal/admin/logical-groups.htmlhttps://sub.tksea.top/portal/admin/logical-groups.html- 维护
logical_group / public_model / route / shadow_group的最小运营页
tksea-portal/admin/providers.htmlhttps://sub.tksea.top/portal/admin/providers.html- 用现有 CRM API 做 pack/provider 浏览、preview-import、import,以及 provider manifest 草稿生成
- 当前也可直接调用服务端
provider_draftsAPI,把 manifest 草稿持久化到 CRM SQLite,并支持更新 / 删除 / 发布到 pack 仓库
tksea-portal/admin/batch-import.htmlhttps://sub.tksea.top/portal/admin/batch-import.html- 结构化入口地址,当前跳转到 legacy
admin-batch-import.html
tksea-portal/admin-batch-import.htmlhttps://sub.tksea.top/portal/admin-batch-import.html的最小管理页- 直接消费
POST /api/batch-import/runs与GET /api/batch-import/runs/*
tksea-portal/nginx.sub.tksea.top.conf.examplesub.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