阶段 S3 - 收口出战合法性

This commit is contained in:
SepComet
2026-03-09 19:47:46 +08:00
parent 88641f17b0
commit af20eeecfa
3 changed files with 409 additions and 14 deletions
+8 -6
View File
@@ -96,8 +96,8 @@
|-----|-------|------------------|--------------------------------------------------------------------------------------------------|--------------------|
| [x] | S3-01 | 定义“合法参战塔”的最终判定口径 | `docs/CodeX-TODO.md`<br>`Assets/GameMain/Scripts/Definition/` | 流程层与 UI 层共用同一套判定口径 |
| [x] | S3-02 | 收口组装区与参战区的合法性校验 | `Assets/GameMain/Scripts/UI/Game/`<br>`Assets/GameMain/Scripts/CustomComponent/PlayerInventory/` | 不合法塔不能进入参战区 |
| [ ] | S3-03 | 在战斗入口补齐最终出战校验 | `Assets/GameMain/Scripts/Procedure/` | 不满足完整条件时无法进入战斗节点 |
| [ ] | S3-04 | 给出 UI / 日志层明确反馈 | `Assets/GameMain/Scripts/UI/Game/`<br>`Assets/GameMain/Scripts/Procedure/` | 玩家知道为什么不能出战 |
| [x] | S3-03 | 在战斗入口补齐最终出战校验 | `Assets/GameMain/Scripts/Procedure/` | 不满足完整条件时无法进入战斗节点 |
| [x] | S3-04 | 给出 UI / 日志层明确反馈 | `Assets/GameMain/Scripts/UI/Game/`<br>`Assets/GameMain/Scripts/Procedure/` | 玩家知道为什么不能出战 |
### S3-01 判定口径
@@ -114,10 +114,12 @@
- 参战分配链路已统一改为返回结果对象,而不是只返回 `bool`。
- `RepoFormUseCase`、`PlayerInventoryComponent`、`PlayerInventoryTowerRosterService`、`InventoryParticipantUtility` 已接入 `S3-01` 的统一合法性校验入口。
- 当前可稳定区分以下分配失败原因:塔不存在、塔缺少三组件之一、已在参战区、参战区已满。
- 组装区 / 参战区 UI 仍保持“失败时静默拦截”的当前策略,但日志链路已经能拿到明确失败原因,后续 `S3-04` 可直接复用。
- 当前阶段仍未在战斗入口做最终出战前二次校验,这部分继续归 `S3-03`。
- 组装区 / 参战区 UI 仍保持“失败时静默拦截”的当前策略;战斗入口已补最终二次校验,避免旧快照、脏状态或外部改动绕过 `S3-02` 直接进入战斗。
- 战斗入口校验失败时,`ProcedureMain` 现在会同时写明失败日志,并弹出 `DialogForm` 给出明确原因;空参战区会提示“至少需要 1 座完整装配了枪口、轴承、底座的塔”,脏数据则会列出具体缺失组件。
> 2026-03-09 更新:你已在 Unity Test Runner 中确认 `Assets/Tests/EditMode` 全部通过,其中包含 `CombatParticipantTowerValidationServiceTests` 与 `ParticipantTowerAssignResultTests`。
>
> 2026-03-09 更新:`ProcedureMainCombatEntryValidationService` 与战斗入口拦截已落地;你已确认 Unity Test Runner 全部通过,并手工验证了“空参战区开始战斗”会被拦截且弹出明确提示。
## 阶段 S4 - 收口品质 / Tag 规则
@@ -158,8 +160,8 @@
## 本周建议开工顺序
1. `S1` 与 `S2` 已完成口径收口,可直接进入规则侧收尾
2. `S3-01`、`S3-02` 已完成,接下来先收 `S3-03`、`S3-04`
3. 再决定 `S4` 和 `S5` 是完整实现还是同步缩范围
2. `S3-01 ~ S3-04` 已完成,当前可转入 `S4`
3. 接下来决定 `S4` 和 `S5` 是完整实现还是同步缩范围
4. 最后补 `S6-01 ~ S6-04`
## 备注