Hold Detail 功能: - 新增 /hold-detail 頁面,點擊 Hold Reason 可查看詳細資料 - 顯示摘要統計(總批次、總數量、平均/最大滯留天數、站點數) - 按站點、封裝類型、滯留天數分佈展示 - Lot Details 表格含分頁與篩選功能 - 新增 Hold Comment 欄位顯示 WIP Detail 修復: - 修復狀態卡片篩選後分頁總數仍顯示未篩選數量的問題 - 現在篩選 RUN/QUEUE/HOLD 後,分頁正確顯示篩選後的總數 測試: 120 passed (20 hold routes + 67 wip routes/service) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2.6 KiB
2.6 KiB
Hold Detail 實作任務
後端任務
Task 1: 新增 Hold Detail 服務函數
- 在
wip_service.py新增get_hold_detail_summary()函數 - 在
wip_service.py新增get_hold_detail_distribution()函數 - 在
wip_service.py新增get_hold_detail_lots()函數(含分頁)
Task 2: 新增 Hold Detail API 路由
- 建立
src/mes_dashboard/routes/hold_routes.py - 實作
GET /api/wip/hold-detail/summary端點 - 實作
GET /api/wip/hold-detail/distribution端點 - 實作
GET /api/wip/hold-detail/lots端點(含篩選參數) - 實作
GET /hold-detail頁面路由 - 在
__init__.py註冊新的 blueprint
前端任務
Task 3: 建立 Hold Detail 頁面模板
- 建立
src/mes_dashboard/templates/hold_detail.html - 實作頁首區塊(返回連結、標題)
- 實作摘要卡片區塊(5 張卡片)
- 實作當站滯留天數分佈區塊(4 個可點擊卡片)
- 實作分佈表格區塊(By Workcenter、By Package)
- 實作 Lot Details 表格(含分頁)
- 實作篩選指示器和清除按鈕
Task 4: 實作前端互動邏輯
- 實作資料載入函數(Summary、Distribution、Lots)
- 實作篩選邏輯(點擊分佈項目篩選 Lot Details)
- 實作分頁功能
- 實作篩選狀態顯示和清除功能
- 處理載入狀態和錯誤狀態
Task 5: 修改 WIP Overview 連結
- 在
wip_overview.html的 Hold Summary 表格中,為 Hold Reason 加入連結 - 連結格式:
/hold-detail?reason=<encoded_reason>
樣式任務
Task 6: 確保樣式一致性
- 數值欄位不顯示單位文字
- 數值欄位右對齊,文字欄位左對齊
- 表格欄位間隔 16px
- 可點擊項目顯示 cursor: pointer 和 hover 效果
- 選中狀態使用高亮邊框
測試任務
Task 7: 功能測試
自動化測試 - tests/test_hold_routes.py (20/20 passed)
- 頁面路由測試(無 reason 時重導向、有 reason 時顯示)
- Summary API 測試(成功回傳、缺少參數錯誤、查詢失敗)
- Distribution API 測試(成功回傳、缺少參數錯誤、查詢失敗)
- Lots API 測試(成功回傳、篩選參數傳遞、分頁參數驗證)
- Age Range 參數驗證(0-1, 1-3, 3-7, 7+)
手動前端測試(已通過)
- 測試不同 Hold Reason 的資料載入
- 測試各種篩選組合
- 測試分頁功能
- 測試篩選清除功能
- 測試從 WIP Overview 導航到 Hold Detail