ATM 维护
与 AI 代理一起构建
ATM 维护管理员后端

ATM 维护管理员后端模板
票箱追踪、现金监控和审计准备

在 Back4app 上可生产的 ATM 维护后端,具有票箱日志、现金水平和安全审计。包括 ER 图、数据字典、JSON 模式、API 游乐场,以及快速设置的 AI 代理 提示。

ATM运营的关键要点

该模板为您的团队提供一个ATM维护后端,以便于记录盒子日志、现金水平和安全审计,使协调员和现场员工能够从同一真实信息源工作。

  1. 盒子日志集中管理跟踪每个CassetteLog条目与ATM及其盒子插槽的关系。
  2. 现金水平可见性保持每个ATM面额和服务访问的CashLevel快照最新。
  3. 安全审计轨迹记录ATM开启、检查或封闭时的SecurityAudit发现。

概述:ATM维护管理器

ATM维护持有不是静态的:物品在储物箱、站点、维修和隔离之间移动——每一次移动都需要一个时间戳故事。解决方案是操作性的,而不是激励性的。通过基于Back4app模型的ATM、CassetteLog、CashLevel和SecurityAudit,ATM维护相关者可以获得一致的报告,而无需导出五个不同的电子表格。该架构涵盖ATM(atmId,位置,状态)、CassetteLog(atm,cassetteSlot,cashAdded,cashRemoved,technician)、CashLevel(atm,面额,计数金额,预期金额)和SecurityAudit(atm,审计类型,清单状态,发现,由谁执行),并内置授权和访问规则。连接您首选的前端并开始更快地跟踪服务工作。

最佳适用:

ATM维护团队现金补充协调安全审计跟踪现场服务操作运营仪表板团队选择 BaaS 进行 ATM 工作流程

ATM 维护后端是如何组织的

在 ATM 维护中,小的不一致性会累积:错误的状态变成错误的发货,然后是错误的发票,最后是失去的客户。

利益相关者可以在此处检查 ATM、CassetteLog 和 CashLevel 的覆盖情况:名称、关系和它们启用的工作流程。

核心 ATM 维护功能

该中心中的每个技术卡都使用相同的 ATM 后端架构,包括 ATM、CassetteLog、CashLevel 和 SecurityAudit。

ATM 资产注册表

ATM 类存储 atmId、位置、状态和 branchCode。

盒子日志跟踪

CassetteLog 类记录 cassetteSlot、cashAdded、cashRemoved 和 technician。

现金水平快照

CashLevel 类存储面额、计数金额、预期金额和差异。

安全审计检查

SecurityAudit 类捕获 auditType、checklistStatus、findings 和 performedBy。

为什么要用 Back4app 构建您的 ATM 维护经理后端?

Back4app 为您的运营团队提供一个干净的 ATM、纸带和审计数据模型,以便您可以专注于服务工作,而不是连接基础设施。

  • ATM 和纸带记录始终联系在一起: ATM 类和 CassetteLog 类将服务操作与正确的机器和纸带槽保持关联。
  • 现金水平和安全审计查询很简单: 使用现金水平快照和安全审计条目来审查现金差异和清单结果,无需自定义数据库处理。
  • 现场操作的实时更新: Live Queries 可以在服务路线中,当 CassetteLog 或安全审计行发生变化时通知协调员。

从一个后台合同运行 ATM 维护工作流,支持移动和网页。

ATM 团队的核心优势

一个整理服务数据和审计记录的 ATM 维护后端,无需额外的管道。

更快的服务协调

从 ATM 和 CassetteLog 类开始,而不是从零构建维护架构。

更清晰的现金对账

使用 CashLevel.countedAmount 和 CashLevel.expectedAmount 比较技术人员在现场发现的内容。

审计友好的记录

为每个服务事件存储 SecurityAudit.checklistStatus 和 SecurityAudit.findings。

角色意识的字段访问

使用 ACL 和 CLP,使协调员、技术人员和审查员只接触他们所需的 ATM 数据。

跨平台机器可见性

从移动工具、调度仪表板或分支控制台查询 ATM、CassetteLog 和 CashLevel。

AI 辅助推广

在一个提示中生成后端脚手架和服务流程,然后将其调整到您的路由操作。

准备好启动您的 ATM 维护应用吗?

让 Back4app AI代理搭建您的ATM维护后端,并从一个提示生成胶卷日志、现金水平跟踪和安全审计。

免费开始 — 每月50个AI代理提示,无需信用卡

技术栈

此ATM维护后端模板中包含的所有内容。

前端
13+ 技术
后端
Back4app
数据库
MongoDB
认证
内置认证 + 会话
API
REST 和 GraphQL
实时
Live Queries

ATM操作的ER图

ATM维护后端架构的实体关系模型。

查看图表源
Mermaid
erDiagram
    User ||--o{ ATM : "assignedManager"
    User ||--o{ CassetteLog : "sealedBy"
    User ||--o{ CashLevel : "checkedBy"
    User ||--o{ SecurityAudit : "auditor"
    User ||--o{ MaintenanceTicket : "assignedTo"
    ATM ||--o{ CassetteLog : "atm"
    ATM ||--o{ CashLevel : "atm"
    ATM ||--o{ SecurityAudit : "atm"
    ATM ||--o{ MaintenanceTicket : "atm"

    User {
        String objectId PK
        String username
        String email
        String password
        String role
        Date createdAt
        Date updatedAt
    }

    ATM {
        String objectId PK
        String atmId
        String locationName
        String status
        String assignedManagerId FK
        Date createdAt
        Date updatedAt
    }

    CassetteLog {
        String objectId PK
        String atmId FK
        String cassetteNumber
        Number cashDenomination
        Number countBefore
        Number countAfter
        String sealedById FK
        Date loggedAt
        Date createdAt
        Date updatedAt
    }

    CashLevel {
        String objectId PK
        String atmId FK
        Number currentAmount
        Number fillThreshold
        Number forecastAmount
        String checkedById FK
        Date checkedAt
        Date createdAt
        Date updatedAt
    }

    SecurityAudit {
        String objectId PK
        String atmId FK
        String auditType
        String result
        String notes
        String auditorId FK
        Date auditedAt
        Date createdAt
        Date updatedAt
    }

    MaintenanceTicket {
        String objectId PK
        String atmId FK
        String ticketNumber
        String priority
        String issueSummary
        String assignedToId FK
        String resolutionStatus
        Date reportedAt
        Date createdAt
        Date updatedAt
    }

ATM集成流程

登录、ATM查询、胶卷记录、现金水平更新和安全审核的典型运行流程。

查看图表源
Mermaid
sequenceDiagram
  participant User
  participant App as ATM Maintenance Manager App
  participant Back4app as Back4app Cloud

  User->>App: Sign in to review ATM worklists
  App->>Back4app: POST /login
  Back4app-->>App: Session token

  User->>App: Load ATM roster
  App->>Back4app: GET /classes/ATM?include=assignedManager&order=locationName
  Back4app-->>App: ATM rows with status and assignedManager

  User->>App: Record cassette log and cash level
  App->>Back4app: POST /classes/CassetteLog
  App->>Back4app: POST /classes/CashLevel
  Back4app-->>App: New objectIds

  User->>App: Submit security audit
  App->>Back4app: POST /classes/SecurityAudit
  Back4app-->>App: Audit saved

  App->>Back4app: Subscribe to live updates for MaintenanceTicket
  Back4app-->>App: MaintenanceTicket changes

自动提款机维护数据字典

自动提款机维护模式中每个类的完整字段级参考。

字段类型描述是否必需
objectIdStringAuto-generated unique identifier自动
usernameStringUser login name
emailStringUser email address
passwordStringHashed password (write-only)
roleStringUser role such as manager, coordinator, or fieldTech
createdAtDateAuto-generated creation timestamp自动
updatedAtDateAuto-generated last-update timestamp自动

7 字段在 User 中

ATM数据的安全性和权限管理

如何通过ACL和CLP策略保护ATM资产、胶卷日志、现金水平和审计条目。

角色范围的服务访问

技术人员可以为指定的ATM创建CassetteLog条目,而审查人员可以检查SecurityAudit记录。

现金水平完整性

只有授权用户可以更改CashLevel值,而Cloud Code可以拒绝不匹配的countedAmount更新。

审计跟踪保护

SecurityAudit记录保留检查清单状态和发现,以便在班次之间保持服务历史的可追溯性。

架构(JSON)

准备复制到Back4app或用作实施参考的原始JSON架构定义。

JSON
{
  "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": "ATM",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "atmId": {
          "type": "String",
          "required": true
        },
        "locationName": {
          "type": "String",
          "required": true
        },
        "status": {
          "type": "String",
          "required": true
        },
        "assignedManager": {
          "type": "Pointer",
          "required": true,
          "targetClass": "User"
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "CassetteLog",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "atm": {
          "type": "Pointer",
          "required": true,
          "targetClass": "ATM"
        },
        "cassetteNumber": {
          "type": "String",
          "required": true
        },
        "cashDenomination": {
          "type": "Number",
          "required": true
        },
        "countBefore": {
          "type": "Number",
          "required": true
        },
        "countAfter": {
          "type": "Number",
          "required": true
        },
        "sealedBy": {
          "type": "Pointer",
          "required": true,
          "targetClass": "User"
        },
        "loggedAt": {
          "type": "Date",
          "required": true
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "CashLevel",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "atm": {
          "type": "Pointer",
          "required": true,
          "targetClass": "ATM"
        },
        "currentAmount": {
          "type": "Number",
          "required": true
        },
        "fillThreshold": {
          "type": "Number",
          "required": true
        },
        "forecastAmount": {
          "type": "Number",
          "required": true
        },
        "checkedBy": {
          "type": "Pointer",
          "required": true,
          "targetClass": "User"
        },
        "checkedAt": {
          "type": "Date",
          "required": true
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "SecurityAudit",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "atm": {
          "type": "Pointer",
          "required": true,
          "targetClass": "ATM"
        },
        "auditType": {
          "type": "String",
          "required": true
        },
        "result": {
          "type": "String",
          "required": true
        },
        "notes": {
          "type": "String",
          "required": true
        },
        "auditor": {
          "type": "Pointer",
          "required": true,
          "targetClass": "User"
        },
        "auditedAt": {
          "type": "Date",
          "required": true
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "MaintenanceTicket",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "atm": {
          "type": "Pointer",
          "required": true,
          "targetClass": "ATM"
        },
        "ticketNumber": {
          "type": "String",
          "required": true
        },
        "priority": {
          "type": "String",
          "required": true
        },
        "issueSummary": {
          "type": "String",
          "required": true
        },
        "assignedTo": {
          "type": "Pointer",
          "required": true,
          "targetClass": "User"
        },
        "resolutionStatus": {
          "type": "String",
          "required": true
        },
        "reportedAt": {
          "type": "Date",
          "required": true
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    }
  ]
}

与 AI 代理一起构建

使用 Back4app AI 代理根据此模板生成真实的 ATM 维护应用程序,包括前端、后端、身份验证以及纸币、现金和审计流程。

Back4app AI 代理
准备构建
在 Back4app 上使用此确切模式和行为创建 ATM 维护经理应用程序后端。

模式:
1. 用户(使用 Back4app 内置):用户名、电子邮件、密码;objectId、createdAt、updatedAt(系统)。
2. ATM:atmId(字符串,必填),位置(字符串,必填),状态(字符串,必填),branchCode(字符串,选填);objectId、createdAt、updatedAt(系统)。
3. CassetteLog:atm(指向 ATM 的指针,必填),cassetteSlot(字符串,必填),cashAdded(数字,必填),cashRemoved(数字,必填),technician(指向用户的指针,必填),note(字符串,选填);objectId、createdAt、updatedAt(系统)。
4. CashLevel:atm(指向 ATM 的指针,必填),denomination(字符串,必填),countedAmount(数字,必填),expectedAmount(数字,必填),variance(数字,必填);objectId、createdAt、updatedAt(系统)。
5. SecurityAudit:atm(指向 ATM 的指针,必填),auditType(字符串,必填),checklistStatus(字符串,必填),findings(字符串,选填),performedBy(指向用户的指针,必填);objectId、createdAt、updatedAt(系统)。

安全:
- 技术人员为分配的 ATM 创建 CassetteLog 条目。只有授权用户可以编辑 CashLevel 数据。使用 Cloud Code 验证保留 SecurityAudit 历史。

身份验证:
- 注册、登录、注销。

行为:
- 列出 ATM、创建纸带日志、更新现金水平并记录安全审计。

交付:
- 带模式、ACL、CLP 的 Back4app 应用;用于 ATM 列表、纸带日志、现金水平和安全审计的前端。

按下面的按钮打开预填此模板提示的代理。

这是没有技术后缀的基础提示。您可以在之后调整生成的前端栈。

在几分钟内部署每月50个免费提示无需信用卡

ATM维护的API Playground

在ATM维护架构上尝试REST和GraphQL端点。响应使用模拟数据,无需Back4app帐户。

正在加载演示环境…

使用与此模板相同的架构。

选择您的技术

展开每张卡片以查看如何将 ATM、CassetteLog 和 CashLevel 与您选择的技术栈集成。

Flutter ATM 维护后端

React ATM 维护后端

React 本地 ATM 维护后端

Next.js ATM 维护后端

JavaScript ATM 维护后端

Android ATM 维护后端

iOS ATM 维护后端

Vue ATM 维护后端

Angular ATM 维护后端

GraphQL ATM 维护后端

REST API ATM 维护后端

PHP ATM 维护后端

.NET ATM 维护后端

您从每种技术中获得的内容

每个堆栈使用相同的ATM维护架构和API合同。

统一的ATM操作数据结构

在一个架构中跟踪ATM资产、盒式日志、现金水平和安全审计。

现场团队的盒式日志跟踪

在服务访问期间捕捉cassetteSlot的变化、cashAdded和cashRemoved。

运营的现金水平监控

在机器标记为完成之前比较countedAmount和expectedAmount。

合规性安全审计工作流

记录每次检查的checklistStatus、发现和performedBy。

REST/GraphQL API用于调度工具

将移动应用程序、协调仪表板和服务门户与相同的后端集成。

ATM 维护框架比较

比较所有支持技术的设置速度、SDK 风格和 AI 支持。

框架设置时间ATM 维护益处SDK 类型AI 支持
大约 5 分钟移动和网络上的ATM维修单一代码库。已输入的 SDK全部
少于5分钟用于ATM操作的快速网络仪表板。带类型的SDK全部
约3–7分钟面向技术人员的跨平台移动应用。带类型的SDK全部
快速(5分钟)设置为ATM团队提供的服务器渲染调度门户。带类型的SDK全部
~3–5分钟用于ATM维护的轻量级浏览器集成。类型化SDK全部
大约5分钟用于路线技术人员的原生Android应用。类型化SDK全部
少于5分钟用于现金和审计支票的原生iPhone应用。类型化SDK全部
~3–7分钟React 服务协调员的网页用户界面。输入的 SDK全部
快速(5分钟)设置用于维护操作的企业网页应用。输入的 SDK全部
少于 2 分钟灵活的 GraphQL API 用于 ATM 维护。GraphQL API全部
快速(2分钟)设置REST API 集成用于自动取款机现场系统。REST API全部
~3分钟服务端 PHP 集成用于维护工具。REST API全部
~3–7分钟.NET 后端用于自动取款机操作。类型化 SDK全部

设置时间反映从项目引导到使用此模板架构的第一次 ATM、CassetteLog 或 CashLevel 查询的预期持续时间。

常见问题

关于使用此模板构建 ATM 维护管理器后端的常见问题。

ATM维护组织如何防止存在但系统中未显示的“隐形”库存?
ATM维护团队应该如何表示工具包、捆绑包和替代品而不破坏查询?
该模型是否足够灵活,以便用于像扫描仪或ERP数据馈送的ATM维护集成?
我如何在Flutter中查询ATM和现金水平?
我如何在Next.js中处理技术人员访问权限?
React本地可以离线缓存胶卷日志吗?
我如何阻止未授权的现金水平编辑?
在 Android 上展示 ATM 列表的最佳方式是什么?

全球开发者信赖

加入团队,使用 Back4app 模板更快交付自动取款机维护产品

G2 Users Love Us Badge

准备好构建您的自动取款机维护管理器了吗?

在几分钟内开始您的 ATM 维护项目。不需要信用卡。

选择技术