--- todos: - id: "move-logic" content: "将 FirmwareLogic、UpgradeRecordQueryLogic 迁到 app/admin/logic,namespace 改为 app\\admin\\logic" status: pending - id: "move-validate" content: "将 FirmwareCreateValidate、FirmwareListValidate、UpgradeRecordListValidate 迁到 app/admin/validate,namespace 改为 app\\admin\\validate" status: pending - id: "update-controllers" content: "更新 FirmwareController、UpgradeRecordController 的 use 语句指向新命名空间" status: pending - id: "update-doc" content: "同步 docs/requirements/OTA-admin.md §9 实现落点路径" status: pending - id: "verify" content: "跑 php -l 与后端门禁脚本校验迁移结果" status: pending isProject: false --- # OTA 后台专属 Logic/Validate 按应用拆分 ## 背景与判断 这是 webman 多应用结构,控制器已按应用拆(`app/admin/controller/`、`app/internal/controller/`),但 Logic/Validate 仍堆在共用目录。`FirmwareLogic` / `UpgradeRecordQueryLogic` 与 3 个 Validate 只被 `app/admin/controller/*` 使用,属后台专属,挪到 `app/admin/` 下符合现有约定。`app\ → ./app` 的 PSR-4 映射使 `app\admin\logic` / `app\admin\validate` 自动加载,无需改 composer。 ## 迁移清单(仅改 namespace + 路径,类体不动) - Logic(`namespace app\logic` → `app\admin\logic`) - `app/logic/FirmwareLogic.php` → `app/admin/logic/FirmwareLogic.php` - `app/logic/UpgradeRecordQueryLogic.php` → `app/admin/logic/UpgradeRecordQueryLogic.php` - Validate(`namespace app\validate` → `app\admin\validate`) - `app/validate/FirmwareCreateValidate.php` → `app/admin/validate/FirmwareCreateValidate.php` - `app/validate/FirmwareListValidate.php` → `app/admin/validate/FirmwareListValidate.php` - `app/validate/UpgradeRecordListValidate.php` → `app/admin/validate/UpgradeRecordListValidate.php` ## 引用更新 - `app/admin/controller/FirmwareController.php`:`use app\logic\FirmwareLogic;` → `use app\admin\logic\FirmwareLogic;`;`use app\validate\FirmwareCreateValidate;` / `FirmwareListValidate;` → `app\admin\validate\...` - `app/admin/controller/UpgradeRecordController.php`:`use app\logic\UpgradeRecordQueryLogic;` → `app\admin\logic\...`;`use app\validate\UpgradeRecordListValidate;` → `app\admin\validate\...` ## 不改动 - 内部专属 `OtaCheckLogic`、`OtaReportLogic` 与进程专属 `OtaRecordExpireLogic` 保留在 `app/logic/`(本次范围只动后台 CRUD)。 - DTO(`OtaCheckDTO`/`OtaReportDTO`)、Model、tests 不涉及这些类,无需改。 ## 文档同步 - `docs/requirements/OTA-admin.md` §9 实现落点:把 `app/logic/FirmwareLogic.php`、`app/logic/UpgradeRecordQueryLogic.php` 改为 `app/admin/logic/...`;`app/validate/*` 改为 `app/admin/validate/*`。 ## 收尾校验 - 迁移后对 5 个新文件与 2 个控制器跑容器内 `php -l`,并执行后端门禁脚本 `~/.cursor/skills/slot-backend-completion-report/scripts/report.sh`,确认删除的旧类名不在其它已改文件中出现。