关键要点
此模板为您提供一个具有悬挂日志、绞盘测试和土地小时历史的ATV和UTV服务后端,以便管理人员和现场工作人员可以保持维护工作的有序。
- 悬挂日志跟踪 — 将带有骑行记录、测量和检查结果的SuspensionLog条目存储在可查询的类中。
- 绞盘测试历史 — 使用WinchTest记录来捕捉负载检查、通过或未通过的结果以及后续行动。
- 土地小时可见性 — 记录TrailHourEntry值,以便协调员可以在下次ServiceVisit之前审查使用情况。
- 服务工作控制 — 将每个ServiceVisit链接到车辆、技术人员和状态,以便更清晰的交接。
ATV和UTV服务应用后端一览
客户根据速度和清晰度来评判ATV和UTV服务——当工作历史存储在三个不同的地方时,这很难实现。这并不常常是单一的bug——而是偏移。该架构以Vehicle、ServiceVisit、SuspensionLog、WinchTest和TrailHourEntry为中心,结合Back4app上的实时查询,给ATV和UTV服务运营商提供了一个整个组织都可以信任的真相来源。该架构涵盖用户(用户名、电子邮件、密码)、车辆(vin、unitNumber、模型、类型)、服务访问(车辆、分配给、服务日期、状态)、悬挂日志(服务访问、前测量、后测量、备注)、绞盘测试(服务访问、载重等级、结果、测试时间)和TrailHourEntry(车辆、小径名称、增加小时、记录时间),并内置身份验证和记录跟踪。连接您首选的前端并保持服务工作流动。
最佳适用:
全地形车与无人驾驶车服务后端概述
最好的全地形车与无人驾驶车服务仪表盘就乏味,因为其基础实体是干净的——并不是因为有人在半夜调理了一个电子表格。
利益相关者可以在这里进行车辆、服务访问和悬挂日志覆盖的合理性检查:名称、关系以及它们启用的工作流程。
核心 ATV 和 UTV 服务功能
该中心中的每个技术卡都使用相同的 ATV 和 UTV 服务架构,包括 Vehicle、ServiceVisit、SuspensionLog、WinchTest 和 TrailHourEntry。
车辆登记
车辆类别存储 VIN、单位编号、模型和类型。
服务访问规划
ServiceVisit 类链接车辆、分配给、服务日期和状态。
悬架日志
SuspensionLog 类捕获前测量、后测量和备注。
卷扬机测试
WinchTest 类存储 loadRating、结果和 testedAt。
小径小时历史
TrailHourEntry 类记录 trailName、hoursAdded 和 loggedAt。
为什么要使用Back4app构建您的全地形车和无人驾驶车服务应用后端?
Back4app为您的服务团队提供车辆、服务访问、悬挂日志、绞车测试和轨道小时记录的构建Blocks,以便您可以专注于修理工作流程,而不是基础设施的耗时工作。
- •车辆和服务访问控制: 车辆类别和服务访问类别保持单位编号、分配的技术人员和状态更新相连。
- •悬挂和绞盘记录集中于一处: 在每个服务访问旁存储悬挂日志测量和绞盘测试结果,以便于完整的工作订单记录。
- •实时 + API 灵活性: 使用 Live Queries 进行服务访问和 TrailHourEntry 更改,同时 REST 和 GraphQL 仍可供每个客户使用。
围绕车辆、日志和测试构建服务工作流程,而不是 juggling 不相关的电子表格。
核心优势
一个服务后台,帮助您的团队保持组织而不丢失检查细节。
更快的服务接收
从车辆和服务访问类开始,而不是从零设计单位跟踪器。
清晰的检查历史
悬挂日志和绞盘测试条目将维修证据与正确的服务访问关联。
小径使用规划
TrailHourEntry 记录帮助员工查看哪些 ATV 或 UTV 在下次检查之前累计了最多小时。
范围访问模型
使用 ACL 和 CLP 规则,仅授权用户才能编辑服务访问和记录结果。
可搜索的维护记录
在支持过滤和报告的 Parse 类中存储车辆、测试和小时历史记录。
AI辅助设置
通过一个结构化的提示生成后端骨架和服务工作流指南。
准备启动您的ATV和UTV服务应用程序吗?
让 Back4app AI代理搭建您的ATV和UTV服务后端,并从一个提示中生成悬挂日志、绞盘测试和小径小时历史记录。
免费开始 — 每月50个AI代理提示,无需信用卡
技术栈
此ATV和UTV服务后端模板包含的一切。
实体关系图
ATV 和 UTV 服务后台架构的实体关系模型。
涵盖用户、车辆、服务访问、悬挂日志、绞盘测试和拖车小时条目的架构。
查看图表来源
erDiagram
User ||--o{ ServiceJob : "assignedTo"
Vehicle ||--o{ ServiceJob : "vehicle"
ServiceJob ||--o{ SuspensionLog : "serviceJob"
ServiceJob ||--o{ WinchTest : "serviceJob"
ServiceJob ||--o{ ServiceNote : "serviceJob"
Vehicle ||--o{ SuspensionLog : "vehicle"
Vehicle ||--o{ WinchTest : "vehicle"
Vehicle ||--o{ TrailHourEntry : "vehicle"
User ||--o{ SuspensionLog : "inspectedBy"
User ||--o{ WinchTest : "testedBy"
User ||--o{ TrailHourEntry : "recordedBy"
User ||--o{ ServiceNote : "author"
User {
String objectId PK
String username
String email
String password
String role
Date createdAt
Date updatedAt
}
Vehicle {
String objectId PK
String vin
String unitNumber
String type
String model
String status
Number hoursOnTrail
Date createdAt
Date updatedAt
}
ServiceJob {
String objectId PK
String jobNumber
String vehicleId FK
String assignedToId FK
String status
String serviceType
Date startedAt
Date completedAt
Date createdAt
Date updatedAt
}
SuspensionLog {
String objectId PK
String serviceJobId FK
String vehicleId FK
String inspectedById FK
Number frontSagMm
Number rearSagMm
String notes
Date createdAt
Date updatedAt
}
WinchTest {
String objectId PK
String serviceJobId FK
String vehicleId FK
String testedById FK
Number pullLoadLbs
Number lineSpeedFpm
String result
Date createdAt
Date updatedAt
}
TrailHourEntry {
String objectId PK
String vehicleId FK
String recordedById FK
String trailName
Number hoursAdded
Date rideDate
Number odometerHours
Date createdAt
Date updatedAt
}
ServiceNote {
String objectId PK
String serviceJobId FK
String authorId FK
String body
String visibility
Date createdAt
Date updatedAt
}
集成流程
登录、车辆查找、服务访问、悬挂日志、绞盘测试和拖车小时历史的典型运行流程。
查看图表来源
sequenceDiagram
participant User
participant App as ATV & UTV Service App
participant Back4app as Back4app Cloud
User->>App: Sign in to the service dashboard
App->>Back4app: POST /login
Back4app-->>App: Session token
User->>App: Load ATV and UTV vehicles
App->>Back4app: GET /classes/Vehicle?order=-updatedAt
Back4app-->>App: Vehicle list with unitNumber, status, and hoursOnTrail
User->>App: Open a service job and add a suspension log
App->>Back4app: POST /classes/SuspensionLog
Back4app-->>App: SuspensionLog objectId
User->>App: Save winch test results and trail hour entry
App->>Back4app: POST /classes/WinchTest
App->>Back4app: POST /classes/TrailHourEntry
Back4app-->>App: Test and hour history records stored
App->>Back4app: Subscribe to ServiceJob updates
Back4app-->>App: Live updates for job status changes数据字典
ATV和UTV服务架构中每个类的完整字段级参考。
| 字段 | 类型 | 描述 | 必需 |
|---|---|---|---|
| objectId | String | Auto-generated unique identifier | 自动 |
| username | String | Account login name for managers and staff | |
| String | Work email address | ||
| password | String | Hashed password (write-only) | |
| role | String | Access role such as manager, coordinator, or technician | |
| createdAt | Date | Auto-generated creation timestamp | 自动 |
| updatedAt | Date | Auto-generated last-update timestamp | 自动 |
7 字段在 User 中
安全性和权限
ACL 和 CLP 策略如何保护用户、车辆、服务访问和历史记录。
用户级账户控制
只有用户可以更新或删除他们的个人资料;服务人员的访问权限仅限于分配的角色。
车辆和服务完整性
只有授权的协调员可以创建或关闭 ServiceVisit 条目并附加检查日志。
域阅读访问
将车辆、悬挂日志、绞盘测试和车辆小时条目的读取限制在需要它们的团队中。
模式 JSON
原始 JSON 模式定义可以复制到 Back4app 或用作实施参考。
{
"classes": [
{
"className": "User",
"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
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "Vehicle",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"vin": {
"type": "String",
"required": true
},
"unitNumber": {
"type": "String",
"required": true
},
"type": {
"type": "String",
"required": true
},
"model": {
"type": "String",
"required": true
},
"status": {
"type": "String",
"required": true
},
"hoursOnTrail": {
"type": "Number",
"required": true
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "ServiceJob",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"jobNumber": {
"type": "String",
"required": true
},
"vehicle": {
"type": "Pointer",
"required": true,
"targetClass": "Vehicle"
},
"assignedTo": {
"type": "Pointer",
"required": true,
"targetClass": "User"
},
"status": {
"type": "String",
"required": true
},
"serviceType": {
"type": "String",
"required": true
},
"startedAt": {
"type": "Date",
"required": false
},
"completedAt": {
"type": "Date",
"required": false
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "SuspensionLog",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"serviceJob": {
"type": "Pointer",
"required": true,
"targetClass": "ServiceJob"
},
"vehicle": {
"type": "Pointer",
"required": true,
"targetClass": "Vehicle"
},
"inspectedBy": {
"type": "Pointer",
"required": true,
"targetClass": "User"
},
"frontSagMm": {
"type": "Number",
"required": true
},
"rearSagMm": {
"type": "Number",
"required": true
},
"notes": {
"type": "String",
"required": false
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "WinchTest",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"serviceJob": {
"type": "Pointer",
"required": true,
"targetClass": "ServiceJob"
},
"vehicle": {
"type": "Pointer",
"required": true,
"targetClass": "Vehicle"
},
"testedBy": {
"type": "Pointer",
"required": true,
"targetClass": "User"
},
"pullLoadLbs": {
"type": "Number",
"required": true
},
"lineSpeedFpm": {
"type": "Number",
"required": true
},
"result": {
"type": "String",
"required": true
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "TrailHourEntry",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"vehicle": {
"type": "Pointer",
"required": true,
"targetClass": "Vehicle"
},
"recordedBy": {
"type": "Pointer",
"required": true,
"targetClass": "User"
},
"trailName": {
"type": "String",
"required": true
},
"hoursAdded": {
"type": "Number",
"required": true
},
"rideDate": {
"type": "Date",
"required": true
},
"odometerHours": {
"type": "Number",
"required": true
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "ServiceNote",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"serviceJob": {
"type": "Pointer",
"required": true,
"targetClass": "ServiceJob"
},
"author": {
"type": "Pointer",
"required": true,
"targetClass": "User"
},
"body": {
"type": "String",
"required": true
},
"visibility": {
"type": "String",
"required": true
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
}
]
}与 AI 代理构建
使用 Back4app AI 代理从此模板生成一个真实的 ATV 和 UTV 服务应用,包括前端、后端、身份验证,以及车辆、悬挂、绞盘和里程小时流。
在 Back4app 上创建一个 ATV 和 UTV 服务应用程序后端,使用此确切的架构和行为。 架构: 1. 用户(使用 Back4app 内置):用户名,电子邮件,密码;objectId,createdAt,updatedAt(系统)。 2. 车辆:vin(字符串,必填),unitNumber(字符串,必填),model(字符串,必填),type(字符串,必填);objectId,createdAt,updatedAt(系统)。 3. 服务访问:车辆(指向车辆的指针,必填),分配给(指向用户的指针,可选),服务日期(日期,必填),状态(字符串,必填);objectId,createdAt,updatedAt(系统)。 4. 悬挂日志:服务访问(指向服务访问的指针,必填),前测量(字符串,必填),后测量(字符串,必填),备注(字符串);objectId,createdAt,updatedAt(系统)。 5. 绞车测试:服务访问(指向服务访问的指针,必填),负载等级(数字,必填),结果(字符串,必填),测试时间(日期,必填);objectId,createdAt,updatedAt(系统)。 6. 小径小时条目:车辆(指向车辆的指针,必填),小径名称(字符串,必填),添加的小时(数字,必填),记录时间(日期,必填);objectId,createdAt,updatedAt(系统)。 安全性: - 只有用户可以更新/删除他们的个人资料。限制服务记录访问仅限授权管理人员和指定员工。使用云代码进行验证。 认证: - 注册,登录,登出。 行为: - 列出车辆,创建服务访问,添加悬挂日志,提交绞车测试,查看小径小时历史记录。 交付: - 带有架构、ACL、CLP 的 Back4app 应用程序;车辆、服务访问、悬挂日志、绞车测试和小径小时历史记录的前端。
按下面的按钮以预填充此模板提示打开代理。
这是没有技术后缀的基本提示。您可以在之后调整生成的前端堆栈。
API 游乐场
尝试针对 ATV 和 UTV 服务架构的 REST 和 GraphQL 端点。响应使用模拟数据,无需 Back4app 帐户。
使用与此模板相同的架构。
选择您的技术
展开每个卡片以了解如何将车辆、服务访问和悬挂日志与您选择的技术栈集成。
Flutter ATV & UTV 服务后台
React ATV & UTV 服务后台
React 原生 ATV & UTV 服务后台
Next.js ATV & UTV 服务后台
JavaScript ATV & UTV 服务后台
Android ATV & UTV 服务后台
iOS ATV & UTV 服务后台
Vue ATV & UTV 服务后台
Angular ATV & UTV 服务后台
GraphQL ATV & UTV 服务后台
REST API ATV & UTV 服务后台
PHP ATV & UTV 服务后台
.NET ATV & UTV 服务后台
您每个技术都会获得的内容
每个技术栈都使用相同的 ATV 和 UTV 服务后端架构及 API 合同。
统一服务数据结构
使用一个架构管理车辆、服务访问、悬挂日志、绞盘测试和小径小时。
ATV 和 UTV 服务 的检查历史
保持悬挂、绞车和行驶时间记录与正确的单位相关联。
ATV 和 UTV 服务 的操作可见性
让经理审查服务状态,现场工作人员实时更新工作。
ATV 和 UTV 服务 中的角色感知访问
为协调员、技术人员和管理员定义访问级别。
ATV 和 UTV 服务 的 REST/GraphQL API
通过灵活的 API 连接仪表板、移动工具和报告工作。
ATV 和 UTV 服务 的可扩展架构
随着服务过程的发展,添加配件、提醒或供应商记录。
ATV 和 UTV 服务技术比较
比较所有支持的技术的设置速度、SDK 风格和 AI 支持。
| 框架 | 设置时间 | 服务收益 | SDK 类型 | AI 支持 |
|---|---|---|---|---|
| 大约 5 分钟 | 移动和网页上的ATV和UTV服务单一代码库。 | 类型化 SDK | 完整 | |
| 少于5分钟 | 用于服务访问和日志的快速网页仪表板。 | 类型化SDK | 完整 | |
| 大约3-7分钟 | 供现场团队使用的跨平台移动服务应用。 | 类型化SDK | 完整 | |
| 快速(5分钟)设置 | 供管理者使用的服务器渲染服务门户。 | 类型化SDK | 完整 | |
| 大约3-5分钟 | 轻量级网页集成服务工作流程。 | 输入式SDK | 完整 | |
| 大约5分钟 | 适用于商店和小径员工的原生Android应用程序。 | 输入式SDK | 完整 | |
| 不到5分钟 | 适用于现场技术人员的原生iOS应用程序。 | 输入式SDK | 完整 | |
| 大约3-7分钟 | React检查屏幕的服务UI。 | 输入的SDK | 完整 | |
| 迅速(5分钟)设置 | 企业网络应用程序用于服务协调。 | 输入的SDK | 完整 | |
| 少于2分钟 | 灵活的GraphQL API用于车辆和历史查询。 | GraphQL API | 完整 | |
| 快速(2分钟)设置 | REST API 集成用于服务系统。 | REST API | 完整 | |
| ~3 分钟 | 服务器端 PHP 集成用于维护工具。 | REST API | 完整 | |
| ~3–7 分钟 | .NET 集成用于服务操作。 | 类型化 SDK | 完整 |
设置时间反映了从项目引导到使用此模板架构的第一个车辆或服务查询的预期持续时间。
常见问题
关于使用此模板构建 ATV 和 UTV 服务后端的常见问题。