新增資料庫、用戶註冊、登入的功能

This commit is contained in:
2025-08-05 10:56:22 +08:00
parent 94e3763402
commit a288a966ba
41 changed files with 4362 additions and 289 deletions

186
DATABASE_SETUP_COMPLETE.md Normal file
View File

@@ -0,0 +1,186 @@
# 🎉 AI展示平台資料庫建立完成
## 📊 建立結果總結
### ✅ 成功建立的資料表 (18個)
| 序號 | 資料表名稱 | 狀態 | 記錄數 |
|------|------------|------|--------|
| 1 | users | ✅ | 1 |
| 2 | competitions | ✅ | 2 |
| 3 | judges | ✅ | 3 |
| 4 | teams | ✅ | 0 |
| 5 | team_members | ✅ | 0 |
| 6 | apps | ✅ | 0 |
| 7 | proposals | ✅ | 0 |
| 8 | judge_scores | ✅ | 0 |
| 9 | awards | ✅ | 0 |
| 10 | chat_sessions | ✅ | 0 |
| 11 | chat_messages | ✅ | 0 |
| 12 | ai_assistant_configs | ✅ | 1 |
| 13 | user_favorites | ✅ | 0 |
| 14 | user_likes | ✅ | 0 |
| 15 | competition_participants | ✅ | 0 |
| 16 | competition_judges | ✅ | 0 |
| 17 | system_settings | ✅ | 8 |
| 18 | activity_logs | ✅ | 0 |
### 📈 初始數據統計
- **管理員用戶**: 1 筆 (admin@theaken.com)
- **預設評審**: 3 筆 (張教授、李經理、王工程師)
- **預設競賽**: 2 筆 (2025年AI創新競賽、2025年提案競賽)
- **AI助手配置**: 1 筆
- **系統設定**: 8 筆 (包含各種系統參數)
## 🔗 資料庫連接資訊
- **主機**: mysql.theaken.com
- **埠號**: 33306
- **資料庫**: db_AI_Platform
- **用戶**: AI_Platform
- **密碼**: Aa123456
- **MySQL版本**: 9.3.0
## 🛠️ 建立的腳本文件
1. **`database_setup.sql`** - 完整版SQL腳本 (包含觸發器和存儲過程)
2. **`database_setup_simple.sql`** - 簡化版SQL腳本 (僅基本資料表)
3. **`scripts/setup-database.js`** - 自動化建立腳本
4. **`scripts/setup-database-manual.js`** - 手動建立腳本
5. **`scripts/fix-tables.js`** - 修復資料表腳本
6. **`scripts/fix-user-likes.js`** - 修復user_likes表腳本
7. **`database_connection_test.js`** - 連接測試腳本
8. **`lib/database.ts`** - 資料庫操作工具類
## 📋 可用的npm腳本
```bash
# 建立資料庫
pnpm run db:setup
# 測試連接
pnpm run db:test
# 手動建立 (推薦)
node scripts/setup-database-manual.js
# 修復資料表
node scripts/fix-tables.js
```
## 🔧 資料庫功能特色
### 🏗️ 完整的資料結構
- **18個核心資料表** 支援所有平台功能
- **完整的外鍵約束** 確保資料完整性
- **優化的索引設計** 提升查詢效能
- **JSON欄位支援** 儲存複雜資料結構
### 🔒 安全性設計
- **密碼加密**: 使用bcrypt進行密碼雜湊
- **唯一約束**: 防止重複資料
- **外鍵約束**: 確保資料關聯完整性
- **索引優化**: 提升查詢效能
### 📊 初始數據
- **預設管理員**: admin@theaken.com (密碼: admin123)
- **預設評審**: 3位不同專業領域的評審
- **預設競賽**: 2個不同類型的競賽
- **系統設定**: 8個核心系統參數
## 🚀 下一步開發計劃
### 1. 後端API開發
```bash
# 建議的API端點
/api/auth/login # 用戶登入
/api/auth/register # 用戶註冊
/api/competitions # 競賽管理
/api/users # 用戶管理
/api/judges # 評審管理
/api/apps # 應用管理
/api/teams # 團隊管理
/api/awards # 獎項管理
```
### 2. 前端整合
```bash
# 替換Mock數據
- 更新 auth-context.tsx 使用真實API
- 更新 competition-context.tsx 使用真實API
- 實現真實的用戶認證
- 連接資料庫進行CRUD操作
```
### 3. 環境配置
```bash
# 複製環境變數
cp env.example .env.local
# 編輯環境變數
nano .env.local
```
## 📝 使用指南
### 1. 連接資料庫
```typescript
import { db } from '@/lib/database'
// 查詢用戶
const users = await db.query('SELECT * FROM users')
// 插入數據
const userId = await db.insert('users', {
id: 'user-001',
name: '測試用戶',
email: 'test@example.com',
password_hash: 'hashed_password',
department: '技術部',
role: 'user',
join_date: '2025-01-01'
})
```
### 2. 用戶認證
```typescript
// 登入驗證
const user = await db.queryOne(
'SELECT * FROM users WHERE email = ? AND password_hash = ?',
[email, hashedPassword]
)
```
### 3. 競賽管理
```typescript
// 獲取競賽列表
const competitions = await db.query(
'SELECT * FROM competitions ORDER BY created_at DESC'
)
```
## 🎯 專案狀態
-**資料庫設計**: 完成
-**資料表建立**: 完成
-**初始數據**: 完成
-**連接測試**: 完成
- 🔄 **後端API**: 待開發
- 🔄 **前端整合**: 待開發
- 🔄 **部署配置**: 待開發
## 📞 技術支援
如果遇到問題,請檢查:
1. **連接問題**: 確認主機、埠號、用戶名、密碼
2. **權限問題**: 確認用戶有足夠的資料庫權限
3. **語法錯誤**: 檢查SQL語句語法
4. **依賴問題**: 確認已安裝所有必要依賴
---
**建立時間**: 2025年1月
**建立者**: AI展示平台開發團隊
**狀態**: ✅ 完成