You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
AdLike2048/docs/方案-项目结构整理与遗留清理.md

278 lines
11 KiB

# 方案:项目结构整理与遗留清理
> 日期:2026-08-17
> 状态:实施中(Phase 0 文档已完成)
> 关联:[需求-新项目概述.md](./需求-新项目概述.md)、[需求-模块保留.md](./需求-模块保留.md)、[遗留代码收敛方案.md](./遗留代码收敛方案.md)
## 1. 目标
将当前仓库(老项目完整复制)收敛为 **新产品结构**:
1. 配表、存档、战斗入口对齐 **12 张新表** 与段位制
2. 删除不再使用的局外模块、bundle、引流小游戏
3. 局内战斗接入 **阵营区域对抗**(非镜像 PvP),裁剪 type3 格子与 Gacha 模式
4. 保留并扩展 MX 框架层,避免重复造轮子
---
## 2. 现状与目标差距
| 层面 | 现状 | 目标 |
|------|------|------|
| 配表 | `first/config` 已换 12 张新表;大量 TS 仍引用 Chapter/Shop/Weapon1 等 | 代码只读新表;清理死类型与枚举 |
| 存档 | `GameData` 含 chapter、关卡进度等 | 改为 rankId、rankStars、dailyWins、昨日段位等 |
| 局外 UI | 5 Tab + 70+ 弹窗,多数绑旧表 | 保留首页/神兵/商店/转盘/排行榜等,删副本/角色/任务等 |
| 战斗 | Solo PVE + type3 改路 + Gacha | 阵营 PvAI + 固定路线 + Text 字池 |
| 对抗架构 | 早期半图镜像(已删除) | `CampAreaPolicy=pvp` + 双 campAreaId |
| 资源 | attractingTrafficGame、allBuyShops、replica 等 bundle 仍在 | 按清单删除并更新预载 |
---
## 3. 分阶段实施
### Phase 0 — 文档与门禁 ✅
| 项 | 状态 |
|----|------|
| [需求-新项目概述.md](./需求-新项目概述.md) | ✅ |
| 本文档 | ✅ |
| [需求-模块保留.md](./需求-模块保留.md) 确认 | ✅ |
| [项目说明.md](./项目说明.md) 索引更新 | ✅ |
### Phase 1 — 配表与类型层迁移
**目标**:编译层面对齐新表,不删 UI,避免雪崩。
| 任务 | 文件/动作 |
|------|-----------|
| 清理死代码 | `ConfigTableData.ts` 中 `SkillCostType` 章节相关、`IShopItemData` 等旧接口 |
| 类型对齐 | `AutoTable.ts` 保留新表接口;旧表接口标记废弃或删除(无引用后) |
| Level 构建 | 改造 `ChapterLevelBuilder.ts` → 读 `Level` 表,重命名为 `LevelDefBuilder` 或等价 |
| 合成配置 | `WeaponComposeConfigProvider` → `TextComposeConfigProvider`(Text + Hero) |
| 存档字段 | `GameData.ts` / `ConfigProjectData.ts`:删 chapter 相关,增段位字段 |
| Rank 消费 | 新建 `RankDataManager` 或并入 `ConfigProjectData` 读 Rank 表 |
**禁止**:Phase 1 完成前批量删除 UI 目录。
### Phase 2 — 局外裁剪与壳改造
**删除顺序**(先断引用,再删文件,最后删 bundle):
```
ConfigRes.UIID 注销
→ 删除对应 TS 脚本
→ 删除 prefab / bundle
→ 更新 ResPkgBuilder 预载
```
| 步骤 | 内容 |
|------|------|
| 2.1 | `ConfigRes.ts` 注销废弃 UIID(见 §5.1) |
| 2.2 | 删除 TS 目录(见 §5.2) |
| 2.3 | 改造保留模块:PanelHome、pageWeapon、TurnTable |
| 2.4 | 新建:论功行赏 UI、排行榜 UI、新商店 UI |
| 2.5 | 删除 bundle:attractingTrafficGame、replica、allBuyShops 子包;视情况 role |
| 2.6 | 大厅导航按美术方案 A/B 落地(§7) |
### Phase 3 — 局内战斗改造
| 步骤 | 内容 |
|------|------|
| 3.1 | 地图:mapLayer1 校验双 CampAreaID;补齐 mapLayer2~4 |
| 3.2 | 开战:`resolveCampAreaPolicy(topology, 'pvp')`;双玩家槽绑 campAreaId |
| 3.3 | `PvPBattleMode` 双槽全图;部署隔离按 campAreaId |
| 3.4 | `BattleBagSession`:删 type3、路径 rebuild、`MapPlaceValidator` type3 逻辑 |
| 3.5 | 刷新池:`BagWeaponPool` 改读 Text 表;铲子 = Text type=4 |
| 3.6 | 新建 `AiOpponentController`(Rank.aiweapon / aiusead / charactersweight) |
| 3.7 | `UIBattleGame` 裁剪:Gacha、副本机制 UI、章节引导 |
| 3.8 | 对抗 UI:上下阵营信息栏、局外道具槽 |
### Phase 4 — 资源与引用清扫
| 任务 | 说明 |
|------|------|
| grep 旧表名 | `Chapter\|Weapon1\|Weapon2\|Lottery\|ShopBuy\|NewFun` |
| 规范审计 | `python tools/规范审计.py --list` |
| 删未引用资源 | prefab、spine、音效(按 bundle 逐项) |
| 更新预载 | `ResPkgBuilder.ts`、`ConfigRes.ts` bundle 映射 |
| 战斗文档 | `battle/docs/需求说明.md` 增「新项目差异」章节 |
### Phase 5 — 验收
| 项 | 标准 |
|----|------|
| 启动链 | [test/启动链冒烟清单.md](../test/启动链冒烟清单.md) 通过 |
| 配表 | 12 张表全加载,Const 校验无 error |
| 编译 | 无旧表名引用 |
| 单局流程 | 首页 → 匹配 → 阵营战斗 → 胜负加星 |
| 每日 | 论功行赏可领;平台奖励入口可用 |
---
## 4. 必改核心文件
### 4.1 配表与数据
| 文件 | 改动 |
|------|------|
| `assets/script/game/ConfigTableData.ts` | 仅 12 表;清理旧 getter |
| `assets/script/interface/AutoTable.ts` | 新表类型;删旧表 interface |
| `assets/script/game/GameData.ts` | 段位存档字段 |
| `assets/script/game/ConfigProjectData.ts` | 删闯关逻辑,增 Rank/Level |
| `assets/script/game/ConfigRes.ts` | UIID 与 bundle 裁剪 |
| `assets/script/game/ResPkgBuilder.ts` | 预载列表 |
### 4.2 战斗
| 文件 | 改动 |
|------|------|
| `assets/script/battle/config/ChapterLevelBuilder.ts` | → Level 表 |
| `assets/script/battle/bag/WeaponComposeConfigProvider.ts` | → Text + Hero |
| `assets/script/battle/bag/BattleBagSession.ts` | 删 type3/路径逻辑 |
| `assets/script/battle/bag/BagWeaponPool.ts` | 读 Text 表 |
| `assets/script/battle/runtime/BattleRuntime.ts` | 阵营双玩家 + AI |
| `assets/script/ui/BattleGame/UIBattleGame.ts` | 大幅裁剪 |
| `assets/mx/module/battle/core/BattleSession.ts` | campPolicy=pvp |
### 4.3 局外
| 文件 | 改动 |
|------|------|
| `assets/script/ui/PanelHome/UIPanelHome.ts` | 段位首页 |
| `assets/script/ui/pageWeapon/UIpageWeapon.ts` | Weapon/Hero 新表 |
| `assets/script/ui/TurnTable/UITurnTable.ts` | Battlebuff 配置 |
| `assets/script/ui/MainUI/UIMainUI.ts` | Tab 裁剪(待美术) |
---
## 5. 可删除清单
### 5.1 ConfigRes UIID(计划注销)
以下 UI 模块在新产品中 **不做**,开发时从 `UIID` / `UIConfigs` 移除:
| 类别 | UI 目录 |
|------|---------|
| 副本 | `Replica/`, `ReplicaBox/`, `pageDungeon/`, `dungeonBox/`, `PopHelp/` |
| 角色养成 | `pageUserLevelup/`, `pageUserLevelupDetail/`, `skin/`, `skinLevel/` |
| 章节相关 | `selectDifficult/`, `jumpGameLevel/`, `chapterGift/`, `challengeTip/` |
| 任务 | `taskView/` |
| 签到主流程 | `sign7Day/`(论功行赏替代) |
| 商业化 | `PopFund/`, `PopGiftmonth/`, `PopFirstRecharge/`, `PopContinuouslyBag/`, `diamondShop/` |
| 活动 | `SignNewYear/` |
| 功能解锁 | `GetNewFun/`, `PopUnLockBtn/` |
| 叙事 | `saveText/`, `LayerGuide/`, `StoryLine` 相关 |
| 引流 | `atGameChoose` 及 attractingTraffic 相关 UIID |
| 其他 | `wipeOut/`, `boxLevelupDetail/`, `PanelCDK/`, `PanelComplain/` |
### 5.2 TS 目录(Phase 2 删除)
```
assets/script/attractingTraffic‌Game/ # 引流小游戏
assets/bundles/attractingTraffic‌Game/ # 对应 bundle
assets/script/ui/Replica/
assets/script/ui/ReplicaBox/
assets/script/ui/pageDungeon/
assets/script/ui/taskView/
assets/script/ui/sign7Day/ # 主流程替代后
assets/script/ui/PopFund/
assets/script/ui/PopGiftmonth/
assets/script/ui/PopFirstRecharge/
assets/script/ui/PopContinuouslyBag/
assets/script/ui/pageUserLevelup/
assets/script/ui/pageUserLevelupDetail/
assets/script/ui/skin/
assets/script/ui/skinLevel/
assets/script/ui/selectDifficult/
assets/script/ui/jumpGameLevel/
assets/script/ui/chapterGift/
assets/script/newFun/ # NewFun 解锁
assets/script/manager/TargetTaskManager.ts
assets/script/manager/ConstReplicaManager.ts
assets/script/manager/ChapterDataManager.ts # 评估后删或极简化
assets/script/manager/ChapterFieldResolver.ts
assets/script/activity/ # 季节性活动
```
### 5.3 Bundle(Phase 2~4 删除)
| Bundle | 说明 |
|--------|------|
| `attractingTrafficGame` | 引流小游戏 |
| `replica` | 副本 |
| `role` | 角色 Tab(若无其他引用) |
| `fund`, `giftMonth`, `firstRecharge`, `continuouslyBag`, `diamondShop`, `chapterGift` | 商业化子包 |
### 5.4 战斗遗留(Phase 3 删除或停用)
| 路径 | 说明 |
|------|------|
| `PvPBattleMode` | 双玩家槽 + 全图部署区;半图镜像 API 已删 |
| `assets/script/ui/BattleGame/ChoukaScript.ts` | Gacha 模式 |
| `assets/script/ui/BattleGame/ObstacleBrushController.ts` | 障碍刷格 |
| `assets/script/battle/view/Chapter1BattleGuidePresenter.ts` | 拖格子引导 |
| `assets/script/battle/view/MapLayer2BattleGuidePresenter.ts` | 金手指引导(视新引导重做) |
| `assets/script/battle/view/PathFlowLinePresenter.ts` | 拖路预览 |
| `assets/script/ui/BattleGame/JPS.ts` | 旧寻路 |
---
## 6. 配表与存档迁移
### 6.1 存档字段(建议)
| 新字段 | 类型 | 说明 |
|--------|------|------|
| `rankId` | number | 当前段位 id(Rank 表) |
| `rankStars` | number | 当前段内星数(0~level) |
| `dailyWins` | number | 今日胜场 |
| `yesterdayRankId` | number | 昨日结算时段位(论功行赏) |
| `yesterdayWins` | number | 昨日胜场 |
| `meritClaimedDate` | string | 论功行赏领取日期 |
| `dailyItems` | array | 当日 Battlebuff 道具(主动+被动) |
| `heroWeapons` | object | 神将装备映射 |
**删除字段**(迁移后):`chapter`、`chapterBox`、`replicaProgress`、`taskProgress`、`sign7Day` 等。
### 6.2 旧存档策略
- 新产品上线视为 **新档**;不做老档自动迁移(除非另行需求)
- 开发阶段可清空本地存储验证
---
## 7. 局外导航方案(待美术定稿)
| 方案 | 描述 | 影响文件 |
|------|------|----------|
| **A:单页入口** | 首页集中入口(原型) | `UIPanelHome` 承载全部跳转;可简化或移除 `UIMainUI` Tab |
| **B:精简 Tab** | 底部 2~3 Tab(首页/商店/神将武器) | 改造 `UIMainUI`,删 Role/Replica Tab |
**共同约束**:
- 删除 Role、Replica Tab 及 bundle 依赖
- 排行榜、论功行赏、转盘可作为首页入口或独立弹窗
---
## 8. 风险与回滚
| 风险 | 缓解 |
|------|------|
| 代码仍引旧表导致编译失败 | Phase 1 先改类型与 Builder,再删 UI |
| 删 bundle 后 prefab 引用断裂 | 用编辑器「引用查找」+ grep 确认零引用 |
| 阵营地图配置错误 | `campAreaMapValidation` 开战前校验,失败 warn 并中止 |
| 原型细节与正式需求不符 | 文档标「待正式需求」,不擅自实现 |
**回滚**:按 Phase 提交 Git,每 Phase 结束前保持可编译、可进游戏。
---
## 9. 相关文档
| 文档 | 说明 |
|------|------|
| [需求-新项目概述.md](./需求-新项目概述.md) | 产品大致需求 |
| [需求-模块保留.md](./需求-模块保留.md) | 模块保留/删除决策 |
| [遗留代码收敛方案.md](./遗留代码收敛方案.md) | 代码规范收敛 |
| [开发规范.md](./开发规范.md) | 生成代码必遵 |