Files
ggl/.trae/documents/梦回高句丽项目技术架构文档.md
2025-09-23 07:35:11 +00:00

238 lines
5.8 KiB
Markdown
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 梦回高句丽视频分享平台技术架构文档
## 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);
```