f823d8cefd9f310c470fd87eb3a157f1c9f3f4b9
- 新增 realtime_equipment_cache 模組,從 DW_MES_EQUIPMENTSTATUS_WIP_V 同步設備即時狀態 - 新增 resource_service 合併三層快取(resource-cache、realtime-equipment、workcenter-mapping) - 新增 /api/resource/status/* API 端點提供設備狀態查詢 - 更新 health_routes 顯示 realtime equipment cache 狀態 - 更新 portal.html 顯示設備即時快取資訊 - 重構 resource_status.html 前端頁面 - 新增相關 OpenSpec 規格文件與測試 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
MES Dashboard 報表系統
基於 Flask + Gunicorn 的 MES 數據報表查詢與可視化系統
專案狀態
| 功能 | 狀態 |
|---|---|
| WIP 即時概況 | ✅ 已完成 |
| WIP 明細查詢 | ✅ 已完成 |
| Hold 狀態分析 | ✅ 已完成 |
| 數據表查詢工具 | ✅ 已完成 |
| 管理員認證系統 | ✅ 已完成 |
| 頁面狀態管理 | ✅ 已完成 |
| 部署自動化 | ✅ 已完成 |
快速開始
首次部署
# 1. 執行部署腳本
./scripts/deploy.sh
# 2. 編輯環境設定
nano .env
# 3. 啟動服務
./scripts/start_server.sh start
日常操作
# 啟動服務(背景執行)
./scripts/start_server.sh start
# 停止服務
./scripts/start_server.sh stop
# 重啟服務
./scripts/start_server.sh restart
# 查看狀態
./scripts/start_server.sh status
# 查看日誌
./scripts/start_server.sh logs follow
訪問網址: http://localhost:8080 (可在 .env 中配置)
部署指南
環境需求
- Python 3.11+
- Conda (Miniconda/Anaconda)
- Oracle Database 連線
部署步驟
1. 自動部署(推薦)
./scripts/deploy.sh
此腳本會自動:
- 檢查 Conda 環境
- 建立
mes-dashboard虛擬環境 - 安裝依賴套件
- 複製
.env.example到.env - 驗證資料庫連線
2. 手動部署
# 建立 Conda 環境
conda create -n mes-dashboard python=3.11 -y
conda activate mes-dashboard
# 安裝依賴
pip install -r requirements.txt
# 設定環境變數
cp .env.example .env
nano .env # 編輯資料庫連線等設定
# 啟動服務
./scripts/start_server.sh start
環境變數設定
編輯 .env 檔案:
# 資料庫設定(必填)
DB_HOST=10.1.1.58
DB_PORT=1521
DB_SERVICE=DWDB
DB_USER=your_username
DB_PASSWORD=your_password
# Flask 設定
FLASK_ENV=production # production | development
SECRET_KEY=your-secret-key # 生產環境請更換
# Gunicorn 設定
GUNICORN_BIND=0.0.0.0:8080 # 服務監聽位址
GUNICORN_WORKERS=2 # Worker 數量
GUNICORN_THREADS=4 # 每個 Worker 的執行緒數
# 管理員設定
ADMIN_EMAILS=admin@example.com # 管理員郵件(逗號分隔)
生產環境注意事項
-
SECRET_KEY: 必須設定為隨機字串
python -c "import secrets; print(secrets.token_hex(32))" -
FLASK_ENV: 設定為
production -
防火牆: 開放服務端口(預設 8080)
功能說明
Portal 入口頁面
透過 Tab 切換各功能模組:
- WIP 即時概況
- WIP 明細查詢
- Hold 狀態分析
- 數據表查詢工具
WIP 即時概況
- 總覽統計(總 LOT 數、總數量、總片數)
- 按 SPEC 和 WORKCENTER 統計
- 按產品線統計(匯總 + 明細)
- Hold 狀態分類(品質異常/非品質異常)
WIP 明細查詢
- 依工作中心篩選
- 依 Package 篩選
- 依 Hold 狀態篩選
- 依製程站點篩選
- 支援 Excel 匯出
Hold 狀態分析
- Hold 批次總覽
- 按 Hold 原因分類
- Hold 明細查詢
- 品質異常分類統計
管理員功能
- LDAP 認證登入
- 頁面狀態管理(released/dev)
- Dev 頁面僅管理員可見
技術架構
後端技術棧
| 技術 | 版本 | 用途 |
|---|---|---|
| Python | 3.11+ | 程式語言 |
| Flask | 3.x | Web 框架 |
| Gunicorn | 23.x | WSGI 伺服器 |
| SQLAlchemy | 2.x | ORM |
| oracledb | 2.x | Oracle 驅動 |
| Pandas | 2.x | 資料處理 |
前端技術棧
| 技術 | 用途 |
|---|---|
| Jinja2 | 模板引擎 |
| Bootstrap 5 | UI 框架 |
| Chart.js | 圖表庫 |
| Vanilla JS | 互動功能 |
資料庫
- Oracle Database 19c Enterprise Edition
- 主機: 10.1.1.58:1521
- 服務名: DWDB
專案結構
DashBoard/
├── src/mes_dashboard/ # 主程式
│ ├── app.py # Flask 應用
│ ├── config/ # 設定
│ ├── core/ # 核心模組
│ ├── routes/ # 路由
│ ├── services/ # 服務層
│ └── templates/ # HTML 模板
├── scripts/ # 腳本
│ ├── deploy.sh # 部署腳本
│ └── start_server.sh # 服務管理腳本
├── tests/ # 測試
├── data/ # 資料檔案
├── logs/ # 日誌
├── docs/ # 文檔
├── openspec/ # 變更管理
├── .env.example # 環境變數範例
├── requirements.txt # Python 依賴
└── gunicorn.conf.py # Gunicorn 設定
測試
# 執行所有測試
pytest tests/ -v
# 執行單元測試
pytest tests/test_*.py -v --ignore=tests/e2e --ignore=tests/stress
# 執行整合測試
pytest tests/test_*_integration.py -v
# 執行 E2E 測試
pytest tests/e2e/ -v
# 執行壓力測試
pytest tests/stress/ -v
故障排除
服務無法啟動
-
檢查 Conda 環境:
conda activate mes-dashboard -
檢查依賴:
pip install -r requirements.txt -
檢查日誌:
./scripts/start_server.sh logs error
資料庫連線失敗
- 確認
.env中的資料庫設定正確 - 確認網路可連線到資料庫伺服器
- 確認資料庫帳號密碼正確
Port 被占用
-
檢查 port 使用狀況:
lsof -i :8080 -
修改
.env中的GUNICORN_BIND設定
變更日誌
2026-01-28
- 新增管理員認證系統(LDAP 整合)
- 新增頁面狀態管理(released/dev)
- 新增部署腳本
deploy.sh - 更新啟動腳本自動載入
.env - 新增完整測試套件(57 個測試)
2026-01-27
- 新增 Hold Detail 頁面
- WIP 查詢排除原物料
- Hold 狀態分類(品質異常/非品質異常)
2026-01-26
- 重構為 Flask App Factory 模式
- 新增全域連線管理
- 新增 WIP 篩選增強功能
聯絡方式
如有技術問題或需求變更,請聯繫系統管理員。
文檔版本: 2.0 最後更新: 2026-01-28
Description
Languages
Python
69.1%
Vue
15.3%
JavaScript
7.4%
CSS
3.6%
HTML
3.4%
Other
1.2%