跳到主要内容

客户、联系人、站点与服务

我们有一个简单的客户模型,在这个客户下,可以有多个联系人和多个站点服务等。

客户是与我们有关系的公司或个人,我们向其发送发票/账单。

联系人是与客户合作的人,对于个人来说,可能与客户本人相同,是一个单独的人,但我们可能有家庭成员或其他联系人,每个联系人都有一个类型,例如账单联系人、技术联系人等,这影响我们如何处理该联系人。

站点是我们提供服务的实际位置,可以是家庭、办公室或其他地点。这使我们能够为单个客户拥有多个站点,例如,一个拥有多个办公室的客户,并知道哪些服务与哪个站点相关联。

服务是我们向客户收费的内容,可以是家庭互联网服务、移动服务,甚至是抽象服务,如租用子网或为机架提供计量电力。每项服务都与客户和站点相关联,并可以有多个相关费用。

客户还有一个活动日志 <csa_activity_log>,��是所有更改的记录,标签 <administration_tags>属性 <administration_attributes>用于存储自定义元数据,库存项目 <administration_inventory>和财务信息,如交易 <payments_transaction>发票 <payments_invoices>支付方式 <basics_payment>

一旦我们创建了客户,就可以为该客户添加服务 <csa_add_service>,这是我们向他们收费的内容。

有关创建客户的信息,请参见创建客户

数据模型概述

OmniCRM使用围绕客户及其服务组织的关系数据模型。该模型分为以下几个重点部分。

客户核心关系

客户是中心实体,具有相关的联系人、站点和服务。

关键点:

  • 一个客户可以有多个联系人(账单、技术等)
  • 一个客户可以有多个站点(分支办公室、地点)
  • 服务交付到站点
  • 联系人可以通过链接的用户帐户拥有门户访问权限

账单与财务数据

交易和发票跟踪所有财务活动。

关键点:

  • 交易可以是独立的,也可以分组到发票中
  • 服务自动生成每月交易
  • Stripe卡被令牌化并安全存储
  • 发票将多个交易分组以进行计费

产品与配置

产品定义服务提供;配置创建实际服务。

关键点:

  • 产品是模板;服务是活动实例
  • 配置通过Ansible剧本创建或修改服务
  • 每个配置作业都有多个事件用于跟踪进度
  • 一个产品配置可以创建多个服务(捆绑)

库存系统

跟踪分配给客户的物理和虚拟资产。

关键点:

  • 库存模板定义每种物品类型的结构(字段)
  • 灵活的itemtext1-20字段适应不同的库存类型
  • 物品可以分配给客户并链接到服务
  • 存储设备配置和管理凭据

用户与安全

具有基于角色的访问控制的用户帐户。

关键点:

  • 用户可以有多个角色;角色有多个权限
  • 每个用户的双因素身份验证(2FA)是可选的
  • 员工用户是独立的;客户用户链接到联系人
  • 细粒度权限控制对资源的访问

客户列表

客户列表提供了一个可搜索、可过滤的所有客户的表格。

客户列表视图

功能:

  • 搜索 - 按名称或ID过滤客户
  • 批量操作 - 选择多个客户进行批量操作
  • 分页 - 浏览大量客户列表
  • 快速操作 - 直接从列表中查看或删除客户

客户 - 详细信息

客户对象本身不包含太多信息,仅包含一个名称和对联系人及站点的引用。

您的具体部署可能包含额外字段或自定义,但基本客户对象非常简单。

在概述页面上还有一个图表显示客户的每用户平均收入(ARPU),这是总收入除以服务数量,并与系统中所有客户的平均ARPU进行比较。

客户状态选项根据您业务的具体需求量身定制,但通常包括活动、非活动、待处理等选项,每个选项都有不同的规则来控制客户在该状态下在系统中的行为。

删除客户只能在客户没有活动服务、未支付发票或未开票交��的情况下进行。如果客户有任何这些情况,您需要关闭活动服务并确保付款完成,然后才能删除客户,这将归档客户及所有相关数据,日后如有需要可以恢复。

客户 - 详细信息

站点 - 详细信息

站点是提供服务的实际位置,可以与多个服务相关联。

它们主要用于商业客户,其中一个客户可能有多个站点,例如,一个拥有多个办公室的客户。

拥有多个站点使我们能够跟踪哪些服务与哪个站点相关联,例如,如果客户为新办公室订购新服务,我们需要确保将正确的服务交付到正确的位置。这使我们能够按站点跟踪服务,并在需要时单独计费。

Google Maps集成和地理编码

每个站点都与Google Maps集成,以确保准确的地址数据和地理位置。用户界面会自动对地址进行地理编码并生成位置信息。

地址地理编码的工作原理:

在添加或编辑站点时,界面提供两种设置位置的方法:

  1. 地址搜索(推荐)
    • 使用表单顶部的搜索栏
    • 输入地址,Google Maps自动完成建议匹配
    • 从下拉菜单中选择正确的地址
    • 系统会自动填充:
      • 站点名称 - 来自Google Maps的��点名称
      • 地址行1 - 街道号码和名称
      • 地址行2 - 子房产(单元/套房号码)
      • 城市 - 地区
      • 州/地区 - 行政区域
      • 邮政编码 - 邮政编码
      • 国家 - 国家名称
      • 纬度和经度 - 精确坐标
      • Plus代码 - 11字符的开放位置代码(例如,8C3MFJV8+2F
      • Google Maps地点ID - 唯一地点标识符
  2. 可拖动地图标记(手动)
    • 将图钉拖动到确切位置
    • 系统执行反向地理编码以从坐标获取地址
    • 基于图钉位置自动填充相同字段
    • 对于农村地区或地址不精确时非常有用

Plus代码生成:

Plus代码是通过使用开放位置代码库从纬度/经度自动生成的。Plus代码是一个短代码(11个字符),表示世界上任何地方的精确位置。

示例:

自动填充字段:✓ 站点名称:“123 Main Street” ✓ 地址行1:“123 Main Street” ✓ 城市:“London” ✓ 州:“Greater London” ✓ 国家:“United Kingdom” ✓ 邮政编码:“SW1A 1AA” ✓ 纬度:51.5074 ✓ 经度:-0.1278 ✓ Plus代码:“9C3XGPHC+3Q” ✓ Google地点ID:“ChIJdd4hrwug2EcRmSrV3Vo6llI”

验证要求:

在保存站点之前,系统会验证:

  • 纬���和经度必须设置(通过搜索或拖动标记)
  • 国家必须填充(如果未设置,则默认为REACT_APP_DEFAULT_COUNTRY
  • Plus代码必须为12个字符(11 + 1用于填充)

如果验证失败,您将看到错误:

视觉反馈:

界面显示实时反馈:

位置数据的使用方式

地理编码的位置数据(纬度、经度、Plus代码)在OmniCRM中用于:

1. 服务交付和安装

  • 现场技术人员 - 访问Plus代码以导航到确切的站点位置
  • 安装调度 - 根据地理位置分配技术人员
  • 设备部署 - 确保将正确的设备交付到正确的站点

2. 故障通知

  • 地理围栏警报 - 如果特定区域发生网络故障,通过纬度/经度半径查询站点
  • 定向通信 - 仅向受影响的客户发送故障通知,通过Mailjet <integrations_mailjet>
  • 状态页面 - 显示受影响站点的故障地图

示例:

查询:SELECT * FROM Customer_Site
WHERE distance(latitude, longitude, 51.5074, -0.1278) < 5

结果:47个受影响站点 操作:向47个客户发送故障通知

3. 报告与分析

  • 地理收入 - 按城市、州、地区的收入
  • 服务密度地图 - 服务位置的热图
  • 扩展规划 - 确定服务不足的区域

4. ���站点商业客户

  • 站点管理 - 跟踪哪些服务在何处
  • 单独计费 - 如有需要按站点开具发票
  • 服务分配 - 在配置期间将服务链接到特定站点

农村和偏远站点

对于位于农村地区的客户,街道地址可能不存在或不准确:

  1. 使用地图拖动
    • 放大到大致区域
    • 将图钉拖动到确切的物业/建筑
    • 系统为该精确位置生成Plus代码
  2. Plus代码共享
    • 与客户共享Plus代码(例如,8C3MFJV8+2F
    • 客户可以在Google Maps中输入此代码以查看确切位置
    • 现场技术人员使用Plus代码进行导航
  3. 地址备注
    • 使用“地址备注”字段提供额外方向
    • 示例:“在红色谷仓左转,过牛栏500米”
    • 备注对安装团队可见

提示

如果地址不准确,您可以将图钉拖动到正确的位置。系统将对位置进行反向地理编码,并自动填充所有地址字段。

站点 - 详细视图

联系人 - 详细信息

联系人是与客户相关联的人。他们可以是账单联系人、技术联系人或其他类型,每个���系人都有一个类型,这影响我们如何处理该联系人。

客户联系人列表

我们可以为单个客户拥有多个联系人,例如,一个客户有多个账单联系人,或者一个客户有多个技术联系人。

一个好的例子是一个拥有托管服务提供商的公司,处理技术方面的事情,还有一个单独的账单联系人处理财务方面的事情,或者一个家庭,每个成员都有自己的联系人,但并非所有人都被授权进行更改。

同样,我们可能只想向技术联系人发送故障通知,或者只向账单联系人发送发票,联系人类型允许我们控制这一点。

联系人类型的具体逻辑由您的业务决定,但基本思想是每个联系人都有一个类型,这影响我们如何处理他们,并且与客户相关联的每个人都是一个联系人。

联系人与Mailjet <integrations_mailjet>集成同步,使我们能够根据联系人类型、位置、每月支出或购买的服务发送定向电子邮件活动,并管理用于事务性通信的所有电子邮件模板。

联系人 - 概览

联系人 - 编辑表单

联系人 - 详细信息