ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

DeskcommCRM实战:从数据建模到权限体系的客户管理系统设计

DeskcommCRM实战:从数据建模到权限体系的客户管理系统设计 从最初接到DeskcommCRM这个项目开始我就在心里给它定了个调子它不是市面上那种功能堆到溢出的通用CRM而是要给一群天天被客户信息和管理报表折磨的销售、售前、实施人员提供一个真正能用得起来的协作工具。项目落地之后我复盘了整个设计和开发过程发现最值钱的不是写了多少页面、建了多少张表而是那些反复推敲后沉淀下来的实体关系、权限边界和统计口径。这篇内容就围绕DeskcommCRM展开从需求拆解、数据建模、权限流转、核心功能实现到上线后的踩坑和修正我会把关键决策背后的原因一并讲清楚。如果你正准备做一套内部CRM或者正在选型却不知道怎么提需求这篇内容可以直接当参考蓝本用。1. 项目概述DeskcommCRM到底要解决什么问题很多团队做CRM失败不是因为技术差而是因为在动手之前根本没有把“谁在用、解决什么、流程怎么走”这三件事想明白。这一节我先还原DeskcommCRM立项前后的真实场景以及当时为什么没有继续用Excel、为什么没有直接买一套SaaS。1.1 客户信息管理失控的典型场景我接手这个项目的时候业务侧最大的痛点是客户信息散落在各个角落。销售自己的客户名单放在个人Excel里群里的沟通记录没人整理合同文件和报价单堆在共享盘的不同文件夹里谁改过、改成了什么版本完全对不上。最典型的一个场景是销售离职。他手里的几十个客户表格文件留在笔记本里线上文档又没有同步记录交接的时候只能凭印象口头汇报。新接手的人不知道历史报价、不知道卡在哪个环节、不知道客户内部谁是关键决策人等于从零开始重新洗客户之前积累的关系和商机全部打断。另外一个容易被忽视的问题是跟进动作不可控。销售嘴上说“这周在跟××客户”但主管根本没法确认他上周到底有没有联系过客户、客户有没有回复、下一步计划是什么。所有的管理判断都建立在人的自觉性上团队小的时候能扛团队一过二十人这套模式彻底失效。1.2 目标用户与使用范围边界DeskcommCRM的用户不是抽象意义上的“企业员工”而是可以清晰拆成四类角色。第一类是一线销售他们每天要录入客户、写跟进记录、维护商机阶段最在意的是操作快不快、记录方不方便。第二类是销售主管他们要盯团队Pipeline要判断哪些商机可能丢单要查看每个销售的跟进质量。第三类是售前和实施人员他们会被销售拉进客户项目里做方案、做演示需要看到客户背景和需求记录但不需要也不应该看到合同金额。第四类是管理员负责配置公海规则、分配权限、维护数据字典。把用户角色理清楚之后功能边界就非常明确了。DeskcommCRM不需要拥有SFA、营销自动化、客服工单、报销审批这些大而全的模块核心就是客户管理、商机管理、跟进记录、任务提醒、团队看板这五个部分。边界范围直接决定了后续数据模型和权限体系的设计幅度不是说功能越多越好而是让每个角色进来就知道自己要做什么、能做什么。这个边界在需求评审时也经过了一番博弈。有人提出要把日程、会议、项目交付全部塞进来我当时坚决拒绝。多一个模块就意味着多一类权限判断、多一组数据关联、多一批测试场景第一版最重要的是把核心流程跑通而不是把摊子铺大。1.3 自研而不是买SaaS的取舍逻辑做内部系统时最常见的灵魂拷问是市面上有Salesforce、纷享销客、销售易为什么还要自己写一套我当时给了三条非常现实的理由。第一是数据资产的打通问题。现成CRM的数据模型是固定的客户、订单、产品这些字段只能在其框架内使用而我们当时的客户数据、报价单、项目交付数据已经有内部系统和结构接进SaaS的成本远高于预期。第二是权限粒度的灵活度。销售团队有私有客户、部门共享客户、公司公海客户还要配合售前实施人员查看商机的临时授权这套逻辑在SaaS里往往要买最高版本或者做二次开发才能满足。第三是长期改造成本。团队如果有两三套系统并行数据口径相互不一致后期做数据分析永远要对数据、洗数据这种隐性成本比开发成本高得多。当然自研的前提是团队有一定技术储备并且业务方愿意配合梳理流程。如果团队人数很少、业务模式还在剧烈变化期买SaaS反而是更务实的选择。DeskcommCRM能有今天的效果很大程度上是因为当时业务模式相对稳定流程可以被定义成明确的状态机这是自研能成功的大前提。2. 系统整体设计与数据模型的搭建逻辑CRM这类系统的数据模型没有那么难但要在“灵活”和“可控”之间找平衡点。这一节我把DeskcommCRM的核心实体关系、状态定义和几个容易踩坑的数据设计细节展开讲。2.1 核心数据实体客户、联系人、商机、跟进记录的关系DeskcommCRM最核心的实体是客户这个不用纠结。每一个客户记录代表一个企业主体包含公司名称、规模、行业、地区、来源渠道、客户状态等基础字段。客户下面挂着联系人、商机、跟进记录、附件等子数据形成一个以客户为中心的数据辐射结构。联系人和客户是多对一关系一个客户下面可以有多个联系人联系人字段里除了姓名电话职位我特意加了一个“关键决策人”标记。这个标记的价值在商机推进阶段会体现出来统计阶段转化率的时候可以分析出哪个角色维度的推进动作最有效。商机实体则是挂在客户下面的第二层核心它代表一个具体的销售机会有预计金额、预计成交时间、当前阶段、赢单概率等字段。一个客户可以同时存在多个商机但要通过状态字段避免重复的活跃商机。跟进记录这个表经常被设计成简单的日志表但我在DeskcommCRM里把它当成整个时间线的素材来源。任何对客户、商机、联系人的关键操作都会自动生成一条动态附着在对应对象的时间线上。这样团队看到的不只是员工手动写的跟进日志系统的操作痕迹也一并进入时间线管理者可以通过时间线还原一个商机从创建到赢单的完整过程。字段设计上我坚持一点能通过关联查出来的数据不冗余存储。比如商机表里不存客户名称只存customer_id查询的时候关联客户表。这样避免了命名不一致的坑。但业绩统计常用的字段比如商机金额、阶段概率、所属销售、所属部门我会冗余到商机表里因为这类字段需要频繁聚合查询每次都关联客户表再加权限过滤数据库压力会明显变大。2.2 客户状态与商机阶段的枚举设计状态字段是CRM比较核心的设计之一它决定了整个系统如何理解一个客户或商机的生命周期。DeskcommCRM里客户状态我设计了四个潜在客户、有效客户、无效客户、已流失。潜在客户表示已录入但还没有有效互动有效客户表示已经建立联系并且有明确的跟进价值无效客户是跟进后确认没有需求或联系不上被判定为死数据的已流失则是曾经是有效客户但因为各种原因不再合作。商机阶段我参考了业界常见的销售漏斗模型最终定下来六个阶段初步接洽、需求确认、方案报价、商务谈判、赢单、输单。每一个阶段对应一个预估的赢单概率初期是10%需求确认30%方案报价50%商务谈判80%赢单100%输单0%。这个概率不是拍脑袋定的它直接用于计算加权后的Pipeline金额也就是说团队看板上显示的不是所有商机金额的简单求和而是金额乘以当前概率后的加权值这样数据更接近真实预期。这里有一个容易被忽略的设计细节阶段枚举的顺序值和记录创建时间要同时保留。业务上买一个“阶段回退”的动作比如从方案报价回到需求确认就说明这个单子的推进有障碍。看板的统计需要按“进入当前阶段的时间”来分析而不是按创建商机的时间。如果不单独保存阶段变更记录就很难回溯每个单子在每个阶段停留了多久也就没法分析出瓶颈到底出现在哪个环节。2.3 数据模型设计时容易忽略的两个地方第一处是软删除和审计日志。CRM里的客户数据价值很高误删之后找不回来是灾难性的事故。DeskcommCRM所有核心表都带deleted字段和deleted_at时间戳删除操作在业务层默认走软删除只有管理员在回收站里可以彻底清除。同时我对关键字段的变更都保留了一份操作日志记录变更前后值、操作人、操作时间这为后面排查数据异常、权限问题提供了很重要的依据。第二处是创建人和所属人字段要分开。创建人是谁把这条记录录进系统的所属人是当前谁负责跟进这条客户。这个区别在客户认领和公海流转场景里特别关键。一条客户可以由A录入之后被B从公海领走归属变成B但创建人依然是A。很多CRM做不好公海逻辑就是因为没有把这两个概念分开台账上只记录了“谁创建的”导致后续流转判断无所适从。DeskcommCRM的公司名、创建人、所属人、归属时间都是独立字段数据流转日志也时刻记录归属变化这一套规则定好了公海、认领、分配、回收才有据可查。3. 权限体系与关键业务闭环设计CRM这类系统里权限体系的复杂度往往比业务功能本身更高。一个员工能不能看某条客户能不能编辑能不能看到金额字段能不能看到整个部门的数据这些都要在权限模型里找到答案。这一节讲DeskcommCRM的权限分层设计以及从线索到成交的业务闭环是怎么运转起来的。3.1 三套权限模型角色、数据范围、字段级控制我把权限拆成了三层分别解决“能做什么操作”、“能看到哪些数据”、“能看到哪些字段”三个问题。第一层是操作权限也就是传统RBAC管理员、销售、销售主管、售前、实施这几种角色各有一套菜单和按钮权限。比如销售可以新增客户、编辑自己名下客户、新建商机但只有主管才能将客户重新分配给其他人。售前的菜单里没有商机金额的编辑权限他们只能查看被授权参与的项目。第二层是数据范围权限这是整个系统里最绕的部分。DeskcommCRM数据范围分五档仅本人、本部门、本部门及下属部门、全部可见、公海可见。销售默认只看到自己和公海的数据主管能看到本部门所有销售的数据高级管理者可以看到全部管理员可以在后台按角色统一配置默认数据范围。所有列表查询和统计查询在服务层都会自动拼上数据范围的过滤条件而不是靠前端隐藏来保证安全。第三层是字段级权限这层主要是为了处理“看得到客户但看不到金额”这类诉求。比如售前人员能看到客户的基础资料和联系人参与商机协作时能看到商机名称和阶段但预计金额、赢单概率这些敏感字段对他们默认不可见。字段级权限在接口层做配置返回数据时按角色动态剔除敏感字段而不是建一堆冗余视图。三层权限叠加之后整个系统才达到“能看什么、能操作什么、能看多细”都可控的状态。3.2 从线索到成交的业务闭环DeskcommCRM里没有单独的线索模块我刻意把“线索”合并成了“客户”的一种初始状态避免重复录入。整个业务闭环是这样的新客户录入或者从外部导入进来之后默认进入公海池。销售从公海池领取客户客户状态变成潜在客户归属到该销售名下。销售跟进联系后如果确认有需求可以在客户下创建一个商机商机进入初步接洽阶段。随后通过需求确认、方案报价、商务谈判最终走到赢单或者输单。公海池的规则是整个闭环运转的核心。我定义了三个阀值首次领取后多少天内没有有效跟进动作客户自动释放回公海单条客户在某个销售手里最多保留多少天超过时限未推进则回收一个销售同时最多持有多少条主动领取的客户防止有人把公海客户大量划拉到自己名下囤积。这三个参数在后台可配置管理员根据团队规模动态调整。实际跑下来我们发现客户回收之后的再次领取率并不低因为很多客户不是没需求而是之前的销售跟进节奏不对。商机推进过程中的动作约束也要设计到位。比如从初步接洽推进到需求确认要求必须填写至少一条跟进记录从需求确认推进到方案报价要求必须上传一份报价单附件。这些约束在操作逻辑上看起来有点“卡”但正是这种轻量级的流程把关保证了漏斗里的数据不会失真管理层的判断有事实依据。3.3 跟进提醒与任务体系的联动光有记录还不够CRM要有推动人行动的能力。DeskcommCRM里跟进提醒和任务体系是联动的。销售在写跟进记录的时候可以顺手点选“下次跟进时间”系统会按这个时间生成一条待办任务到期当天推送到工作台和个人消息列表。如果设置的重试时间到达后仍然没有新的跟进动作系统会逐级升级提醒先提醒销售超时后再提醒直属主管让主管介入而不是看着商机死亡。这里的实现难点在于定时任务不能做得太粗暴。如果每小时扫一次全表数据量上去之后性能会很难看。我当时的做法是维护一张独立的待办任务表每次跟进和商机阶段变更时同步计算下一次提醒时间用一个定时任务只扫“提醒时间落在当前时间窗口内”的任务配合数据库索引整体开销很小。这套任务体系上线后团队的有效跟进率有非常明显的提升主管也不再需要每周手动催一次跟进记录了。任务的类型不只是“下一次跟进”还包括合同到期提醒、联系人生日提醒客户关系维护用、久未互动客户提醒超过30天没有跟进的活跃客户。这些提醒全部走同一条任务通道用户在统一的工作台里处理不用切换多个入口。4. 核心功能实操与实现细节复盘这一节开始进入具体的实现复盘。我会挑客户列表查询、跟进记录时间线、销售漏斗看板三个核心功能把设计过程和实现细节讲透同时穿插一些我在前端交互上的实践体会。4.1 客户列表页的查询与导出实现客户列表页是销售每天打开最多的页面它的体验直接影响整个系统的好感度。DeskcommCRM的列表查询我支持了多条件组合筛选客户名称模糊搜索、所属销售下拉选择、状态多选、行业多选、来源渠道筛选、最近跟进时间范围。所有筛选条件都是可叠加的前端将它们拼成一组查询参数后端统一解析成可执行的查询条件。搜索的关键词处理值得一提。客户名称支持模糊匹配但只匹配前缀和中缀的连续字符串避免用户输一个“科”字把“阿里科科”都带出来。而全文搜索诉求我后面通过冗余一个客户搜索字段模型解决的录入或更新客户时把客户名称、联系人姓名、联系人电话拼到一个搜索字段里再用数据库全文索引加速。这个方案比分词搜索引擎轻量得多对这个体量的系统来说完全够用。客户导出是销售主管的刚需用于做线下复盘和月报。第一版我直接在主请求里同步生成Excel结果两百个客户的数据导出就要等好几秒页面直接卡死。后来改成异步导出用户点击导出后系统先生成一个导出任务任务在后台线程执行完成后把文件上传到存储服务再通过消息通知用户下载。导出文件里只包含用户当前数据权限范围内的数据这个过滤逻辑和列表查询复用同一套服务层方法避免出现“页面上看不到但导出了机密数据”的漏洞。4.2 跟进记录时间线与动态流的实现DeskcommCRM里跟进记录不只是一张静态表它演化成了每个客户和商机详情页里的动态流。动态流由两种内容组成一类是销售手动撰写的跟进记录另一类是系统自动生成的操作动态。比如新建客户、商机阶段变更、跟进人变更、客户状态变化、重要字段修改都会自动在时间线里追加一条动态。实现自动动态的关键在于不污染业务主流程。我没有在新增客户、更新商机这些业务方法里逐个手写“插入一条动态”而是封装了一个变更采集器在服务层统一拦截需要记录审计的关键操作取出变更前和变更后的字段快照生成描述文本再写入动态表。这样后续新增一个字段要记录动态只需要在配置里加一行声明不用改一堆业务代码。动态流的展示顺序统一按发生时间倒序排列系统动态和手动跟进记录用不同样式区分。读者可能会觉得这不就是个List页面有什么好讲的。实际上动态流的数据模型设计才是关键。我把动态记录设计成面向对象的包含actor_id、object_type、object_id、action_type、content_snapshot这几个核心字段检索时只需按object_type加object_id查一张动态表天然适合各种业务对象使用也为后面做全局活动流埋下了基础。4.3 销售漏斗看板的统计口径销售漏斗看板是DeskcommCRM里最有视觉冲击力的模块也是业务方最看重的模块。看板有三个核心统计口径我必须全部讲清楚因为口径错了一切展示都是误导。第一个口径是整体Pipeline金额。这里不是把全部商机金额求和而是按阶段乘以赢单概率后加权汇总。比如一个100万的商机在方案报价阶段加权后只算50万。这个加权逻辑我专门在接口里写清楚了前端页面上也标注了“加权预计金额”防止管理者把数字当成确定回款。第二个口径是阶段分布统计。按商机当前阶段分组统计每个阶段的商机数量、总金额、加权金额。这个分布能直观看出整个团队的商机堆积在哪个环节如果需求确认阶段堆积了大量商机说明前期筛选不够严格应该提高初始阶段的判断标准。第三个口径是转化率分析。统计每个阶段到下一个阶段的转化率这个数据要基于历史商机数据计算。比如过去三个月有多少商机进入了方案报价其中有多少走到了商务谈判这个能反映出团队在不同环节的推进能力。做这个统计时要注意排除还在进行中的商机否则转化率会随着Pipeline挂着的单子增加而失真。这个模块在统计口径上有一个真实的教训。早期我看板的“赢单金额”直接用了商机表里所有赢单阶段商机金额的求和没有排除同一客户多商机、阶段回退后又赢单的重复计算场景结果月报里的赢单金额和财务确认的回款金额对不上。后来我加了一个“赢单去重”逻辑按客户维度进行合并只保留最近一条赢单商机金额数据才对得齐。这个问题在业务方第一次月度经营分析会之前发现并修正算是侥幸没有酿成比较大的数据事故。4.4 前端交互的打磨体会DeskcommCRM的前端交互有几个细节值得单独拿出来说。第一个是列表页的密度和默认排序。销售日常需要快速浏览大量客户行间距过大会导致一屏看不到几行信息密度太低行间距过小又容易误点。我最后定的策略是紧凑模式为默认每行高度控制在适应性范围通过顶部筛选区的折叠来给列表腾出更多展示空间。默认排序是最近跟进时间倒序重点客户自然沉到前面而不是按创建时间倒序一股脑堆新的。第二个是详情页的信息分区。客户详情页我采用了清晰的分栏布局左边是客户基本信息和资料卡中间是跟进记录和动态流右侧是关联商机和联系人列表。这种布局让销售在记录跟进时不用来回切换页面上下文完整不打断。底部还有一个快速创建商机的入口点击后在弹窗里填核心字段保存后直接进入商机详情页。第三个是空数据和加载态。客户详情页如果没有任何跟进记录会有一段引导文案加“写第一条跟进”按钮而不是一片空白。加载态用了骨架屏而不是转圈体验上会显得更快。这些前端细节在功能上线初期的用户反馈里被频繁提到投入产出比相当高。另外一个我比较后悔没有在一开始做的交互是批量操作比如批量导出客户、批量转移归属、批量修改客户状态这些功能是在上线两周后由主管提需求才补上的如果第一版就有团队的整理效率会更快提上来。5. 常见问题与排查技巧实录任何系统上线后都会遇到问题CRM这类权限复杂、并发读写频繁的系统更是如此。这一节我把DeskcommCRM开发测试和上线初期遇到的高频问题整理出来包括越权访问、并发编辑覆盖、大表查询变慢等现象的排查思路和最终解法。5.1 数据越权发现与权限模型边界DeskcommCRM上线测试时测试人员发现了一个越权问题销售A直接通过修改URL中的客户ID居然能访问到销售B名下客户的详情页。排查之后发现详情接口确实在Controller层写了权限校验但当时校验的对象是从URL参数解析出来的客户ID对应的对象的所属人而不是当前登录用户的数据范围。前端跳转时把客户ID写死了后端没有再次校验当前用户的数据范围。这个问题的根因是权限校验散落在Controller层每个接口各自做判断规则不统一。我后来的修复方式是在服务层做一个统一的权限拦截器核心原则是“查询进入Service前先判断当前用户对该资源有没有数据范围权限没有就抛业务异常”Controller只负责参数格式校验不再承担权限判断责任。经过这次教训所有列表查询、详情查询、导出操作都统一走一套数据范围过滤器越权问题基本在测试环境就能拦下来。5.2 并发编辑客户资料引发的数据覆盖两个销售同时打开同一个客户的编辑页A修改了联系人电话B修改了客户行业两人先后保存结果后保存的B把A的修改覆盖了。这是典型的并发编辑冲突在高频协作场景里非常常见。当时解决方案有两条路一是保存前重新查询数据库判断数据是否有变化二是使用乐观锁。DeskcommCRM选了乐观锁方案。客户表和商机表都增加了version字段更新操作执行时SQL携带WHERE id ? AND version ?条件如果影响行数为0说明数据已被其他事务修改业务层抛出并发冲突异常前端弹窗提示用户刷新页面重新编辑。这个方法实现成本低对于这个量级的并发场景完全够用。虽然偶尔会有用户因为冲突要重新编辑但这远比静默覆盖数据让团队之间的信任受损来得好。5.3 大批量数据下的查询性能优化系统上线三个月后客户表数据量超过几十万行列表查询开始出现明显的响应变慢。最直观的问题是深分页用户翻到第几百页时数据库要扫描前面所有数据才能定位到目标行。我先把列表分页从LIMIT offset, size改成基于游标的分页方式排序字段和过滤字段上建索引翻页深的问题得到缓解。另一个慢查询出现在看板的聚合统计上。阶段分布统计需要把商机表全量扫一遍并按阶段分组当时商机表里大量历史输单数据也被统计进去了。优化思路是在商机表上建了符合查询模式的联合索引同时在统计服务里加上时间范围过滤默认只看最近一年内的商机避免历史无效数据拖累性能。还有一个小优化是针对公海列表的。公海列表的查询自带一个“未被任何销售持有”的条件但客户表字段上默认都有所属人查询时如果不配合索引会走全表扫描。我在所属人、状态、最近跟进时间这三个字段上建了联合索引这个查询从慢查询日志里彻底消失了。任何CRM的列表查询都要优先分析WHERE条件把索引设计放在功能联调之前而不是等线上慢了再回头补。5.4 常见问题速查表问题现象可能原因排查思路解决方案用户能看到不属于自己的客户Controller层权限校验缺失或规则不统一检查详情接口、列表接口、导出接口是否统一走了数据范围过滤器在Service层统一做数据范围校验Controller不做权限判断客户资料被后保存的人覆盖并发编辑同一条记录查看更新SQL的影响行数和版本号变化增加乐观锁version字段更新时带版本条件冲突则提示重试列表翻到深页时响应很慢offset深分页扫描数据量大查看慢查询日志确认排序字段是否有索引改为游标分页在排序字段和过滤字段上建联合索引漏斗看板金额和财务对不上统计口径没有排除重复商机和进行中的商机核对赢单金额的统计SQL检查是否有重复计数的历史商机按客户维度去重只保留有效赢单商机统计时过滤时间范围用户反馈搜索“××公司”搜不到模糊搜索字段匹配规则设置不当确认搜索的是客户名称还是全文搜索字段统一走全文搜索字段录入客户时自动拼接联系人姓名和电话回收站里找不到误删客户删除走了物理删除而不是软删除检查删除接口是否只执行了DELETE语句核心表全部改为软删除管理员可通过回收站恢复6. 上线后的经验沉淀与扩展方向DeskcommCRM上线后的运行阶段我拿到了大量真实业务反馈这些反馈比任何需求文档都更有说服力。这一节我讲三个上线后迭代的典型案例以及如果再让我重做一次我会在哪些地方做不同选择。6.1 根据业务反馈迭代出的三个关键修改第一个修改是公海回收规则的固化。上线初期公海规则写死了“7天未跟进自动回收”结果销售抱怨很多客户是长期培养型客户比如年底预算审批周期长的项目7天确实没有可推进的动作。后来我把公海规则改成可配置并且新增了“提前一天提醒待回收客户”的通知机制销售可以在客户即将被回收前补充一条有效跟进记录来重置计时。第二个修改是增加了操作日志的可视化。最初操作日志只存在数据库表里管理员后台能查但销售和主管看不到。后来主管提了一个需求想看到某条商机是“谁在什么时候把阶段从需求确认改成了方案报价”。这个需求背后隐含的是对销售过程管理的诉求。我把操作日志的查看入口直接放到了客户和商机的详情页时间线里所有有权限的用户都能看到关键操作痕迹团队内部的信息透明度一下子高了很多。第三个修改是客户导入功能的健壮性增强。第一版导入模板很简陋只支持客户名称、联系人、电话这几列而且没有做重复校验导致导入了一批重复客户进公海。后来我把导入模板扩充到二十多个标准字段导入前先做格式校验和重复检测重复记录跳过并生成错误报告合法数据进入待导入队列由管理员二次确认后才正式入库。这个改动直接提升了数据质量公海里的垃圾数据明显减少。6.2 如果重新做一次我会改掉的设计第一是自定义字段的缺失。DeskcommCRM第一版所有字段都是写死的后续业务方希望增加“客户来源渠道明细”“是否使用竞品”这类个性化字段每次都要改表结构、改前端表单、改导入模板改动成本很高。如果重做我会在核心对象上预留一套自定义字段配置机制至少要支持扩展用JSON字段配合前端动态渲染表单。第二是消息通知渠道太单一。第一版通知系统只有站内信用户不主动登录系统就看不到提醒。如果重做我会把跟进提醒、客户分配通知、系统公告接入企业即时通讯机器人和邮件让关键信息能主动触达用户而不是等用户打开系统才发现。这个改动对使用体验的影响非常大算是目前比较明显的短板。第三是本地开发环境准备得太晚。项目早期为了快速迭代本地环境配置靠共享文档说明每次新同事加入都要花半天时间配数据库、依赖服务、配置文件。后来我补了一套脚本化环境安装方案新同事跑一两个命令就能起一套完整环境。这个事务看起来不占业务进度但对团队研发效率的长期影响很大应该一开始就做。6.3 这一版为后续扩展预留的方向DeskcommCRM当前的数据模型和权限体系足够支撑未来几个方向的演进。第一个是BI报表模块目前看板已经做了销售漏斗和阶段统计后续可以扩展成更灵活的拖拽式报表让管理者自定义统计维度。第二个是客户公海的数据智能推荐根据客户所在行业、规模、历史跟进记录给销售推荐可能感兴趣的公海客户这个方向已经有算法基础了。第三个是移动端场景销售在外出拜访时录入客户和跟进记录的需求很强烈目前移动端只做了比较基础的适配页后续可以考虑做成独立的轻量应用。这些扩展方向都建立在DeskcommCRM现有的客户、商机、跟进记录、权限这四层核心模型之上结构上不需要伤筋动骨这也是当初坚持把所有业务实体关系理清楚的价值所在。最后分享一个实战经验这类CRM系统最难的部分从来不是技术而是如何把业务规则翻译成数据模型和权限边界。只要实体关系清晰、权限分层明确、统计口径可解释哪怕第一版功能朴素一点上线后也能持续迭代成真正好用的系统。如果你也准备做类似的内部系统建议开工之前先花至少一半的时间把客户生命周期和角色权限画清楚这个功夫省不得。
返回列表