用户面板与市场页重构执行方案
日期:
2026-04-04
负责人:WebUI Architecture
范围:用户面板与/market对齐改造
0. 当前执行状态
当前代码库已落地:
/member已将四个用户工作流前置为一级界面:- Spotlight 式商店搜索
- 已安装管理
- 支持拖拽的上传中心
- 任务队列与历史
/market已补齐等价的安装/上传控件、本地安装刷新,以及拖拽上传交互。/market已补齐用户自有上传管理视图:- 我的模板投稿列表 + 详情跳转
- 我的 profile-pack 投稿列表 + 详情跳转
- 以下向后兼容 API 扩展已生效:
GET /api/member/installationsPOST /api/member/installations/refreshGET /api/member/submissionsGET /api/member/submissions/detailGET /api/member/profile-pack/submissionsGET /api/member/profile-pack/submissions/detailinstall_optionsupload_optionssubmit_options
- 验证已覆盖接口测试、WebUI 单测与浏览器 E2E。
/member已改为 Spotlight 优先的用户面板:顶部先给语言切换、本地刷新和单一全局搜索入口,成员页结果区不再重复渲染“市场中心”大标题。
当前权衡:
install_options.source_preference=generated已真正参与包解析路径选择。- 其余选项块当前已完成归一化、持久化与 UI/API 回显,但并非全部都已经深入影响后续治理语义。
下一轮收口项:
/member顶部主操作按钮必须从泛化的“导入配置包”改为明确语义的导入本机 AstrBot 配置。/member顶部工具区只允许保留普通用户可见入口:用户控制台市场中心
- reviewer/admin/full/developer 相关入口不能再只靠 CSS 隐藏,而应直接从 member DOM 中移除。
- 原始 AstrBot 导入成功后,必须直接拉起上传审阅窗口,让用户先检查 section 再投稿。
1. 目标
在不破坏既有契约与权限控制的前提下,将用户侧 WebUI 明确收敛为四个核心流程:
- 商店搜索
- 已安装管理
- 上传中心
- 下载与任务管理
2. 不可破坏的基线
- 保持现有 Vanilla 模块化运行架构(
app.js、market_page.js、助手模块)。 - 保持
/api/ui/capabilities能力门禁机制。 - 保持
webui_i18n.js键值体系。 - 保持现有 DOM ID 锚点(测试与编排依赖)。
3. 信息架构与界面形态
3.1 用户面板
- 顶部控制条:
- 全局 Spotlight 式搜索
- 语言切换
- 始终可见的
导入本机 AstrBot 配置
- 主区默认视图:已安装资源列表。
- 次区能力:
- 上传拖拽区 + 上传选项
- 下载/任务队列(进度与历史)
- 移动端:
- 侧栏折叠为抽屉
- 搜索框保留首要位置(单行或堆叠)
3.2 市场页对齐
/market 必须提供与用户面板一致的上传/安装选项控制,不允许降级为仅展示页。
4. API 合约扩展(向后兼容)
4.1 用户安装接口
GET /api/member/installationsPOST /api/member/installations/refreshGET /api/member/submissionsGET /api/member/submissions/detailGET /api/member/profile-pack/submissionsGET /api/member/profile-pack/submissions/detail
响应 envelope 保持不变: { ok, message, data, error? }
4.2 载荷扩展
POST /api/templates/installinstall_options.preflight: boolinstall_options.force_reinstall: boolinstall_options.source_preference: auto|uploaded_submission|generated
POST /api/templates/submitupload_options.scan_mode: strict|balancedupload_options.visibility: community|privateupload_options.replace_existing: bool
POST /api/profile-pack/submitsubmit_options.pack_typesubmit_options.selected_sectionssubmit_options.redaction_mode
5. Stitch 集成约束
- 以
DESIGN.md为唯一设计真值。 - 用 Stitch 生成用户面板与市场页布局。
- 生成代码必须通过适配层落地:
- 保留运行时 ID
- 保留 i18n key
- 保留 capability 绑定
- 破坏事件绑定或 RBAC 边界的片段直接拒绝合并。
6. 验证矩阵
- 接口测试:
- 用户安装接口
- 载荷扩展默认值与校验
- WebUI 单测:
- 安装/任务/选项状态映射
- i18n key 完整性
- E2E:
- 卡片点击 -> 详情抽屉
- 带选项上传
- 带选项安装
- 刷新本地配置 -> 安装列表更新
/member与/market行为对齐
7. 风险与控制
- 风险:生成结构破坏既有绑定
控制:合并前执行 ID 保留检查。 - 风险:清爽化 UI 误伤高阶操作
控制:高级能力折叠,不删除。 - 风险:前后端能力映射漂移
控制:新增控件必须先纳入CONTROL_CAPABILITY_MAP。 - 风险:member 页即使视觉隐藏,DOM 里仍暴露高权限入口
控制:直接从member.html删除特权入口,权限校验继续由服务端兜底。