441adcf489
把 6181 行单文件按职责拆成 workflow_ui/ 目录 8 子模块(assets/auth/node_defs/ models/comfy_proxy/validate/queue/mod)。纯机械移动零逻辑改动,编译器+5测试验证。 Co-Authored-By: Claude <noreply@anthropic.com>
70 lines
3.6 KiB
Markdown
70 lines
3.6 KiB
Markdown
# workflow_ui.rs 拆分(8 子模块)设计
|
|
|
|
日期:2026-06-18
|
|
分支:`feat/comfy-cloud-adapter`
|
|
状态:已通过 brainstorming,待用户复审
|
|
|
|
## 背景
|
|
|
|
`src/routes/workflow_ui.rs` 单文件 6181 行,是项目最大文件,难维护/难测/edit 易错。
|
|
按职责拆成 `src/routes/workflow_ui/` 模块目录(8 子模块)。纯机械移动、零逻辑改动,
|
|
靠 Rust 编译器 + 现有 5 个测试验证。
|
|
|
|
## 已确认决策
|
|
|
|
1. 第一个优化目标:拆 workflow_ui.rs(项目最大文件)。
|
|
2. 拆成 8 子模块(见下表)。
|
|
3. 纯机械移动:函数体一字不改,只调可见性 + use 路径。零逻辑改动。
|
|
4. 安全策略:每抽一个子模块即 cargo build -j 2 验证;5 个测试全程保持通过;末尾冒烟。
|
|
|
|
## 子模块划分
|
|
|
|
| 子模块 | 职责 | 现有行号(约) |
|
|
|--------|------|--------------|
|
|
| `mod.rs` | routes() 装配 + 共享类型(WorkflowCaller、Query/Payload structs)+ 子模块声明 | 56-124 |
|
|
| `assets.rs` | UI 静态资源服务、嵌入目录解析、index/static/serve_file/官方模板资源 | 211-305, 1533-1814 |
|
|
| `auth.rs` | caller 解析(caller_from_headers/auth_caller/caller_user_id/caller_is_admin) | 313-363, 1875 |
|
|
| `node_defs.rs` | 节点定义 + 工作流模板(core_node_definitions、*_workflow_graph、node_type_def_to_comfy) | 429-932 |
|
|
| `models.rs` | 模型分类 + folder 模型(is_*_workflow_model、workflow_folder_*、native_folder_models) | 939-1530 |
|
|
| `comfy_proxy.rs` | ComfyUI API 代理 handler(settings/userdata/object_info/system_stats/extensions 等) | 1883-2200 |
|
|
| `validate.rs` | 工作流校验(validate_workflow* 三个) | 2206-2586 |
|
|
| `queue.rs` | 队列/历史/prompt(queue/history/queue_prompt/repair_native_prompt_payload/queue_boosapi_prompt/view) | 2586-3679 |
|
|
|
|
> 注:行号是当前快照,实现时以函数名定位为准(文件会随抽取缩短)。各子模块的辅助小函数
|
|
> 随其主要消费者走;跨多模块共用的(如 guess_mime_from_path、parse_boolish、safe_view_path)
|
|
> 放 mod.rs 或新建 util.rs(实现时按实际依赖定,优先放 mod.rs 顶部 pub(super))。
|
|
|
|
## 安全策略(核心)
|
|
|
|
1. **纯移动**:剪切函数到子模块,函数体一字不改。仅:
|
|
- 可见性:跨模块调用的改 `pub(super)` / `pub(crate)`;
|
|
- `use`:子模块顶部补齐它用到的依赖路径(crate::、super::、外部 crate)。
|
|
2. **逐模块验证**:每抽一个子模块就 `cargo build -j 2`。Rust 编译器对未解析引用/类型不符
|
|
直接报错——这是纯移动重构的强安全网。
|
|
3. **测试保持**:现有 5 个测试(在文件尾 `#[cfg(test)] mod tests`)迁到相关子模块(多与
|
|
models/node_defs 相关),全程保持通过:`cargo test -p boosapi --lib routes::workflow_ui`。
|
|
4. **末尾冒烟**:全部完成后,工作流 UI 打开 + 跑一个 prompt,确认行为不变。
|
|
|
|
## 数据流
|
|
|
|
不变。`routes/mod.rs` 仍 `.merge(workflow_ui::routes())`,对外接口零变化。仅文件内部
|
|
组织从 1 文件变 8 文件,所有路由路径、handler 行为、类型签名完全一致。
|
|
|
|
## 测试
|
|
|
|
- 编译器:每步 cargo build -j 2(主验证手段)。
|
|
- 单测:迁移后 5 个测试保持通过。
|
|
- 冒烟:手动开工作流 UI + 跑 prompt。
|
|
- 不新增功能测试(本任务是重构,非加功能;但若迁移中发现某函数明显缺测且易加,可顺手补)。
|
|
|
|
## 非目标
|
|
|
|
- 不改任何逻辑、不改路由路径、不改 handler 行为。
|
|
- 不拆其他巨文件(oauth.rs/digital_human.rs/user/mod.rs 各自独立后续循环)。
|
|
- 不顺手重构/优化函数实现(纯搬运)。
|
|
|
|
## 提交约定
|
|
|
|
分支 `feat/comfy-cloud-adapter`。**按子模块分多次提交**(每抽 1-2 个子模块 + 编译通过即提交),
|
|
便于回溯;不一锅烩。中文 commit。
|