Просмотр исходного кода

docs(spec): T41 成长页小游戏入口设计定稿

Agnes Agent 1 неделя назад
Родитель
Сommit
abc0b932d9
1 измененных файлов с 69 добавлено и 0 удалено
  1. 69 0
      docs/superpowers/specs/2026-11-05-miniapp-games-entry.md

+ 69 - 0
docs/superpowers/specs/2026-11-05-miniapp-games-entry.md

@@ -0,0 +1,69 @@
+# 成长页小游戏入口设计
+
+- 日期:2026-11-05
+- 状态:设计定稿(待派发)
+- 需求方:廖总
+- 来源:「普通用户在成长页面也可以加小游戏入口」
+
+## 0. 现状核查(只读)
+
+- **入口断裂**(2026-11-05 全库核查结论):
+  - `pages/games/list.vue`(🎮 益智小游戏大厅,标题「小游戏」)**已存在且已注册**(pages.json `pages/games/list`,title「小游戏」),从 `getMiniGameList()` 拉列表,点击游戏跳 `schulte`/`1a2b`/`sudoku`。
+  - 但**全库无任何页面跳转到 `/pages/games/list`**(零引用)→ 大厅无法从界面进入(孤儿页)。
+  - 游戏本体 `schulte`/`1a2b`/`sudoku` 页面文件都在、已注册,但只能从大厅 list 进入。
+- **死链**:`pages/home-pages/child-index.vue:739` `goToGames()` → `/pages/games/games`(**页面文件不存在**、pages.json 未注册)→ 孩子首页「小游戏」按钮点开是坏的。
+- **成长页** `pages/growth-main/index.vue`(tabBar 页):
+  - 登录态(`isLoggedIn=true`,133 行 `v-else` 分支)有「今日成长」progress-card、「饮食推荐」action-card(201 行,`@click="goToFoods"`,样式类 `.action-card` 定义于 756 行)等。
+  - **无任何小游戏入口**(grep `goToGames`/`games/list` 零命中)。
+  - 未登录态(4 行 `v-if="!isLoggedIn"`)为游客预览(gg-page)。
+
+## 1. 方案
+
+### 1.1 成长页登录态加「小游戏」入口卡(主)
+- 位置:登录态「饮食推荐」`action-card`(201 行)**之后**,新增一个同款 `action-card`。
+- 样式:**完全复用**既有 `.action-card` / `.action-icon-wrap` / `.action-info` / `.action-title` / `.action-desc` / `.action-arrow`(756 行起,不新增样式,避免视觉不一致)。
+- 内容:
+  - 图标 `🎮`(`action-icon-wrap`,`warm` 或默认色均可,建议 `warm` 与饮食推荐区分)
+  - 标题 `益智小游戏`
+  - 描述 `舒尔特方格 · 猜数字 · 数独`
+  - 右箭头 `›`
+- 事件:`@click="goToGames"`。
+
+### 1.2 新增方法 `goToGames`
+```js
+goToGames: function() {
+  uni.navigateTo({ url: '/pages/games/list' })
+}
+```
+
+### 1.3 修复 child-index 死链(辅,打通孩子页入口)
+- `pages/home-pages/child-index.vue:739`:`goToGames()` 的跳转目标 `/pages/games/games` → `/pages/games/list`。
+- 理由:孩子首页「小游戏」按钮已存在,但指向不存在的 `games/games`;统一改为大厅 `games/list`,孩子页与成长页都能进。
+
+## 2. 约束与边界(开发必读)
+
+1. **只改前端**,不涉及后端/数据库。
+2. **不新增样式**:完全复用既有 `.action-card` 系列,避免视觉回归。
+3. **不改**成长页其他逻辑(打卡/活动/推荐阅读/商品等),仅新增一个入口卡 + 一个方法。
+4. child-index 改动**仅一行**(跳转路径),不动其他。
+5. 遵守 cfc-frontend 既有规范(不用可选链 `?.`、不用 CSS grid、不用 `:key` 表达式等)。
+6. 编译通过(uni-app build:mp-weixin 或既有 build 命令)。
+
+## 3. 验收
+
+- 成长页登录态可见「🎮 益智小游戏」卡,点击进入 `games/list` 大厅,再点游戏进入 `schulte`/`1a2b`/`sudoku`。
+- 孩子首页「小游戏」按钮点击进入 `games/list` 大厅(死链修复)。
+- 大厅列表从 `getMiniGameList()` 正常加载;无游戏时显示「暂无小游戏,请联系管理员添加」。
+
+## 4. 任务书
+
+- 编号 **T41**(P1,module=cfc-frontend)
+- spec = 本文件
+- 改动文件:
+  - `cfc-frontend/pages/growth-main/index.vue`(+1 入口卡 +1 方法)
+  - `cfc-frontend/pages/home-pages/child-index.vue`(1 行跳转修正)
+- 验收:编译通过;成长页/孩子页均可进入 `games/list` 大厅。
+
+## 5. 备注
+
+- 本任务不处理:任务相关 6 处死链(`index-home.vue:1710/1712`、`child/tasks.vue:300/304`、`tasks/tasks.vue:578/580` 跳 `/pages/games/index`、`/pages/games/focus-timer`),这些页面不存在,属另一问题(若「做游戏得积分」场景需要,应另立页面或改指向),待主理人拍板。