refactor: 收口作品架删除确认模型

This commit is contained in:
2026-06-04 01:35:11 +08:00
parent 7301043afb
commit 75593b8860
7 changed files with 738 additions and 97 deletions

View File

@@ -0,0 +1,33 @@
# 【前端架构】Creation Work Delete Flow 收口计划
## 背景
平台入口作品架的删除入口覆盖 RPG、拼图、抓大鹅、方洞挑战、大鱼吃小鱼、视觉小说和宝贝识物。此前 `PlatformEntryFlowShellImpl.tsx` 在每个删除 handler 内重复计算确认框标题、删除说明、草稿 notice key 和拼图派生稳定 ID。壳层既要理解每种玩法的作品身份又要承接异步删除、刷新列表、错误状态和页面跳转导致删除确认规则缺少稳定测试面。
**Interface** 过浅:页面只想展示“删除哪个作品、会从哪里移除、删除成功后清哪些生成 notice”却必须知道 `workId` / `profileId` / `sourceSessionId` / `draftId``status` / `publicationStatus` / `publishStatus` 和宝贝识物特殊公开去向。
## 决策
新增 `src/components/platform-entry/platformCreationWorkDeleteFlow.ts` 作为 Creation Work Delete Flow **Module**。其唯一公开 **Interface**`resolvePlatformCreationWorkDeleteConfirmationModel(input)`,输入为带 `kind` 的 union输出
- `id`:确认框和删除 busy 使用的稳定作品 ID。
- `title`:确认框标题,含拼图、视觉小说和宝贝识物标题兜底。
- `detail`:草稿 / 已发布删除说明,宝贝识物已发布使用“寓教于乐板块”文案。
- `noticeKeys`:删除成功后应标记已读的草稿生成 notice keys拼图包含 `buildPuzzleResultWorkId` / `buildPuzzleResultProfileId` 派生 key。
`PlatformEntryFlowShellImpl.tsx` 仍作为副作用 **Adapter**:负责鉴权保护、确认框 state、调用各玩法删除 API、清错误、刷新作品架 / 公开广场、`markDraftNoticeSeen` 和必要的页面跳转。`run` 不进入纯 **Module**,避免把网络副作用和 React state 写入藏入模型层。
## 约定
- 新玩法接入作品架删除时,先补齐后端删除链路、作品架 action 和本 **Module** 的确认模型,再开放删除按钮。
- Jump Hop、Wooden Fish 和 Bark Battle 当前仅有作品架 action 预留,平台壳不传删除 handler不得因本 Module 存在而默认开放删除。
- 删除确认文案不得散回平台壳;若公开去向不是公开广场,应在本 **Module** 明确分支。
- 草稿 notice key 的身份扩展必须复用 `collectDraftNoticeKeys`,保持 trim、去空和去重语义一致。
## 验证
- `npm run test -- src/components/platform-entry/platformCreationWorkDeleteFlow.test.ts`
- `npm run test -- src/components/platform-entry/platformDraftGenerationShelfModel.test.ts`
- `npx eslint src/components/platform-entry/platformCreationWorkDeleteFlow.ts src/components/platform-entry/platformCreationWorkDeleteFlow.test.ts src/components/platform-entry/PlatformEntryFlowShellImpl.tsx --quiet`
- `npm run typecheck`
- `npm run check:encoding`