Initial commit

This commit is contained in:
2025-10-28 15:50:53 +08:00
commit 297ef231c5
31 changed files with 12708 additions and 0 deletions

390
README.md Normal file
View File

@@ -0,0 +1,390 @@
# 夥伴對齊系統 (Partner Alignment System)
一個基於 Flask 的現代化夥伴對齊管理系統提供能力評估、STAR 回饋、排名系統和全面的用戶管理功能。
## 🌟 主要功能
### 🔐 認證與授權
- **JWT 認證**: 安全的令牌基礎認證系統
- **角色權限管理**: 靈活的角色和權限控制
- **用戶註冊/登入**: 完整的用戶生命週期管理
- **會話管理**: 安全的會話和令牌刷新機制
### 📊 個人儀表板
- **積分追蹤**: 實時顯示總積分和月度積分
- **排名顯示**: 部門排名和總排名
- **通知中心**: 系統通知和成就提醒
- **活動記錄**: 個人活動和成就歷史
### 📝 能力評估系統
- **拖拽式評估**: 直觀的能力等級評估界面
- **多維度評估**: 支持多種能力項目的評估
- **評估歷史**: 完整的評估記錄和追蹤
- **數據導出**: Excel/CSV 格式的評估數據導出
### ⭐ STAR 回饋系統
- **結構化回饋**: 基於 STAR 方法的回饋收集
- **積分獎勵**: 自動積分計算和分配
- **回饋追蹤**: 完整的回饋歷史記錄
- **績效分析**: 基於回饋的績效分析
### 🏆 排名系統
- **實時排名**: 總排名和月度排名
- **百分位計算**: 精確的排名百分位顯示
- **部門篩選**: 按部門查看排名
- **排名歷史**: 排名變化和趨勢分析
### 👥 管理功能
- **用戶管理**: 完整的用戶 CRUD 操作
- **角色管理**: 角色創建、分配和權限管理
- **審計日誌**: 完整的系統操作記錄
- **數據管理**: 評估和回饋數據管理
## 🏗️ 技術架構
### 後端技術棧
- **Flask 2.3.3**: Web 框架
- **SQLAlchemy**: ORM 數據庫操作
- **MySQL 5.7+**: 主數據庫
- **JWT**: 認證令牌
- **Flask-Login**: 會話管理
- **Flask-Bcrypt**: 密碼加密
- **APScheduler**: 定時任務
### 前端技術棧
- **HTML5**: 語義化標記
- **Bootstrap 5**: 響應式 UI 框架
- **JavaScript ES6+**: 現代 JavaScript
- **Fetch API**: 異步數據請求
- **CSS3**: 現代樣式和動畫
### 開發工具
- **pytest**: 測試框架
- **Docker**: 容器化部署
- **GitHub Actions**: CI/CD 流水線
- **Nginx**: 反向代理和負載均衡
## 📁 項目結構
```
partner-alignment-system/
├── app.py # 主應用程式文件
├── config.py # 配置文件
├── models.py # 數據模型
├── auth.py # 認證邏輯
├── auth_routes.py # 認證路由
├── dashboard_routes.py # 儀表板路由
├── admin_routes.py # 管理路由
├── init_system.py # 系統初始化
├── requirements.txt # Python 依賴
├── pytest.ini # 測試配置
├── conftest.py # 測試配置
├── run_tests.py # 測試運行器
├── Dockerfile # Docker 配置
├── docker-compose.yml # Docker Compose 配置
├── nginx.conf # Nginx 配置
├── templates/ # HTML 模板
│ └── index.html # 主頁面
├── static/ # 靜態文件
│ ├── css/
│ │ └── style.css # 樣式文件
│ └── js/
│ └── app.js # 前端邏輯
├── tests/ # 測試文件
│ ├── unit/ # 單元測試
│ ├── integration/ # 集成測試
│ ├── api/ # API 測試
│ └── e2e/ # 端到端測試
├── .github/ # GitHub 配置
│ └── workflows/
│ └── ci.yml # CI/CD 流水線
├── SETUP.md # 設置指南
├── DEPLOYMENT.md # 部署指南
└── README.md # 項目說明
```
## 🚀 快速開始
### 1. 環境要求
- Python 3.8+
- MySQL 5.7+
- Node.js (可選,用於前端開發)
### 2. 安裝依賴
```bash
# 克隆項目
git clone <repository-url>
cd partner-alignment-system
# 創建虛擬環境
python -m venv venv
source venv/bin/activate # Linux/Mac
# 或
venv\Scripts\activate # Windows
# 安裝依賴
pip install -r requirements.txt
```
### 3. 配置環境
```bash
# 複製環境變量模板
cp .env.example .env
# 編輯環境變量
nano .env
```
### 4. 初始化數據庫
```bash
# 創建數據庫表
python init_db.py
# 初始化系統數據
python init_system.py
```
### 5. 運行應用程式
```bash
# 開發模式
python app.py
# 或使用 Flask 命令
flask run
# 生產模式
gunicorn -c gunicorn.conf.py app:app
```
### 6. 訪問系統
打開瀏覽器訪問 `http://localhost:5000`
**默認管理員帳號:**
- 用戶名: `admin`
- 密碼: `admin123`
## 🧪 測試
### 運行所有測試
```bash
python run_tests.py --type all
```
### 運行特定測試
```bash
# 單元測試
python run_tests.py --type unit
# API 測試
python run_tests.py --type api
# 認證測試
python run_tests.py --type auth
```
### 生成覆蓋率報告
```bash
python run_tests.py --coverage
```
## 🐳 Docker 部署
### 使用 Docker Compose
```bash
# 啟動所有服務
docker-compose up -d
# 查看日誌
docker-compose logs -f app
# 停止服務
docker-compose down
```
### 單獨使用 Docker
```bash
# 構建鏡像
docker build -t partner-alignment .
# 運行容器
docker run -d -p 5000:5000 partner-alignment
```
## 📊 數據庫設計
### 主要表結構
- **users**: 用戶信息
- **roles**: 角色定義
- **permissions**: 權限定義
- **assessments**: 能力評估
- **capabilities**: 能力項目
- **star_feedbacks**: STAR 回饋
- **employee_points**: 員工積分
- **monthly_rankings**: 月度排名
- **audit_logs**: 審計日誌
- **notifications**: 通知消息
### 關係設計
- 用戶與角色:多對多關係
- 角色與權限:多對多關係
- 用戶與評估:一對多關係
- 用戶與回饋:一對多關係(評估者和被評估者)
## 🔒 安全特性
### 認證安全
- JWT 令牌認證
- 密碼哈希加密
- 會話超時管理
- 令牌刷新機制
### 授權控制
- 基於角色的訪問控制 (RBAC)
- 細粒度權限管理
- API 端點保護
- 前端路由守衛
### 數據安全
- SQL 注入防護
- XSS 攻擊防護
- CSRF 保護
- 安全標頭配置
### 審計追蹤
- 完整的操作日誌
- 用戶行為追蹤
- 系統事件記錄
- 安全事件監控
## 📈 性能優化
### 數據庫優化
- 索引優化
- 查詢優化
- 連接池配置
- 緩存策略
### 應用程式優化
- 異步處理
- 緩存機制
- 靜態文件優化
- 壓縮配置
### 前端優化
- 資源壓縮
- 懶加載
- 緩存策略
- CDN 配置
## 🔧 配置選項
### 環境變量
```bash
# 應用程式配置
SECRET_KEY=your-secret-key
JWT_SECRET_KEY=your-jwt-secret
FLASK_ENV=production
# 數據庫配置
DB_HOST=localhost
DB_PORT=3306
DB_USER=username
DB_PASSWORD=password
DB_NAME=database_name
# 認證配置
ENABLE_REGISTRATION=True
DEFAULT_ROLE=user
SESSION_TIMEOUT=3600
# 郵件配置
MAIL_SERVER=smtp.gmail.com
MAIL_PORT=587
MAIL_USE_TLS=True
MAIL_USERNAME=your-email
MAIL_PASSWORD=your-password
```
## 📚 API 文檔
### 認證端點
- `POST /api/auth/register` - 用戶註冊
- `POST /api/auth/login` - 用戶登入
- `POST /api/auth/refresh` - 刷新令牌
- `GET /api/auth/protected` - 受保護端點測試
### 評估端點
- `GET /api/capabilities` - 獲取能力項目
- `POST /api/assessments` - 創建評估
- `GET /api/assessments` - 獲取評估列表
### 回饋端點
- `POST /api/star-feedbacks` - 創建 STAR 回饋
- `GET /api/star-feedbacks` - 獲取回饋列表
### 排名端點
- `GET /api/rankings/total` - 獲取總排名
- `GET /api/rankings/monthly` - 獲取月度排名
### 管理端點
- `GET /api/admin/users` - 獲取用戶列表
- `POST /api/admin/users` - 創建用戶
- `PUT /api/admin/users/{id}` - 更新用戶
- `DELETE /api/admin/users/{id}` - 刪除用戶
### 儀表板端點
- `GET /api/dashboard/me` - 獲取個人儀表板數據
- `POST /api/dashboard/notifications/{id}/read` - 標記通知為已讀
## 🤝 貢獻指南
### 開發流程
1. Fork 項目
2. 創建功能分支
3. 提交更改
4. 創建 Pull Request
### 代碼規範
- 遵循 PEP 8 規範
- 使用類型提示
- 編寫單元測試
- 更新文檔
### 提交規範
```
feat: 新功能
fix: 修復問題
docs: 文檔更新
style: 代碼格式
refactor: 重構
test: 測試
chore: 構建過程
```
## 📄 許可證
本項目採用 MIT 許可證 - 查看 [LICENSE](LICENSE) 文件了解詳情。
## 📞 支持與聯繫
### 問題報告
- GitHub Issues: [創建問題](https://github.com/your-org/partner-alignment/issues)
- 郵箱支持: support@company.com
### 文檔
- 在線文檔: [https://docs.company.com](https://docs.company.com)
- API 文檔: [https://api-docs.company.com](https://api-docs.company.com)
### 社區
- 討論區: [GitHub Discussions](https://github.com/your-org/partner-alignment/discussions)
- 技術博客: [https://blog.company.com](https://blog.company.com)
## 🙏 致謝
感謝所有為這個項目做出貢獻的開發者和用戶。
---
**版本**: 2.0.0
**最後更新**: 2024年10月
**維護者**: 開發團隊