整合資料庫、完成登入註冊忘記密碼功能
This commit is contained in:
222
README-DATABASE.md
Normal file
222
README-DATABASE.md
Normal file
@@ -0,0 +1,222 @@
|
||||
# AI 展示平台資料庫設計
|
||||
|
||||
## 📊 資料庫概述
|
||||
|
||||
本專案使用 **MySQL** 作為主要資料庫,設計了完整的資料表結構來支持 AI 展示平台的所有功能。
|
||||
|
||||
### 🔗 資料庫連接資訊
|
||||
|
||||
- **主機**: `mysql.theaken.com`
|
||||
- **端口**: `33306`
|
||||
- **資料庫名**: `db_AI_Platform`
|
||||
- **用戶名**: `AI_Platform`
|
||||
- **密碼**: `Aa123456`
|
||||
|
||||
## 🏗️ 資料表結構
|
||||
|
||||
### 核心業務表
|
||||
|
||||
#### 1. 用戶管理
|
||||
- **users** - 用戶基本資訊
|
||||
- **user_favorites** - 用戶收藏應用
|
||||
- **user_likes** - 用戶按讚記錄
|
||||
- **user_views** - 用戶瀏覽記錄
|
||||
- **user_ratings** - 用戶評分記錄
|
||||
|
||||
#### 2. 競賽系統
|
||||
- **competitions** - 競賽基本資訊
|
||||
- **competition_rules** - 競賽規則
|
||||
- **competition_award_types** - 競賽獎項類型
|
||||
- **competition_judges** - 競賽評審關聯
|
||||
- **competition_apps** - 競賽參與應用
|
||||
- **competition_teams** - 競賽參與團隊
|
||||
- **competition_proposals** - 競賽參與提案
|
||||
|
||||
#### 3. 評審系統
|
||||
- **judges** - 評審基本資訊
|
||||
- **app_judge_scores** - 應用評分記錄
|
||||
- **proposal_judge_scores** - 提案評分記錄
|
||||
|
||||
#### 4. 團隊管理
|
||||
- **teams** - 團隊基本資訊
|
||||
- **team_members** - 團隊成員關聯
|
||||
|
||||
#### 5. 應用管理
|
||||
- **apps** - AI 應用基本資訊
|
||||
|
||||
#### 6. 提案管理
|
||||
- **proposals** - 提案基本資訊
|
||||
|
||||
#### 7. 獎項系統
|
||||
- **awards** - 獎項記錄
|
||||
|
||||
#### 8. AI 助手
|
||||
- **chat_sessions** - 聊天會話
|
||||
- **chat_messages** - 聊天訊息
|
||||
- **ai_assistant_configs** - AI 助手配置
|
||||
|
||||
#### 9. 系統管理
|
||||
- **system_settings** - 系統設定
|
||||
- **activity_logs** - 活動日誌
|
||||
|
||||
## 📈 統計視圖
|
||||
|
||||
### 1. user_statistics
|
||||
用戶統計視圖,包含:
|
||||
- 基本資訊
|
||||
- 收藏數量
|
||||
- 按讚數量
|
||||
- 瀏覽數量
|
||||
- 平均評分
|
||||
- 團隊參與情況
|
||||
|
||||
### 2. app_statistics
|
||||
應用統計視圖,包含:
|
||||
- 基本資訊
|
||||
- 創作者資訊
|
||||
- 團隊資訊
|
||||
- 用戶互動統計
|
||||
- 評審評分統計
|
||||
|
||||
### 3. competition_statistics
|
||||
競賽統計視圖,包含:
|
||||
- 基本資訊
|
||||
- 評審數量
|
||||
- 參與應用數量
|
||||
- 參與團隊數量
|
||||
- 參與提案數量
|
||||
- 獎項數量
|
||||
|
||||
## ⚙️ 觸發器
|
||||
|
||||
### 1. 自動計算總分
|
||||
- **calculate_app_total_score** - 應用評分總分計算
|
||||
- **calculate_proposal_total_score** - 提案評分總分計算
|
||||
|
||||
## 🚀 快速開始
|
||||
|
||||
### 1. 安裝依賴
|
||||
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
### 2. 設置環境變數
|
||||
|
||||
複製 `env.example` 到 `.env.local` 並填入正確的資料庫資訊:
|
||||
|
||||
```bash
|
||||
cp env.example .env.local
|
||||
```
|
||||
|
||||
### 3. 執行資料庫遷移
|
||||
|
||||
```bash
|
||||
# 創建資料庫結構
|
||||
npm run migrate
|
||||
|
||||
# 重置資料庫(慎用)
|
||||
npm run migrate:reset
|
||||
```
|
||||
|
||||
### 4. 驗證安裝
|
||||
|
||||
遷移完成後,您應該看到:
|
||||
- 25 個資料表
|
||||
- 3 個統計視圖
|
||||
- 4 個觸發器
|
||||
- 初始系統設定數據
|
||||
|
||||
## 🔧 資料庫服務
|
||||
|
||||
### 使用方式
|
||||
|
||||
```typescript
|
||||
import { UserService, CompetitionService, AppService } from '@/lib/services/database-service';
|
||||
|
||||
// 創建用戶
|
||||
const user = await UserService.createUser({
|
||||
name: '張三',
|
||||
email: 'zhang@example.com',
|
||||
password_hash: 'hashed_password',
|
||||
department: 'IT部門',
|
||||
role: 'developer',
|
||||
join_date: '2024-01-01',
|
||||
total_likes: 0,
|
||||
total_views: 0,
|
||||
is_active: true
|
||||
});
|
||||
|
||||
// 獲取用戶統計
|
||||
const stats = await UserService.getUserStatistics(user.id);
|
||||
|
||||
// 創建競賽
|
||||
const competition = await CompetitionService.createCompetition({
|
||||
name: '2024年AI創新競賽',
|
||||
year: 2024,
|
||||
month: 3,
|
||||
start_date: '2024-03-01',
|
||||
end_date: '2024-03-31',
|
||||
status: 'upcoming',
|
||||
type: 'individual',
|
||||
is_active: true
|
||||
});
|
||||
```
|
||||
|
||||
## 📋 資料表關係圖
|
||||
|
||||
```
|
||||
users (1) ←→ (N) team_members (N) ←→ (1) teams
|
||||
users (1) ←→ (N) apps
|
||||
users (1) ←→ (N) user_favorites
|
||||
users (1) ←→ (N) user_likes
|
||||
users (1) ←→ (N) user_views
|
||||
users (1) ←→ (N) user_ratings
|
||||
|
||||
competitions (1) ←→ (N) competition_judges (N) ←→ (1) judges
|
||||
competitions (1) ←→ (N) competition_apps (N) ←→ (1) apps
|
||||
competitions (1) ←→ (N) competition_teams (N) ←→ (1) teams
|
||||
competitions (1) ←→ (N) competition_proposals (N) ←→ (1) proposals
|
||||
competitions (1) ←→ (N) awards
|
||||
|
||||
judges (1) ←→ (N) app_judge_scores (N) ←→ (1) apps
|
||||
judges (1) ←→ (N) proposal_judge_scores (N) ←→ (1) proposals
|
||||
|
||||
teams (1) ←→ (N) proposals
|
||||
teams (1) ←→ (N) apps
|
||||
```
|
||||
|
||||
## 🛠️ 維護命令
|
||||
|
||||
### 備份資料庫
|
||||
```bash
|
||||
mysqldump -h mysql.theaken.com -P 33306 -u AI_Platform -p db_AI_Platform > backup.sql
|
||||
```
|
||||
|
||||
### 恢復資料庫
|
||||
```bash
|
||||
mysql -h mysql.theaken.com -P 33306 -u AI_Platform -p db_AI_Platform < backup.sql
|
||||
```
|
||||
|
||||
### 檢查資料庫狀態
|
||||
```bash
|
||||
mysql -h mysql.theaken.com -P 33306 -u AI_Platform -p -e "SHOW TABLES;" db_AI_Platform
|
||||
```
|
||||
|
||||
## 🔍 常見問題
|
||||
|
||||
### Q: 如何重置資料庫?
|
||||
A: 執行 `npm run migrate:reset` 命令,這會刪除所有表並重新創建。
|
||||
|
||||
### Q: 如何添加新的資料表?
|
||||
A: 在 `database-schema.sql` 中添加新的 CREATE TABLE 語句,然後執行 `npm run migrate`。
|
||||
|
||||
### Q: 如何修改現有表結構?
|
||||
A: 使用 ALTER TABLE 語句,或者創建新的遷移腳本。
|
||||
|
||||
### Q: 資料庫連接失敗怎麼辦?
|
||||
A: 檢查環境變數設置,確保資料庫服務正在運行,並且網路連接正常。
|
||||
|
||||
## 📞 技術支援
|
||||
|
||||
如有任何資料庫相關問題,請聯繫技術團隊或查看專案文檔。
|
Reference in New Issue
Block a user