chore: push latest changes

This commit is contained in:
wanwu
2025-11-16 22:13:57 +08:00
parent de821ae5fd
commit 7ede50739b
780 changed files with 101983 additions and 10460 deletions

View File

@@ -0,0 +1,182 @@
## 1. 产品概述
一款集短视频、长视频、音乐、小说于一体的综合娱乐平台应用,为用户提供多元化的数字娱乐体验。通过智能推荐算法,为用户推送个性化内容,打造一站式娱乐消费场景。
- 解决用户多平台切换的痛点,提供统一的娱乐内容消费体验
- 目标用户群体15-45岁的移动互联网用户涵盖娱乐内容消费者
- 通过内容生态整合,提升用户粘性和平台价值
## 2. 核心功能
### 2.1 用户角色
| 角色 | 注册方式 | 核心权限 |
|------|----------|----------|
| 游客用户 | 无需注册 | 浏览部分内容,基础播放功能 |
| 注册用户 | 手机号/第三方登录 | 完整播放权限,收藏评论,个人中心 |
| VIP会员 | 付费订阅 | 无广告观看,独家内容,高清播放 |
| 内容创作者 | 实名认证申请 | 发布内容,获得收益,数据分析 |
### 2.2 功能模块
本产品包含以下主要功能页面:
1. **首页**:个性化推荐内容聚合,分类导航入口
2. **短视频**:沉浸式竖屏短视频体验,支持滑动切换
3. **长视频**:电影、电视剧、综艺等长视频内容浏览
4. **音乐**:在线音乐播放,歌单管理,歌词同步
5. **小说**:电子书阅读,书架管理,分类浏览
6. **个人中心**:用户信息,观看历史,设置管理
7. **搜索**:全局内容搜索,智能联想
8. **播放页**:视频/音乐播放器,支持多种播放模式
9. **详情页**:内容详细介绍,相关推荐
10. **书架/收藏**:用户收藏的内容管理
### 2.3 页面详情
| 页面名称 | 模块名称 | 功能描述 |
|----------|----------|----------|
| 首页 | 推荐流 | 基于算法推荐个性化内容,支持下拉刷新 |
| 首页 | 分类导航 | 影视、音乐、小说等分类入口,图标展示 |
| 首页 | 搜索栏 | 顶部搜索框,支持语音输入和热门搜索 |
| 短视频 | 视频播放器 | 全屏竖屏播放,支持手势控制音量亮度 |
| 短视频 | 互动操作 | 点赞、评论、分享、关注创作者 |
| 短视频 | 视频流 | 上下滑动切换视频,预加载机制 |
| 长视频 | 分类筛选 | 按类型、地区、年份等维度筛选内容 |
| 长视频 | 排行榜 | 热播榜、新上架、评分榜等多维度排行 |
| 长视频 | 详情展示 | 剧集信息、演员表、剧情简介、评分 |
| 音乐 | 播放器 | 底部悬浮播放器,支持后台播放 |
| 音乐 | 歌单管理 | 创建、编辑、分享个人歌单 |
| 音乐 | 歌词显示 | 实时歌词同步,支持歌词翻译 |
| 小说 | 阅读器 | 仿真翻页效果,字体背景自定义 |
| 小说 | 书架管理 | 分类整理,阅读进度同步 |
| 小说 | 目录导航 | 章节列表,快速跳转,书签功能 |
| 个人中心 | 用户信息 | 头像、昵称、会员状态展示 |
| 个人中心 | 观看历史 | 跨设备同步,按时间分类展示 |
| 个人中心 | 设置管理 | 播放设置、通知设置、隐私设置 |
| 搜索 | 智能联想 | 输入时实时联想,热门搜索推荐 |
| 搜索 | 结果分类 | 按内容类型分类展示搜索结果 |
| 播放页 | 播放控制 | 播放/暂停、快进快退、倍速播放 |
| 播放页 | 画质选择 | 自动/高清/标清等多档画质切换 |
| 详情页 | 内容展示 | 详细介绍、演员信息、用户评分 |
| 详情页 | 相关推荐 | 基于内容相似度的推荐 |
## 3. 核心流程
### 3.1 用户浏览流程
用户打开App → 进入首页推荐流 → 选择感兴趣的内容 → 进入详情页 → 点击播放 → 观看内容 → 互动操作(点赞/评论/分享) → 返回继续浏览
### 3.2 短视频消费流程
进入短视频tab → 自动播放推荐视频 → 上下滑动切换 → 点赞评论互动 → 关注创作者 → 分享视频
### 3.3 长视频观看流程
浏览分类/搜索 → 选择影片 → 查看详情 → 选择剧集 → 播放观看 → 调整画质 → 添加收藏 → 继续观看其他内容
### 3.4 音乐播放流程
进入音乐tab → 浏览歌单/排行榜 → 选择歌曲 → 播放音乐 → 查看歌词 → 添加收藏 → 创建歌单
### 3.5 小说阅读流程
进入小说tab → 浏览分类/排行榜 → 选择小说 → 查看详情 → 开始阅读 → 调整设置 → 加入书架 → 继续阅读
```mermaid
graph TD
A[启动App] --> B{用户状态}
B -->|游客| C[浏览部分内容]
B -->|注册用户| D[完整体验]
B -->|VIP用户| E[无广告+独家内容]
C --> F[引导注册]
D --> G[个性化推荐]
E --> G
G --> H[底部导航]
H --> I[首页]
H --> J[短视频]
H --> K[长视频]
H --> L[音乐]
H --> M[小说]
H --> N[我的]
I --> O[内容消费]
J --> P[短视频播放]
K --> Q[长视频播放]
L --> R[音乐播放]
M --> S[小说阅读]
N --> T[个人管理]
```
## 4. 用户界面设计
### 4.1 设计风格
- **主色调**:深紫色渐变(#6B46C1#9333EA),营造高端娱乐氛围
- **辅助色**:暖橙色(#F97316)用于强调,深灰色(#1F2937)用于背景
- **按钮样式**圆角矩形3D悬浮效果点击有按压反馈
- **字体方案**:主标题使用思源黑体,正文使用苹方/思源黑体字号14-18px
- **布局风格**:卡片式布局,圆角设计,阴影效果,层次分明
- **图标风格**:线性图标为主,选中状态填充,符合现代设计趋势
- **动画效果**:页面切换使用淡入淡出,按钮点击有缩放效果,加载使用骨架屏
### 4.2 页面设计概述
| 页面名称 | 模块名称 | UI设计说明 |
|----------|----------|------------|
| 首页 | 顶部导航 | 渐变紫色背景,搜索框居中,右侧消息和个人头像 |
| 首页 | 推荐流 | 两列瀑布流布局卡片圆角8px阴影深度2px |
| 首页 | 分类导航 | 圆形图标+文字4×2网格布局图标使用线性风格 |
| 短视频 | 播放界面 | 全屏竖屏,底部操作栏半透明,右侧互动按钮垂直排列 |
| 短视频 | 用户资料 | 头像圆形边框,用户名白色,关注按钮橙色高亮 |
| 长视频 | 分类标签 | 横向滚动标签选中状态紫色背景圆角20px |
| 长视频 | 海报展示 | 16:9比例海报悬停效果评分标签右上角 |
| 音乐 | 播放器 | 底部悬浮条,专辑封面圆形,进度条渐变紫色 |
| 音乐 | 歌单列表 | 左侧封面+右侧信息,分割线浅灰色,悬停背景色 |
| 小说 | 阅读器 | 仿真纸张背景,护眼模式,字体大小可调节 |
| 小说 | 书架 | 网格布局书籍封面3D效果阅读进度条 |
| 个人中心 | 用户信息 | 顶部大图背景,头像圆形重叠,渐变遮罩 |
| 个人中心 | 功能列表 | 图标+文字+箭头,分组标题,分割线设计 |
| 搜索 | 搜索框 | 圆角输入框,语音图标,历史记录标签云 |
| 搜索 | 结果页 | Tab切换+卡片列表,加载更多按钮 |
### 4.3 响应式设计
- **移动端优先**基于375px宽度设计向上适配各种屏幕尺寸
- **平板适配**:横屏时采用双列布局,充分利用屏幕空间
- **手势优化**:支持滑动、捏合、长按等手势操作
- **横竖屏切换**:视频播放自动适配横竖屏,保持最佳观看体验
- **暗黑模式**:支持系统主题切换,护眼模式自动调节
- **字体缩放**:支持系统字体大小设置,保证可读性
### 4.4 交互体验
- **加载体验**:骨架屏预加载,减少等待焦虑
- **反馈机制**操作即时反馈toast提示震动反馈
- **导航体验**:底部导航固定,手势返回,面包屑导航
- **搜索体验**:实时联想,搜索历史,热门推荐
- **播放体验**:断点续播,后台播放,画中画模式
- **阅读体验**:仿真翻页,护眼模式,字体调节
## 5. 技术实现
### 5.1 开发框架
- **跨平台方案**uniapp-x一套代码多端运行
- **支持平台**iOS、Android、微信小程序、H5
- **状态管理**Vuex/Pinia统一管理应用状态
- **网络请求**uni.request封装支持拦截器
- **本地存储**uni.storage支持同步异步
### 5.2 性能优化
- **图片优化**懒加载WebP格式CDN加速
- **视频优化**:预加载策略,清晰度自适应,缓存机制
- **包体积优化**:按需加载,代码分割,资源压缩
- **内存优化**:页面销毁,资源释放,缓存清理
- **网络优化**:请求合并,缓存策略,弱网适配
### 5.3 用户体验
- **启动速度**:分包加载,预加载关键资源
- **播放流畅度**:多码率适配,缓冲策略优化
- **交互响应**:防抖节流,异步处理,骨架屏
- **离线体验**:内容缓存,离线阅读,断网提示
- **多端同步**:观看进度,收藏列表,阅读书签

View File

@@ -0,0 +1,549 @@
## 1. 架构设计
```mermaid
graph TD
A[用户设备] --> B[uniapp-x跨平台应用]
B --> C[微信小程序]
B --> D[iOS App]
B --> E[Android App]
B --> F[H5 Web]
C --> G[微信API]
D --> H[iOS原生API]
E --> I[Android原生API]
F --> J[浏览器API]
G --> K[业务服务层]
H --> K
I --> K
J --> K
K --> L[内容分发网络CDN]
K --> M[后端API服务]
K --> N[实时通信服务]
M --> O[(数据库)]
M --> P[(Redis缓存)]
M --> Q[(对象存储)]
subgraph "前端层"
B
C
D
E
F
end
subgraph "平台适配层"
G
H
I
J
end
subgraph "服务层"
K
L
M
N
O
P
Q
end
```
## 2. 技术描述
### 前端技术栈
* **跨平台框架**: uniapp-x (Vue3 + TypeScript)
* **状态管理**: Pinia (替代Vuex)
* **UI组件库**: uView-plus (uniapp生态组件库)
* **构建工具**: Vite (开发环境) + Webpack (生产环境)
* **样式方案**: SCSS + CSS变量 + Flex布局
* **图标方案**: iconfont + 本地SVG图标
* **动画库**: CSS3动画 + uni.createAnimation API
### 后端技术栈
* **API服务**: Node.js + Express/Koa2
* **数据库**: MySQL 8.0 (主数据库)
* **缓存**: Redis 6.0 (会话缓存 + 热点数据)
* **文件存储**: 阿里云OSS / 腾讯云COS
* **CDN加速**: 阿里云CDN / 腾讯云CDN
* **实时通信**: WebSocket + Socket.io
* **消息队列**: Redis Pub/Sub (轻量级)
### 第三方服务
* **视频服务**: 腾讯云点播 / 阿里云视频点播
* **音频服务**: 腾讯云音视频 / 网易云信
* **推送服务**: 个推 / 极光推送
* **登录认证**: 微信登录 + 手机号验证码
* **支付服务**: 微信支付 + 支付宝支付
## 3. 路由定义
### 底部导航路由
| 路由路径 | 页面名称 | 功能描述 |
| ------------------------------ | ---- | ------------- |
| /pages/index/index | 首页 | 推荐内容聚合,个性化内容流 |
| /pages/short-video/short-video | 短视频 | 沉浸式竖屏短视频播放 |
| /pages/long-video/long-video | 长视频 | 影视综等长视频内容分类 |
| /pages/music/music | 音乐 | 在线音乐播放和歌单管理 |
| /pages/novel/novel | 小说 | 电子书阅读和书架管理 |
| /pages/profile/profile | 我的 | 个人中心和相关设置 |
### 功能页面路由
| 路由路径 | 页面名称 | 功能描述 |
| -------------------------- | ---- | ----------- |
| /pages/search/search | 搜索页 | 全局内容搜索和智能联想 |
| /pages/player/player | 播放器 | 视频/音乐播放控制页面 |
| /pages/detail/detail | 详情页 | 内容详细信息展示 |
| /pages/category/category | 分类页 | 内容分类筛选和浏览 |
| /pages/reader/reader | 阅读器 | 小说阅读界面 |
| /pages/bookshelf/bookshelf | 书架 | 用户收藏的小说管理 |
| /pages/history/history | 历史记录 | 观看/收听/阅读历史 |
| /pages/settings/settings | 设置页 | 应用设置和偏好配置 |
| /pages/login/login | 登录页 | 用户登录和注册 |
| /pages/vip/vip | 会员页 | VIP会员开通和管理 |
### 子页面路由
| 路由路径 | 页面名称 | 功能描述 |
| --------------------------- | ---- | -------- |
| /pages/profile/edit-profile | 编辑资料 | 用户个人信息编辑 |
| /pages/profile/favorites | 我的收藏 | 收藏内容管理 |
| /pages/profile/download | 离线下载 | 离线内容管理 |
| /pages/music/playlist | 歌单详情 | 音乐歌单详细页面 |
| /pages/long-video/series | 剧集列表 | 电视剧分集选择 |
| /pages/short-video/upload | 上传视频 | 短视频上传发布 |
## 4. API定义
### 4.1 用户认证相关API
#### 用户登录
```
POST /api/auth/login
```
请求参数:
| 参数名 | 类型 | 必填 | 描述 |
| -------- | ------ | -- | -------------------------- |
| mobile | string | 是 | 手机号 |
| code | string | 是 | 短信验证码 |
| platform | string | 是 | 平台类型wechat/ios/android/h5 |
响应示例:
```json
{
"code": 200,
"message": "登录成功",
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"userInfo": {
"userId": "123456",
"nickname": "用户昵称",
"avatar": "https://example.com/avatar.jpg",
"vipLevel": 1,
"expireTime": "2024-12-31 23:59:59"
}
}
}
```
#### 获取验证码
```
POST /api/auth/sendCode
```
请求参数:
| 参数名 | 类型 | 必填 | 描述 |
| ------ | ------ | -- | -------------------- |
| mobile | string | 是 | 手机号 |
| type | string | 是 | 验证码类型login/register |
### 4.2 内容相关API
#### 获取首页推荐内容
```
GET /api/content/recommend
```
请求参数:
| 参数名 | 类型 | 必填 | 描述 |
| ----------- | ------ | -- | -------------------------- |
| page | number | 否 | 页码默认1 |
| pageSize | number | 否 | 每页数量默认20 |
| contentType | string | 否 | 内容类型all/video/music/novel |
#### 获取短视频列表
```
GET /api/short-video/list
```
请求参数:
| 参数名 | 类型 | 必填 | 描述 |
| -------- | ------ | -- | --------- |
| lastId | string | 否 | 最后一条视频ID |
| count | number | 否 | 获取数量默认10 |
| category | string | 否 | 视频分类 |
#### 获取长视频分类
```
GET /api/long-video/category
```
#### 获取音乐歌单
```
GET /api/music/playlist
```
#### 获取小说分类
```
GET /api/novel/category
```
### 4.3 播放相关API
#### 获取视频播放地址
```
GET /api/player/video/url
```
请求参数:
| 参数名 | 类型 | 必填 | 描述 |
| ------- | ------ | -- | ----------------- |
| videoId | string | 是 | 视频ID |
| quality | string | 否 | 清晰度auto/hd/sd/ld |
#### 获取音乐播放地址
```
GET /api/player/music/url
```
#### 记录播放进度
```
POST /api/player/progress
```
### 4.4 用户行为API
#### 点赞/取消点赞
```
POST /api/interact/like
```
#### 收藏/取消收藏
```
POST /api/interact/favorite
```
#### 发表评论
```
POST /api/interact/comment
```
#### 关注/取消关注
```
POST /api/interact/follow
```
### 4.5 搜索相关API
#### 搜索建议
```
GET /api/search/suggest
```
#### 搜索结果
```
GET /api/search/result
```
## 5. 服务器架构设计
```mermaid
graph TD
A[客户端请求] --> B[API网关层]
B --> C[负载均衡器]
C --> D[应用服务集群]
D --> E[用户服务]
D --> F[内容服务]
D --> G[播放服务]
D --> H[推荐服务]
E --> I[(用户数据库)]
F --> J[(内容数据库)]
G --> K[(播放记录)]
H --> L[(Redis缓存)]
D --> M[消息队列]
M --> N[日志服务]
M --> O[统计服务]
subgraph "网关层"
B
C
end
subgraph "应用层"
D
E
F
G
H
end
subgraph "数据层"
I
J
K
L
end
subgraph "服务层"
M
N
O
end
```
## 6. 数据模型
### 6.1 用户相关数据模型
```mermaid
erDiagram
USER ||--o{ USER_PROFILE : has
USER ||--o{ USER_VIP : has
USER ||--o{ USER_FAVORITE : has
USER ||--o{ USER_HISTORY : has
USER ||--o{ USER_FOLLOW : follows
USER {
string userId PK
string mobile UK
string password
string nickname
string avatar
integer status
datetime createTime
datetime updateTime
}
USER_PROFILE {
string userId PK
string gender
date birthday
string city
string signature
integer level
integer experience
}
USER_VIP {
string userId PK
integer vipLevel
datetime startTime
datetime expireTime
boolean autoRenew
}
USER_FAVORITE {
string id PK
string userId FK
string contentId FK
string contentType
datetime createTime
}
USER_HISTORY {
string id PK
string userId FK
string contentId FK
string contentType
integer progress
datetime lastPlayTime
}
```
### 6.2 内容相关数据模型
```mermaid
erDiagram
CONTENT ||--o{ CONTENT_DETAIL : has
CONTENT ||--o{ CONTENT_TAG : has
CONTENT ||--o{ CONTENT_STAT : has
CONTENT ||--o{ COMMENT : has
CONTENT {
string contentId PK
string title
string cover
string contentType
string category
integer duration
string tags
integer status
datetime publishTime
}
CONTENT_DETAIL {
string contentId PK
string description
string director
string actors
string area
integer year
float rating
integer episodeCount
}
CONTENT_TAG {
string id PK
string contentId FK
string tagName
integer weight
}
CONTENT_STAT {
string contentId PK
integer viewCount
integer likeCount
integer favoriteCount
integer commentCount
integer shareCount
}
```
### 6.3 数据库表结构示例
#### 用户表 (users)
```sql
CREATE TABLE users (
user_id VARCHAR(32) PRIMARY KEY COMMENT '用户ID',
mobile VARCHAR(11) UNIQUE NOT NULL COMMENT '手机号',
password VARCHAR(64) NOT NULL COMMENT '密码',
nickname VARCHAR(50) NOT NULL COMMENT '昵称',
avatar VARCHAR(255) COMMENT '头像URL',
status TINYINT DEFAULT 1 COMMENT '状态1正常 0禁用',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
INDEX idx_mobile (mobile),
INDEX idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
```
#### 内容表 (contents)
```sql
CREATE TABLE contents (
content_id VARCHAR(32) PRIMARY KEY COMMENT '内容ID',
title VARCHAR(100) NOT NULL COMMENT '标题',
cover VARCHAR(255) COMMENT '封面URL',
content_type VARCHAR(20) NOT NULL COMMENT '内容类型video/music/novel',
category VARCHAR(50) COMMENT '分类',
duration INT COMMENT '时长(秒)',
tags TEXT COMMENT '标签,逗号分隔',
status TINYINT DEFAULT 1 COMMENT '状态1正常 0下架',
publish_time DATETIME COMMENT '发布时间',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
INDEX idx_type_category (content_type, category),
INDEX idx_status_time (status, publish_time DESC),
INDEX idx_tags (tags(100))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='内容表';
```
#### 用户历史记录表 (user\_history)
```sql
CREATE TABLE user_history (
id VARCHAR(32) PRIMARY KEY COMMENT '记录ID',
user_id VARCHAR(32) NOT NULL COMMENT '用户ID',
content_id VARCHAR(32) NOT NULL COMMENT '内容ID',
content_type VARCHAR(20) NOT NULL COMMENT '内容类型',
progress INT DEFAULT 0 COMMENT '播放进度(秒)',
last_play_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '最后播放时间',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
UNIQUE KEY uk_user_content (user_id, content_id),
INDEX idx_user_time (user_id, last_play_time DESC),
INDEX idx_content_type (content_type)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户播放历史表';
```
## 7. 性能优化方案
### 7.1 前端优化
* **资源压缩**:图片压缩、代码混淆、分包加载
* **懒加载**:图片懒加载、组件懒加载、路由懒加载
* **缓存策略**:接口缓存、图片缓存、离线包机制
* **渲染优化**:虚拟列表、防抖节流、异步渲染
### 7.2 后端优化
* **数据库优化**:索引优化、查询优化、分库分表
* **缓存策略**Redis缓存、CDN缓存、浏览器缓存
* **接口优化**:接口合并、数据压缩、分页加载
* **并发处理**:连接池、异步处理、队列机制
### 7.3 内容分发优化
* **CDN加速**静态资源CDN、视频CDN、音频CDN
* **预加载策略**:智能预加载、按需加载、优先级加载
* **多码率适配**:根据网络自动选择清晰度
* **断点续传**:支持大文件断点续传,提升用户体验