Add a dedicated acceptance script for providers.html, cover it in the local real-host script regression suite, and document the current frontend review baseline, closure audit, providers action matrix, and remediation task board. This keeps the frontend acceptance boundary explicit: providers.html now has a repeatable verification entry point for its page-level actions, while non-UI provider operations remain documented as backend-only capabilities.
12 KiB
12 KiB
sub2api-cn-relay-manager 前端闭环审计(2026-05-31)
日期:2026-05-31
审计范围
本次审计只覆盖仓库中实际存在的前端资产与其证据链:
deploy/tksea-portal/index.htmldeploy/tksea-portal/admin/index.htmldeploy/tksea-portal/admin/logical-groups.htmldeploy/tksea-portal/admin/route-health.htmldeploy/tksea-portal/admin/accounts.htmldeploy/tksea-portal/admin/providers.htmldeploy/tksea-portal/admin-batch-import.htmldeploy/tksea-portal/admin/batch-import.htmldeploy/tksea-portal/nginx.sub.tksea.top.conf.example
审计方法
本轮没有做新的公网浏览器操作,也没有重跑依赖 remote43 的在线 acceptance。
本轮实际完成的是:
- 复核前端静态资产与导航一致性
- 对照页面实际调用的 API 与后端路由注册
- 复核
EXECUTION_BOARD.md中已有的远端真验证据 - 基于仓库证据把每页状态统一打标
本轮已实际执行并通过:
bash ./scripts/test/test_tksea_portal_assets.sh
结果:PASS: tksea portal assets look consistent
状态定义
已接线:页面存在,API 已注册,静态检查通过历史已闭环:仓库内存在明确远端真验证据,但本轮未重新在线复验部分闭环:核心链路有闭环证据,但不是整页所有动作都被充分证明仅兼容入口:页面本身不承载业务,只负责跳转或兼容旧地址
总结结论
1. 是否“前端功能都正常”
不能直接下这个结论。
当前更准确的说法是:
- 多数已交付页面具备历史闭环证据
- 本轮本地静态回归通过,说明页面资产、导航、关键 API 前缀当前未明显漂移
- 但仓库没有形成持续的前端 E2E 门禁,所以“现在全都正常”仍不能只靠仓库证明
2. 是否“功能闭环”
不是所有页面都处于同一成熟度。
logical-groups / route-health / accounts / portal有较强历史闭环证据providers的草稿发布链闭环证据明确,但整页所有导入变体没有同等强度的统一证明admin/batch-import.html只是兼容跳转页,不算独立闭环页
3. 是否“与后端对齐”
核心已交付页面与后端接口整体对齐,且页面文案多数没有夸大后端尚未提供的能力。
4. 是否“UI 一致”
管理端 UI 基本一致,但实现方式是多份静态 HTML 手工维护,不是共享组件体系。 所以可以说“当前视觉与导航大体一致”,不能说“工程上已稳定一致”。
页面级审计矩阵
1. 用户 Portal /portal/
- 资产:
deploy/tksea-portal/index.html - 当前状态:
历史已闭环 - 前后端对齐:
是 - UI 一致性:
与用户态目标一致,但不与 admin 共用组件 - 证据:
- 页面实际读取:
/portal-proxy/api/v1/portal-admin-api/api/portal
PORTAL_CATALOG_PREFIX = "/portal-admin-api/api/portal",见index.htmlEXECUTION_BOARD已记录:- P4-T1:portal catalog API 远端真验通过
- P4-T2:
/portal/已切到 logical group catalog - P4-T3:权限、订阅、Key 已投影回 logical group
- P4-T4:使用建议与模型说明已接到公开聚合 API
- 页面实际读取:
- 审计判断:
- “目录、权限、订阅、历史 key 投影”这条链路有历史闭环证据
- 但“申请测试 Key”仍依赖宿主兼容线路,不是完全独立产品闭环
2. 管理首页 /portal/admin/
- 资产:
deploy/tksea-portal/admin/index.html - 当前状态:
已接线 - 前后端对齐:
基本成立 - UI 一致性:
好 - 证据:
- 提供到 logical groups / route health / accounts / providers / batch import 的统一入口
- 静态资产回归脚本持续检查这些导航项存在
- 审计判断:
- 这是入口页,不是业务闭环页
- 它的价值在于导航与边界表达,不在于独立业务闭环
3. Logical Group Admin
- 资产:
deploy/tksea-portal/admin/logical-groups.html - 当前状态:
历史已闭环 - 前后端对齐:
强 - UI 一致性:
好 - 证据:
- 页面直接消费
/api/logical-groups及 group / route / route-model 相关接口 - 页面明确声明 route-model 首版只支持新增与查看,不假装已支持 delete / update
EXECUTION_BOARDP2-T1 已记录:- 管理员登录成功
POST /api/logical-groups成功POST /api/logical-groups/{group_id}/routes成功GET /api/logical-groups/{group_id}已回读到shadow_group_id / shadow_host_id / upstream_base_url_hint
- 页面直接消费
- 审计判断:
- 从仓库证据看,这页已经不只是“页面存在”,而是确实完成了
logical_group -> route -> shadow_group最小闭环
- 从仓库证据看,这页已经不只是“页面存在”,而是确实完成了
4. Route Health Admin
- 资产:
deploy/tksea-portal/admin/route-health.html - 当前状态:
历史已闭环 - 前后端对齐:
强 - UI 一致性:
好 - 证据:
- 页面直接消费
GET /api/routing/routes/health - acceptance 脚本
verify_route_health_ui.sh明确验证:- 页面返回
Route Health Admin - route cooldown / failure 状态能被写入并回读
resolve会自动切到 fallback route- failover 日志与健康视图一致
- 页面返回
EXECUTION_BOARDP2-T3 已记录:- 公网健康页
HTTP 200 primary=cooldownfailing=failingresolve.route_id=fallback-*recent_failover_count=1
- 公网健康页
- 页面直接消费
- 审计判断:
- 这是目前证据最强的前端页之一
- 不只是“看状态”,而是和真实路由运行态对齐过
5. Provider Accounts Admin
- 资产:
deploy/tksea-portal/admin/accounts.html - 当前状态:
历史已闭环 - 前后端对齐:
强 - UI 一致性:
好 - 证据:
- 页面直接消费:
GET /api/provider-accountsPOST /enablePOST /disablePOST /retireGET /binding-candidatesPOST /binding
- 页面文案明确限制:
- 当前动作只改插件
provider_accounts状态,不假装联动宿主 account
- 当前动作只改插件
EXECUTION_BOARDP3-T2 / P3-T3 已记录:- 真实样本可完成
disable -> list -> enable -> list -> retire -> list - conflict binding 可读
binding-candidates可读POST /binding可 assignPOST /binding {"clear":true}可恢复 conflict
- 真实样本可完成
- 页面直接消费:
- 审计判断:
- 帐号库存、启停、显式整理 route 归属三条链都已有远端真验
- 这页不是“展示页”,而是实操页
6. Provider Admin
- 资产:
deploy/tksea-portal/admin/providers.html - 当前状态:
部分闭环 - 前后端对齐:
强 - UI 一致性:
好 - 证据:
- 页面直接消费:
/api/packs/api/hosts/api/packs/{pack_id}/providers/api/providers/{provider_id}/preview-import/api/providers/{provider_id}/import/api/provider-drafts*/api/provider-drafts/{draft_id}/publish
EXECUTION_BOARD已记录:providers.html可保存/更新/删除服务端草稿publish会真正写 provider 文件、bump pack version、更新 checksums、git add+git commit- remote43 真验已确认
create -> publish -> git commit闭环,且HEAD与 API 返回的commit_sha一致
- 动作级拆分已单独沉淀到:
docs/2026-05-31-PROVIDERS_ACTION_ACCEPTANCE_MATRIX.md
- 页面直接消费:
- 审计判断:
- “草稿保存 -> 发布到仓库”这条链闭环证据明确
preview-import / import有真实宿主 API 证据,但仍缺单页动作级 acceptancerollback / reconcile当前并不是这页的显式 UI 动作,不应混入这页的闭环结论- 所以整页应标记为
部分闭环,而不是笼统地说“全部已闭环”
7. Batch Import Admin 真实页
- 资产:
deploy/tksea-portal/admin-batch-import.html - 当前状态:
历史已闭环 - 前后端对齐:
强 - UI 一致性:
与 admin 体系一致 - 证据:
- 页面直接消费:
POST /api/batch-import/runsGET /api/batch-import/runs/{run_id}GET /api/batch-import/runs/{run_id}/items
- 页面直接展示:
matched_account_stateaccount_resolutionprovision_reused
EXECUTION_BOARD已记录:- 用
/portal/admin-batch-import.html做过真实页面操作验证 - 曾抓到 live reuse 缺口并已修正
- 修正后二次复验确认
account_resolution=created -> reused收敛,且provision_reused=true、access_status=active
- 用
- 页面直接消费:
- 审计判断:
- 这页的核心价值就是验证 batch-import 运行结果投影
- 对这条主链来说,仓库证据支持“历史已闭环”
8. Batch Import 兼容入口
- 资产:
deploy/tksea-portal/admin/batch-import.html - 当前状态:
仅兼容入口 - 前后端对齐:
不适用 - UI 一致性:
有 - 证据:
- 页面本身只做
meta refresh到/portal/admin-batch-import.html
- 页面本身只做
- 审计判断:
- 这不是独立业务页
- 它的目标只是保留统一
/portal/admin/地址空间与旧入口兼容
交叉结论
功能是否闭环
按页面拆开看:
- 已有较强闭环证据:
- 用户 Portal 的 logical-group 产品层展示
- Logical Group Admin
- Route Health Admin
- Provider Accounts Admin
- Legacy Batch Import Admin
- 只有部分闭环证据:
- Provider Admin
- 不应被当作独立闭环页:
- 管理首页
/portal/admin/batch-import.html兼容跳转页
与后端是否对齐
整体是对齐的,理由有三点:
- 页面调用的关键接口在
internal/app/http_api.go中都能找到注册 - 页面文案多数明确说明当前边界,不伪装后端没有的能力
- 多个关键页面在
EXECUTION_BOARD中已有写后回读或真实 API 验证记录
UI 是否一致
可给出的审计结论是:
- 管理端导航、登录态、API Base、状态提示的产品语义基本一致
test_tksea_portal_assets.sh也在持续检查这些静态一致性- 但这些一致性来自手工维护的多份静态 HTML,不是共享组件系统
所以:
当前 UI 一致性:基本成立长期稳定一致性:风险仍高
当前缺口
- 没有真正的前端专项 CI 门禁,只有静态资产检查
providers.html虽然已经有页面内显式动作 acceptance 入口,但最新 remote43 / 公网执行证据还没有在本轮重新补齐- 用户 portal 的“申请 Key”链仍依赖宿主兼容线路,不是完全插件内聚
- 多份静态 HTML 并行维护,后续最容易在 UI 细节和错误处理上产生漂移
当前建议
如果下一步继续补强,优先级应该是:
- 把
providers.html新增 acceptance 入口真正跑到 remote43 / 公网最新环境,并补执行证据 - 把
accounts / logical-groups / route-health / portal的历史真验证据整理成可重复执行的统一脚本入口 - 为前端补最小浏览器回归,而不是只做静态字符串检查
审计口径结论
截至 2026-05-31,针对“没有看到前端 review 记录,前端功能是否正常、是否闭环、是否与后端对齐、UI 是否一致”这组问题,当前最准确的统一回答是:
- 仓库过去确实缺少前端专项 review 文档,这次已开始补齐
- 前端不是“没做”或“全靠静态页摆设”,多条核心运营链路已有历史真验证据
- 但也不能笼统说“前端都正常、全部闭环”
- 更准确的事实是:
- 多数关键页面历史上已闭环
providers.html只有部分闭环证据- 当前轮没有做新的公网复验,因此不应把“历史已闭环”说成“本轮已重新证明正常”