feat: define browser domain and application contracts
This commit is contained in:
+1
-1
@@ -7,7 +7,7 @@
|
||||
| ID | 任务 | 依赖 | 状态 |
|
||||
| --- | --- | --- | --- |
|
||||
| T-001 | 建立 Go module、命令入口、日志和测试基座 | - | TODO |
|
||||
| T-002 | 固化 BrowserDefinition、LaunchSpec、错误和事件合约 | T-001 | TODO |
|
||||
| T-002 | 固化 BrowserDefinition、LaunchSpec、错误和事件合约 | T-001 | DONE |
|
||||
| T-003 | 实现可测试的参数构造和 Chrome/Edge 发现 | T-002 | TODO |
|
||||
|
||||
## Phase 1:进程核心
|
||||
|
||||
+1
-27
@@ -4,33 +4,7 @@ MVP 首先提供本地 Go application service 和 CLI;是否增加 loopback HT
|
||||
|
||||
## 核心类型
|
||||
|
||||
```go
|
||||
type BrowserKind string
|
||||
const (
|
||||
BrowserChrome BrowserKind = "chrome"
|
||||
BrowserEdge BrowserKind = "edge"
|
||||
)
|
||||
|
||||
type LaunchSpec struct {
|
||||
Kind BrowserKind
|
||||
Executable string
|
||||
UserDataDir string
|
||||
ProfileDirectory string
|
||||
TargetURL string
|
||||
ProxyServer string
|
||||
Headless bool
|
||||
ExtraArgs []string
|
||||
}
|
||||
|
||||
type InstanceView struct {
|
||||
ID string
|
||||
Kind BrowserKind
|
||||
PID int
|
||||
UserDataDir string
|
||||
Status string
|
||||
ExitCode *int
|
||||
}
|
||||
```
|
||||
代码权威类型位于 `internal/domain/browser.go`:`BrowserKind`、`LaunchSpec`、`InstanceStatus`、`InstanceView`、`BrowserEvent` 和稳定错误码。`LaunchSpec.Normalize()` 负责当前已确定的 browser kind、绝对 user data dir 和 http/https URL 校验。
|
||||
|
||||
## Application service
|
||||
|
||||
|
||||
@@ -4,10 +4,10 @@
|
||||
|
||||
- 日期:2026-07-22
|
||||
- 阶段:文档与交互原型准备
|
||||
- 代码:已建立 Go module `chub`、`cmd/chub` 入口和 logging 测试基座,T-001 已完成
|
||||
- 代码:已建立 Go module `chub`、`cmd/chub` 入口、logging 测试基座和浏览器 domain/application 合约,T-001/T-002 已完成
|
||||
- UI:尚未实现;P0 页面需要先制作 HTML 原型
|
||||
- 浏览器核心:设计参考来自 `D:\OPC\shop_helm\internal\platform\chrome`,尚未复制或接入本项目
|
||||
- blocker:无;下一个任务为 T-002
|
||||
- blocker:无;下一个任务为 T-003
|
||||
|
||||
## 当前目录
|
||||
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
---
|
||||
id: T-002
|
||||
title: 固化浏览器领域、启动配置、实例状态和事件合约
|
||||
phase: 0
|
||||
deps: [T-001]
|
||||
status: DONE
|
||||
created: 2026-07-22
|
||||
owner: codex
|
||||
---
|
||||
|
||||
## 需求与背景
|
||||
|
||||
UI 原型和 API 文档需要稳定的 Go 类型,后续平台适配不能自行定义浏览器类型、状态和错误语义。
|
||||
|
||||
## 方案与边界
|
||||
|
||||
- `internal/domain/browser.go` 定义浏览器类型、启动配置、实例视图、状态、事件和稳定错误码。
|
||||
- `LaunchSpec.Normalize()` 只做基础安全校验:浏览器类型、绝对 user data dir、无 userinfo 的 http/https URL和字段规范化。
|
||||
- `internal/application/browser_manager.go` 定义 BrowserManager、进程启动、进程身份、profile 检查和事件端口。
|
||||
- 本任务不启动真实浏览器,不实现 Windows API 和实例 registry。
|
||||
|
||||
## 验收要点
|
||||
|
||||
- `go test ./...` 通过。
|
||||
- `go vet ./...` 通过。
|
||||
- 非法浏览器类型、相对 user data dir、非 http/https URL 和 URL userinfo 被拒绝。
|
||||
- 业务层不依赖 `os/exec` 或 Windows handle。
|
||||
|
||||
## 执行记录
|
||||
|
||||
- 状态:DONE
|
||||
- 变更:新增 domain/application 浏览器合约、Normalize 校验和回归测试,API 文档指向代码权威类型。
|
||||
- 验证:`gofmt`、`go test ./...`、`go vet ./...` 均通过。
|
||||
- 阻塞:无。
|
||||
- 残余风险:代理 URL 和额外参数的完整校验留给 T-003。
|
||||
Reference in New Issue
Block a user