mirror of
https://github.com/motajs/template.git
synced 2026-10-02 16:50:17 +08:00
docs(06): create phase plan
This commit is contained in:
parent
fe4e410cf4
commit
feb2f8181d
@ -210,31 +210,34 @@ Plans:
|
||||
3. 测试在本地可运行且全部通过
|
||||
4. 测试由 AI 编写并运行,通过验证后可提交
|
||||
|
||||
**Plans**: 2/9 plans executed (data-layer slice; non-data render/legacy coverage deferred)
|
||||
**Plans**: 9 plans replanned (D-28;旧 06-01/06-02 执行结果标记 superseded,按同号重跑;数据端切片,非数据 render/legacy 覆盖延后)
|
||||
|
||||
Plans:
|
||||
|
||||
- [x] 06-01-PLAN.md — Combat L2 (data-system/src/combat) behavior tests + phase tracer
|
||||
- [x] 06-02-PLAN.md — Combat L3 (data-state/src/enemy) calculator/aura/special/mapDamage tests
|
||||
- [ ] 06-03-PLAN.md — Enemy data model (data-base/src/enemy) tests
|
||||
- [ ] 06-04-PLAN.md — Replay (data-common/src/replay) tests + replay integration
|
||||
- [ ] 06-05-PLAN.md — Hero core (attribute/modifier/location/state) tests
|
||||
- [ ] 06-06-PLAN.md — Hero storage (equipment/equipStore/items/follower/mover) tests
|
||||
- [ ] 06-07-PLAN.md — Map (gameMap/mapState/mapLayer/tile) expanded tests
|
||||
- [ ] 06-08-PLAN.md — Combat closure + saveables round-trip integration tests
|
||||
- [ ] 06-09-PLAN.md — Flag + common auxiliary tests
|
||||
- [ ] 06-01-PLAN.md — Combat L2 (data-system/src/combat) + EnemyContext aura pipeline / effect combos / full interface & code coverage (D-21..D-27)
|
||||
- [ ] 06-02-PLAN.md — enemy top-level BASIC functionality only (data-state/src/enemy;单分支,无组合,无 save/load)
|
||||
- [ ] 06-03-PLAN.md — Enemy data model full public surface except legacy (data-base/src/enemy;无 save/load)
|
||||
- [ ] 06-04-PLAN.md — Replay focus ReplayArray ops + encode/decode + system/sandbox/decorators (data-common/src/replay;无 save/load,完整播放→06-07)
|
||||
- [ ] 06-05-PLAN.md — Hero ALL files incl. rendering + async mover (data-base/src/hero;无 save/load)
|
||||
- [ ] 06-06-PLAN.md — Map ALL interfaces, emphasis static/dynamic tiles + static arrays (data-base/src/map;无 save/load)
|
||||
- [ ] 06-07-PLAN.md — Top-level integration: damage combos + map+replay play + second-play re-record equality; error 2001–2008 (BLOCKED: pre-execution user confirmation)
|
||||
- [ ] 06-08-PLAN.md — Flag full surface + common (utils/indexer/faceManager+face/mover) (无 save/load)
|
||||
- [ ] 06-09-PLAN.md — Save/load independent system: every saveState/loadState class + CoreState top-level (BLOCKED: pre-execution user confirmation)
|
||||
|
||||
**Wave 1** *(all plans; independent new test files, no shared production edits)*
|
||||
**Wave 1** *(independent test-writing plans; no shared production edits)*
|
||||
|
||||
- [x] 06-01-PLAN.md
|
||||
- [ ] 06-01-PLAN.md
|
||||
- [ ] 06-02-PLAN.md
|
||||
- [ ] 06-03-PLAN.md
|
||||
- [ ] 06-04-PLAN.md
|
||||
- [ ] 06-05-PLAN.md
|
||||
- [ ] 06-06-PLAN.md
|
||||
- [ ] 06-07-PLAN.md
|
||||
- [ ] 06-08-PLAN.md
|
||||
- [ ] 06-09-PLAN.md
|
||||
|
||||
**Wave 2** *(blocked on Wave 1 + user confirmation)*
|
||||
|
||||
- [ ] 06-07-PLAN.md — depends on 06-02/06-04/06-06; requires user to wire replay recording
|
||||
- [ ] 06-09-PLAN.md — depends on 06-03/06-05/06-06/06-08; requires user to adjust CoreState saveables + add public save/load entry
|
||||
|
||||
## Progress
|
||||
|
||||
|
||||
@ -6,7 +6,7 @@ current_phase: 06
|
||||
current_phase_name: unit-tests
|
||||
status: executing
|
||||
stopped_at: Phase 6 context gathered (combat coverage deepening)
|
||||
last_updated: "2026-09-14T02:02:01.754Z"
|
||||
last_updated: "2026-09-14T03:16:45.536Z"
|
||||
last_activity: 2026-09-14
|
||||
last_activity_desc: Phase 06 execution started
|
||||
progress:
|
||||
|
||||
@ -27,6 +27,9 @@ must_haves:
|
||||
- "效果阶段顺序:显式断言 `buildupSpecials` → `buildupBase` → `buildupQuery` → `buildupFinal` 四阶段顺序,并验证阶段间可见性(前阶段修改被后阶段看到,后阶段不能反向影响前阶段)(D-25)。"
|
||||
- "属性→伤害联动:`final-effect`/光环改完属性后,`DamageContext` 缓存与脏标记随之更新,`getDamageInfo`/`markDirty`/`deleteEnemy`/`with(hero)` 行为正确(注入 fake `IDamageCalculator`)(D-26)。"
|
||||
- "刷新路径:`buildup`(全量)与 `requestRefresh`(局部)两条路径都覆盖;`resize`/`clear`/`destroy` 生命周期清空并解绑附件(D-27)。"
|
||||
- "测试形态(D-01):采用混合测试形态中纯逻辑/数据模块一侧,直接单测(fake / 显式依赖注入,延续 Phase 3 D-03);战斗经 `CoreState` 的集成路径由 06-07 承担。"
|
||||
- "疑似缺陷按正确预期编写并标记 `it.skip`/`it.todo`,并按 D-06 的格式登记到共用的 `06-TEST-FINDINGS.md`(模块/接口、现象、最小复现、疑似原因、影响面、建议修复方向、关联 skip 用例、严重度)。"
|
||||
- "执行节奏(D-33):本计划执行前先向用户确认;执行完成后暂停,用中文分条简要汇报验证结果,详细结果写入共用的 `06-TEST-FINDINGS.md`。"
|
||||
artifacts:
|
||||
- path: packages-user/data-system/src/combat/context.test.ts
|
||||
provides: EnemyContext 全接口、光环流水线、效果阶段顺序与生命周期覆盖
|
||||
@ -58,6 +61,8 @@ must_haves:
|
||||
Purpose: `data-system/src/combat` 是纯 Layer-2 战斗契约,无 DOM、经注入 fake 协作者驱动,是证明「Node 全局 stub + 动态 import 包 + fake 注入 + `logger.catch` + 真实计时器异步」测试骨架的最干净位置。本计划同时建立阶段级 `06-COVERAGE-MAP.md`。
|
||||
|
||||
Output: 4 个同目录 `*.test.ts` 与 `06-COVERAGE-MAP.md`(表头 + 06-01 行)。
|
||||
|
||||
计划结构(D-28):本计划为按 D-28 重排后的 06-01 战斗系统层(系统层,`data-system/src/combat`);原 06-01/06-02 执行结果已由 D-29 标记 superseded(SUMMARY 改名保留),本计划按同号重跑,确保「接口 + warn/error code 全覆盖」落到实处。
|
||||
</objective>
|
||||
|
||||
<execution_context>
|
||||
|
||||
@ -28,6 +28,8 @@ must_haves:
|
||||
- "`CommonAura`/`GuardAura` 各自转换器 `shouldConvert` 仅匹配对应 code,范围参数与基础/guard 加成按单分支计算。"
|
||||
- "`registerSpecials` 注册 code 0-27 各一次并设置 guard 属性默认值。"
|
||||
- "mapDamage 五视图单分支输出、converter 按 special 产生视图、reducer 求和/取最大类型/合并 extra。"
|
||||
- "疑似缺陷按正确预期编写并标记 `it.skip`/`it.todo`,并按 D-06 的格式登记到共用的 `06-TEST-FINDINGS.md`(模块/接口、现象、最小复现、疑似原因、影响面、建议修复方向、关联 skip 用例、严重度)。"
|
||||
- "执行节奏(D-33):本计划执行前先向用户确认;执行完成后暂停,用中文分条简要汇报验证结果,详细结果写入共用的 `06-TEST-FINDINGS.md`。"
|
||||
artifacts:
|
||||
- path: packages-user/data-state/src/enemy/calculator.test.ts
|
||||
provides: MainDamageCalculator 与 getCriticalLimit 覆盖
|
||||
|
||||
@ -24,6 +24,8 @@ must_haves:
|
||||
- "`Enemy` 属性增删改查、special 增删查迭代、`clone`/`cloneAttributes`/`copyFrom` 行为与文档一致且相互独立。"
|
||||
- "`CommonSerializableSpecial`/`NonePropertySpecial` 的 value 读写、`getSpecialName`/`getDescription`、clone 独立性、`deepEqualsTo` 判定与文档一致。"
|
||||
- "`EnemyManager` 注册表(special/attribute 默认值)、prefab(按 code/id 的增删改查与 clone 独立性)、reuse 映射、`modifyPrefabAttribute`、comparer/脏跟踪生命周期行为与文档一致。"
|
||||
- "疑似缺陷按正确预期编写并标记 `it.skip`/`it.todo`,并按 D-06 的格式登记到共用的 `06-TEST-FINDINGS.md`(模块/接口、现象、最小复现、疑似原因、影响面、建议修复方向、关联 skip 用例、严重度)。"
|
||||
- "执行节奏(D-33):本计划执行前先向用户确认;执行完成后暂停,用中文分条简要汇报验证结果,详细结果写入共用的 `06-TEST-FINDINGS.md`。"
|
||||
artifacts:
|
||||
- path: packages-user/data-base/src/enemy/enemy.test.ts
|
||||
provides: Enemy 模型覆盖
|
||||
|
||||
@ -25,6 +25,8 @@ must_haves:
|
||||
- "`ReplayArray` 全部公开操作(含 `rebuildIndexArray`/`setReplayArray`/`getCommandArray`/`getParamArray`/`commandWidth`)行为与文档一致;数组扩容后读回仍正确。"
|
||||
- "`ReplaySandbox` 播放器 `step`/`play`/`pause`/`resume`/`stop` 与 `finalizeLast` 按顺序执行、失败即停,纯同步断言 + 真实计时器(无 fake timers)(D-04 / D-37)。"
|
||||
- "录像系统**完整播放**与**二次录制比对**、`error 2001–2008` 归 06-07,本计划不做(D-40)。"
|
||||
- "疑似缺陷按正确预期编写并标记 `it.skip`/`it.todo`,并按 D-06 的格式登记到共用的 `06-TEST-FINDINGS.md`(模块/接口、现象、最小复现、疑似原因、影响面、建议修复方向、关联 skip 用例、严重度)。"
|
||||
- "执行节奏(D-33):本计划执行前先向用户确认;执行完成后暂停,用中文分条简要汇报验证结果,详细结果写入共用的 `06-TEST-FINDINGS.md`。"
|
||||
artifacts:
|
||||
- path: packages-user/data-common/src/replay/array.test.ts
|
||||
provides: ReplayArray 全操作 + 编解码覆盖
|
||||
|
||||
@ -29,6 +29,9 @@ must_haves:
|
||||
- "code 全覆盖:本计划可达的码 108(重复 add 同一 modifier)、109(modifier 返回同引用)、116(未注册 modifier 类型)、142(follower id 无法转数字)、144(未绑定 hero move top 实现)、146(未知 uid 装备)、147(无可用装备槽)各至少一条触发断言(D-31)。"
|
||||
- "loadState 专属码 58/59(equipStore load)与全部 `saveState`/`loadState` 测试归 06-09,本计划不测(D-32)。"
|
||||
- "勇士每个子系统可正确运行:attribute(base/final/优先级/克隆)、modifier(公式)、location(位置/楼层/朝向/钩子)、state(装配/属性视图/modifier 注册/changeFloor 钩子顺序)、equipment(装备/卸下/替换/compareEquip)、equipStore(实例增删计数排序)、items(常量/消耗/装备/拾取)、follower(增删/gather 异步/链接)、mover(异步移动码)、rendering(alpha + 钩子)。"
|
||||
- "测试形态(D-01):勇士各子系统属纯逻辑/数据模块,直接单测(fake / 显式依赖注入,延续 Phase 3 D-03);涉及多系统协作的经 `CoreState` 集成路径由 06-07/06-09 承担。"
|
||||
- "疑似缺陷按正确预期编写并标记 `it.skip`/`it.todo`,并按 D-06 的格式登记到共用的 `06-TEST-FINDINGS.md`(模块/接口、现象、最小复现、疑似原因、影响面、建议修复方向、关联 skip 用例、严重度)。"
|
||||
- "执行节奏(D-33):本计划执行前先向用户确认;执行完成后暂停,用中文分条简要汇报验证结果,详细结果写入共用的 `06-TEST-FINDINGS.md`。"
|
||||
artifacts:
|
||||
- path: packages-user/data-base/src/hero/attribute.test.ts
|
||||
provides: HeroAttribute 覆盖
|
||||
|
||||
@ -28,6 +28,8 @@ must_haves:
|
||||
- "loadState 专属码 55(MapStore 缺 reference)、122(MapStore 楼层缺失)、124(MapLayer 引用缺失)与全部 `saveState`/`loadState` 测试归 06-09,本计划不测(D-32)。"
|
||||
- "重点覆盖:静态图块(`StaticTile` num/raw/set/shouldSave/toDynamic)、动态图块转换(`transferToDynamic`/`transferToStatic`/`transferToStaticIfSafe`/`createDynamic`/`deleteDynamic`/`updateDynamicTile`)与静态数组设置(`getMapData`/`putMapData`/`setMapRef`/`getMapRef`)行为正确。"
|
||||
- "地图矩阵、点事件、图层别名/背景/脏标记、`resize`/`resize2`/crop、`compareWith`、`canPass`/`shouldHit` 委托、异步门开关(openDoor/closeDoor)均有覆盖。"
|
||||
- "疑似缺陷按正确预期编写并标记 `it.skip`/`it.todo`,并按 D-06 的格式登记到共用的 `06-TEST-FINDINGS.md`(模块/接口、现象、最小复现、疑似原因、影响面、建议修复方向、关联 skip 用例、严重度)。"
|
||||
- "执行节奏(D-33):本计划执行前先向用户确认;执行完成后暂停,用中文分条简要汇报验证结果,详细结果写入共用的 `06-TEST-FINDINGS.md`。"
|
||||
artifacts:
|
||||
- path: packages-user/data-base/src/map/mapState.test.ts
|
||||
provides: MapState 覆盖
|
||||
|
||||
@ -24,6 +24,9 @@ must_haves:
|
||||
- "③ 二次录制比对:首次播放完毕后录像系统记录一遍录像步,断言二次录像与原录像**逐条完全相等**(步数 + 每步 code + 各 param 的 type/value),随后再次播放检验。"
|
||||
- "本计划允许为录像重置**最小使用**存档数据,但不测存读档本身(D-32)。"
|
||||
- "执行前必须先向用户确认(依赖用户先接通录像记录)(D-40)。"
|
||||
- "测试形态(D-01):本计划为涉及多系统协作(战斗、录像)的经 `CoreState` 集成测试路径,与纯逻辑直测(06-01/06-05 等)共同构成混合测试形态。"
|
||||
- "疑似缺陷按正确预期编写并标记 `it.skip`/`it.todo`,并按 D-06 的格式登记到共用的 `06-TEST-FINDINGS.md`(模块/接口、现象、最小复现、疑似原因、影响面、建议修复方向、关联 skip 用例、严重度)。"
|
||||
- "执行节奏(D-33):本计划执行前先向用户确认;执行完成后暂停,用中文分条简要汇报验证结果,详细结果写入共用的 `06-TEST-FINDINGS.md`。"
|
||||
artifacts:
|
||||
- path: packages-user/data-state/test/enemyCombination.test.ts
|
||||
provides: 顶层伤害组合 + 系统层光环/效果组合覆盖
|
||||
|
||||
@ -25,6 +25,8 @@ must_haves:
|
||||
- "code 全覆盖:本计划可达的码 43(bind 未知 main)、44(bind 主朝向冲突)、111(对非数值 flag 字段 add)各至少一条触发断言(D-31)。"
|
||||
- "`FlagSystem` 公开接口(`occupied`/`insertField`/`getField`/`getOrInsert`/`getOrInsertComputed`/`deleteField`/`setFieldValue`/`addFieldValue`/`getFieldValue`/`getFieldValueDefaults`)行为与文档一致;`saveState`/`loadState` 归 06-09(flag `saveState()` 无压缩参数)。"
|
||||
- "`data-common/src/common` 工具(utils/indexer/faceManager+face/mover)行为与文档一致;D-20 要求:主要测试未触及的辅助函数才补最小直接单测。"
|
||||
- "疑似缺陷按正确预期编写并标记 `it.skip`/`it.todo`,并按 D-06 的格式登记到共用的 `06-TEST-FINDINGS.md`(模块/接口、现象、最小复现、疑似原因、影响面、建议修复方向、关联 skip 用例、严重度)。"
|
||||
- "执行节奏(D-33):本计划执行前先向用户确认;执行完成后暂停,用中文分条简要汇报验证结果,详细结果写入共用的 `06-TEST-FINDINGS.md`。"
|
||||
artifacts:
|
||||
- path: packages-user/data-base/src/flag/system.test.ts
|
||||
provides: FlagSystem 覆盖
|
||||
|
||||
@ -31,6 +31,9 @@ must_haves:
|
||||
- "推导并写出**排除清单**(存档无关/元数据字段,如最后存档时间、dirty、缓存),落到 `06-SAVE-EXCLUSIONS.md`(D-42)。"
|
||||
- "CoreState 顶层验证:`getSaveableContent(id)` 对 4 个已注册 id(`@system/hero`/`flags`/`maps`/`enemy`)逐个往返(D-11),并验证 `addSaveableContent`/`bindSaveableExecuter` 守卫(112/113);若用户已新增公开 save/load 入口,则一并经该入口验证。"
|
||||
- "执行前必须先向用户确认(依赖用户调整 CoreState 可存档内容并新增公开 save/load 入口,例如录像存档目前未计入但应计入)(D-42)。"
|
||||
- "测试形态(D-01):本计划经 `CoreState` 集成路径(`getSaveableContent`)与各类同实例往返验证存读档,属混合测试形态的跨系统集成一侧。"
|
||||
- "疑似缺陷按正确预期编写并标记 `it.skip`/`it.todo`,并按 D-06 的格式登记到共用的 `06-TEST-FINDINGS.md`(模块/接口、现象、最小复现、疑似原因、影响面、建议修复方向、关联 skip 用例、严重度)。"
|
||||
- "执行节奏(D-33):本计划执行前先向用户确认;执行完成后暂停,用中文分条简要汇报验证结果,详细结果写入共用的 `06-TEST-FINDINGS.md`。"
|
||||
artifacts:
|
||||
- path: packages-user/data-base/src/enemy/saveLoad.test.ts
|
||||
provides: Enemy/special/EnemyManager 存读档覆盖(119/120)
|
||||
|
||||
@ -72,7 +72,7 @@
|
||||
### 阶段级覆盖规则与计划重构(2026-09-14 第二轮补充讨论)
|
||||
> 由用户对全部计划的逐条补充得出。**这些规则对 06-03..06-09 全部生效,并回溯要求 06-01/06-02 返工。**
|
||||
|
||||
- **D-28(计划重排):** 重排编号为:
|
||||
- **D-28:** 计划重排 —— 重排编号为:
|
||||
- 06-01 战斗系统(系统层,`data-system/src/combat`,见 D-21..D-27)
|
||||
- 06-02 enemy 顶层实现(`data-state/src/enemy`,只做基本功能)
|
||||
- 06-03 enemy 数据模型(`data-base/src/enemy`)
|
||||
@ -83,11 +83,11 @@
|
||||
- 06-08 flag + common
|
||||
- 06-09 存档(独立系统,所有 saveState/loadState + CoreState 顶层验证)
|
||||
原 06-06 合并进 06-05;原 06-08 的 saveables 往返部分移到 06-09。
|
||||
- **D-29(返工):** 已执行的 06-01、06-02 标记为 **superseded**(SUMMARY 改名保留),重规划后按同号重跑,确保「接口 + warn/error code 全覆盖」落到原计划。
|
||||
- **D-30(接口全覆盖):** 除名称含 legacy 的接口/方法(`fromLegacy`、`*LegacyBridge`、`*LegacyConverter` 等)外,**每个公开方法至少一条正常用例**。
|
||||
- **D-31(warn/error 全覆盖):** 以 `packages/common/src/logger.json` 为权威码表;范围 = 本计划模块**可达**的 code(排除其他层如渲染/音频,及 legacy 路径);每个 code 至少一条触发断言(经 `logger.catch`);产出**阶段级 `06-COVERAGE-MAP.md`**(code → 模块 → 用例)映射表。
|
||||
- **D-32(存读档集中):** 所有 `saveState`/`loadState` 测试从各计划移出,集中到 06-09。唯一例外:06-07 的录像播放所需状态重置可**最小使用**存档数据,但不测存读档本身。
|
||||
- **D-33(执行节奏):** **每个计划执行前先向用户确认**;执行完暂停,用中文**分条简要汇报**本计划验证结果;详细结果写入共用的 `06-TEST-FINDINGS.md`。
|
||||
- **D-29:** 返工 —— 已执行的 06-01、06-02 标记为 **superseded**(SUMMARY 改名保留),重规划后按同号重跑,确保「接口 + warn/error code 全覆盖」落到原计划。
|
||||
- **D-30:** 接口全覆盖 —— 除名称含 legacy 的接口/方法(`fromLegacy`、`*LegacyBridge`、`*LegacyConverter` 等)外,**每个公开方法至少一条正常用例**。
|
||||
- **D-31:** warn/error 全覆盖 —— 以 `packages/common/src/logger.json` 为权威码表;范围 = 本计划模块**可达**的 code(排除其他层如渲染/音频,及 legacy 路径);每个 code 至少一条触发断言(经 `logger.catch`);产出**阶段级 `06-COVERAGE-MAP.md`**(code → 模块 → 用例)映射表。
|
||||
- **D-32:** 存读档集中 —— 所有 `saveState`/`loadState` 测试从各计划移出,集中到 06-09。唯一例外:06-07 的录像播放所需状态重置可**最小使用**存档数据,但不测存读档本身。
|
||||
- **D-33:** 执行节奏 —— **每个计划执行前先向用户确认**;执行完暂停,用中文**分条简要汇报**本计划验证结果;详细结果写入共用的 `06-TEST-FINDINGS.md`。
|
||||
|
||||
### 各计划边界
|
||||
- **D-35:** 06-02 只测顶层实现**基本功能**(单分支、按预期输出);属性/加成**组合**后移至 06-07。范围:`MainDamageCalculator` / `MainEnemyFinalEffect` / `MainEnemyComparer` / `CommonAura(+Converter)` / `GuardAura(+Converter)` / `registerSpecials` / mapDamage 五视图 + converter + reducer。
|
||||
|
||||
Loading…
Reference in New Issue
Block a user