清洁 CRM
与 AI 代理一起构建
清洁 CRM 后端

清洁 CRM 后端模板
客户网站、清洁时间表、供应库存和检查日志

一个适用于清洁 CRM 后端 的生产就绪版本在 Back4app,包含客户网站记录、清洁时间表分配、供应库存和现场检查日志条目。包括 ER 图、数据字典、JSON 架构、API 游乐场,以及用以快速引导的AI 代理提示。

清洁CRM要点

该模板为您提供了一个清洁CRM后端,包含ClientSite、CleaningSchedule、SupplyInventory和SiteInspectionLog,以便协调员和现场工作人员可以保持相同的工作流程。

  1. 客户现场控制跟踪每个ClientSite,包括siteName、siteCode、address、clientName、serviceLevel、primaryContact和active。
  2. 安排分配流程使用CleaningSchedule连接site、assignedTo、serviceDate、startTime、endTime、frequency、status和notes。
  3. 供应可视性按站点存储SupplyInventory,包括itemName、sku、category、quantityOnHand、reorderLevel、unit和lastRestockedAt。
  4. 检查日志记录记录现场检查日志条目,包括现场、计划、检查员、检查日期、得分、发现、纠正措施和照片 URL。
  5. 角色识别操作应用 ACL 和 CLP 规则,以便协调员、技术人员、检查员和客户看到正确的用户、客户站点、清洁时间表和现场检查日志行。

概述: 清洁 CRM

清洁 CRM 的报告应能够回答领导的问题,而无需手动在文件夹和消息线程中查找。解决方案是在操作上,而不是在激励上。通过在 Back4app 上使用客户站点、清洁时间表、供应库存和现场检查日志,清洁 CRM 团队可以在继续协作的同时强制分离职责。该架构涵盖用户、客户站点(站点名称、站点代码、地址、客户名称、服务级别、主要联系人、状态)、清洁时间表(站点、分配给、服务日期、开始时间、结束时间、频率、状态、备注)、供应库存(站点、项目名称、SKU、类别、库存数量、重新订购水平、单位、最后补货时间)以及现场检查日志(站点、计划、检查员、检查日期、得分、发现、纠正措施、照片 URL),并内置了身份验证和操作访问控制。连接您喜欢的前端,并加快交付速度。

最佳适合于:

商业清洁操作清洁调度应用程序供应库存跟踪工具现场检查日志系统最小可行产品发布团队选择BaaS进行服务运营

清洁CRM后端概述

当员工变化时,季节性波动对清洁CRM的影响最大,但数据模型无法随着新的SKU、站点或政策而灵活调整。

如果您正在评估Back4app,ClientSite、CleaningSchedule和SupplyInventory展示了在编写自定义SQL之前您可以获得多少结构。

清洁CRM功能

此中心中的每个技术卡片均使用相同的保洁 CRM 后端架构,包括用户、客户站点、清洁计划、库存和现场检查日志。

用户角色管理

用户存储coordinators、technicians、inspectors和clients的用户名、电子邮件、角色和全名。

客户站点配置文件

ClientSite将每个位置链接到siteName、siteCode、地址、clientName、服务水平、主要联系方式和活动标志。

清洁日程跟踪

CleaningSchedule 存储站点、分配给、服务日期、开始时间、结束时间、频率、状态和备注。

供应库存检查

SupplyInventory 捕获 itemName、sku、类别、在手数量、重新订购水平、单位和 lastRestockedAt。

现场检查日志

SiteInspectionLog 记录站点、日程、检查员、检查日期、分数、发现、纠正措施和 photoUrl。

为什么选择使用 Back4app 来构建您的清洁CRM后台?

Back4app 为您提供站点、日程、库存和检查的基础功能,以便您的团队可以专注于服务交付,而不是后台管理。

  • ClientSite 和 CleaningSchedule 保持一致: 将每个 CleaningSchedule 绑定到 ClientSite,以便团队知道在哪里工作,主管可以在不使用重复电子表格的情况下更新服务频率。
  • SupplyInventory 支持补货检查: 为每个站点存储 SupplyInventory 行,以便员工可以在储藏室干涸之前比较手头数量和再订购水平。
  • 实时检查可视性: 在 SiteInspectionLog 上使用 Live Queries,以便现场检查的发现能够快速显示给协调员和面对客户的员工。

通过跨所有平台的一个后台合同快速构建和更新清洁工作流程。

保洁 CRM 的好处

一个保洁 CRM 后端,帮助运营保持准确,而无需增加额外的管理工作。

更快速的路线和班次规划

从完整的客户站点和清洁计划架构开始,而不是从零重建服务日历。

库存检查与货架相匹配

使用库存字段,如在手数量、重新订货水平和单位,以便在下一次地面服务之前可见短缺。

检查跟进

存储现场检查日志的发现、评分、纠正措施和照片网址,以便主管能够解决现场问题。

清除访问边界

应用ACL和CLP规则,使得只有正确的用户角色能够编辑ClientSite、CleaningSchedule或SiteInspectionLog记录。

一个用于现场和办公工具的后端

通过REST和GraphQL公开相同的清洁CRM数据,以供调度、移动团队和办公仪表板使用。

AI辅助引导

快速生成后端框架和集成指导,使用结构化提示。

准备好推出您的清洁CRM了吗?

让Back4app AI代理为您的清洁CRM后端搭建框架,并从一个提示生成ClientSite记录、CleaningSchedule分配、SupplyInventory跟踪和SiteInspectionLog条目。

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

清洁 CRM 技术栈

此商业清洁 CRM 后端模板包含所有内容。

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

清理关系图

清洁CRM后端架构的实体关系模型。

查看图表源
Mermaid
erDiagram
    User ||--o{ ClientSite : "primaryContact"
    User ||--o{ CleaningSchedule : "assignedTo"
    User ||--o{ SiteInspectionLog : "inspector"
    ClientSite ||--o{ CleaningSchedule : "site"
    ClientSite ||--o{ SupplyInventory : "site"
    ClientSite ||--o{ SiteInspectionLog : "site"
    CleaningSchedule ||--o{ SiteInspectionLog : "schedule"

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

    ClientSite {
        String objectId PK
        String siteName
        String siteCode
        String address
        String clientName
        String serviceLevel
        String primaryContactId FK
        Boolean active
        Date createdAt
        Date updatedAt
    }

    CleaningSchedule {
        String objectId PK
        String siteId FK
        String assignedToId FK
        Date serviceDate
        String startTime
        String endTime
        String frequency
        String status
        String notes
        Date createdAt
        Date updatedAt
    }

    SupplyInventory {
        String objectId PK
        String siteId FK
        String itemName
        String sku
        String category
        Number quantityOnHand
        Number reorderLevel
        String unit
        Date lastRestockedAt
        Date createdAt
        Date updatedAt
    }

    SiteInspectionLog {
        String objectId PK
        String siteId FK
        String scheduleId FK
        String inspectorId FK
        Date inspectionDate
        Number score
        String findings
        String correctiveActions
        String photoUrl
        Date createdAt
        Date updatedAt
    }

清洁应用流程

身份验证、客户端网站加载、清洁安排、供应库存和检查日志的典型运行流程。

查看图表源
Mermaid
sequenceDiagram
  participant User
  participant App as Commercial Janitorial CRM App
  participant Back4app as Back4app Cloud

  User->>App: Sign in to the janitorial dashboard
  App->>Back4app: POST /login
  Back4app-->>App: Session token

  User->>App: Load cleaning schedules for assigned sites
  App->>Back4app: GET /classes/CleaningSchedule?include=site,assignedTo
  Back4app-->>App: CleaningSchedule rows

  User->>App: Create a site inspection log
  App->>Back4app: POST /classes/SiteInspectionLog
  Back4app-->>App: SiteInspectionLog objectId

  User->>App: Check supply inventory by site and reorder level
  App->>Back4app: GET /classes/SupplyInventory?include=site&order=quantityOnHand
  Back4app-->>App: SupplyInventory rows

  App->>Back4app: Listen for schedule and inventory updates
  Back4app-->>App: LiveQuery change events

字段指南

针对清洁行业 CRM 模式中每个类的完整字段级参考。

字段类型描述必需
objectIdStringAuto-generated unique identifier自动
usernameStringLogin name for the account
emailStringContact email address
passwordStringHashed password stored by Parse
roleStringWork role such as admin, coordinator, technician, inspector, or client
fullNameStringDisplay name for dispatch and client communication
createdAtDateAuto-generated creation timestamp自动
updatedAtDateAuto-generated last-update timestamp自动

8 字段在 User 中

访问和权限

ACL 和 CLP 策略如何保护用户、站点、日程、库存和检查日志。

角色意识用户控制

只有账户所有者或管理员角色可以更新用户记录和操作偏好。

网站和日程的完整性

将 ClientSite 和 CleaningSchedule 的写入限制为协调员或主管,然后在 Cloud Code 中验证更改。

库存和检查范围

将 SupplyInventory 和 SiteInspectionLog 的读取限制为指定员工、现场主管和授权的客户相关用户。

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
        },
        "fullName": {
          "type": "String",
          "required": false
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "ClientSite",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "siteName": {
          "type": "String",
          "required": true
        },
        "siteCode": {
          "type": "String",
          "required": true
        },
        "address": {
          "type": "String",
          "required": true
        },
        "clientName": {
          "type": "String",
          "required": true
        },
        "serviceLevel": {
          "type": "String",
          "required": true
        },
        "primaryContact": {
          "type": "Pointer",
          "required": true,
          "targetClass": "User"
        },
        "active": {
          "type": "Boolean",
          "required": true
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "CleaningSchedule",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "site": {
          "type": "Pointer",
          "required": true,
          "targetClass": "ClientSite"
        },
        "assignedTo": {
          "type": "Pointer",
          "required": true,
          "targetClass": "User"
        },
        "serviceDate": {
          "type": "Date",
          "required": true
        },
        "startTime": {
          "type": "String",
          "required": true
        },
        "endTime": {
          "type": "String",
          "required": true
        },
        "frequency": {
          "type": "String",
          "required": true
        },
        "status": {
          "type": "String",
          "required": true
        },
        "notes": {
          "type": "String",
          "required": false
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "SupplyInventory",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "site": {
          "type": "Pointer",
          "required": true,
          "targetClass": "ClientSite"
        },
        "itemName": {
          "type": "String",
          "required": true
        },
        "sku": {
          "type": "String",
          "required": true
        },
        "category": {
          "type": "String",
          "required": true
        },
        "quantityOnHand": {
          "type": "Number",
          "required": true
        },
        "reorderLevel": {
          "type": "Number",
          "required": true
        },
        "unit": {
          "type": "String",
          "required": true
        },
        "lastRestockedAt": {
          "type": "Date",
          "required": false
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "SiteInspectionLog",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "site": {
          "type": "Pointer",
          "required": true,
          "targetClass": "ClientSite"
        },
        "schedule": {
          "type": "Pointer",
          "required": false,
          "targetClass": "CleaningSchedule"
        },
        "inspector": {
          "type": "Pointer",
          "required": true,
          "targetClass": "User"
        },
        "inspectionDate": {
          "type": "Date",
          "required": true
        },
        "score": {
          "type": "Number",
          "required": true
        },
        "findings": {
          "type": "String",
          "required": true
        },
        "correctiveActions": {
          "type": "String",
          "required": false
        },
        "photoUrl": {
          "type": "String",
          "required": false
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    }
  ]
}

AI 构建提示

使用Back4app AI代理生成一个真实的清洁CRM应用程序,该应用程序基于此模板,包括前端、后端、认证、清洁时间表、库存和检查流程。

Back4app AI代理
准备构建
在Back4app上使用这个确切的架构和行为创建一个清洁CRM应用后端。

架构:
1. 用户(使用Back4app内置认证):用户名、电子邮件、密码、角色、全名;objectId,createdAt,updatedAt(系统)。
2. 客户站点:站点名称,站点代码,地址,客户名称,服务级别,主要联系人(指向用户),活跃;objectId,createdAt,updatedAt(系统)。
3. 清洁时间表:站点(指向客户站点),分配给(指向用户),服务日期,开始时间,结束时间,频率,状态,备注;objectId,createdAt,updatedAt(系统)。
4. 供应库存:站点(指向客户站点),项目名称,SKU,类别,手头数量,补货水平,单位,上次补货时间;objectId,createdAt,updatedAt(系统)。
5. 站点检查日志:站点(指向客户站点),时间表(指向清洁时间表),检查员(指向用户),检查日期,评分,发现,纠正措施,照片网址;objectId,createdAt,updatedAt(系统)。

安全性:
- 协调员管理客户站点行并分配清洁时间表条目。技术人员只能更新自己的清洁时间表状态,并为分配的站点添加站点检查日志条目。检查员可以为他们被分配的站点创建和编辑站点检查日志行。库存更新应限制为协调员或监督角色。客户只有在明确授权的情况下,才能读取自己的客户站点摘要和检查结果。

认证:
- 注册、登录、注销。

行为:
- 列出站点,创建时间表,跟踪供应库存并记录检查发现及照片。

交付:
- Back4app应用程序,包含架构、CLP、ACL以及用于时间表、库存警报和检查日志的前端。

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

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

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

API 测试工具

尝试 REST 和 GraphQL 端点与清洁 CRM 模式进行比较。响应使用模拟数据,并且不需要 Back4app 账户。

加载游乐场…

使用与此模板相同的模式。

选择一堆

展开每个卡片以查看如何将 ClientSite、CleaningSchedule 和 SupplyInventory 与您选择的技术栈集成。

Flutter 清洁 CRM 后端

React 清洁 CRM 后端

React 本地 清洁 CRM 后端

Next.js 清洁 CRM 后端

JavaScript 清洁 CRM 后端

Android 清洁 CRM 后端

iOS 清洁 CRM 后端

Vue 清洁 CRM 后端

Angular 清洁 CRM 后端

GraphQL 清洁 CRM 后端

REST API 清洁 CRM 后端

PHP 清洁 CRM 后端

.NET 清洁 CRM 后端

每项技术的收益

每个技术栈使用相同的清洁 CRM 后端架构和 API 合同。

统一的清洁操作数据结构

轻松管理用户、客户网站、清洁计划、供应库存和现场检查日志记录,确保模式一致。

为清洁团队提供供应库存可见性

跟踪供应库存记录,以便在工作人员物料用尽之前进行补货。

每个站点的检查跟踪

存储现场检查日志的结果,包括分数、发现、纠正措施和照片网址。

面向角色的清洁人员工作流程

为协调员、技术人员、检查员和客户定义访问权限,而无需额外的后端配置。

清洁 CRM 技术比较

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

框架设置时间清洁管理CRM的好处SDK类型AI支持
大约 5 分钟单一代码库用于团队和协调员应用程序。类型化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完整

设置时间反映从项目引导到使用此模板架构的第一个ClientSite、CleaningSchedule或SiteInspectionLog查询的预期持续时间。

清洁管理 CRM 常见问题

关于使用该模板构建清洁管理 CRM 后端的常见问题。

对于清洁 CRM 交付,除了“忙碌”外,哪些指标实际上很重要?
清洁 CRM 的事务应如何在数据中连接文档、截止日期和通信?
访问模型是否对清洁 CRM 合作伙伴和承包商足够细致?
我如何使用 Flutter 对站点和清洁计划进行查询?
如何在 Next.js Server Actions 中管理清洁 CRM 访问?
React Native 是否可以离线检查缓存日志?
我如何防止未授权的检查编辑?
在 Android 上显示供应数量的最佳方法是什么?
清洁计划的端到端流程是如何工作的?
这个清洁行业客户关系管理模板由哪些类驱动?

受到全球开发者的信任

加入快速发布保洁 CRM 产品的团队,使用 Back4app 模板

G2 Users Love Us Badge

准备好建立您的保洁 CRM 应用吗?

在几分钟内开始您的清洁 CRM 项目。无需信用卡。

选择技术