# Change: Add LOT Field and Remove Room Templates ## Why 1. **模板功能未被使用**:前端 UI 未實作模板選擇功能,後端雖有完整實作但實際上無人使用。預設模板中的 email 地址(如 `maintenance_team@panjit.com.tw`)也不存在於實際 AD 系統中。 2. **需要追蹤 LOT 批號**:生產線異常事件需要記錄相關的 LOT(批號)資訊,以便追蹤受影響的產品批次。一個事件可能涉及多個 LOT,且 LOT 資訊需要在事件處理過程中可以新增或修改。 ## What Changes ### 1. 移除 Room Templates 功能 **後端移除:** - 刪除 `RoomTemplate` 模型 (`app/modules/chat_room/models.py`) - 刪除 `template_service.py` (`app/modules/chat_room/services/template_service.py`) - 移除 `app/main.py` 中的模板初始化代碼 - 移除 `app/modules/chat_room/router.py` 中的模板相關端點和邏輯 - 刪除 `tr_room_templates` 資料表(Alembic migration) **前端移除:** - 移除 `useRoomTemplates` hook - 移除 `RoomTemplate` type 定義 - 移除 `roomsService.getTemplates()` 函數 ### 2. 新增 LOT 欄位 **後端新增:** - 在 `IncidentRoom` 模型新增 `lots` 欄位(JSON 陣列格式) - 更新 `CreateRoomRequest` 和 `UpdateRoomRequest` schema 支援 lots - 新增 `PUT /api/rooms/{room_id}/lots` 端點用於更新 LOT 清單 - Alembic migration 新增欄位 **前端新增:** - 建立房間 modal 新增 LOT 輸入區(動態新增/刪除行) - 房間詳情頁顯示和編輯 LOT 清單 - 更新相關 types 和 API 呼叫 ### 3. UI 設計 LOT 輸入區: ``` LOT 批號(可選) ┌──────────────────────┐ │ LOT-2024-001 │ [x] └──────────────────────┘ ┌──────────────────────┐ │ LOT-2024-002 │ [x] └──────────────────────┘ [+ 新增 LOT] ``` - 每行一個 LOT 輸入框 - 右側 [x] 按鈕可刪除該行 - 底部 [+ 新增 LOT] 按鈕新增空白行 - LOT 欄位為選填 ## Impact - **Affected specs**: `chat-room` (移除 Room Templates 需求,新增 LOT 需求) - **Affected code**: - `app/modules/chat_room/models.py` - 移除 RoomTemplate,新增 lots 欄位 - `app/modules/chat_room/services/template_service.py` - 刪除 - `app/modules/chat_room/services/__init__.py` - 移除 template_service 匯出 - `app/modules/chat_room/router.py` - 移除模板端點,新增 LOT 端點 - `app/modules/chat_room/schemas.py` - 新增 lots 欄位 - `app/main.py` - 移除模板初始化 - `frontend/src/types/index.ts` - 移除 RoomTemplate,新增 lots - `frontend/src/hooks/useRooms.ts` - 移除 useRoomTemplates - `frontend/src/services/rooms.ts` - 移除 getTemplates,新增 updateLots - `frontend/src/pages/RoomList.tsx` - 移除模板引用,新增 LOT 輸入 - `frontend/src/pages/RoomDetail.tsx` - 新增 LOT 顯示和編輯 - **Breaking changes**: - 移除 `GET /api/rooms/templates` 端點 - 移除 `POST /api/rooms` 的 `template` 參數支援 - 刪除 `tr_room_templates` 資料表 - **Database migration**: - 刪除 `tr_room_templates` 資料表 - 新增 `lots` 欄位到 `tr_incident_rooms` 資料表