feat(mid-section-defect): add TMTT reverse traceability analysis with paginated detail API

New page for tracing TMTT test station defects back to upstream machines,
stations, and workflows. Three-stage data pipeline (TMTT detection →
SPLITFROMID BFS + COMBINEDASSYLOTS merge expansion → upstream history),
6 KPI cards, 6 Pareto charts, daily trend, paginated LOT detail table.

Summary/detail API separation reduces response from 72 MB to ~16 KB summary
+ ~110 KB/page detail. Loss reasons cached in Redis with 24h TTL (205 types).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
egg
2026-02-10 08:24:04 +08:00
parent 720e190bc6
commit 8b1b8da59b
25 changed files with 3157 additions and 9 deletions

View File

@@ -40,11 +40,13 @@
| WIP 三頁 Vue 3 遷移Overview/Detail/Hold Detail | ✅ 已完成 |
| 設備雙頁 Vue 3 遷移Status/History | ✅ 已完成 |
| 設備快取 DataFrame TTL 一致性修復 | ✅ 已完成 |
| 中段製程不良追溯分析TMTT → 上游) | ✅ 已完成 |
---
## 開發歷史Vite 重構後)
- 2026-02-10完成中段製程不良追溯分析`/mid-section-defect`)— TMTT 測試站不良回溯至上游機台/站點/製程。三段式資料管線TMTT 偵測 → SPLITFROMID BFS + COMBINEDASSYLOTS 合批展開 → 上游製程歷史),支援 205 種不良原因篩選、6 張 Pareto 圖表、日趨勢、LOT 明細分頁200 筆/頁。Loss reasons 24h Redis 快取、分析結果 5 分鐘快取、Detail API 分離summary ~16KB + detail ~110KB/page原 72MB 單次回應)。
- 2026-02-09完成設備雙頁 Vue 3 遷移(`/resource``/resource-history`)— 兩頁共 1,697 行 vanilla JS + 3,200 行 Jinja2 模板重寫為 Vue 3 SFC。抽取 `resource-shared/` 共用模組CSS 基底、E10 狀態常數、HierarchyTable 三層展開樹表元件History 頁 4 個 ECharts 圖表改用 vue-echartsStatus 頁複用 `useAutoRefresh` composable5 分鐘自動刷新)。
- 2026-02-09完成 WIP 三頁 Vue 3 遷移(`/wip-overview``/wip-detail``/hold-detail`)— 三頁共 1,941 行 vanilla JS + Jinja2 重寫為 Vue 3 SFC。抽取共用 CSS/常數/元件至 `wip-shared/`Pareto 圖改用 vue-echarts與 QC-GATE 一致Hold Detail 新增前端 URL params 判斷取代 Jinja2 注入。
- 2026-02-09完成數據表查詢頁面`/tables`Vue 3 遷移 — 第二個純 Vite 頁面,建立 `apiPost` POST 請求模式237 行 vanilla JS 重寫為 Vue 3 SFC 元件。
@@ -460,7 +462,7 @@ A: 請確認瀏覽器允許下載檔案,並檢查查詢結果是否有資料
透過側邊欄抽屜分組導覽切換各功能模組:
- **報表類**WIP 即時概況、設備即時概況、設備歷史績效、QC-GATE 即時狀態
- **查詢類**設備維修查詢、批次追蹤工具、TMTT 不良分析
- **查詢類**設備維修查詢、批次追蹤工具、TMTT 不良分析、中段製程不良追溯
- **開發工具**admin only數據表查詢、Excel 批次查詢、頁面管理、效能監控
- 抽屜/頁面配置可由管理員動態管理(新增、重排、刪除)
@@ -523,6 +525,21 @@ A: 請確認瀏覽器允許下載檔案,並檢查查詢結果是否有資料
- 站點排序依 DW_MES_SPEC_WORKCENTER_V 製程順序
- **技術架構**:第一個純 Vue 3 + Vite 頁面,完全脫離 Jinja2
### 中段製程不良追溯分析
- TMTT 測試站不良回溯至上游機台 / 站點 / 製程的反向追蹤分析
- 三段式資料管線:
1. TMTT 偵測LOTWIPHISTORY + LOTREJECTHISTORY
2. LOT 族譜解析CONTAINER.SPLITFROMID BFS 分批鏈 + PJ_COMBINEDASSYLOTS 合批展開)
3. 上游製程歷史LOTWIPHISTORY by ancestor CIDs
- 6 張 KPI 卡片 + 6 張 Pareto 圖表(依站點/不良原因/上游機台/TMTT 機台/製程/封裝歸因)
- 日趨勢折線圖 + LOT 明細分頁表200 筆/頁,伺服器端 DEFECT_RATE 降序排序)
- 不良原因多選篩選205 種24h Redis 快取)
- 分析結果 5 分鐘 Redis 快取summary API (~16 KB) 與 detail API (~110 KB/page) 分離
- CSV 串流匯出UTF-8 BOM完整明細
- 5 分鐘自動刷新 + visibilitychange 即時刷新
- **技術架構**Vue 3 + VitePareto/趨勢圖使用 vue-echarts複用 `wip-shared/` 的 Pagination/useAutoRefresh
### 數據表查詢工具
- 顯示所有 DWH 表格的分類卡片目錄(即時數據表/現況快照表/歷史累積表/輔助表)
@@ -588,8 +605,8 @@ CIRCUIT_BREAKER_RECOVERY_TIMEOUT=30
| 技術 | 用途 |
|------|------|
| Jinja2 | 模板引擎(既有頁面) |
| Vue 3 | UI 框架QC-GATE、Tables、WIP 三頁、設備雙頁已遷移,漸進式擴展中) |
| vue-echarts | ECharts Vue 封裝QC-GATE、WIP Overview Pareto、Resource History 4 圖表) |
| Vue 3 | UI 框架QC-GATE、Tables、WIP 三頁、設備雙頁、中段不良追溯已遷移,漸進式擴展中) |
| vue-echarts | ECharts Vue 封裝QC-GATE、WIP Overview Pareto、Resource History 4 圖表、Mid-Section Defect 7 圖表 |
| Vite 6 | 前端多頁模組打包(含 Vue SFC + HTML entry |
| ECharts | 圖表庫npm tree-shaking + 舊版靜態檔案並存) |
| Vanilla JS Modules | 互動功能與頁面邏輯(既有頁面) |
@@ -640,7 +657,8 @@ DashBoard_vite/
│ │ ├── dashboard/ # 儀表板查詢
│ │ ├── resource/ # 設備查詢
│ │ ├── wip/ # WIP 查詢
│ │ ── resource_history/ # 設備歷史查詢
│ │ ── resource_history/ # 設備歷史查詢
│ │ └── mid_section_defect/ # 中段不良追溯查詢
│ └── templates/ # HTML 模板
├── frontend/ # Vite 前端專案
│ ├── src/core/ # 共用 API/欄位契約/計算 helper
@@ -655,7 +673,8 @@ DashBoard_vite/
│ ├── src/wip-shared/ # WIP 三頁共用 CSS/常數/元件
│ ├── src/wip-overview/ # WIP 即時概況 (Vue 3 SFC)
│ ├── src/wip-detail/ # WIP 明細查詢 (Vue 3 SFC)
── src/hold-detail/ # Hold 狀態分析 (Vue 3 SFC)
── src/hold-detail/ # Hold 狀態分析 (Vue 3 SFC)
│ └── src/mid-section-defect/ # 中段不良追溯分析 (Vue 3 SFC)
├── shared/
│ └── field_contracts.json # 前後端共用欄位契約
├── scripts/ # 腳本
@@ -739,6 +758,22 @@ conda run -n mes-dashboard python scripts/run_cache_benchmarks.py --enforce
## 變更日誌
### 2026-02-10
- 新增中段製程不良追溯分析頁面(`/mid-section-defect`
- TMTT 測試站偵測到的不良,反向追蹤至上游機台/站點/製程的歸因分析
- 三段式資料管線TMTT 偵測 → LOT 族譜解析SPLITFROMID BFS 分批鏈 + COMBINEDASSYLOTS 合批展開)→ 上游製程歷史
- 6 張 KPI 卡片(投入/LOT數/不良數/不良率/首要原因/影響機台數)
- 6 張 Pareto 圖表(站點/不良原因/上游機台/TMTT 機台/製程/封裝歸因)+ 日趨勢折線
- 不良原因多選篩選205 種,全站 24h Redis 快取,`/api/mid-section-defect/loss-reasons`
- Detail API 分頁分離(`/api/mid-section-defect/analysis` summary ~16 KB + `/api/mid-section-defect/analysis/detail` ~110 KB/page原 72 MB 單次回應
- 伺服器端 DEFECT_RATE 降序排序 + 前端頁內欄位排序
- CSV 串流匯出UTF-8 BOM完整明細
- 進入頁面不自動查詢,點擊「查詢」後才執行;首次查詢後啟動 5 分鐘自動刷新
- Summary + Detail page 1 平行載入(`Promise.all`
- NaN 安全防護Oracle NULL → pandas NaN`isinstance(val, str)` 過濾)
- 技術架構Vue 3 + Vitevue-echarts 7 圖表,複用 `wip-shared/` Pagination/useAutoRefresh
### 2026-02-09
- 完成設備雙頁 Vue 3 遷移(`/resource`、`/resource-history`
@@ -879,5 +914,5 @@ conda run -n mes-dashboard python scripts/run_cache_benchmarks.py --enforce
---
**文檔版本**: 5.3
**最後更新**: 2026-02-09
**文檔版本**: 5.4
**最後更新**: 2026-02-10