feat(tables): migrate /tables page from Jinja2 to Vue 3 + Vite
Rewrite 237-line vanilla JS + Jinja2 template into Vue 3 SFC components (App.vue, TableCatalog.vue, DataViewer.vue, useTableData composable). Establishes apiPost POST request pattern for pure Vite pages. Removes templates/index.html, updates Vite entry to HTML, and Flask route to send_from_directory. Includes sql_fragments WHERE_CLAUSE escaping fix, updated integration tests, and OpenSpec artifact archive. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
31
README.md
31
README.md
@@ -36,11 +36,15 @@
|
||||
| 部署自動化 | ✅ 已完成 |
|
||||
| Portal 動態抽屜導覽管理 | ✅ 已完成 |
|
||||
| QC-GATE 即時狀態報表(Vue 3 + Vite) | ✅ 已完成 |
|
||||
| 數據表查詢頁面 Vue 3 遷移 | ✅ 已完成 |
|
||||
| 設備快取 DataFrame TTL 一致性修復 | ✅ 已完成 |
|
||||
|
||||
---
|
||||
|
||||
## 開發歷史(Vite 重構後)
|
||||
|
||||
- 2026-02-09:完成數據表查詢頁面(`/tables`)Vue 3 遷移 — 第二個純 Vite 頁面,建立 `apiPost` POST 請求模式,237 行 vanilla JS 重寫為 Vue 3 SFC 元件。
|
||||
- 2026-02-09:修復設備快取 DataFrame TTL 一致性問題 — process-level DataFrame(30s TTL)過期後 derived index 仍為 ready,導致 `/api/resource/status` 回傳空資料。新增 Redis fallback reload。
|
||||
- 2026-02-09:新增 QC-GATE 即時狀態報表 — 第一個純 Vue 3 + Vite 頁面(脫離 Jinja2),建立後續前端遷移架構模式。
|
||||
- 2026-02-09:完成 Portal 動態抽屜導覽管理,sidebar drawer/page 配置改為 admin 可管理。
|
||||
- 2026-02-07:完成 Flask + Vite 單一 port 架構切換,舊版 `DashBoard/` 停用。
|
||||
@@ -450,9 +454,9 @@ A: 請確認瀏覽器允許下載檔案,並檢查查詢結果是否有資料
|
||||
### Portal 入口頁面
|
||||
|
||||
透過側邊欄抽屜分組導覽切換各功能模組:
|
||||
- **報表類**:WIP 即時概況、QC-GATE 即時狀態
|
||||
- **查詢類**:WIP 明細查詢、Hold 狀態分析、設備狀態監控、設備歷史查詢、數據表查詢工具
|
||||
- **開發工具**(admin only):Excel 批次查詢、TMTT 不良分析等
|
||||
- **報表類**:WIP 即時概況、設備即時概況、設備歷史績效、QC-GATE 即時狀態
|
||||
- **查詢類**:設備維修查詢、批次追蹤工具、TMTT 不良分析
|
||||
- **開發工具**(admin only):數據表查詢、Excel 批次查詢、頁面管理、效能監控
|
||||
- 抽屜/頁面配置可由管理員動態管理(新增、重排、刪除)
|
||||
|
||||
### WIP 即時概況
|
||||
@@ -502,6 +506,15 @@ A: 請確認瀏覽器允許下載檔案,並檢查查詢結果是否有資料
|
||||
- 站點排序依 DW_MES_SPEC_WORKCENTER_V 製程順序
|
||||
- **技術架構**:第一個純 Vue 3 + Vite 頁面,完全脫離 Jinja2
|
||||
|
||||
### 數據表查詢工具
|
||||
|
||||
- 顯示所有 DWH 表格的分類卡片目錄(即時數據表/現況快照表/歷史累積表/輔助表)
|
||||
- 大表標記:超過 1,000 萬筆資料的表格顯示 badge 提示
|
||||
- 選擇表格後自動載入欄位資訊,每欄提供篩選輸入
|
||||
- 支援 Enter 鍵或「查詢」按鈕觸發查詢(預設回傳最近 1000 筆)
|
||||
- 使用中的篩選條件顯示為可移除的 tag,支援一鍵清除全部
|
||||
- **技術架構**:第二個純 Vue 3 + Vite 頁面,使用 `apiPost` 建立 POST 請求模式
|
||||
|
||||
### 管理員功能
|
||||
|
||||
- LDAP 認證登入(支援本地測試模式)
|
||||
@@ -705,6 +718,16 @@ conda run -n mes-dashboard python scripts/run_cache_benchmarks.py --enforce
|
||||
|
||||
### 2026-02-09
|
||||
|
||||
- 完成數據表查詢頁面(`/tables`)Vue 3 遷移:
|
||||
- 237 行 vanilla JS + Jinja2 模板重寫為 Vue 3 SFC 元件(App.vue、TableCatalog.vue、DataViewer.vue)
|
||||
- Vite entry 從 `main.js` 改為 `index.html`,Flask route 改為 `send_from_directory`
|
||||
- 使用 `apiPost` 建立純 Vite 頁面 POST 請求模式
|
||||
- 移除 Jinja2 模板 `templates/index.html`,完全脫離 `window.MesApi` 依賴
|
||||
- 修復設備即時概況(`/resource`)資料為空問題:
|
||||
- 根因:process-level DataFrame cache(30s TTL)過期後,derived index 仍標記 `ready: true`
|
||||
- `_records_from_index()` 取得 `df=None` 時直接回傳空 list
|
||||
- 修復:新增 `_get_cached_data()` fallback,從 Redis 重新載入 DataFrame
|
||||
- 修正 `page_status.json` 設備頁面名稱:「機台狀態」→「設備即時概況」
|
||||
- 新增 QC-GATE 即時狀態報表頁面(`/qc-gate`):
|
||||
- 第一個純 Vue 3 + Vite 頁面,完全脫離 Jinja2 模板
|
||||
- ECharts 堆疊條圖顯示各 QC-GATE 站點 LOT 分佈(按 6hr 時間分級)
|
||||
@@ -816,5 +839,5 @@ conda run -n mes-dashboard python scripts/run_cache_benchmarks.py --enforce
|
||||
|
||||
---
|
||||
|
||||
**文檔版本**: 5.0
|
||||
**文檔版本**: 5.1
|
||||
**最後更新**: 2026-02-09
|
||||
|
||||
Reference in New Issue
Block a user