稽核要點
此模板為您提供煙霧探測器稽核後端,包括電池更換日志、靈敏度測試和現場地圖,方便協調員和現場工作人員以較少的手動工作跟蹤檢查。
- 電池更換歷史 — 記錄每個 `BatteryLog` 條目,包括探測器序號、更換日期和技術人員備註。
- 按探測器進行靈敏度測試 — 存儲每個 `Detector` 的 `SensitivityTest` 結果,以便容易發現和跟進失敗的檢查。
- 準備好地圖的現場追蹤 — 使用 `Site` 和 `MapPin` 記錄將探測器放置在地圖上並規劃現場訪問。
煙霧探測器審核模板是什麼?
當煙霧探測器審核團隊在不同場地運作時,使用一致的分類法可以防止在審核記錄中出現「同樣的問題,五個不同的名稱」。解決方案是操作性,而不是動機性。Back4app 使得網站、探測器、電池紀錄、靈敏度測試和地圖釘的時間戳和可歸責性得以保持——這是煙霧探測器審核團隊在面對審查時所需的基線資料。該架構涵蓋用戶(用戶名、電子郵件、密碼)、網站(名稱、地址、地圖位置)、探測器(場地、序列號、狀態)、電池紀錄(探測器、更換時間、电池類型)、靈敏度測試(探測器、測試時間、結果)和地圖釘(場地、緯度、經度),並內建身份驗證、報告和地圖友好的紀錄。連接您的前端並開始更快地跟踪審核。
最佳用途:
煙霧探測器審計後端概述
在煙霧探測器審計中,操作員通常在交接時首先感受到痛苦:一個團隊更新了一張表,而另一個團隊依賴於一個聊天主題,兩者都與客戶所告知的內容不符。
無論您是交付網頁還是移動應用,Site、Detector 和 BatteryLog 仍然是骨幹——這個頁面是協調利益相關者的最快方式。
核心煙霧探測器審計功能
此中心中的每個技術卡片都使用相同的煙霧探測器審核架構,包括站點、探測器、電池日誌、靈敏度測試和地圖釘。
站點註冊和地圖錨點
`Site` 存儲每個建築或樓層計劃的名稱、地址和 mapLocation。
檢測器庫存
`Detector` 連結序列號、狀態和位置。
電池更換日誌
`BatteryLog` 儲存更換時間、電池類型和技術人員備註。
靈敏度測試結果
`SensitivityTest` 記錄 testedAt、結果和檢測器。
地圖釘放置
`MapPin` 使用緯度、經度和站點。
為什麼要使用 Back4app 構建您的煙霧探測器審計後端?
Back4app 為您提供網站、探測器和審計原語,讓您的團隊可以專注於電池、測試和路線規劃,而不是後端管道。
- •將探測器和網站記錄集中在一個地方: `Detector` 類別鏈接到 `Site`,因此電池檢查和靈敏度測試保持與正確的地址和地圖標記相連。
- •易於查詢的電池日誌歷史: `BatteryLog` 行捕獲 `replacedAt`、`batteryType` 和 `technicianNote`,這有助於經理按檢測器或日期審查更換工作。
- •檢查和路線變更的即時狀態: 在保持 REST 和 GraphQL 為網頁儀表板和移動現場工具準備好的同時,使用 Live Queries 進行 `SensitivityTest` 和 `MapPin` 更新。
一次構建審計後端,然後重複使用相同的類進行路線規劃、檢查歷史和跟進工作。
核心好處
一個煙霧探測器審核後端,幫助團隊保持組織,同時不失去重要的細節。
更快的字段更新
在訪問發生時寫入 `BatteryLog` 和 `SensitivityTest` 條目,而不是等待電子表格清理。
清除檢測器歷史
使用 `Detector.serialNumber` 以及鏈接的日誌來查看任何單元的維護歷史。
基於地圖的規劃
`Site.mapLocation` 和 `MapPin.latitude` / `MapPin.longitude` 使路徑規劃減少猜測。
對於失敗測試的更好跟進
可以立即過濾失敗的 `SensitivityTest.result`,使監督者知道哪個檢測器需要注意。
一個後端適用於移動和桌面
REST 和 GraphQL 將相同的 `Site`、`Detector` 和日誌數據暴露給每個需要它的應用程序。
可重複使用的未來審核設置
稍後添加額外字段,但保持 `BatteryLog` 和 `SensitivityTest` 的相同核心模式。
準備好啟動您的煙霧探測器審核應用程序嗎?
讓 Back4app AI 代理搭建您的審核後端,並從一個提示生成電池日誌、靈敏度測試和地圖視圖。
免費啟動 — 每月 50 次 AI 代理提示,不需要信用卡
技術堆棧
此煙霧探測器審核後端範本中包含所有內容。
煙霧審計 ER 圖示
煙霧探測器審計後端架構的實體關係模型。
涵蓋站點、探測器、電池日誌、靈敏度測試和地圖釘的架構。
查看圖表來源
erDiagram
Inspector ||--o{ Building : "primaryCoordinator"
Inspector ||--o{ Audit : "inspector"
Inspector ||--o{ BatteryReplacement : "replacedBy"
Inspector ||--o{ SensitivityTest : "testedBy"
Building ||--o{ Detector : "building"
Building ||--o{ Audit : "building"
Building ||--o{ SiteMap : "building"
Detector ||--o{ BatteryReplacement : "detector"
Detector ||--o{ SensitivityTest : "detector"
Inspector {
String objectId PK
String username
String email
String password
String role
String phoneNumber
Date createdAt
Date updatedAt
}
Building {
String objectId PK
String buildingName
String address
String city
String state
Number latitude
Number longitude
String primaryCoordinatorId FK
Date createdAt
Date updatedAt
}
Detector {
String objectId PK
String buildingId FK
String roomLabel
String deviceId
String modelNumber
Number batteryLevel
Date lastBatteryChangeAt
String status
Date createdAt
Date updatedAt
}
Audit {
String objectId PK
String buildingId FK
String inspectorId FK
Date auditDate
String overallStatus
String notes
Date createdAt
Date updatedAt
}
BatteryReplacement {
String objectId PK
String detectorId FK
String replacedById FK
Date replacementDate
String batteryType
String oldBatteryCondition
Date createdAt
Date updatedAt
}
SensitivityTest {
String objectId PK
String detectorId FK
String testedById FK
Date testDate
String testResult
Number readingValue
String notes
Date createdAt
Date updatedAt
}
SiteMap {
String objectId PK
String buildingId FK
String mapName
Number floorNumber
String mapUrl
String legendNotes
Date createdAt
Date updatedAt
}
審計整合流程
身份驗證、站點查找、電池日誌、靈敏度測試和地圖更新的典型執行流程。
查看圖表來源
sequenceDiagram
participant Inspector
participant App as Smoke Detector Audit App
participant Back4app as Back4app Cloud
Inspector->>App: Sign in
App->>Back4app: POST /login
Back4app-->>App: Session token
Inspector->>App: Open building list
App->>Back4app: GET /classes/Building?include=primaryCoordinator
Back4app-->>App: Buildings and coordinators
Inspector->>App: Review detector batteries
App->>Back4app: GET /classes/Detector?include=building&order=-updatedAt
Back4app-->>App: Detector battery levels and statuses
Inspector->>App: Save a battery replacement or sensitivity test
App->>Back4app: POST /classes/BatteryReplacement
App->>Back4app: POST /classes/SensitivityTest
Back4app-->>App: Saved audit trail records
Inspector->>App: Load site maps for a building
App->>Back4app: GET /classes/SiteMap?include=building
Back4app-->>App: Floor plans and detector locations審計數據字典
煙霧探測器審計架構中每個類的完整字段級參考。
| 字段 | 類型 | 描述 | 必填 |
|---|---|---|---|
| objectId | String | Auto-generated unique identifier | 自動 |
| username | String | Inspector login name | |
| String | Inspector email address | ||
| password | String | Hashed password (write-only) | |
| role | String | Role of the user (e.g., manager, coordinator, field_tech) | |
| phoneNumber | String | Contact number for site coordination | — |
| createdAt | Date | Auto-generated creation timestamp | 自動 |
| updatedAt | Date | Auto-generated last-update timestamp | 自動 |
8 欄位在 Inspector
安全性和權限
ACL 和 CLP 策略如何保護網站記錄、檢測器歷史和審核日誌。
技術人員擁有的審核條目
只有創建 `BatteryLog` 或 `SensitivityTest` 條目的用戶應能夠編輯或刪除它。
網站級別讀取訪問
在共享審核路由時,限制 `Site` 和 `Detector` 的可見性僅限於指定的工作人員或管理角色。
變更控制檢測器狀態
使用 Cloud Code 來驗證 `Detector.status` 的轉換,以便干淨地記錄失敗的測試或更換。
架構 (JSON)
原始 JSON 架構定義,準備複製到 Back4app 或用作實施參考。
{
"classes": [
{
"className": "Inspector",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"username": {
"type": "String",
"required": true
},
"email": {
"type": "String",
"required": true
},
"password": {
"type": "String",
"required": true
},
"role": {
"type": "String",
"required": true
},
"phoneNumber": {
"type": "String",
"required": false
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "Building",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"buildingName": {
"type": "String",
"required": true
},
"address": {
"type": "String",
"required": true
},
"city": {
"type": "String",
"required": true
},
"state": {
"type": "String",
"required": true
},
"latitude": {
"type": "Number",
"required": false
},
"longitude": {
"type": "Number",
"required": false
},
"primaryCoordinator": {
"type": "Pointer",
"required": true,
"targetClass": "Inspector"
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "Detector",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"building": {
"type": "Pointer",
"required": true,
"targetClass": "Building"
},
"roomLabel": {
"type": "String",
"required": true
},
"deviceId": {
"type": "String",
"required": true
},
"modelNumber": {
"type": "String",
"required": true
},
"batteryLevel": {
"type": "Number",
"required": false
},
"lastBatteryChangeAt": {
"type": "Date",
"required": false
},
"status": {
"type": "String",
"required": true
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "Audit",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"building": {
"type": "Pointer",
"required": true,
"targetClass": "Building"
},
"inspector": {
"type": "Pointer",
"required": true,
"targetClass": "Inspector"
},
"auditDate": {
"type": "Date",
"required": true
},
"overallStatus": {
"type": "String",
"required": true
},
"notes": {
"type": "String",
"required": false
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "BatteryReplacement",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"detector": {
"type": "Pointer",
"required": true,
"targetClass": "Detector"
},
"replacedBy": {
"type": "Pointer",
"required": true,
"targetClass": "Inspector"
},
"replacementDate": {
"type": "Date",
"required": true
},
"batteryType": {
"type": "String",
"required": true
},
"oldBatteryCondition": {
"type": "String",
"required": false
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "SensitivityTest",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"detector": {
"type": "Pointer",
"required": true,
"targetClass": "Detector"
},
"testedBy": {
"type": "Pointer",
"required": true,
"targetClass": "Inspector"
},
"testDate": {
"type": "Date",
"required": true
},
"testResult": {
"type": "String",
"required": true
},
"readingValue": {
"type": "Number",
"required": false
},
"notes": {
"type": "String",
"required": false
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "SiteMap",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"building": {
"type": "Pointer",
"required": true,
"targetClass": "Building"
},
"mapName": {
"type": "String",
"required": true
},
"floorNumber": {
"type": "Number",
"required": false
},
"mapUrl": {
"type": "String",
"required": true
},
"legendNotes": {
"type": "String",
"required": false
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
}
]
}使用 AI 代理構建
使用 Back4app AI 代理從此模板生成一個實際的煙霧探測器審核應用,包括前端、後端、身份驗證以及電池、測試和地圖流程。
基於 Back4app 創建一個煙霧探測器審計應用程序的後端,使用這個精確的架構和行為。 架構: 1. 用戶(使用 Back4app 內建):用戶名、電子郵件、密碼;objectId、createdAt、updatedAt(系統)。 2. 現場:名稱(字串,必需)、地址(字串,必需)、地圖位置(地理點,必需)、備註(字串);objectId、createdAt、updatedAt(系統)。 3. 探測器:現場(指向現場的指針,必需)、序列號(字串,必需,唯一)、狀態(字串,必需)、型號(字串)、上次更換電池時間(日期);objectId、createdAt、updatedAt(系統)。 4. 電池日誌:探測器(指向探測器的指針,必需)、更換時間(日期,必需)、電池類型(字串,必需)、技術人員備註(字串)、更換者(指向用戶的指針);objectId、createdAt、updatedAt(系統)。 5. 敏感度測試:探測器(指向探測器的指針,必需)、測試時間(日期,必需)、結果(字串,必需)、讀值(數字)、技術人員備註(字串);objectId、createdAt、updatedAt(系統)。 6. 地圖釘:現場(指向現場的指針,必需)、緯度(數字,必需)、經度(數字,必需)、標籤(字串)、路線順序(數字);objectId、createdAt、updatedAt(系統)。 安全性: - 使用ACL/CLP,使技術人員能夠撰寫自己的電池日誌和敏感度測試條目,而經理可以查看現場和探測器歷史。 - 使用雲代碼來驗證探測器狀態的變更並要求連結的現場數據。 身份驗證: - 註冊、登錄、登出。 行為: - 列出現場,按現場顯示探測器,創建電池更換日誌,提交敏感度測試,並刷新下一個路線的地圖釘。 交付: - Back4app 應用程序,具有架構、ACL、CLP;前端用於現場、探測器、電池日誌、敏感度測試和地圖視圖。
按下下面的按鈕以用此模板提示填充打開代理。
這是沒有技術後綴的基本提示。您可以在後續調整生成的前端堆棧。
API 操場
根據煙霧探測器審計架構嘗試 REST 和 GraphQL 端點。響應使用模擬數據,並不需要 Back4app 賬戶。
使用與此模板相同的架構。
選擇您的技術
展開每個卡片以查看如何將網站、檢測器和電池日誌與您選擇的技術棧集成。
Flutter 煙霧探測器審計後端
React 煙霧探測器審計後端
React 原生 煙霧探測器審計後端
Next.js 煙霧探測器審計後端
JavaScript 煙霧探測器審計後端
Android 煙霧探測器審計後端
iOS 煙霧探測器審計後端
Vue 煙霧探測器審計後端
Angular 煙霧探測器審計後端
GraphQL 煙霧探測器審計後端
REST API 煙霧探測器審計後端
PHP 煙霧探測器審計後端
.NET 煙霧探測器審計後端
您每種技術獲得的內容
每個技術棧使用相同的煙霧檢測器稽核後端架構和 API 合約。
統一的稽核數據結構
以一致的架構管理網站、檢測器、電池日誌、靈敏度測試和地圖標記。
供現場團隊使用的電池更換日誌
跟踪每次電池更換的時間戳、檢測器指針和技術人員備註。
符合性檢查的靈敏度測試跟踪
根據檢測器記錄通過或失敗的結果,以便後續工作明顯。
地圖感知的網站規劃
使用網站坐標和釘選記錄規劃路線,減少漏檢。
REST/GraphQL 版本用於審核應用程式
通過一個後端合約整合網頁、行動和內部工具。
煙霧審計技術比較
比較所有支援技術的設置速度、SDK 風格和 AI 支持。
| 框架 | 設定時間 | 審核益處 | SDK 類型 | AI 支援 |
|---|---|---|---|---|
| 約 5 分鐘 | 在行動設備和網頁上進行現場審核的單一程式碼庫。 | 類型化 SDK | 完整 | |
| 少於 5 分鐘 | 快速網頁儀表板,用於檢測器歷史記錄。 | 輸入式 SDK | 完整 | |
| 約 3–7 分鐘 | 跨平台的行動應用程式,用於電池日誌。 | 輸入式 SDK | 完整 | |
| 快速(5 分鐘)設置 | 伺服器渲染的網站地圖和審核儀表板。 | 輸入式 SDK | 完整 | |
| 約 3–5 分鐘 | 輕量級瀏覽器整合以進行檢查表單。 | 輸入式 SDK | 完整 | |
| 約 5 分鐘 | 原生 Android 應用程式用於現場檢查。 | 輸入式 SDK | 完整 | |
| 少於 5 分鐘 | 原生 iPhone 應用程式用於技術人員工作流程。 | 輸入式 SDK | 完整 | |
| 約 3–7 分鐘 | Reactive 網頁 UI 用於站點地圖。 | 輸入式 SDK | 完整 | |
| 快速 (5 分鐘) 設置 | 供運營團隊使用的企業審核門戶。 | 輸入型 SDK | 完整 | |
| 少於 2 分鐘 | 靈活的 GraphQL API 用於嵌套檢測器數據。 | GraphQL API | 完整 | |
| 快速 (2 分鐘) 設置 | REST API 整合以提交日誌。 | REST API | 完整 | |
| 約 3 分鐘 | 伺服器端 PHP 後端用於審核管理工具。 | REST API | 完整 | |
| 約 3–7 分鐘 | .NET 後端用於檢測器檢查工作流程。 | 類型化 SDK | 完整 |
設定時間反映從專案啟動到首次使用此模板架構的網站、檢測器或日誌查詢的預期持續時間。
常見問題解答
有關使用此模板構建煙霧探測器審核後端的常見問題。