Files
DashBoard/openspec/changes/archive/2026-01-28-hold-detail/tasks.md
beabigegg c8fc749bbd feat: 新增 Hold Detail 頁面與修復 WIP Detail 篩選問題
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>
2026-01-28 13:38:15 +08:00

2.6 KiB
Raw Blame History

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