feat: 初始化项目代码
- 迁移 NestJS 项目结构 - 添加 uniappx 前端代码 - 配置数据库连接 - 添加核心业务模块
This commit is contained in:
136
.trae/documents/douyin_app_prd.md
Normal file
136
.trae/documents/douyin_app_prd.md
Normal 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网络自适应
|
||||
- **国际化**:支持多语言和地区适配
|
||||
547
.trae/documents/douyin_app_tech_architecture.md
Normal file
547
.trae/documents/douyin_app_tech_architecture.md
Normal 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 备份策略
|
||||
- **数据备份**: 每日全量备份 + 实时增量备份
|
||||
- **灾备方案**: 异地多活 + 数据同步 + 故障切换
|
||||
- **恢复测试**: 定期演练 + 恢复时间验证 + 数据完整性检查
|
||||
Reference in New Issue
Block a user