chore: initial commit with CI pipeline, review and tasks docs

This commit is contained in:
Your Name
2025-09-30 16:39:51 +08:00
commit 8a7afc8a00
76 changed files with 5091 additions and 0 deletions

View File

@@ -0,0 +1,54 @@
# 实施计划: 003 - 用户端体验
本文档为“用户端体验”功能规格的技术实施计划。
## 1. 总体思路
用户端体验是转化的关键需要保证页面的高性能和交互的流畅性。后端需提供快速响应的API前端则通过无限滚动等技术优化大数据量下的列表展示。
## 2. 后端开发任务 (Backend Tasks)
### 2.1. 新增服务与数据库设计
- **短链接服务 (Short Link Service)**
- **数据库**: 创建 `short_links` 表,包含 `id`, `code` (唯一索引), `original_url`, `created_at`
- **内部API**: 创建一个内部 `POST /api/v1/internal/shorten` 接口,用于生成和存储短链接。
- **公共重定向**: 创建一个公共 `GET /r/{code}` 接口用于处理短链接的302重定向。
- **海报生成服务 (Poster Generation Service)**
- **技术选型**: 引入图像处理库(如 Node.js 的 `sharp` 或 Python 的 `Pillow`)。
- **API设计**: 创建 `GET /api/v1/me/poster` 接口。默认返回 `image/png` 格式的图片文件流。当接收到 `?render=client` 参数时返回构建海报所需的JSON数据背景图URL、文案、二维码数据等以支持客户端渲染的降级方案。
- **数据库更新**
-`invitations` 表(或类似表)中增加 `status` 字段 (enum: `clicked`, `registered`, `ordered`),用于追踪邀请状态。
### 2.2. API Endpoint 设计
- `GET /api/v1/me/invitation-info`: **获取当前用户的邀请信息**
- Response: `{ short_link, ... }`,返回已生成的专属短链接。
- `GET /api/v1/me/invited-friends`: **获取邀请好友列表(分页)**
- Query Params: `page`, `limit`
- Response: 返回经过隐私处理(昵称、打码手机号、头像)的好友列表及其状态。
- `GET /api/v1/me/rewards`: **获取奖励明细列表(分页)**
- Query Params: `page`, `limit`
- Response: 返回当前用户的奖励记录列表。
## 3. 前端开发任务 (Frontend Tasks)
### 3.1. UI 组件设计
- **`UserCenter.vue`**: 用户个人中心的主页面,整合分享和记录查看功能。
- **`ShareModule.vue`**: 用于展示分享信息的组件,包含:
- “一键复制”短链接的按钮。
- 展示分享海报,并处理服务端/客户端渲染的逻辑。
- **`InfiniteScrollList.vue`**: 一个可复用的列表组件,封装“滚动到底部自动加载下一页”的逻辑。
- **`InvitedFriendItem.vue`**: 用于渲染“邀请记录”列表中的单项,展示好友的隐私保护信息和邀请状态。
- **`RewardItem.vue`**: 用于渲染“奖励明细”列表中的单项。
### 3.2. API 集成与状态管理
- 在API客户端中新增与用户中心相关的接口请求函数。
- 使用 `Pinia` 管理用户状态,并可以结合 `useSWRV` 或自定义的 `useFetch` Composable 函数来管理分页数据的获取、缓存和“无限滚动”的状态。
- 在 `ShareModule.vue` 中实现降级逻辑:当从服务端获取海报图片失败或超时,能自动切换到客户端渲染模式。