first commit
This commit is contained in:
238
.trae/documents/梦回高句丽项目技术架构文档.md
Executable file
238
.trae/documents/梦回高句丽项目技术架构文档.md
Executable file
@@ -0,0 +1,238 @@
|
||||
# 梦回高句丽视频分享平台技术架构文档
|
||||
|
||||
## 1. Architecture design
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A[用户浏览器] --> B[Vue3 前端应用]
|
||||
B --> C[Node.js + Express 后端]
|
||||
C --> D[SQLite 数据库]
|
||||
C --> E[文件存储系统]
|
||||
B --> F[本地缓存系统]
|
||||
|
||||
subgraph "前端层"
|
||||
B
|
||||
F
|
||||
end
|
||||
|
||||
subgraph "后端层"
|
||||
C
|
||||
end
|
||||
|
||||
subgraph "数据层"
|
||||
D
|
||||
E
|
||||
end
|
||||
```
|
||||
|
||||
## 2. Technology Description
|
||||
- 前端: Vue3@3.3+ + TypeScript@5.0+ + Element Plus@2.4+ + Vite@4.0+
|
||||
- 后端: Node.js@18+ + Express@4.18+ + SQLite@3.0+
|
||||
- 其他依赖: axios (HTTP客户端), vue-router (路由), pinia (状态管理), multer (文件上传)
|
||||
|
||||
## 3. Route definitions
|
||||
| Route | Purpose |
|
||||
|-------|----------|
|
||||
| / | 首页,瀑布流视频展示和搜索功能 |
|
||||
| /video/:id | 视频详情页,视频播放和详细信息 |
|
||||
| /user/:id | 用户详情页,用户上传视频列表 |
|
||||
| /search | 搜索结果页,关键词搜索结果展示 |
|
||||
| /admin/login | 后台登录页,管理员身份验证 |
|
||||
| /admin/dashboard | 后台管理首页,数据统计概览 |
|
||||
| /admin/videos | 后台视频管理,视频增删改查 |
|
||||
| /admin/upload | 后台视频上传,文件上传和信息编辑 |
|
||||
|
||||
## 4. API definitions
|
||||
|
||||
### 4.1 Core API
|
||||
|
||||
视频相关接口
|
||||
```
|
||||
GET /api/videos
|
||||
```
|
||||
|
||||
Request:
|
||||
| Param Name | Param Type | isRequired | Description |
|
||||
|------------|------------|------------|-------------|
|
||||
| page | number | false | 页码,默认1 |
|
||||
| limit | number | false | 每页数量,默认20 |
|
||||
| search | string | false | 搜索关键词 |
|
||||
| userId | string | false | 用户ID筛选 |
|
||||
|
||||
Response:
|
||||
| Param Name | Param Type | Description |
|
||||
|------------|------------|-------------|
|
||||
| success | boolean | 请求状态 |
|
||||
| data | object | 视频列表数据 |
|
||||
| total | number | 总数量 |
|
||||
|
||||
```
|
||||
POST /api/videos
|
||||
```
|
||||
|
||||
Request:
|
||||
| Param Name | Param Type | isRequired | Description |
|
||||
|------------|------------|------------|-------------|
|
||||
| title | string | true | 视频标题 |
|
||||
| description | string | false | 视频描述 |
|
||||
| videoFile | file | true | 视频文件 |
|
||||
| coverFile | file | false | 封面图片 |
|
||||
| isVisible | boolean | false | 是否可见 |
|
||||
| isRecommended | boolean | false | 是否推荐 |
|
||||
|
||||
用户认证接口
|
||||
```
|
||||
POST /api/auth/login
|
||||
```
|
||||
|
||||
Request:
|
||||
| Param Name | Param Type | isRequired | Description |
|
||||
|------------|------------|------------|-------------|
|
||||
| username | string | true | 用户名 |
|
||||
| password | string | true | 密码 |
|
||||
|
||||
Response:
|
||||
| Param Name | Param Type | Description |
|
||||
|------------|------------|-------------|
|
||||
| success | boolean | 登录状态 |
|
||||
| token | string | JWT令牌 |
|
||||
| user | object | 用户信息 |
|
||||
|
||||
## 5. Server architecture diagram
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A[客户端请求] --> B[Express 路由层]
|
||||
B --> C[中间件层]
|
||||
C --> D[控制器层]
|
||||
D --> E[服务层]
|
||||
E --> F[数据访问层]
|
||||
F --> G[(SQLite数据库)]
|
||||
|
||||
subgraph 服务器
|
||||
B
|
||||
C
|
||||
D
|
||||
E
|
||||
F
|
||||
end
|
||||
|
||||
subgraph 中间件
|
||||
H[身份验证]
|
||||
I[文件上传]
|
||||
J[错误处理]
|
||||
K[日志记录]
|
||||
end
|
||||
|
||||
C --> H
|
||||
C --> I
|
||||
C --> J
|
||||
C --> K
|
||||
```
|
||||
|
||||
## 6. Data model
|
||||
|
||||
### 6.1 Data model definition
|
||||
|
||||
```mermaid
|
||||
erDiagram
|
||||
USERS ||--o{ VIDEOS : uploads
|
||||
VIDEOS ||--o{ VIDEO_STATS : has
|
||||
|
||||
USERS {
|
||||
int id PK
|
||||
string username
|
||||
string password_hash
|
||||
string email
|
||||
datetime created_at
|
||||
datetime updated_at
|
||||
}
|
||||
|
||||
VIDEOS {
|
||||
int id PK
|
||||
string title
|
||||
text description
|
||||
string video_url
|
||||
string cover_url
|
||||
int user_id FK
|
||||
int view_count
|
||||
boolean is_visible
|
||||
boolean is_recommended
|
||||
boolean is_hot
|
||||
datetime created_at
|
||||
datetime updated_at
|
||||
}
|
||||
|
||||
VIDEO_STATS {
|
||||
int id PK
|
||||
int video_id FK
|
||||
int view_count
|
||||
datetime last_viewed
|
||||
datetime created_at
|
||||
}
|
||||
```
|
||||
|
||||
### 6.2 Data Definition Language
|
||||
|
||||
用户表 (users)
|
||||
```sql
|
||||
-- 创建用户表
|
||||
CREATE TABLE users (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
username TEXT UNIQUE NOT NULL,
|
||||
password_hash TEXT NOT NULL,
|
||||
email TEXT,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- 创建索引
|
||||
CREATE INDEX idx_users_username ON users(username);
|
||||
|
||||
-- 初始化管理员账户
|
||||
INSERT INTO users (username, password_hash, email) VALUES
|
||||
('admin', '$2b$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'admin@goguryeo.com');
|
||||
```
|
||||
|
||||
视频表 (videos)
|
||||
```sql
|
||||
-- 创建视频表
|
||||
CREATE TABLE videos (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
title TEXT NOT NULL,
|
||||
description TEXT,
|
||||
video_url TEXT NOT NULL,
|
||||
cover_url TEXT,
|
||||
user_id INTEGER NOT NULL,
|
||||
view_count INTEGER DEFAULT 0,
|
||||
is_visible INTEGER DEFAULT 1,
|
||||
is_recommended INTEGER DEFAULT 0,
|
||||
is_hot INTEGER DEFAULT 0,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
-- 创建索引
|
||||
CREATE INDEX idx_videos_user_id ON videos(user_id);
|
||||
CREATE INDEX idx_videos_created_at ON videos(created_at DESC);
|
||||
CREATE INDEX idx_videos_view_count ON videos(view_count DESC);
|
||||
CREATE INDEX idx_videos_title ON videos(title);
|
||||
```
|
||||
|
||||
视频统计表 (video_stats)
|
||||
```sql
|
||||
-- 创建视频统计表
|
||||
CREATE TABLE video_stats (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
video_id INTEGER NOT NULL,
|
||||
view_count INTEGER DEFAULT 0,
|
||||
last_viewed DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (video_id) REFERENCES videos(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
-- 创建索引
|
||||
CREATE INDEX idx_video_stats_video_id ON video_stats(video_id);
|
||||
CREATE INDEX idx_video_stats_last_viewed ON video_stats(last_viewed DESC);
|
||||
```
|
||||
Reference in New Issue
Block a user