# CommonStackerCraneJob Refactor Implementation Plan > **For agentic workers:** REQUIRED: Use superpowers:subagent-driven-development (if subagents available) or superpowers:executing-plans to implement this plan. Steps use checkbox (`- [ ]`) syntax for tracking. **Goal:** 在不改变业务行为的前提下,降低 `CommonStackerCraneJob` 复杂度,拆分“任务选择”和“命令构建”职责。 **Architecture:** 保留 `CommonStackerCraneJob` 作为 Quartz Job 入口,只负责调度流程;将任务选择逻辑和命令构建逻辑分别下沉到同目录新类。通过构造函数内组装依赖(不修改全局 DI),确保改动范围仅限 `StackerCraneJob` 目录。 **Tech Stack:** .NET 6, Quartz, 现有 WCS Task/Router 服务接口 --- ## Chunk 1: 结构拆分与职责落位 ### Task 1: 拆分任务选择器 **Files:** - Create: `WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneTaskSelector.cs` - Modify: `WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs` - [ ] Step 1: 新建任务选择器类,迁移 `GetTask` 与 `IsOutTaskStationAvailable` 逻辑 - [ ] Step 2: 在 Job 中通过私有字段持有任务选择器实例 - [ ] Step 3: 将 `GetTask` 调用改为任务选择器 ### Task 2: 拆分命令构建器 **Files:** - Create: `WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneCommandBuilder.cs` - Modify: `WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs` - [ ] Step 1: 新建命令构建器类,迁移 `ConvertToStackerCraneTaskCommand` 与命令构建分支逻辑 - [ ] Step 2: 保留配置读取在 Job 中,命令构建器接受配置与服务依赖 - [ ] Step 3: Job 中替换原有命令构建调用 ## Chunk 2: 清理与验证 ### Task 3: Job 入口瘦身与注释补全 **Files:** - Modify: `WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs` - [ ] Step 1: 移除已迁移私有方法及无用 using - [ ] Step 2: 保留并补充关键流程注释(订阅、任务获取、命令下发) ### Task 4: 编译验收 **Files:** - Modify: `WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs`(如需微调) - Modify: `WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneTaskSelector.cs`(如需微调) - Modify: `WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneCommandBuilder.cs`(如需微调) - [ ] Step 1: 运行 `dotnet build WIDESEAWCS_Tasks/WIDESEAWCS_Tasks.csproj -c Debug` - [ ] Step 2: 若失败,按编译错误最小修复直到通过 - [ ] Step 3: 输出结果与改动文件清单