fix:小组件- PUSH

This commit is contained in:
吕新雨
2026-02-03 17:43:58 +08:00
parent d742b398ef
commit c1c2c6197d
66 changed files with 4888 additions and 479 deletions

View File

@@ -0,0 +1,68 @@
# Policy Links任务清单
> 说明:本清单按 `plan.md` 拆分为可执行任务。
> 状态含义:`[ ]` 未完成,`[x]` 已完成。
## 0. 前置检查
- [x] 确认客户端存在至少两处协议入口首次同意页、个人主页弹窗ProfileModal
- [x] 确认后端路由前缀体系为 `/v1/*`
## 1. 后端FastAPI——协议链接下发
### 1.1 配置项(环境变量)
- [x] 在后端配置类中新增协议链接配置EN 兜底 + 可选 TC
- [x]`server/env.example` 补充 `LEGAL_*` 配置示例与注释
### 1.2 API 路由与返回结构
- [x] 新增 `GET /v1/legal/links` 接口
- [x] 解析 `Accept-Language`(轻量:只关心 `en/tc`,其他回退 `en`
- [x] 支持语言缺失/未配置时回退 EN
- [x] 返回 `resolvedLang` 便于排查
- [x]`app/main.py` 注册 legal router
### 1.3 代码质量与最小校验
- [x] 确保后端代码可被 `python3 -m compileall` 编译通过
- [x] 可选补充单测覆盖缺省、tc、zh-hant/zh-hk/zh-tw 等输入解析与回退unittest
### 1.4 内置协议内容页(兜底,保证有内容)
- [x] 新增 `GET /v1/legal/privacy``GET /v1/legal/terms` 两个 HTML 页面接口
- [x] 未配置 `LEGAL_*` 时,`GET /v1/legal/links` 自动回退到内置页面绝对 URL
- [x] 更新后端配置默认值:`LEGAL_*` 未配置时使用内置页面(`__internal__` 哨兵)
## 2. 客户端React Native + Expo——统一获取并打开链接
### 2.1 新增统一请求封装
- [x] 新增 `client/src/services/legalApi.ts`
- [x] 统一设置 `Accept-Language`(将客户端当前语言映射到 `en/tc`
- [x] 统一超时与错误处理(抛错给调用方兜底)
### 2.2 首次同意页接入
- [x]`client/app/(splash)/splash.tsx` 的写死 URL 改为调用 `fetchLegalLinks()`
- [x] 拉取失败不崩溃、不阻塞「同意并继续」
- [x] 点击协议入口用 `expo-web-browser` 打开后端下发链接
### 2.3 个人主页弹窗接入
- [x]`client/components/home/ProfileModal.tsx``toastTodo` 替换为打开后端下发链接
- [x] 弹窗打开时拉取链接(失败不影响其他功能)
- [x] 修复 TypeScript 定时器类型RN 环境兼容)
### 2.4 客户端最小验证
- [x] 运行现有 `vitest` 测试通过(`npm test`
- [x] (可选)补充一个轻量测试:`buildAcceptLanguage()` 映射规则en/tc
## 3. 文档与追踪
- [x] `spec_kit/Policy Links/spec.md` 增补:个人主页弹窗也必须使用同一 API接口路径统一为 `GET /v1/legal/links`
- [x] 生成 `spec_kit/Policy Links/plan.md`
- [x] 生成 `spec_kit/Policy Links/tasks.md`
- [x]`spec_kit/overview.md``Policy Links` 条目下标记“任务清单已执行完毕(已完成编码)”