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

376
PROJECT_SUMMARY.md Normal file
View File

@@ -0,0 +1,376 @@
# 夥伴對齊系統 - 專案總結
## ✅ 專案狀態
**狀態:** 已完成並可正常運行
**日期:** 2025-01-17
**版本:** 1.0.0 (簡化版)
---
## 📁 專案結構
### 核心文件
```
1015 partner alignment V2/
├── simple_app.py # 主應用程式(簡化版,使用 SQLite
├── config.py # 配置檔案(生產環境用)
├── requirements.txt # Python 依賴套件
├── requirements-simple.txt # 簡化版依賴套件
├── run.bat # Windows 啟動腳本
├── setup.bat # Windows 安裝腳本
├── README.md # 專案說明
├── security-fixes.md # 安全審計報告
├── FEATURES_COMPLETED.md # 功能完成清單
├── static/ # 靜態資源
│ ├── css/
│ │ └── style.css # 樣式表
│ └── js/
│ ├── app.js # 主應用程式 JavaScript
│ ├── admin.js # 管理功能 JavaScript
│ └── assessment.js # 評估功能 JavaScript
├── templates/ # HTML 模板
│ └── index.html # 主頁面
├── instance/ # 實例目錄
│ └── partner_alignment.db # SQLite 資料庫
└── venv/ # Python 虛擬環境
```
---
## 🚀 快速開始
### 方法 1: 使用 run.bat推薦
```bash
# 雙擊運行或在命令提示字元中執行
run.bat
```
### 方法 2: 手動啟動
```bash
# 1. 創建虛擬環境
py -m venv venv
# 2. 啟動虛擬環境
venv\Scripts\activate
# 3. 安裝依賴
pip install -r requirements-simple.txt
# 4. 啟動應用程式
py simple_app.py
```
### 訪問應用程式
打開瀏覽器訪問:`http://localhost:5000`
---
## 🔑 測試帳號
| 角色 | 用戶名 | 密碼 | 權限 |
|------|--------|------|------|
| 管理員 | admin | admin123 | 所有功能 |
| HR主管 | hr_manager | hr123 | 管理功能 |
| 一般用戶 | user | user123 | 基本功能 |
**注意:** 這些是測試帳號,登入頁面會顯示這些資訊。
---
## ✨ 主要功能
### 1. 認證系統
- ✅ 用戶登入/註冊
- ✅ 測試帳號快速登入
- ✅ 用戶信息顯示
- ✅ 登出功能
### 2. 個人儀表板
- ✅ 積分追蹤(總積分、本月積分)
- ✅ 排名顯示
- ✅ 最近活動
- ✅ 成就徽章
- ✅ 績效圖表Chart.js
### 3. 能力評估
- ✅ 拖拽式評估界面
- ✅ 多層級能力評估L1-L5
- ✅ 評估記錄管理
### 4. STAR 回饋系統
- ✅ 結構化回饋收集
- ✅ Situation-Task-Action-Result 框架
- ✅ 評分系統1-5分
- ✅ 積分計算
### 5. 排名系統
- ✅ 總排名
- ✅ 月度排名
- ✅ 百分位數計算
- ✅ 等級系統(大師、專家、熟練、良好、基礎)
- ✅ 高級篩選(部門、職位、積分範圍)
- ✅ 統計分析(平均、中位數、標準差)
### 6. 通知系統
- ✅ 實時通知
- ✅ 通知分類(成就、排名、回饋、系統)
- ✅ 已讀管理
- ✅ 智能時間顯示
### 7. 管理界面
- ✅ 用戶管理
- ✅ 統計概覽
- ✅ 部門分析
- ✅ 積分分析
### 8. 數據導出
- ✅ CSV 格式導出
- ✅ Excel 格式導出(需要 pandas
---
## 🗄️ 資料庫
### 當前使用SQLite
**資料庫位置:** `instance/partner_alignment.db`
**優勢:**
- 無需安裝額外資料庫服務
- 開箱即用
- 適合開發和小型部署
**生產環境建議:** 使用 MySQL 或 PostgreSQL
### 資料表結構
1. **users** - 用戶帳號
2. **roles** - 角色定義
3. **user_roles** - 用戶角色關聯
4. **capabilities** - 能力項目
5. **assessments** - 評估記錄
6. **star_feedbacks** - STAR 回饋
7. **employee_points** - 員工積分
8. **notifications** - 通知
9. **audit_logs** - 審計日誌
10. **permissions** - 權限定義
11. **role_permissions** - 角色權限關聯
12. **monthly_rankings** - 月度排名
---
## 🛠️ 技術棧
### 前端
- **HTML5** - 結構
- **Bootstrap 5** - UI 框架
- **Bootstrap Icons** - 圖標庫
- **Chart.js** - 數據可視化
- **JavaScript (Vanilla)** - 交互邏輯
### 後端
- **Flask 2.3.3** - Web 框架
- **SQLAlchemy 3.0.5** - ORM
- **Flask-CORS 4.0.0** - 跨域支持
- **Flask-Login 0.6.3** - 用戶會話管理
- **Flask-JWT-Extended 4.5.2** - JWT 認證
- **Flask-Bcrypt 1.0.1** - 密碼哈希
- **APScheduler 3.10.4** - 定時任務
### 資料庫
- **SQLite** - 開發環境
- **MySQL 5.7+** - 生產環境(可選)
---
## ⚠️ 安全注意事項
### 當前實現(簡化版)
**僅適用於開發環境!**
1. **密碼存儲**
- ❌ 密碼直接存儲在資料庫
- ❌ 沒有使用密碼哈希
- ⚠️ 生產環境必須使用 Flask-Bcrypt
2. **令牌驗證**
- ❌ 簡單的令牌格式
- ❌ 沒有簽名驗證
- ❌ 沒有過期檢查
- ⚠️ 生產環境必須使用 JWT
3. **HTTPS**
- ❌ 使用 HTTP
- ❌ 沒有 TLS/SSL
- ⚠️ 生產環境必須使用 HTTPS
### 生產環境檢查清單
在部署到生產環境前,必須完成:
- [ ] 實現密碼哈希Flask-Bcrypt
- [ ] 實現 JWT 令牌驗證
- [ ] 配置 HTTPS/TLS
- [ ] 設置安全頭部
- [ ] 實現速率限制
- [ ] 添加輸入驗證
- [ ] 設置日誌和監控
- [ ] 配置防火牆規則
- [ ] 設置自動備份
- [ ] 進行安全測試
**詳細安全審計報告請參閱:** `security-fixes.md`
---
## 📊 性能優化
### 當前狀態
- ✅ 響應式設計
- ✅ 前端資源優化CDN
- ✅ 資料庫索引
- ✅ 懶加載
### 建議改進
- [ ] 添加 Redis 緩存
- [ ] 實現資料庫連接池
- [ ] 添加 CDN 加速
- [ ] 實現前端資源壓縮
- [ ] 添加圖片優化
---
## 🐛 已知問題
1. **Windows 終端編碼**
- 問題emoji 字符無法顯示
- 狀態:已修復(移除 emoji
2. **簡化版認證**
- 問題:沒有真正的令牌驗證
- 狀態:已知限制,僅用於開發
3. **密碼安全**
- 問題:密碼未哈希
- 狀態:已知限制,僅用於開發
---
## 📈 未來改進
### 短期1-2 週)
- [ ] 實現密碼哈希
- [ ] 添加 JWT 令牌驗證
- [ ] 實現角色權限控制
- [ ] 添加輸入驗證
- [ ] 實現速率限制
### 中期1-2 個月)
- [ ] 配置 HTTPS
- [ ] 添加單元測試
- [ ] 實現 CI/CD
- [ ] 添加監控和日誌
- [ ] 性能優化
### 長期3-6 個月)
- [ ] 移動端應用
- [ ] 實時通知WebSocket
- [ ] 高級分析報表
- [ ] 多語言支持
- [ ] 第三方整合
---
## 📞 支援與文檔
### 文檔
- `README.md` - 專案說明
- `security-fixes.md` - 安全審計報告
- `FEATURES_COMPLETED.md` - 功能完成清單
- `PROJECT_SUMMARY.md` - 本文件
### 常見問題
**Q: 如何重置資料庫?**
```bash
# 刪除資料庫文件
del instance\partner_alignment.db
# 重新啟動應用程式
py simple_app.py
```
**Q: 如何查看資料庫內容?**
```bash
# 使用 SQLite 命令行工具
sqlite3 instance\partner_alignment.db
.tables
SELECT * FROM users;
```
**Q: 如何添加新用戶?**
- 方法 1: 使用註冊功能
- 方法 2: 直接操作資料庫
- 方法 3: 修改 `simple_app.py` 中的 `create_sample_data()` 函數
---
## 🎯 專案目標
### 已完成 ✅
- [x] 基礎架構搭建
- [x] 認證系統
- [x] 個人儀表板
- [x] 能力評估系統
- [x] STAR 回饋系統
- [x] 排名系統
- [x] 通知系統
- [x] 管理界面
- [x] 數據導出
- [x] 響應式設計
### 進行中 🔄
- [ ] 安全加固
- [ ] 性能優化
- [ ] 測試覆蓋
### 規劃中 📋
- [ ] 生產環境部署
- [ ] 移動端支持
- [ ] 高級分析
---
## 📝 版本歷史
### v1.0.0 (2025-01-17)
- ✅ 初始版本發布
- ✅ 所有核心功能完成
- ✅ 測試帳號創建
- ✅ 登入界面修復
- ✅ 安全審計完成
---
## 🙏 致謝
感謝所有參與專案開發和測試的人員。
---
**最後更新:** 2025-01-17
**維護者:** 開發團隊
**許可證:** 專有軟體