Files
mindfulness/spec_kit/Onboarding App Shell/tasks.md
2026-01-28 22:13:55 +08:00

128 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Onboarding App Shell任务清单
> 说明:本清单根据 `plan.md` 拆解,要求“可执行、可验收、可标记”。
> 标记规则:执行完成后将对应项从 `- [ ]` 改为 `- [x]`,并把“状态”改为 **已完成**;进行中改为 **进行中**;阻塞写明原因与解除条件。
## 0. 清单状态说明
- **状态**:未开始 / 进行中 / 已完成 / 阻塞
- **阻塞**:必须写明阻塞点与解除条件
## 1. 路由重构(不使用 Tabs
- [ ] **移除 Tabs 导航结构,切换为 Stack + Header 入口**
- **状态**:未开始
- **范围**`client/app/(tabs)/*``client/app/_layout.tsx`、新增 `client/app/(app)/*``client/app/(onboarding)/*`
- **要求**
- 首页为 `Home`(非 Tab
- 从 Home 的 Header 进入 `Favorites``Settings`
- **验收**:启动后不出现 TabBar可从 Home 进入收藏夹与设置
- [ ] **实现启动分发 `app/index.tsx`(按 onboarding 状态跳转)**
- **状态**:未开始
- **规则**
- `onboarding.completed=true`:进入 `/(app)/home`
- 否则进入 `/(onboarding)/onboarding`
- **验收**:首次启动进入 Onboarding完成后重启直接进 Home
## 2. 本地存储与数据模型
- [ ] **封装 AsyncStorage 访问层(统一 key 与读写)**
- **状态**:未开始
- **Key**
- `onboarding.completed`
- `push.promptState`
- `content.reactions`
- `favorites.items`
- **验收**:读写都有类型约束;不会散落在 UI 代码里重复写 key
- [ ] **提供本地 mock 内容列表(带稳定 id**
- **状态**:未开始
- **字段**`id``text`
- **验收**Home 可稳定渲染一条内容,并能切换到下一条(如实现)
## 3. Onboarding35 页,全部可跳过)
- [ ] **实现 Onboarding 容器页35 页)**
- **状态**:未开始
- **要求**
- 显示进度(例如 `2/4`
- 每页都有“下一步”与“跳过”
- 任意页有“一键跳过整个 Onboarding”
- **验收**:可从任意页跳过且不阻塞进入 PushPrompt
- [ ] **Onboarding 完成状态持久化**
- **状态**:未开始
- **要求**:完成或整体跳过时写入 `onboarding.completed=true`
- **验收**:重启 App 不再出现 Onboarding
## 4. PushPrompt需要且可跳过
- [ ] **实现 PushPrompt 页面**
- **状态**:未开始
- **按钮**
- 立即开启(触发系统权限申请)
- 稍后(跳过)
- **持久化**
- 立即开启:写入 `push.promptState=enabled`
- 稍后:写入 `push.promptState=skipped`
- **验收**:无论选择/权限结果如何,都能进入 Home
## 5. Home点赞/讨厌)
- [ ] **实现 Home 页面(内容卡片 + Like/Dislike**
- **状态**:未开始
- **要求**
- 展示一条 mock 内容
- Like / Dislike 按钮明显
- **验收**:点击 Like/Dislike 会写入本地记录
- [ ] **实现 Like=收藏规则**
- **状态**:未开始
- **规则**
- Like记录 `content.reactions[id]='like'`
- Like`id` 追加到 `favorites.items`(去重)
- Dislike记录 `content.reactions[id]='dislike'`(不改变出现策略)
- **验收**Like 后收藏夹可见该内容Dislike 仅记录不影响收藏
- [ ] **在 Home Header 加入入口:收藏夹、设置**
- **状态**:未开始
- **验收**:从 Home 可进入 Favorites 与 Settings
## 6. Favorites仅展示不可取消/清空)
- [ ] **实现 Favorites 页面(只读列表)**
- **状态**:未开始
- **要求**
- 展示 `favorites.items` 对应的内容
- 不提供取消收藏/清空
- **验收**Like 的内容在此页可见;无取消入口
## 7. Settingsversion + iOS 小组件说明文案)
- [ ] **实现 Settings 页面**
- **状态**:未开始
- **内容**
- version 信息行(仅 version
- iOS 小组件说明卡片(美观文案)
- **验收**:页面可进入,信息展示正确,文案样式不突兀
## 8. i18n 文案补齐
- [ ] **补齐 Onboarding/Push/Home/Favorites/Settings 的 i18n key至少 zh-CN/en**
- **状态**:未开始
- **要求**
- key 点分层:`onboarding.*``push.*``home.*``favorites.*``settings.*`
- 先覆盖 `zh-CN/en`,其余语言可后续逐步补齐
- **验收**:页面不出现硬编码长句;主要文案可切换语言生效
## 9. 自测与验收
- [ ] **流程自测(首次/非首次)**
- **状态**:未开始
- **路径**
- 首次启动Onboarding逐页跳过/整体跳过)-> PushPrompt开启/稍后)-> Home
- 非首次:直接 Home
- **验收**:与 `plan.md` 的验收清单一致