### 第一階段:TDD 與業務邏輯 (JavaScript/Jest) 1. **定義資料模型 (Data Model)**: 請設計一個 JavaScript 檔案來代表巡檢項目。請注意,檢查表中有兩種不同的邏輯,必須小心處理: * **類型 A (期待值為 False/無)**:問題是「有無異常?」。 - `temp_system`: 內部溫度測定裝置及調整裝置有無異常 (False = 合格) - `exhaust_system`: 排出氣體之設備有無異常 (False = 合格) - `ventilation_system`: 換氣設備有無異常 (False = 合格) - `openings`: 出入孔、排氣孔等開口部有無異常 (False = 合格) - `electrical`: 內部之電氣機械器具或配線有無異常 (False = 合格) - `structure`: 內、外部是否損傷、變形或腐蝕 (False/無損傷 = 合格) - `other_safety`: 其他安全設施有無異常 (False = 合格) * **類型 B (期待值為 True/是)**:問題是「是否正常?」。 - `safety_valves`: 安全閥、壓力錶是否正常 (True = 合格) 2. **撰寫測試 (Writing Tests)**: 在寫功能代碼之前,請先提供 Jest 測試代碼: - 測試案例 1:初始化表單狀態。 - 測試案例 2 (`Success Path`):當所有項目都符合合格標準(類型 A 為否,類型 B 為是)時,驗證函數應回傳 `PASS`。 - 測試案例 3 (`Failure Path`):當 `safety_valves` 為 False (不正常) 時,應回傳 `FAIL`。 - 測試案例 4 (`Failure Path`):當 `exhaust_system` 為 True (有異常) 時,應回傳 `FAIL`。 *重點:請透過測試代碼展示你如何處理這兩種相反的布林邏輯。* 3. **實作邏輯 (Implementation)**: - 撰寫通過上述測試的純 JavaScript `validateInspection(data)` 函數。 ### 第二階段:Web 介面 (HTML/Tailwind CSS) 當邏輯驗證無誤後,請建立介面: 1. **UI 設計**:使用 **Tailwind CSS** 製作一個乾淨、工業風格且支援手機瀏覽的 RWD 表單。 2. **表單內容**: - 使用繁體中文顯示所有標籤 (Label)。 - 針對每個問題,提供清楚的選項(例如:「正常/異常」或「是/否」),但背後要對應到正確的布林值邏輯。 - 在「安全閥」這一題,介面上特別標註(需確認數值正常)。 3. **整合互動**: - 實作「提交檢查」和「匯出為文字」按鈕。 - 呼叫第一階段寫好的 `validateInspection` 函數。 - **結果回饋**: - 若合格:顯示綠色的「檢查合格 (PASS)」橫幅。 - 若不合格:顯示紅色的「檢查異常 (FAIL)」橫幅,並將有問題的欄位標示紅框。 **輸出格式要求**: 請依序提供: 1. 測試代碼區塊 (Tests)。 2. 邏輯實作代碼區塊 (Logic)。 3. 完整的單一 HTML 檔案 (包含 CSS/JS)。 4. 請將我們剛剛完成的「設備安全衛生自動檢查表」網頁工具,重構為符合 **Manifest V3 標準** 的 Google Chrome Extension 且這個工具不用切換到新網頁就可以使用。 當 VIBE 產出Extension程式碼後,請執行以下步驟: 1. 在電腦上建立一個資料夾(例如命名為 inspection-extension)。 2. 將 VIBE 產出的程式碼分別存成三個檔案:manifest.json, popup.html, popup.js,放入該資料夾中。 3. 打開 Chrome 瀏覽器,在網址列輸入 chrome://extensions/。 4. 開啟右上角的開關**「開發人員模式 (Developer mode)」**。 5. 點擊左上角的按鈕**「載入未封裝項目 (Load unpacked)」**。 6. 選擇剛剛建立的 inspection-extension 資料夾。 現在,您的瀏覽器右上角拼圖圖示中就會出現這個巡檢小工具了!