42 lines
3.9 KiB
Markdown
42 lines
3.9 KiB
Markdown
# 产品需求
|
|
|
|
| ID | 需求 | 优先级 |
|
|
| --- | --- | --- |
|
|
| BR-001 | 支持 Chrome 和 Edge,允许自动发现或手动指定 executable。 | P0 |
|
|
| BR-002 | 启动配置支持 `user-data-dir`、`profile-directory`、URL、代理、headless 和额外参数。 | P0 |
|
|
| BR-003 | 启动前检测目标 user data dir 是否占用,禁止同一环境重复启动。 | P0 |
|
|
| BR-004 | 实例列表显示浏览器类型、PID、user data dir、启动时间和状态。 | P0 |
|
|
| BR-005 | 支持优雅关闭、强制关闭和重启,并明确操作影响。 | P0 |
|
|
| BR-006 | 监控启动失败、异常退出、退出码和进程消失。 | P0 |
|
|
| BR-007 | 启动参数按数组传递,不通过 shell 拼接。 | P0 |
|
|
| BR-008 | 只允许管理工具注册且经过身份校验的 PID。 | P0 |
|
|
| BR-009 | 支持本地配置持久化,绝不保存浏览器凭证。 | P1 |
|
|
| BR-010 | 提供 CLI 或本地 API,供脚本启动、查询和关闭实例。 | P1 |
|
|
| BR-011 | Chub 启动的 Chrome/Edge 必须启用仅限 loopback 的本地 CDP;端口从设置的起始端口分配,空值默认 9666。 | P1 |
|
|
| BR-012 | 同一 user data dir 被外部浏览器占用时,只能在其 CDP 端点可验证时关联为外部实例;不得接管生命周期。 | P1 |
|
|
| BR-013 | 用户可以刷新已保存实例的状态,并编辑未运行实例的名称、浏览器类型、user data dir 和启动 URL;刷新和编辑不得扩大到未授权的浏览器进程。 | P1 |
|
|
| BR-014 | 用户可以在完整代理地址下拉框中维护无认证代理,并在创建或编辑实例时选择代理;代理认证信息不得保存、记录或进入启动参数。 | P1 |
|
|
| BR-015 | GUI 实例主操作在 Chub 托管运行态提供优雅停止、在可启动状态提供启动;外部关联或未知外部实例不得获得生命周期控制。 | P1 |
|
|
|
|
## 验收标准
|
|
|
|
- 两个不同 user data dir 可以并行启动,互不阻塞。
|
|
- 同一 user data dir 的第二次启动被拒绝,并显示已知 PID/来源。
|
|
- 新启动实例使用 `127.0.0.1` 上的远程调试端口;从默认或已保存的起始端口开始递增,并在列表显示实际关联端口。
|
|
- 外部实例只有在其 `DevToolsActivePort` 和本地 CDP 端点均通过浏览器类型校验时才显示“外部已关联”;关联后不得显示关闭、强制关闭或重启入口。
|
|
- 外部实例未启用 CDP、端点失效或权限不足时,显示“外部占用”或“未知占用”,且不得再次使用同一目录启动浏览器。
|
|
- 关闭操作不会影响其他 Chrome/Edge 实例。
|
|
- 工具重启后,无法确认身份的外部进程只能报告 UNKNOWN,不得被关闭。
|
|
- 异常退出后状态在合理时间内变为 EXITED/FAILED。
|
|
- 参数中不出现密码、Cookie、Token 或代理 userinfo。
|
|
- UI 覆盖加载、空、占用、启动失败、关闭中、成功和权限错误。
|
|
- 刷新仅检查 Chub 已保存的实例;任务执行中不可重复触发,过期结果不得覆盖已经删除或编辑后的记录。
|
|
- 实例编辑支持保存、取消和 Escape;有未保存修改时必须先确认,运行中或外部关联实例不能修改浏览器类型或 user data dir。
|
|
- 代理仅接受无认证的 `scheme://host:port` 端点。删除仍被实例引用的代理必须被拒绝;实例保存后按稳定代理 ID 解析最新端点。
|
|
- 设置页默认代理输入为空;选择下拉项后回填完整地址,保存更新当前项、未选择时新建。删除未引用项须经确认,确认取消或引用保护不能改变任何实例选择。
|
|
- 受管运行实例点击主操作后进入关闭中,成功退出后恢复启动入口;停止失败不自动强制终止,也绝不影响其他 Chrome/Edge。
|
|
|
|
## 不做
|
|
|
|
全局杀 Chrome/Edge、自动登录、页面操作、验证码处理、平台 API 集成、远程控制和跨用户权限提升;通过 CDP 管理或关闭外部实例。
|