From 727aae584424cf498b3ed07155b9979d086a2612 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Tue, 6 Oct 2026 17:48:58 +0800 Subject: [PATCH] =?UTF-8?q?AGC=20=E9=99=B6=E6=B3=A5=E5=84=BF=E5=8F=91?= =?UTF-8?q?=E5=B8=83=E8=A1=A8=E5=8D=95=E5=86=85=E8=81=94=E8=BF=9B=E5=B7=A6?= =?UTF-8?q?=E6=A0=8F=E5=B9=B6=E6=8A=8A=E7=8A=B6=E6=80=81=E6=8F=90=E5=8D=87?= =?UTF-8?q?=E5=88=B0=E9=9D=A2=E6=9D=BF=E6=A0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 陶泥儿 tab 改为左右两栏:左半内联发布资料表单,右半第二个会话 chatbox - 去掉「发布到游戏广场」二次跳转与弹窗表单,主行动改为内容末尾的橙色「打包并发布」 - 打包并发布一次点击先按需构建打包(沿用进度 / 阻断弹窗),成功后直接提交发布 - 抽出 useGameDistributionPublishForm 与 GameDistributionPublishFormView,弹窗与内联共用同一份表单 - 发布表单状态提升到面板根 useTaonierTab,切 tab 不丢已填资料;只在首次进入陶泥儿 tab 时初始化 - 同步更新发布反馈用例与玩法链路文档 --- .../GameDistributionPublishFormView.tsx | 513 ++++++++++ .../GameDistributionPublishPanel.tsx | 888 +----------------- .../useGameDistributionPublishForm.ts | 630 +++++++++++++ .../export/state/usePanel.ts | 10 + .../export/state/useTaonierTab.ts | 219 +++-- .../export/tabs/taonier/Page.tsx | 57 +- .../export/tabs/taonier/PublishPane.tsx | 42 + .../export/tabs/taonier/chat/Pane.tsx | 19 + .../tests/gamePublishFeedback.test.tsx | 18 +- ...�玩法创作】平台入口与玩法链路-2026-05-15.md | 2 +- 10 files changed, 1412 insertions(+), 986 deletions(-) create mode 100644 apps/ai-game-creator-shell/src/components/game-distribution/GameDistributionPublishFormView.tsx create mode 100644 apps/ai-game-creator-shell/src/components/game-distribution/useGameDistributionPublishForm.ts create mode 100644 apps/ai-game-creator-shell/src/view/project-development/export/tabs/taonier/PublishPane.tsx create mode 100644 apps/ai-game-creator-shell/src/view/project-development/export/tabs/taonier/chat/Pane.tsx diff --git a/apps/ai-game-creator-shell/src/components/game-distribution/GameDistributionPublishFormView.tsx b/apps/ai-game-creator-shell/src/components/game-distribution/GameDistributionPublishFormView.tsx new file mode 100644 index 000000000..680203c86 --- /dev/null +++ b/apps/ai-game-creator-shell/src/components/game-distribution/GameDistributionPublishFormView.tsx @@ -0,0 +1,513 @@ +import { Eye, Trash2 } from 'lucide-react'; + +import { GAME_DISTRIBUTION_CATEGORIES } from '../../../../../packages/shared/src/contracts/gameDistribution'; +import { + type GameDistributionPublishMetadata, + MAX_AGC_GAME_SCREENSHOTS, +} from '../../services/gameDistributionPublish'; +import { ThemedModal } from '../modal/ThemedModal'; +import { + type GameDistributionPublishFormState, + PANEL_IMAGE_ACCEPT, +} from './useGameDistributionPublishForm'; + +/** + * 发布资料表单的表现层:弹窗与工作台内联共用同一份 DOM 结构。 + * + * 状态全部来自 `form`(`useGameDistributionPublishForm` 的返回值);内联形态把主行动换成 + * 内容末尾整行橙色的「打包并发布」。 + */ +export function GameDistributionPublishFormView({ + form, + inline = false, + open, + onClose, + packaging = false, +}: { + form: GameDistributionPublishFormState; + inline?: boolean; + open: boolean; + onClose: () => void; + packaging?: boolean; +}) { + const { + packageResult, + title, + setTitle, + summary, + setSummary, + category, + setCategory, + busy, + error, + result, + cover, + setCover, + screenshots, + previewScreenshot, + setPreviewScreenshot, + uploadingLabel, + metadataSuggestionPending, + metadataSuggestionReady, + coverConfirmOpen, + setCoverConfirmOpen, + generatingCover, + coverGenerationPrice, + coverGenerationDetail, + coverInputRef, + screenshotInputRef, + summaryTouchedRef, + categoryTouchedRef, + activeScreenshotCount, + screenshotsUploading, + coverPriceLabel, + handleCoverSelected, + handleGenerateCover, + handleScreenshotsSelected, + removeScreenshot, + handleSubmit, + handlePackageAndPublish, + } = form; + + const fieldsAndMedia = ( + <> +
+ +