feat: 完成Chrome启动器

- 新增 app/chrome.py 拼装远程调试启动参数并启动 Chrome

- 实现 /json/version 端口探测并禁用环境代理

- 新增 chrome 单元测试覆盖参数、Popen 和端口就绪

- 更新任务看板、API 合约、当前状态和进度记录
This commit is contained in:
chengma
2026-06-27 09:33:54 +08:00
parent d3afe69c10
commit e325f66eef
6 changed files with 267 additions and 13 deletions
+9 -6
View File
@@ -121,16 +121,19 @@ ensure_user_data_dir(slug, root=None, config=None) -> str
`make_slug()` 使用可读 ASCII 前缀 + 8 位 SHA1 后缀,保证稳定且降低别名冲突;非 ASCII 别名使用 `account_<hash>`。`ensure_user_data_dir()` 拒绝非 `[a-z0-9_]` slug,防止路径穿越。
## chrome 模块(`app/chrome.py`,待建)
## chrome 模块(`app/chrome.py`,已建)
```python
build_launch_args(account) -> list[str] # chrome + --remote-debugging-port + --remote-allow-origins=* + --user-data-dir
launch_chrome(account) -> subprocess.Popen
wait_debug_ready(port, timeout=60) -> bool
is_running(port) -> bool
create_shortcut(account, dest_dir=None) -> str # 可选 .lnk,PowerShell WScript.Shell
class ChromeLaunchError(RuntimeError): ...
build_launch_args(account, config=None) -> list[str]
# chrome + --remote-debugging-port + --remote-allow-origins=* + --user-data-dir
launch_chrome(account, config=None) -> subprocess.Popen
wait_debug_ready(port, timeout=60, host="127.0.0.1") -> bool
is_running(port, host="127.0.0.1") -> bool
```
`build_launch_args()` 接受 dict 或对象形式账号;账号需有 `debug_port`,并有 `user_data_dir` 或 `slug/alias`。端口探测访问 `/json/version`,显式禁用环境代理。`.lnk` 快捷方式留给 T-106。
## cdp 模块(`app/cdp.py`,T-000 由根目录 `cdp.py` 迁入)
```python