新增 refactor-checker-cohesion 变更提案,包含 proposal、design、 specs 和 tasks,定义 checker 目录内聚结构规范。同时归档已完成的 历史变更记录。
2.8 KiB
2.8 KiB
Why
当前 checker 的类型定义、校验逻辑、共享工具分散在多个层级目录中,新增一个 checker 需要修改顶层 types.ts(联合类型)、runner/shared/(如果有新的 expect 模式)、config-contract/(如果有新的 schema 片段)等多处文件。项目的核心就是 checker,需要让每个 checker 的代码尽可能内聚——新增 checker 只需创建一个目录 + 在注册列表加一行,其他文件零修改。
What Changes
- 将
ResolvedTarget和TargetConfig从硬编码联合类型改为 base interface,各 checker 内部自行 narrow - 将各 checker 专属类型(
HttpTargetConfig、ResolvedHttpTarget、CommandExpectConfig等)从顶层types.ts搬入各自 checker 目录的types.ts - 将
runner/shared/中仅单个 checker 使用的模块搬入对应 checker 目录(body.ts→http/,text.ts→command/) - 将
runner/shared/中真正跨 checker 共享的断言基础设施(operator.ts、duration.ts、failure.ts)提升为checker/expect/目录 - 将
shared/validate.ts拆分:通用 operator 校验 →expect/validate-operator.ts,body 规则校验 →http/validate.ts,text 规则校验 →command/validate.ts - 将
config-contract/重命名为schema/,内部schema.ts重命名为builder.ts - 将
size.ts和config-loader.ts中的parseDuration合并到utils.ts - 各 checker 的
runner.ts重命名为execute.ts,contract.ts重命名为schema.ts - 各 checker 新增
index.ts作为统一出口(仅 re-export) runner/index.ts改为显式列表注册模式- 将
DefaultsConfig从硬编码联合(command?: CommandDefaultsConfig; http?: HttpDefaultsConfig)改为宽松 base 形式(Record<string, unknown>+ 公共字段),各 checker validate 时自行 narrow
Capabilities
New Capabilities
checker-cohesion-structure: 定义重构后 checker 目录的内聚结构规范,包括每个 checker 目录应包含的文件、职责划分、依赖方向约束,以及新增 checker 的最小改动清单
Modified Capabilities
checker-runner-abstraction:CheckerDefinition接口的resolve/execute/serialize方法签名从具体联合类型改为 base interface;共享 expect 断言函数的物理位置从runner/shared/变更为checker/expect/(仅路径变化,行为不变)
Impact
- 影响
src/server/checker/目录下几乎所有文件的 import 路径 types.ts大幅瘦身,联合类型删除runner/shared/目录删除,内容分散到expect/和各 checker 目录config-contract/目录重命名为schema/- 所有现有测试的 import 路径需要同步更新
- 不影响外部 API、配置文件格式、运行时行为