Files
cdp_hub/docs/07-user-stories.md
T

7.0 KiB

用户故事

ID 用户故事 优先级
US-001 用户可以创建 Chrome/Edge 实例配置,并指定 user data dir、profile 和 URL。 P0
US-002 用户可以启动两个不同隔离环境,并看到各自 PID 和运行状态。 P0
US-003 用户可以发现同一 user data dir 已被占用,避免重复启动。 P0
US-004 用户可以优雅关闭实例;无响应时在确认后强制终止。 P0
US-005 用户可以重启指定实例,并确认旧实例已经退出。 P0
US-006 用户可以通过 CLI/API 查询、启动和关闭实例。 P1
US-007 用户可以看到实例的首选或实际本地调试端口;同目录外部浏览器已启用调试时,Chub 只关联并展示状态。 P1
US-008 用户可以刷新已保存实例的运行状态,并通过对话框编辑非运行实例的基本配置而不影响其他浏览器。 P1
US-009 用户可以在设置中通过完整代理地址下拉框维护无认证代理,并在新建或编辑实例时从下拉选择器选择代理。 P1
US-010 用户可以通过实例行的同一主操作启动或优雅停止 Chub 托管的浏览器,而不会关闭外部浏览器。 P1
US-011 用户手动关闭 Chub 启动的 Chrome/Edge 后,可以立即获知该实例已退出,并重新启动该实例。 P1
US-012 用户可以查看已验证运行实例的 CDP 页面目标标题、脱敏 URL 和类型,而不会向浏览器发送控制命令。 P1
US-013 用户可以从 Windows 通知区域快速显示 Chub、刷新已保存实例状态或明确退出应用,而不会在菜单中误操作浏览器实例。 P1
US-014 用户复制或升级 Chub 后,实例配置与程序一同保存在可执行文件目录;首次升级会安全带入旧 AppData 配置且不丢失已有新配置。 P1

验收场景

US-003 占用保护

给定一个已运行的 Chrome/Edge,使用相同规范化 user data dir 启动时,系统拒绝第二次启动,显示已知 PID 和占用来源,并保留原配置。

US-004 安全关闭

用户点击关闭后按钮进入 STOPPING;浏览器正常退出则显示 EXITED;等待超时后只显示强制终止确认,不自动扩大关闭范围。

US-006 CLI/API

CLI/API 返回稳定错误码和结构化数据;未知 PID、身份不匹配和权限不足必须拒绝操作并给出恢复建议。

US-007 本地 CDP 与外部关联

给定未占用的 user data dir,实例先保存一个首选 loopback CDP 端口;新建时从设置中的起始端口推荐一个不与其他 Chub 实例预留或实际端口冲突的值。启动优先使用该端口,并在后台检查实际可用性;若仅外部端口冲突,跳过 Chub 预留端口后回退到下一个可验证端口并更新当前实例的首选端口。列表区分建议、准备、实际和外部端口。给定同目录已由外部浏览器占用,只有 DevToolsActivePort 与 /json/version 可验证时才显示“外部已关联”;否则拒绝第二次启动。无论哪种外部状态,Chub 都不提供生命周期控制。

US-008 刷新与编辑实例

给定已保存的实例,用户点击刷新或按 F5 后,Chub 只检查这些实例并更新运行状态、PID、端口与占用来源。用户双击行、按 Enter 或点击编辑图标可以打开编辑对话框;保存名称、浏览器类型、User Data Dir 和启动 URL 后更新本地配置。实际调试端口只读显示。若实例正在运行、启动中或为外部关联,浏览器类型和 User Data Dir 保持不可编辑。Escape 在无修改时关闭对话框,有修改时要求用户选择保存、不保存或继续编辑。

US-009 代理选择

给定用户在设置中保存的无认证代理,设置下拉框和创建/编辑表单均展示完整地址。设置页默认输入为空;选择项会回填地址,保存会更新当前项或在未选择时新建。实例仅关联代理 ID;启动时使用该 ID 的最新端点。含用户名、密码或 URL 路径的端点被拒绝,仍被引用的代理不能删除;删除未引用项前要求确认。

US-010 受管实例启停

给定 Chub 启动且仍可在 registry 中验证的实例,运行态主操作显示停止图标。点击后先显示停止中,再请求浏览器正常退出;成功后恢复启动图标。给定外部已关联或未知占用的同目录浏览器,Chub 不显示停止入口,也不发送关闭请求。

US-011 受管实例意外退出

给定 Chub 在当前会话中启动且处于运行态的 Chrome/Edge,用户关闭最后一个浏览器窗口、浏览器崩溃或进程被外部结束时,Chub 等待该受管根进程句柄并把匹配实例更新为“已退出”。Chub 显示“检测到‘实例名’的 Chrome/Edge 已退出”的可关闭信息提示,说明配置和 User Data Dir 未被删除;关闭提示后焦点回到该实例的启动入口。给定 Chub 已请求优雅停止、外部关联/占用实例、过期启动代次或应用已关闭,Chub 不显示意外退出提示。

US-012 只读 CDP 页面目标

给定一个“运行中”或“外部已关联”实例已经存在经验证的实际 loopback CDP 端口,用户从实例编辑对话框打开“查看标签页”,Chub 在后台再次验证 browser kind 后读取 /json/list,并显示页面目标的标题、类型和脱敏 URL。读取中可关闭对话框;请求失败、端点失效或实例状态变化时不改变实例配置或生命周期。给定未启动、启动中、停止中、调试不可用、外部占用或未知占用实例,入口禁用并说明需要已验证端口。页面目标查看不展示 WebSocket URL、物理窗口 ID,也不提供导航、关闭或创建页面命令。

US-013 Windows 通知区域入口

给定 Chub 正在运行,Windows 通知区域出现一个 Chub 图标;用户双击图标或选择默认“显示 Chub”命令后,主窗口显示并置前。用户选择“刷新实例状态”后,Chub 沿用页面刷新相同的已保存实例范围和后台去重规则。用户选择“退出 Chub”后,应用进入明确退出协调流程并清理图标;该菜单不列出实例,也不提供启动、停止、重启、删除或外部接管。Explorer 重启后图标会恢复,图标失效仅显示可恢复诊断,不影响窗口和浏览器实例。首版关闭主窗口仍按原退出语义处理,不会自动隐藏到通知区域。

US-014 便携配置迁移

给定用户从 build\\chub.exe 或已发布目录启动 Chub,配置读取和后续保存均使用同级 config.json,不受启动脚本或当前工作目录影响。给定目标配置不存在且旧 %APPDATA%\\chub\\config.json 合法,Chub 校验旧配置并原子写入目标,旧文件作为恢复备份保留。给定目标配置已存在,Chub 只读取目标,不覆盖、合并或删除它。给定目标目录不可写或旧配置畸形,Chub 不创建新文件、不丢失旧文件,显示可恢复的配置诊断;不得静默切回 AppData 造成后续配置分叉。