Files
2026-01-29 23:31:12 +08:00

110 lines
4.3 KiB
Markdown
Raw Permalink 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.
# Splash Consent任务清单
> 说明:本清单根据 `plan.md` 拆解,要求“可执行、可验收、可标记”。
> 标记规则:执行完成后将对应项从 `- [ ]` 改为 `- [x]`,并把“状态”改为 **已完成**;进行中改为 **进行中**;阻塞写明原因与解除条件。
## 0. UI 参考(本次实现对齐)
- **参考截图**:你提供的开屏页样式(花束插画 + 文案 + 圆角渐变按钮 + 协议入口)
- **图片资源**`client/assets/images/index/index_flowers.png`
- **按钮渐变色**`#F69F7B``#F99CC0`
- **交互约束**
- 仅首次(未同意)显示“同意按钮 + 协议入口”
- 同意后写入本地 `consent.accepted=true`,并进入既有启动分发 `app/index.tsx`
## 1. 依赖与基础设施
- [ ] **安装并接入渐变组件Expo 官方)**
- **状态**:未开始
- **命令**
```bash
cd client
pnpm add expo-linear-gradient
```
- **验收**:项目可正常启动,页面可渲染渐变按钮
- [ ] **确认外部链接打开方式expo-web-browser可用**
- **状态**:未开始
- **说明**:已存在依赖则跳过安装;否则安装 `expo-web-browser`(当前项目初始化模板通常已包含)
- **验收**:能通过代码打开 `https://example.com/*` 外链
## 2. 本地存储:协议同意状态
- [ ] **在 `src/storage/appStorage.ts` 增加 consent 读写方法**
- **状态**:未开始
- **Key**`consent.accepted`
- **新增 API建议**
- `getConsentAccepted(): Promise<boolean>`
- `setConsentAccepted(accepted: boolean): Promise<void>`
- **验收**:不在 UI 代码里硬编码 key重启后状态仍然保留
## 3. 路由与启动分发接入
- [ ] **新增开屏路由:`app/(splash)/splash.tsx`**
- **状态**:未开始
- **要求**
- 展示主视觉图片(`index_flowers.png`
- 底部区域包含:渐变按钮 + 协议入口(仅未同意时显示)
- **验收**:路由可访问并正常渲染 UI
- [ ] **修改 `app/index.tsx`:增加 consent gate**
- **状态**:未开始
- **规则**
-`consent.accepted !== true`:跳转到 `/(splash)/splash`
- 否则沿用原逻辑Onboarding / Home
- **验收**:首次启动先到开屏;同意后进入既有分发
## 4. 开屏页 UI 落地(对齐参考图)
- [ ] **布局与样式实现(适配安全区)**
- **状态**:未开始
- **布局建议(可微调)**
- 顶部:插画居中,`resizeMode="contain"`
- 中部:主文案(支持 i18n
- 底部:渐变按钮(圆角/阴影轻微)+ 协议入口(文本按钮)
- 注意底部 Home Indicator 安全区
- **验收**:不同屏幕尺寸下不遮挡、不溢出,整体视觉接近参考图
- [ ] **渐变按钮(仅首次出现)**
- **状态**:未开始
- **颜色**`#F69F7B``#F99CC0`
- **点击行为**
- `setConsentAccepted(true)`
- `router.replace('/')`(回到启动分发)
- **验收**:点击后按钮不再出现(重启仍不出现),并进入后续流程
- [ ] **协议入口(外部链接,占位 URL**
- **状态**:未开始
- **链接**
- 隐私协议:`https://example.com/privacy`
- 用户使用协议:`https://example.com/terms`
- **打开方式**:优先 `expo-web-browser`,兜底 `Linking.openURL`
- **验收**:点击可打开外链;失败时不崩溃(可 toast/alert 提示)
## 5. i18n 文案补齐
- [ ] **新增开屏相关 i18n key至少 zh-CN/en尽量补齐 5 语)**
- **状态**:未开始
- **建议 key**
- `consent.title`(可选)
- `consent.subtitle`(可选)
- `consent.agree`
- `consent.privacy`
- `consent.terms`
- **验收**:开屏页不出现硬编码长句;切换语言可生效
## 6. 自测与验收
- [ ] **首次启动流程自测**
- **状态**:未开始
- **路径**Splash显示按钮/协议入口)→ 同意 → 进入 `app/index.tsx` 分发Onboarding/Home
- **验收**:与 `spec.md` / `plan.md` 验收一致
- [ ] **非首次启动流程自测**
- **状态**:未开始
- **路径**:直接进入 `app/index.tsx` 分发(不再出现同意按钮与协议入口)
- **验收**:同意状态持久化生效