suzmii
d89e21ffd5
feat(游戏共创): 首页新增「从平台作品开始创作」入口(唯一可点的客户端路径)
- 入口位置:首页模板库推荐位之后新增一节「从平台作品开始创作」。与模板库同属「从现成内容
起步」,但这条拿的是平台作品的已构建成品(可玩参考 + 素材),不是可编辑工程,因此单独成节
而不是塞进模板库;未登录用户进不到首页,服务端也确实对任何登录用户开放取件,无需额外灰度。
- 交互:输入平台作品 ID 或作品链接 → 解析出作品 ID(裸 ID / `?id=` / `?gameId=` / `/games/<id>`,
也容忍不带 scheme 的粘贴;解析不出就本地拦截、不发请求)→ 调
`create_local_project_from_platform_game`(name/planning 走默认,与模板链路一致)→
成功后复用模板那条「原生已落盘 → 登记最近项目并进入工作区」通道进项目。
- 三类结果:① 未登录/登录过期(`authentication-required:`)→「请重新登录后重试」;
② 403 未开放授权(`permission-denied:`)与 409 未公开/已下架(`fork-source-not-available:`)
按服务端文案分别展示,且都不建项目、按钮可重试;③ 成功展示「改编自平台作品 <gameId>」
与 `reference/<gameId>/` 参考产物位置,让来源事实可见。
- 为此给取件的 404/409 补了与 401/403 同族的稳定前缀(`fork-source-not-found:` /
`fork-source-not-available:`):渲染层按前缀精确分类,不做文案子串猜测。
- 加载态:取件期间按钮禁用 + 明确提示「下载、校验、解压需要几分钟」,并用 ref 守卫挡住同一
tick 的重复提交(只认最后一次请求)。
- 文案严守产品口径:拿到的是「已构建成品」= 可玩参考 + 素材,不能直接再次发布,需在新工程里
改造后发布;不出现「一键复刻工程」这类说法。
- 门禁登记:命令已接回 App 入口,因此从 `scripts/check-config.mjs` 的 native-only 白名单移除
(该脚本要求「已接入」与「未接入」两个集合互斥)。
- 测试:新增 `tests/platformGameFork.test.tsx`(纯解析/失败分类 + 组件:空与非法输入不发请求、
403/409/401 各自提示且不建项目、加载态与重复提交、成功时命令参数与「改编自」展示)。
2026-10-05 17:30:47 +08:00
..
2026-10-05 00:55:29 +08:00
2026-10-03 20:19:45 +08:00
2026-10-04 00:38:06 +08:00
2026-09-24 11:47:32 +08:00
2026-09-18 14:34:10 +08:00
2026-09-21 21:09:34 +08:00
2026-09-21 21:09:34 +08:00
2026-10-02 15:14:34 +08:00
2026-09-28 14:15:02 +08:00
2026-09-28 14:15:02 +08:00
2026-08-20 19:07:25 +08:00
2026-09-19 01:28:27 +08:00
2026-10-03 20:19:45 +08:00
2026-10-03 20:19:45 +08:00
2026-10-02 17:54:10 +08:00
2026-09-24 16:56:49 +08:00
2026-10-02 18:10:17 +08:00
2026-10-03 20:19:45 +08:00
2026-09-30 14:07:25 +08:00
2026-10-03 20:19:45 +08:00
2026-10-03 20:19:45 +08:00
2026-10-03 17:41:30 +08:00
2026-09-14 13:56:56 +08:00
2026-10-03 17:41:30 +08:00
2026-10-03 20:19:45 +08:00
2026-08-20 19:07:25 +08:00
2026-10-02 12:08:26 +08:00
2026-10-03 20:19:45 +08:00
2026-10-03 20:19:45 +08:00
2026-10-03 17:41:30 +08:00
2026-10-03 20:19:45 +08:00
2026-09-17 17:56:53 +08:00
2026-10-03 17:41:30 +08:00
2026-10-05 15:35:55 +08:00
2026-09-19 15:08:31 +08:00
2026-09-19 15:08:31 +08:00
2026-10-03 17:41:30 +08:00
2026-09-22 16:45:29 +08:00
2026-10-03 17:41:30 +08:00
2026-10-03 17:41:30 +08:00
2026-09-30 13:11:45 +08:00
2026-10-03 17:41:30 +08:00
2026-10-03 20:19:45 +08:00
2026-10-03 13:42:40 +08:00
2026-10-03 19:21:18 +08:00
2026-10-03 17:41:30 +08:00
2026-09-21 21:09:34 +08:00
2026-09-28 14:15:02 +08:00
2026-10-03 20:19:45 +08:00
2026-09-07 15:17:21 +08:00
2026-08-20 19:07:25 +08:00
2026-09-17 17:56:53 +08:00
2026-10-05 17:30:46 +08:00
2026-10-04 00:24:45 +08:00
2026-10-05 17:30:46 +08:00
2026-10-01 16:30:40 +08:00
2026-10-04 00:24:45 +08:00
2026-10-04 14:04:02 +08:00
2026-10-02 13:07:00 +08:00
2026-10-04 16:59:59 +08:00
2026-09-15 12:14:03 +08:00
2026-10-03 20:19:45 +08:00
2026-10-03 17:41:30 +08:00
2026-10-03 20:19:45 +08:00
2026-09-29 19:35:49 +08:00
2026-09-23 18:38:47 +08:00
2026-09-28 15:07:30 +08:00
2026-10-03 17:41:30 +08:00
2026-10-05 17:30:47 +08:00
2026-10-03 17:41:30 +08:00
2026-09-28 14:15:02 +08:00
2026-10-03 17:41:30 +08:00
2026-09-13 14:48:55 +08:00
2026-10-03 20:19:45 +08:00
2026-10-03 17:41:30 +08:00
2026-09-22 15:35:51 +08:00
2026-10-03 17:41:30 +08:00
2026-09-10 18:48:56 +08:00
2026-10-03 17:41:30 +08:00
2026-09-21 03:48:40 +08:00
2026-10-03 20:19:45 +08:00
2026-10-04 16:59:59 +08:00
2026-09-15 10:37:47 +08:00
2026-10-03 20:19:45 +08:00
2026-10-03 17:41:30 +08:00
2026-10-04 15:13:31 +08:00
2026-10-03 20:19:45 +08:00
2026-08-20 19:07:25 +08:00
2026-10-03 20:19:45 +08:00
2026-09-14 13:19:13 +08:00
2026-10-03 20:19:45 +08:00
2026-09-23 11:12:39 +08:00
2026-09-21 01:23:35 +08:00
2026-09-12 20:49:03 +08:00
2026-10-03 20:19:45 +08:00
2026-09-19 01:50:09 +08:00
2026-09-14 11:32:17 +08:00
2026-10-03 17:41:30 +08:00
2026-10-03 17:41:30 +08:00
2026-09-09 16:09:39 +08:00
2026-09-21 22:56:32 +08:00
2026-10-03 17:41:30 +08:00
2026-10-03 17:41:30 +08:00
2026-10-03 17:41:30 +08:00
2026-10-03 17:41:30 +08:00
2026-09-12 20:49:03 +08:00
2026-10-03 17:41:30 +08:00
2026-09-21 11:58:13 +08:00
2026-10-03 17:41:30 +08:00
2026-09-21 01:33:06 +08:00
2026-10-04 00:38:06 +08:00
2026-09-19 21:59:44 +08:00
2026-09-11 21:31:30 +08:00
2026-10-03 17:41:30 +08:00
2026-10-03 17:41:30 +08:00
2026-09-20 23:32:09 +08:00
2026-10-02 18:10:17 +08:00
2026-10-03 17:41:30 +08:00
2026-10-03 20:19:45 +08:00
2026-10-03 20:19:45 +08:00
2026-09-21 12:34:47 +08:00
2026-10-04 17:14:26 +08:00
2026-09-21 11:58:13 +08:00
2026-09-17 17:47:11 +08:00
2026-09-11 16:42:40 +08:00
2026-07-31 12:00:48 +08:00
2026-10-04 13:11:37 +08:00
2026-10-03 20:19:45 +08:00
2026-09-19 01:50:09 +08:00
2026-10-03 17:41:30 +08:00
2026-10-03 17:41:30 +08:00
2026-09-21 01:23:35 +08:00
2026-09-12 20:49:03 +08:00
2026-10-03 17:41:30 +08:00
2026-10-04 14:04:02 +08:00
2026-09-21 01:23:35 +08:00
2026-10-03 20:19:45 +08:00
2026-10-03 17:41:30 +08:00
2026-09-21 06:21:19 +08:00
2026-09-21 01:23:35 +08:00
2026-09-19 01:50:09 +08:00
2026-10-03 17:41:30 +08:00
2026-08-12 10:54:16 +08:00
2026-10-03 17:41:30 +08:00
2026-09-16 03:59:27 +08:00
2026-09-16 17:39:23 +08:00
2026-09-20 17:36:02 +08:00
2026-10-03 17:41:30 +08:00
2026-10-03 17:41:30 +08:00
2026-09-28 14:15:02 +08:00
2026-09-11 20:29:45 +08:00
2026-09-17 19:01:35 +08:00
2026-10-03 20:19:45 +08:00
2026-09-19 01:28:27 +08:00
2026-09-19 01:28:27 +08:00
2026-09-20 17:36:02 +08:00
2026-10-03 20:19:45 +08:00
2026-10-02 22:24:00 +08:00
2026-09-21 21:09:34 +08:00
2026-08-12 13:14:55 +08:00
2026-10-03 20:19:45 +08:00
2026-09-21 01:23:35 +08:00
2026-10-03 20:19:45 +08:00
2026-10-03 20:19:45 +08:00
2026-10-04 17:14:26 +08:00
2026-10-04 15:56:41 +08:00
2026-10-03 20:19:45 +08:00
2026-10-03 20:19:45 +08:00
2026-10-04 14:48:28 +08:00
2026-09-23 00:09:12 +08:00
2026-09-16 05:42:20 +08:00
2026-10-03 17:41:30 +08:00
2026-10-03 17:41:30 +08:00
2026-10-03 17:41:30 +08:00
2026-10-03 17:41:30 +08:00
2026-10-03 17:41:30 +08:00
2026-09-13 14:07:03 +08:00
2026-07-30 18:01:19 +08:00
2026-07-30 18:01:19 +08:00
2026-10-03 17:41:30 +08:00
2026-09-20 14:49:57 +08:00
2026-10-03 20:19:45 +08:00
2026-09-23 16:51:15 +08:00
2026-09-23 16:51:15 +08:00
2026-10-03 17:41:30 +08:00
2026-09-23 19:05:33 +08:00
2026-09-03 19:36:18 +08:00
2026-10-03 17:41:30 +08:00
2026-08-20 19:07:25 +08:00
2026-08-20 19:07:25 +08:00
2026-09-24 16:04:29 +08:00
2026-10-03 17:41:30 +08:00
2026-10-03 17:41:30 +08:00
2026-10-03 17:41:30 +08:00
2026-08-20 19:07:25 +08:00
2026-10-03 17:41:30 +08:00
2026-10-03 17:41:30 +08:00
2026-10-03 17:41:30 +08:00
2026-10-02 13:48:26 +08:00
2026-10-03 20:19:45 +08:00
2026-10-03 17:41:30 +08:00
2026-10-03 20:19:45 +08:00
2026-10-03 20:19:45 +08:00
2026-09-20 17:36:02 +08:00
2026-10-03 17:41:30 +08:00
2026-09-28 14:15:02 +08:00
2026-10-05 15:35:55 +08:00
2026-09-23 19:05:33 +08:00
2026-09-19 15:08:31 +08:00
2026-10-03 17:41:30 +08:00
2026-10-04 14:04:02 +08:00
2026-09-24 16:25:21 +08:00
2026-10-03 20:19:45 +08:00
2026-10-05 15:35:55 +08:00