feat: 初始化项目代码

- 迁移 NestJS 项目结构
- 添加 uniappx 前端代码
- 配置数据库连接
- 添加核心业务模块
This commit is contained in:
wanwu
2026-04-02 21:25:02 +08:00
parent 7ede50739b
commit 6eb9ea687d
1719 changed files with 119258 additions and 3410 deletions

View File

@@ -0,0 +1,136 @@
# 抖音App产品需求文档
## 1. 产品概述
抖音是一款短视频社交娱乐平台通过AI算法推荐个性化内容让用户轻松创作、发现和分享精彩短视频。产品连接内容创作者与观众打造全新的视觉化社交体验。
**核心价值**:降低短视频创作门槛,通过智能推荐算法让优质内容获得曝光,构建基于兴趣的社交关系链。
**目标用户**年轻用户群体16-35岁包括内容创作者、娱乐消费者、品牌商家。
## 2. 核心功能
### 2.1 用户角色
| 角色 | 注册方式 | 核心权限 |
|------|----------|----------|
| 普通用户 | 手机号/第三方登录 | 浏览、点赞、评论、分享、基础创作 |
| 创作者 | 实名认证+粉丝门槛 | 发布长视频、直播、电商功能、数据分析 |
| 商家 | 企业认证 | 广告投放、电商管理、营销工具 |
| 管理员 | 内部授权 | 内容审核、用户管理、系统配置 |
### 2.2 功能模块
**核心页面**
1. **首页推荐**:个性化视频流、上下滑动切换、算法推荐
2. **关注页**:关注创作者动态、按时间排序展示
3. **创作页**:拍摄、上传、编辑、特效、音乐添加
4. **消息页**:私信、评论回复、系统通知、粉丝互动
5. **个人主页**:个人信息、作品展示、数据统计、设置管理
6. **发现页**:热门话题、挑战活动、附近内容、搜索功能
7. **直播页**:直播间、互动礼物、弹幕聊天、直播带货
### 2.3 页面详情
| 页面名称 | 模块名称 | 功能描述 |
|----------|----------|----------|
| 首页推荐 | 视频播放器 | 全屏自动播放、上下滑动切换、双击点赞、手势控制音量亮度 |
| 首页推荐 | 互动操作 | 点赞、评论、分享、收藏、关注创作者、不感兴趣反馈 |
| 首页推荐 | 侧边栏 | 创作者头像、音乐信息、特效道具、位置标签 |
| 关注页 | 动态列表 | 关注创作者最新作品、直播状态、作品分类筛选 |
| 创作页 | 拍摄功能 | 前后摄像头切换、美颜滤镜、速度调节、倒计时拍摄 |
| 创作页 | 上传编辑 | 本地视频选择、剪辑裁剪、音乐添加、文字贴纸、特效滤镜 |
| 创作页 | 发布设置 | 标题描述、话题标签、位置定位、隐私设置、同步分享 |
| 消息页 | 通知中心 | 点赞评论通知、新增粉丝、系统消息、活动推送 |
| 消息页 | 私信聊天 | 文字语音消息、图片视频分享、表情包、语音通话 |
| 个人主页 | 信息展示 | 头像昵称、个性签名、获赞数、粉丝数、关注数 |
| 个人主页 | 作品管理 | 视频列表、私密作品、草稿箱、作品数据分析 |
| 发现页 | 搜索功能 | 关键词搜索、用户搜索、话题搜索、智能联想 |
| 发现页 | 热门榜单 | 热门视频、热门音乐、热门话题、上升热点 |
| 直播页 | 直播间 | 实时视频流、弹幕互动、礼物打赏、连麦功能 |
| 直播页 | 直播带货 | 商品展示、购买链接、库存管理、订单处理 |
## 3. 核心流程
### 3.1 用户浏览流程
用户打开App → 进入推荐页 → 系统根据算法推荐内容 → 用户滑动浏览 → 互动操作(点赞/评论/分享)→ 关注创作者 → 个性化推荐优化
### 3.2 内容创作流程
用户点击创作 → 选择拍摄或上传 → 视频编辑处理 → 添加音乐特效 → 填写发布信息 → 内容审核 → 正式发布 → 推送给粉丝
### 3.3 社交互动流程
发现感兴趣内容 → 点赞评论互动 → 关注创作者 → 私信交流 → 参与挑战活动 → 建立社交关系
```mermaid
graph TD
A[启动App] --> B[推荐页]
B --> C[浏览视频]
C --> D{互动操作}
D --> E[点赞]
D --> F[评论]
D --> G[分享]
D --> H[关注]
E --> I[算法优化]
F --> I
G --> I
H --> J[关注页]
B --> K[创作页]
K --> L[拍摄/上传]
L --> M[编辑处理]
M --> N[发布内容]
B --> O[发现页]
O --> P[搜索/话题]
B --> Q[消息页]
Q --> R[社交互动]
B --> S[个人主页]
```
## 4. 用户界面设计
### 4.1 设计风格
- **色彩方案**:黑色为主色调,搭配白色和红色强调色,营造年轻活力的视觉感受
- **按钮样式**圆角矩形设计3D悬浮效果触摸反馈明显
- **字体规范**系统默认字体标题18-24px正文14-16px标签12-14px
- **布局风格**:全屏沉浸式体验,卡片式内容展示,底部导航栏固定
- **图标风格**:线性图标为主,简洁现代,统一视觉风格
### 4.2 页面设计概览
| 页面名称 | 模块名称 | UI元素 |
|----------|----------|--------|
| 推荐页 | 视频播放器 | 全屏黑色背景,视频居中播放,底部进度条,右侧互动按钮栏 |
| 推荐页 | 互动按钮 | 心形点赞、评论气泡、分享箭头,采用红色主题色,点击有动画效果 |
| 推荐页 | 侧边栏 | 右侧垂直排列,创作者头像带关注按钮,音乐唱片旋转动画 |
| 创作页 | 拍摄界面 | 全屏相机预览,底部拍摄按钮,顶部功能栏(美颜/滤镜/速度) |
| 创作页 | 编辑界面 | 时间轴视频预览,底部工具栏(剪辑/音乐/文字/特效),顶部操作按钮 |
| 个人主页 | 头部信息 | 圆形头像,昵称加粗显示,个性签名,关注/粉丝/获赞数据统计 |
| 个人主页 | 作品网格 | 3列网格布局视频缩略图播放量叠加显示私密内容标记 |
| 消息页 | 通知列表 | 头像+用户名+消息内容+时间,未读消息红点标记,滑动操作选项 |
| 发现页 | 搜索框 | 顶部搜索栏,热门推荐标签,分类导航栏,内容卡片展示 |
| 直播页 | 直播间 | 全屏直播画面,底部弹幕区域,右侧礼物栏,顶部观众信息 |
### 4.3 响应式设计
- **移动优先**针对手机端优化支持iOS和Android平台
- **适配策略**:自适应不同屏幕尺寸,保持核心功能区域可见性
- **手势交互**:支持滑动、捏合、长按等触摸手势操作
- **性能优化**:图片懒加载,视频预加载,流畅的动画过渡
## 5. 性能要求
### 5.1 核心指标
- **启动时间**冷启动≤3秒热启动≤1秒
- **视频加载**首帧加载≤500ms播放卡顿率≤1%
- **滑动流畅**帧率≥60fps响应延迟≤100ms
- **内存占用**峰值≤500MB后台运行≤100MB
### 5.2 技术约束
- **网络适应**:支持弱网环境,自适应码率调整
- **电量优化**后台运行功耗≤5%/小时
- **存储管理**:缓存自动清理,用户可手动清理
- **安全要求**:数据传输加密,用户隐私保护
### 5.3 兼容性要求
- **系统版本**iOS 12.0+Android 7.0+
- **设备适配**:支持主流手机和平板设备
- **网络环境**4G/5G/WiFi网络自适应
- **国际化**:支持多语言和地区适配

View File

@@ -0,0 +1,547 @@
# 抖音App技术架构文档
## 1. 架构设计
### 1.1 整体架构
```mermaid
graph TD
A[用户设备] --> B[React Native App]
B --> C[API Gateway]
C --> D[用户服务]
C --> E[内容服务]
C --> F[推荐服务]
C --> G[直播服务]
C --> H[消息服务]
D --> I[用户数据库]
E --> J[内容存储]
F --> K[推荐引擎]
G --> L[直播CDN]
H --> M[消息队列]
subgraph "客户端层"
B
end
subgraph "服务层"
C
D
E
F
G
H
end
subgraph "数据层"
I
J
K
L
M
end
```
### 1.2 客户端架构
```mermaid
graph TD
A[React Native] --> B[Redux Store]
A --> C[React Navigation]
A --> D[Native Modules]
B --> E[用户状态]
B --> F[内容状态]
B --> G[UI状态]
D --> H[相机模块]
D --> I[音视频处理]
D --> J[推送通知]
D --> K[本地存储]
subgraph "状态管理"
B
E
F
G
end
subgraph "原生功能"
D
H
I
J
K
end
```
## 2. 技术栈描述
### 2.1 前端技术栈
- **跨平台框架**: React Native 0.72 + TypeScript 5.0
- **状态管理**: Redux Toolkit + RTK Query
- **导航**: React Navigation 6.0
- **UI组件**: React Native Elements + 自定义组件库
- **动画**: React Native Reanimated 3.0
- **手势**: React Native Gesture Handler
- **视频播放**: react-native-video 6.0
- **相机**: react-native-vision-camera 3.0
- **图片处理**: react-native-fast-image
### 2.2 后端技术栈
- **API网关**: Kong Gateway
- **用户服务**: Node.js + Express + TypeScript
- **内容服务**: Node.js + Express + TypeScript
- **推荐服务**: Python + FastAPI + TensorFlow
- **直播服务**: Node.js + WebRTC + FFmpeg
- **消息服务**: Node.js + Socket.io + Redis
- **数据库**: PostgreSQL 14 + Redis 7.0
- **文件存储**: AWS S3 + CDN
### 2.3 基础设施
- **容器化**: Docker + Kubernetes
- **CI/CD**: GitLab CI + ArgoCD
- **监控**: Prometheus + Grafana
- **日志**: ELK Stack (Elasticsearch + Logstash + Kibana)
- **错误追踪**: Sentry
- **性能监控**: New Relic
## 3. 路由定义
### 3.1 应用内路由
| 路由 | 页面组件 | 说明 |
|------|----------|------|
| / | HomeScreen | 首页推荐页 |
| /following | FollowingScreen | 关注页 |
| /create | CreateScreen | 创作页 |
| /inbox | InboxScreen | 消息页 |
| /profile | ProfileScreen | 个人主页 |
| /discover | DiscoverScreen | 发现页 |
| /live | LiveScreen | 直播页 |
| /video/:id | VideoDetailScreen | 视频详情页 |
| /user/:id | UserProfileScreen | 用户主页 |
| /search | SearchScreen | 搜索页 |
| /settings | SettingsScreen | 设置页 |
| /camera | CameraScreen | 拍摄页 |
| /editor | EditorScreen | 视频编辑页 |
| /publish | PublishScreen | 发布页 |
| /login | LoginScreen | 登录页 |
| /register | RegisterScreen | 注册页 |
### 3.2 嵌套路由结构
```
TabNavigator
├── HomeStack
│ ├── HomeScreen
│ ├── VideoDetailScreen
│ └── UserProfileScreen
├── FollowingStack
│ └── FollowingScreen
├── CreateStack
│ ├── CameraScreen
│ ├── EditorScreen
│ └── PublishScreen
├── InboxStack
│ ├── InboxScreen
│ └── ChatScreen
└── ProfileStack
├── ProfileScreen
├── SettingsScreen
└── EditProfileScreen
```
## 4. API定义
### 4.1 用户相关API
#### 用户注册
```
POST /api/auth/register
```
请求参数:
| 参数名 | 类型 | 必需 | 描述 |
|--------|------|------|------|
| phone | string | 是 | 手机号 |
| password | string | 是 | 密码 |
| verificationCode | string | 是 | 验证码 |
| nickname | string | 是 | 昵称 |
响应示例:
```json
{
"code": 200,
"message": "success",
"data": {
"userId": "123456",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
}
```
#### 用户登录
```
POST /api/auth/login
```
请求参数:
| 参数名 | 类型 | 必需 | 描述 |
|--------|------|------|------|
| phone | string | 是 | 手机号 |
| password | string | 是 | 密码 |
#### 获取用户信息
```
GET /api/user/profile
```
请求头:
```
Authorization: Bearer {token}
```
响应示例:
```json
{
"code": 200,
"data": {
"userId": "123456",
"nickname": "用户名",
"avatar": "https://example.com/avatar.jpg",
"bio": "个人简介",
"followerCount": 1000,
"followingCount": 500,
"likeCount": 5000,
"videoCount": 50
}
}
```
### 4.2 内容相关API
#### 获取推荐视频
```
GET /api/feed/recommend
```
请求参数:
| 参数名 | 类型 | 必需 | 描述 |
|--------|------|------|------|
| page | number | 否 | 页码默认1 |
| limit | number | 否 | 每页数量默认10 |
| lastId | string | 否 | 最后一条视频ID |
#### 上传视频
```
POST /api/video/upload
```
请求参数FormData
| 参数名 | 类型 | 必需 | 描述 |
|--------|------|------|------|
| video | file | 是 | 视频文件 |
| cover | file | 是 | 封面图片 |
| title | string | 是 | 视频标题 |
| description | string | 否 | 视频描述 |
| tags | array | 否 | 标签数组 |
### 4.3 互动相关API
#### 点赞视频
```
POST /api/video/:id/like
```
#### 评论视频
```
POST /api/video/:id/comment
```
请求参数:
| 参数名 | 类型 | 必需 | 描述 |
|--------|------|------|------|
| content | string | 是 | 评论内容 |
| parentId | string | 否 | 回复的评论ID |
## 5. 服务器架构
### 5.1 微服务架构图
```mermaid
graph TD
A[API Gateway] --> B[Auth Service]
A --> C[User Service]
A --> D[Content Service]
A --> E[Feed Service]
A --> F[Live Service]
A --> G[Message Service]
B --> H[Redis Cache]
C --> I[PostgreSQL]
D --> J[Object Storage]
E --> K[Recommendation Engine]
F --> L[CDN Network]
G --> M[Message Queue]
subgraph "Gateway Layer"
A
end
subgraph "Business Services"
B
C
D
E
F
G
end
subgraph "Data Layer"
H
I
J
K
L
M
end
```
### 5.2 服务间通信
- **同步通信**: HTTP/HTTPS + REST API
- **异步通信**: Apache Kafka + RabbitMQ
- **服务发现**: Consul + gRPC
- **负载均衡**: Nginx + HAProxy
## 6. 数据模型
### 6.1 核心数据实体
#### 用户实体
```typescript
interface User {
id: string;
phone: string;
nickname: string;
avatar: string;
bio: string;
gender: 'male' | 'female' | 'other';
birthday: Date;
location: string;
followerCount: number;
followingCount: number;
likeCount: number;
videoCount: number;
isVerified: boolean;
verifiedType: 'personal' | 'enterprise' | 'institution';
level: number;
experience: number;
status: 'active' | 'inactive' | 'banned';
createdAt: Date;
updatedAt: Date;
}
```
#### 视频实体
```typescript
interface Video {
id: string;
userId: string;
title: string;
description: string;
videoUrl: string;
coverUrl: string;
duration: number;
width: number;
height: number;
size: number;
format: string;
tags: string[];
location: {
address: string;
latitude: number;
longitude: number;
};
musicId: string;
effects: string[];
filters: string[];
stickers: string[];
visibility: 'public' | 'private' | 'friends';
allowComment: boolean;
allowDownload: boolean;
viewCount: number;
likeCount: number;
commentCount: number;
shareCount: number;
downloadCount: number;
status: 'processing' | 'published' | 'rejected' | 'deleted';
moderationStatus: 'pending' | 'approved' | 'rejected';
createdAt: Date;
updatedAt: Date;
publishedAt: Date;
}
```
#### 互动实体
```typescript
interface Like {
id: string;
userId: string;
videoId: string;
createdAt: Date;
}
interface Comment {
id: string;
userId: string;
videoId: string;
parentId: string | null;
content: string;
likeCount: number;
replyCount: number;
status: 'active' | 'deleted';
createdAt: Date;
updatedAt: Date;
}
interface Follow {
id: string;
followerId: string;
followingId: string;
createdAt: Date;
}
```
### 6.2 数据库设计
#### 用户表
```sql
CREATE TABLE users (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
phone VARCHAR(20) UNIQUE NOT NULL,
email VARCHAR(100),
nickname VARCHAR(50) NOT NULL,
avatar TEXT,
bio TEXT,
gender VARCHAR(10),
birthday DATE,
location VARCHAR(100),
follower_count INTEGER DEFAULT 0,
following_count INTEGER DEFAULT 0,
like_count INTEGER DEFAULT 0,
video_count INTEGER DEFAULT 0,
is_verified BOOLEAN DEFAULT FALSE,
verified_type VARCHAR(20),
level INTEGER DEFAULT 1,
experience INTEGER DEFAULT 0,
status VARCHAR(20) DEFAULT 'active',
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
CREATE INDEX idx_users_phone ON users(phone);
CREATE INDEX idx_users_nickname ON users(nickname);
CREATE INDEX idx_users_status ON users(status);
```
#### 视频表
```sql
CREATE TABLE videos (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id UUID NOT NULL REFERENCES users(id),
title VARCHAR(200) NOT NULL,
description TEXT,
video_url TEXT NOT NULL,
cover_url TEXT NOT NULL,
duration INTEGER NOT NULL,
width INTEGER NOT NULL,
height INTEGER NOT NULL,
size BIGINT NOT NULL,
format VARCHAR(20) NOT NULL,
tags TEXT[],
location_address VARCHAR(200),
location_latitude DECIMAL(10, 8),
location_longitude DECIMAL(11, 8),
music_id UUID,
effects TEXT[],
filters TEXT[],
stickers TEXT[],
visibility VARCHAR(20) DEFAULT 'public',
allow_comment BOOLEAN DEFAULT TRUE,
allow_download BOOLEAN DEFAULT TRUE,
view_count INTEGER DEFAULT 0,
like_count INTEGER DEFAULT 0,
comment_count INTEGER DEFAULT 0,
share_count INTEGER DEFAULT 0,
download_count INTEGER DEFAULT 0,
status VARCHAR(20) DEFAULT 'processing',
moderation_status VARCHAR(20) DEFAULT 'pending',
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
published_at TIMESTAMP WITH TIME ZONE
);
CREATE INDEX idx_videos_user_id ON videos(user_id);
CREATE INDEX idx_videos_status ON videos(status);
CREATE INDEX idx_videos_created_at ON videos(created_at DESC);
CREATE INDEX idx_videos_published_at ON videos(published_at DESC);
```
## 7. 第三方服务集成
### 7.1 云服务
- **视频存储**: AWS S3 / 阿里云OSS
- **CDN加速**: CloudFront / 阿里云CDN
- **直播服务**: Agora / 腾讯云直播
- **推送服务**: Firebase Cloud Messaging / 极光推送
### 7.2 AI服务
- **内容审核**: 阿里云内容安全 / 腾讯云天御
- **人脸识别**: Face++ / 腾讯云人脸识别
- **语音识别**: 科大讯飞 / 百度语音识别
- **推荐算法**: 自研推荐引擎 + 机器学习平台
### 7.3 支付服务
- **应用内购买**: Apple App Store / Google Play
- **第三方支付**: 支付宝 / 微信支付 / PayPal
## 8. 部署和发布策略
### 8.1 部署架构
```mermaid
graph TD
A[Git Repository] --> B[CI/CD Pipeline]
B --> C[Build Stage]
B --> D[Test Stage]
B --> E[Deploy Stage]
C --> F[Docker Image]
D --> G[Test Results]
E --> H[Kubernetes Cluster]
H --> I[Staging Environment]
H --> J[Production Environment]
I --> K[Integration Tests]
J --> L[Monitoring & Alerting]
```
### 8.2 发布流程
1. **开发阶段**: 功能开发 → 单元测试 → 代码审查
2. **测试阶段**: 集成测试 → 性能测试 → 安全测试
3. **灰度发布**: 5%用户 → 20%用户 → 50%用户 → 100%用户
4. **监控回滚**: 实时监控 → 异常告警 → 快速回滚
### 8.3 环境配置
- **开发环境**: 本地开发 + 开发服务器
- **测试环境**: 功能测试 + 集成测试
- **预发布环境**: 生产数据副本 + 真实流量测试
- **生产环境**: 多区域部署 + 负载均衡
### 8.4 监控告警
- **应用监控**: 错误率、响应时间、吞吐量
- **基础设施监控**: CPU、内存、磁盘、网络
- **业务指标监控**: 用户活跃度、内容发布量、互动数据
- **告警机制**: 实时告警 + 分级处理 + 自动恢复
### 8.5 备份策略
- **数据备份**: 每日全量备份 + 实时增量备份
- **灾备方案**: 异地多活 + 数据同步 + 故障切换
- **恢复测试**: 定期演练 + 恢复时间验证 + 数据完整性检查