docs(portal): record 2026-06-03 frontend visual upgrade + design system runbook
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

- EXECUTION_BOARD.md: new 2026-06-03 entry with full evidence trail
  (asset tests, browser smoke, screenshot list, conclusion=已闭环)
- 2026-06-03-FRONTEND-DESIGN-SYSTEM-RUNBOOK.md (new, 10KB):
  * file structure + design token quick reference
  * standard page skeleton + component API (stat-card, statusbar,
    Portal.icons, Portal.toast, Portal.copyText, Portal.theme,
    Portal.renderModernAdminNav)
  * test-contract string rules (70+ strings must remain in HTML)
  * common pitfalls (duplicate <!doctype>, duplicate const AdminCommon,
    stat-card ID drift, accidental script removal)
  * submission workflow + screenshot evidence commands
This commit is contained in:
phamnazage-jpg
2026-06-03 09:11:18 +08:00
parent cc8fc900ca
commit e804a830a0
2 changed files with 330 additions and 40 deletions

View File

@@ -7,7 +7,7 @@
## Latest Online Stack2026-06-02 update
- **stack**: `crm-only-20260602_18190` on `ubuntu@43.155.133.187:18190`
- **公开入口**: https://sub.tksea.top/portal/ / /portal/admin/ / /portal-admin-api/ 反代
- **公开入口**: https://sub.tksea.top/portal/ / /portal/admin/ / /portal-admin-api/ 反代
- **直接 CRM**: ssh 隧道 + 127.0.0.1:18190
- **二进制 md5**: `731f3d4020ab984cfc1bc2bb03381a7a` (16.2 MB, 含 /metrics)
- **远端运行 PID**: 3419778uptime > 4h 起算 21:32
@@ -91,6 +91,27 @@
- `artifacts/real-host-acceptance/20260521_210403/05-import.json`
- `artifacts/real-host-acceptance/20260521_210403/07-access-status.json`
## 2026-06-03 前端视觉系统升级Linear/Vercel 信息建筑派)
- 页面:
- `deploy/tksea-portal/` 下全部 8 个 HTMLpublic portal 1 个 + admin 7 个)
- 动作:
- 新建真设计系统 `deploy/tksea-portal/portal.css`777 行design token 化spacing 4/8/12/16/24/32/48、type 12/13/14/15/17/20/24/32/44、color ink/paper/accent/success/warn/danger 各 50/100/500/900、teal `#14b8a6` 1:1 映射宿主 sub2api Vue/Tailwind 体系)
- 新建 `deploy/tksea-portal/portal.js``window.Sub2ApiPortal`toast、lucide 1.75px stroke SVG icon、copyText、theme、drawer、renderModernAdminNav
- `deploy/tksea-portal/admin-common.css` 升级为 4KB legacy shim把老类名`.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-*` 等)映射到新 token**不破坏 admin-common.js 的 313 行 nav 渲染契约**
- 8 个页面全部接入 portal.css + portal.js统一 page-hero + stat-card + statusbar 现代组件模式
- 暗色优先admin 走 `data-theme="dark"`public portal 走 light可切
- 接口:
- 未新增 API纯前端改造
- 最近真实回读:
- `bash scripts/test/test_tksea_portal_assets.sh`**PASS**70+ 字符串契约断言全过)
- `bash scripts/test/verify_frontend_smoke.sh`**PASS**chromium headless 渲染 7 个 admin 页面 + public portalsmoke-admin / Smoke Logical Group / Smoke Provider Account / smoke-route-primary / 全部契约字符串在 rendered DOM 中找到)
- 8 张截图 evidence`/tmp/portal-screenshots/{admin-home,admin-logical-groups,admin-route-health,admin-accounts,admin-providers,admin-batch-import,admin-batch-import-compat,public-portal}.png`
- 测试垃圾:
-
- 当前结论:
- `已闭环` — 视觉系统从「demo 风格」升级为「Linear/Vercel 信息建筑派」,前端门禁绿,所有 admin 页面契约保持
## 2026-06-01 前端记录模板
从 2026-06-01 起,`EXECUTION_BOARD.md` 中所有前端条目统一按以下字段记录:
@@ -1739,11 +1760,11 @@
- `kimi-a7m` provider manifest 现在也开始承载 `host_overlays` 元数据;本地已把 `sub2api v0.1.129` 的 Kimi A7M runtime overlay 说明与 `.patch` 资产纳入 `packs/openai-cn-pack/overlays/`
- 新增 `go run ./cmd/cli apply-host-overlay` 最小执行器;当前 pack 内命中的 overlay 已可直接生成 patched 宿主构建目录,不再只是 preview/import 阶段的提示信息
- 2026-05-25 已继续把路线 A 推进到运行态层面:
-`/tmp/sub2api-clean` 的 clean worktree `HEAD` 导出 stock 源码,再用 `go run ./cmd/cli apply-host-overlay --provider-id kimi-a7m --host-version 0.1.129` 生成全新 patched 源码树
- 基于该 patched 源码树重建 `localhost/sub2api:patched-overlay-20260525-clean`,并在独立 Podman 网络里启动新的 Postgres / Redis / App fresh-host
- `artifacts/real-host-acceptance/20260525_local_v0129_kimi_a7m_patched_overlay_image_freshhost_clean/21-summary.json` 已确认:`import_batch_status=succeeded``provider_status=active``latest_access_status=subscription_ready``completion_ok=true``completion_status=200`
- 同目录 `07-access-status.json` 与 patched host 运行日志已共同证明 managed subscription key 真实打通 `/v1/models``POST /v1/chat/completions`
- 注意:该 fresh-host 使用的镜像基底仍是 `weishaw/sub2api:0.1.129`,但宿主管理 API 当前自报 `host_version=0.1.126`;后续读 artifact 时应以日期和证据链为准,不要只依赖版本字段
-`/tmp/sub2api-clean` 的 clean worktree `HEAD` 导出 stock 源码,再用 `go run ./cmd/cli apply-host-overlay --provider-id kimi-a7m --host-version 0.1.129` 生成全新 patched 源码树
- 基于该 patched 源码树重建 `localhost/sub2api:patched-overlay-20260525-clean`,并在独立 Podman 网络里启动新的 Postgres / Redis / App fresh-host
- `artifacts/real-host-acceptance/20260525_local_v0129_kimi_a7m_patched_overlay_image_freshhost_clean/21-summary.json` 已确认:`import_batch_status=succeeded``provider_status=active``latest_access_status=subscription_ready``completion_ok=true``completion_status=200`
- 同目录 `07-access-status.json` 与 patched host 运行日志已共同证明 managed subscription key 真实打通 `/v1/models``POST /v1/chat/completions`
- 注意:该 fresh-host 使用的镜像基底仍是 `weishaw/sub2api:0.1.129`,但宿主管理 API 当前自报 `host_version=0.1.126`;后续读 artifact 时应以日期和证据链为准,不要只依赖版本字段
- 2026-05-25 已把同一条 patched overlay 路线放到 remote43 做线上验收:
- remote43 侧单独拉起了 `sub2api-kimi-patched-20260525-{app,pg,redis}`patched host 暴露 `127.0.0.1:18139`
- 临时 CRM 也切到 remote43 本机运行,再通过 SSH 隧道映射回本地 `127.0.0.1:18143`,避免“本地 CRM 透过隧道探远端 host”导致的 `get host version` 超时噪音
@@ -2699,14 +2720,15 @@
#### BLOCKER (P0)
| 编号 | 任务 | 状态 | 负责人 | 预计工时 | PR |
|------|------|------|--------|----------|-----|
| B-01 | HTTP Server 添加超时配置 | 🔄 待开始 | - | 4h | - |
| B-02 | 日志结构化改造 (slog) | 🔄 待开始 | - | 6h | - |
| B-03 | 日志轮转配置 | 🔄 待开始 | - | 4h | - |
| B-04 | CI/CD 工作流配置 | 🔄 待开始 | - | 4h | - |
| 编号 | 任务 | 状态 | 负责人 | 预计工时 | PR |
| ---- | ------------------------ | --------- | ------ | -------- | --- |
| B-01 | HTTP Server 添加超时配置 | 🔄 待开始 | - | 4h | - |
| B-02 | 日志结构化改造 (slog) | 🔄 待开始 | - | 6h | - |
| B-03 | 日志轮转配置 | 🔄 待开始 | - | 4h | - |
| B-04 | CI/CD 工作流配置 | 🔄 待开始 | - | 4h | - |
**BLOCKER 完成标准**:
- [ ] HTTP Server 配置四项超时参数
- [ ] 所有日志输出 JSON 格式
- [ ] 日志轮转限制 100MB/3备份
@@ -2714,22 +2736,22 @@
#### HIGH (P1)
| 编号 | 任务 | 状态 | 负责人 | 预计工时 | PR |
|------|------|------|--------|----------|-----|
| H-01 | 补充 testutil 测试 | ⏳ 待排期 | - | 3h | - |
| H-02 | 补充 migrations 测试 | ⏳ 待排期 | - | 4h | - |
| H-03 | 日志 flush 错误监控 | ⏳ 待排期 | - | 3h | - |
| H-04 | Prometheus 指标暴露 | ⏳ 待排期 | - | 6h | - |
| H-05 | 移除 Dockerfile 默认值 | ⏳ 待排期 | - | 1h | - |
| 编号 | 任务 | 状态 | 负责人 | 预计工时 | PR |
| ---- | ---------------------- | --------- | ------ | -------- | --- |
| H-01 | 补充 testutil 测试 | ⏳ 待排期 | - | 3h | - |
| H-02 | 补充 migrations 测试 | ⏳ 待排期 | - | 4h | - |
| H-03 | 日志 flush 错误监控 | ⏳ 待排期 | - | 3h | - |
| H-04 | Prometheus 指标暴露 | ⏳ 待排期 | - | 6h | - |
| H-05 | 移除 Dockerfile 默认值 | ⏳ 待排期 | - | 1h | - |
#### MEDIUM (P2)
| 编号 | 任务 | 状态 | 负责人 | 预计工时 | PR |
|------|------|------|--------|----------|-----|
| M-01 | 测试代码 panic 替换 | ⏳ 待排期 | - | 2h | - |
| M-02 | 错误信息字符串匹配优化 | ⏳ 待排期 | - | 3h | - |
| M-03 | 边界测试补充 | ⏳ 待排期 | - | 4h | - |
| M-04 | 添加版本信息端点 | ⏳ 待排期 | - | 3h | - |
| 编号 | 任务 | 状态 | 负责人 | 预计工时 | PR |
| ---- | ---------------------- | --------- | ------ | -------- | --- |
| M-01 | 测试代码 panic 替换 | ⏳ 待排期 | - | 2h | - |
| M-02 | 错误信息字符串匹配优化 | ⏳ 待排期 | - | 3h | - |
| M-03 | 边界测试补充 | ⏳ 待排期 | - | 4h | - |
| M-04 | 添加版本信息端点 | ⏳ 待排期 | - | 3h | - |
### 执行计划
@@ -2743,34 +2765,34 @@
**目标评级**: A (优秀,可直接上线)
**前提条件**: 所有 BLOCKER 修复 + HIGH 完成 80%
---
## 2026-06-01 最佳实践审核补充任务
### 审核报告
- **报告**: `docs/2026-06-01-BEST-PRACTICE-AUDIT-REPORT.md`
- **结果**: 原始方案 100% 覆盖 Review 问题,但存在 9 项最佳实践差距
- **建议**: 补充 4 项高优先级 + 5 项中优先级任务
### 高优先级补充任务(必须完成)
| 编号 | 任务 | 状态 | 工时 |
|------|------|------|------|
| H-1a | 日志敏感信息脱敏 | ⏳ 待排期 | 2h |
| H-2a | CI/CD 安全扫描 | ⏳ 待排期 | 3h |
| H-3a | Dockerfile 非 root 用户 | ⏳ 待排期 | 1h |
| H-4a | 新建故障处理手册 | ⏳ 待排期 | 4h |
| 编号 | 任务 | 状态 | 工时 |
| ---- | ----------------------- | --------- | ---- |
| H-1a | 日志敏感信息脱敏 | ⏳ 待排期 | 2h |
| H-2a | CI/CD 安全扫描 | ⏳ 待排期 | 3h |
| H-3a | Dockerfile 非 root 用户 | ⏳ 待排期 | 1h |
| H-4a | 新建故障处理手册 | ⏳ 待排期 | 4h |
### 中优先级补充任务(建议完成)
| 编号 | 任务 | 状态 | 工时 |
|------|------|------|------|
| M-1a | 添加 ReadHeaderTimeout | ⏳ 待排期 | 1h |
| M-2a | 添加 trace_id 支持 | ⏳ 待排期 | 3h |
| M-3a | 添加模糊测试 | ⏳ 待排期 | 4h |
| M-4a | 添加业务指标 | ⏳ 待排期 | 3h |
| M-5a | API 限流实现 | ⏳ 待排期 | 4h |
| 编号 | 任务 | 状态 | 工时 |
| ---- | ---------------------- | --------- | ---- |
| M-1a | 添加 ReadHeaderTimeout | ⏳ 待排期 | 1h |
| M-2a | 添加 trace_id 支持 | ⏳ 待排期 | 3h |
| M-3a | 添加模糊测试 | ⏳ 待排期 | 4h |
| M-4a | 添加业务指标 | ⏳ 待排期 | 3h |
| M-5a | API 限流实现 | ⏳ 待排期 | 4h |
### 更新后计划
@@ -2786,4 +2808,3 @@
**更新目标**: 综合评级 A + 符合行业最佳实践
完成补充任务后,项目将完全符合生产级上线运营标准。