### 第一階段: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 資料夾。 現在,您的瀏覽器右上角拼圖圖示中就會出現這個巡檢小工具了!
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.