Files
DashBoard/openspec/changes/archive/2026-02-07-hold-detail-vite-hardening/proposal.md
2026-02-08 08:30:48 +08:00

27 lines
1.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## Why
`hold_detail` 目前仍是大型 inline script尚未納入 Vite 模組治理,且動態 HTML 字串拼接存在潛在注入風險。為了完成報表頁一致的現代化架構與安全基線,需要將該頁補齊至與其餘主要頁面相同的模組化與防護水位。
## What Changes
- 新增 `hold-detail` Vite entry 並由模板透過 `frontend_asset(...)` 優先載入 module。
- 保留現有 inline script 作為 asset 缺失時 fallback維持既有操作語意不變。
-`hold_detail` 的動態表格/篩選渲染改為 escape-safe 輸出,避免不受信字串直接注入 DOM。
- 補充模板整合測試,驗證 `hold_detail` 的 module/fallback 路徑。
## Capabilities
### New Capabilities
- None.
### Modified Capabilities
- `full-vite-page-modularization`: 擴展 major page 模組化覆蓋到 hold-detail 報表頁。
- `field-contract-governance`: 將動態渲染安全契約擴展到 hold-detail 報表內容。
- `report-effects-parity`: 明確要求 hold-detail 的篩選、分頁、分佈互動在遷移後維持等效。
## Impact
- Affected code: `frontend/src/`, `frontend/vite.config.js`, `src/mes_dashboard/templates/hold_detail.html`, `tests/test_template_integration.py`
- APIs/routes: `/hold-detail`, `/api/wip/hold-detail/*`(僅前端調用與渲染方式調整,不更動後端契約)。
- Runtime behavior: 單一 port 與既有 MesApi/retry 行為不變。