首页/新闻资讯/正文详情

自研CRM全流程复盘:需求梳理、私有化部署与数据迁移实践

发布时间:2026/9/25 14:53:52 来源:云帆数科 栏目:资讯中心
自研CRM全流程复盘:需求梳理、私有化部署与数据迁移实践
1. 立项背景销售信息散落带来的失控感是我们做DeskcommCRM的直接动因先交代一下我在其中的角色今年早些时候我接手了公司内部一套CRM系统的选型、部署和实施。公司不大不小销售、客服、技术支持加起来几十号人之前一直用共享表格加个人通讯录维护客户加上企微群里的零散沟通客户资料散得厉害。老板提了个很实际的要求谁能把从线索到合同的全过程理清楚让新人上手不再靠问让管理层能随时知道每个客户的状态谁就负责把这事办成。这就是DeskcommCRM这个项目的最初来源。市面上CRM产品并不少但真正深入评估后你会发现绝大多数产品要么偏大而全实施周期长、定制成本高要么过于轻量只做了客户记录和跟进提醒企业真正需要的流程协同比如销售阶段间的交接、客服工单与客户档案的联动反而很弱。DeskcommCRM这个项目在构思阶段我们定的方向就很明确不做一套标准化的软件采购而是围绕公司的实际业务流搭一套“客户沟通与数据管理一体化”的内部系统把桌面端的操作效率和后台的客户数据管理打通。这也是项目名称的由来Desk桌面办公 Comm沟通协同 CRM客户关系管理。以我个人的经验来说这种“半自研、半配置”的路线在几十人规模的公司里往往比直接买一套昂贵系统的效果更好。原因有三一是业务部门提的需求往往是碎片化的标准产品没办法全覆盖二是团队的使用习惯差异大一套灵活的自建系统方便持续调整三是数据归属清晰不会因为换了软件导致历史客户资料迁移困难。这篇内容我打算完全按当初实施的过程来写从需求梳理、架构设计、字段与权限配置、数据迁移一直到项目上线后团队真正“用起来”的过程中间会穿插大量我们踩过的坑和调整细节。如果你也在评估CRM系统的自建或选型这些内容应该能帮你少走不少弯路。2. 需求梳理的关键动作先别急着选软件把业务流画出来再说这个项目的第一个教训就是我们曾花了两周时间对比各家CRM产品的功能清单后来发现方向错了。功能清单再全解决不了业务部门真正的痛点反而会引入一堆根本用不上的功能徒增培训成本。2.1 从“客户在哪里”和“客户经历了什么”两个维度摸底我们需要回到业务本身。当时我拉着销售主管、客服组长、技术支持负责人分别做了三轮访谈每一轮的核心问题只有两类客户信息目前分布在哪些地方从第一次接触到最终成交中间可能经过哪些人、哪些动作每个环节最让你头疼的事是什么比如丢单、跟丢、重复沟通、信息不对称等。整理出来的结果有点出乎意料公司当时没有一个统一的客户视图。销售A录入的客户销售B如果通过其他渠道再次触达根本不知道之前已经有人跟进过客服收到一个老客户的咨询电话查不到这个客户买过什么、有没有历史工单技术支持处理完一个线上问题后反馈结果只留在个人聊天窗口里销售和客服完全不知情。这些现象背后反映出的真实需求不是“有一个更好用的联系人管理工具”而是需要一条清晰的客户状态流转链路。不同的业务角色对这条链路的关注点也不一样销售关心的是线索是否被认领、目前处于哪个销售阶段、预计什么时候成交客服关心的是客户有没有历史工单、有没有未关闭的售后问题、这个客户是否在投诉高风险状态管理层关心的是整体转化率、每个销售的跟进质量、客户流失预警。所以我们的第一阶段需求文档不是一页功能清单而是三张流客户状态流、工单流转流、内部交接流。后来所有字段设计、页面布局、权限规则都围绕这三张流来定这在项目推进过程中帮了大忙——至少大家争论“某个字段要不要加”的时候都有了一个统一的判断基准。2.2 明确MVP范围挡住一半需求访谈做完需求池里攒了一大堆功能想法例如客户自动评分、销售行为埋点、合同电子签、自动发票识别等等。这里我想多说一句很多系统项目实施失败不是功能太少而是功能太多导致上线遥遥无期。DeskcommCRM第一阶段锁定的MVP范围是客户档案客户基础信息、来源渠道、所属行业、规模、地址等线索池与客户认领未分配的线索进公共池销售可领取跟进记录与销售阶段管理跟进历史可追溯、阶段变更留痕工单模块客服和技术支持使用与客户档案关联基础数据报表新增客户数、跟进次数、阶段转化率、工单关闭率。其余什么客户公海、商机预测、合同管理、回款计划全部排到第二阶段。这样做的主要考虑是控制实施复杂度让团队先养成集中使用和记录的习惯业务数据跑顺了以后再加功能远比一开始就堆一大套功能更稳妥。结果也证明这个取舍很值得项目从启动到上线只用了不到六周时间而且销售和客服对这个系统的接受度明显好于我们最初设想的预期。3. 技术选型和部署方式为什么没有直接买现成SaaS而是走了自研加私有化部署这可能是DeskcommCRM这个项目里最值得展开聊的一部分。市场上不是没有现成的甚至很多产品做得比我自研的成熟得多但每个公司情况不一样最终的选型是综合考量后的结果。3.1 对比了三种方案最后选了基于开源框架二开选型时我们实际对比了三条路线方案优点缺点适用情况纯SaaS订阅上手快、运维零负担、功能更新及时数据在别人手上、按坐席收费、深度定制困难、部分行业客户数据合规要求不满足标准化流程、无合规限制的小团队商业软件私有化部署系统成熟、功能全面、数据在自己服务器实施费用高、二次开发受原厂限制、后期维护费贵预算充足、流程基本标准化的中型企业开源框架二开自部署数据完全自主、需求贴合度高、可控性强需要开发力量、功能完善周期较长、运维责任在自己有开发能力、业务流个性化较强的团队我们最终选择了第三条路核心考量是数据合规和定制自由度。公司所在行业比较特殊部分客户合同里明确约定客户数据不允许存储到第三方平台纯SaaS方案直接出局。商业软件私有化虽然也可以满足但报价让人犹豫且我们认领、派单、工单状态这些流程和标准产品的设计差异较大改起来费时费力。技术栈上我们采用了Python的FastAPI写后端API前端用Vue3加Element Plus数据库选了PostgreSQL部署在内部机房的一台Linux服务器上。这个技术组合的好处后面我会细说先岔开一句很多团队一谈自研就担心成本爆炸其实关键是控制范围。我们的开发量其实不大核心功能大概三周就写出了第一版剩下时间主要花在字段调整、权限打磨、数据迁移和用户测试上。3.2 私有化部署的几个关键参数和注意事项部署时有一个小细节我认为值得单独写一下。很多教程会告诉你装好PostgreSQL、启动服务、配好Nginx就当完成了但真正跑起来以后你会发现CRM类的业务系统最大的特点和瓶颈都是同一个数据按客户聚集查询模式高度固定。客户列表、客户详情、跟进记录、工单历史这几个页面的查询模式在系统上线后几乎不会变。所以在数据库层面我们做了三件事所有业务表统一带customer_id字段并在该字段上建了联合索引客户档案表采用分区表按月归档历史不活跃客户减少热表体积跟进记录表和工单表只保留最近两年的活跃数据更早的数据转归档表需要时按客户维度联查。一个经验数值供参考当客户表超过20万行、跟进记录超过50万行以后没有这些索引和归档设计列表页响应时间会明显劣化尤其销售在工作台搜索客户时转圈转两三秒那种体验业务部门是忍不了的。我们上线半年多目前客户表接近10万行明细记录超过30万行核心列表查询基本都在300毫秒以内完全够用。4. 字段设计、权限模型与页面布局这三件事直接决定系统好不好用如果说架构决定了系统的性能上限那么字段、权限、页面布局就是决定用户每天用着顺不顺手的关键。这也是DeskcommCRM项目中打磨时间最长、调整次数最多的部分。4.1 客户字段设计少而精带着业务含义需求访谈阶段销售主管提了五十几个字段需求被我砍到了22个。不是那些字段没有用而是字段越多录入成本越高最后必然导致数据质量下降。最终客户档案的核心字段如下基础识别客户名称、联系电话、所属行业、客户规模、所在地区来源与归属线索来源渠道展会上获取、老客户转介绍、官网留资、主动开发、当前归属销售、归属团队状态类生命周期阶段线索、跟进中、意向明确、成交、流失、意向等级A/B/C/D、最近跟进时间价值类预计成交金额、预计成交时间、成交概率、客户价值分层高价值/普通/低价值备注类客户需求摘要、下一步计划、竞争品牌如果有。有几个字段是我们反复斟酌过的比如“客户价值分层”销售一开始觉得很虚后来我们明确规则过去12个月累计下单金额在50万以上为高价值10万到50万为普通10万以下为低价值。有了明确的计算规则这个字段才真正有了管理意义管理层看数据时可以直接按价值分层筛选重点客户而不是看一长串客户名单自己判断。4.2 权限模型不搞复杂的角色矩阵用“数据范围加操作权限”组合权限设计同样是踩坑高发区。一开始我参考了一些大型CRM的设计想把权限做成一个很完整的角色矩阵结果做出来后自己都嫌烦十几种角色、每个页面有十几种操作权限配置起来特别痛苦。在DeskcommCRM里我们最终简化成了“数据可见范围乘以操作权限”的组合模型。数据可见范围只分四种仅本人销售只能看到自己名下的客户和跟进记录本部门销售主管能看到整个销售部名下的客户但不能看到客服部的客户全员管理层和特定角色能看到全部客户相关方例如客服角色的用户可以看到自己处理过的工单所关联的客户档案但看不到客户的其他跟进记录。操作权限支持按需配置包括查看、编辑、删除、导出、转移、派单六个动作。这套模型的好处是容易理解销售记住“我看到的客户都是我的或者我团队的”客服记住“我只能看到和我工单有关的客户”权限培训几乎不花时间。但是有一点需要特别提醒权限越严跨部门协作越麻烦。比如销售把一个跟进中的客户转给客服处理售后问题时客服如果看不到销售填写的跟进摘要处理工单时还得打电话问销售非常低效。我们的解决办法是给“相关方”角色额外开放了客户档案中“跟进摘要”字段的只读权限相当于在严格的数据隔离和协作效率之间做了一个折中。这个细节后来客服组和销售部都反馈很好。4.3 页面布局把高频动作放在一眼能看到的位置最后是页面布局。这个容易被低估实际影响很大。销售每天打开系统最常做的三件事是查看今日待跟进客户、搜索某个客户看历史记录、新增跟进记录。所以我们在工作台页面把这三个入口放在首屏左上角是待办列表今天到期需要跟进的客户按优先级排列右上角是快速搜索框支持客户名称、手机号、联系人模糊搜索下方是最近跟进记录以及一个“快速新增跟进”按钮。这样设计之后销售打开系统基本不需要点击第三个页面才能到达核心功能。据我们后端埋点统计用简单的页面访问日志就能统计上线一个月后每个销售每天平均在系统上的有效操作时间从最初的15分钟升到了40分钟不是因为系统的学习成本高而是因为大家愿意把它当成工作台来用了。这也是我认为自研CRM一个非常明显的好处你能针对自己团队的习惯去优化页面而不是让大家去适应软件的固定流程。5. 从混乱到有序数据迁移和清洗的步骤与踩坑记录系统搭好了接下来最让人头疼的就是把原来散布在不同地方的数据整理进新系统。这一步如果处理不好很容易导致上线第一天大家看到的都是缺胳膊少腿的客户资料Trust瞬间崩塌。我们当时的数据分布比预想的复杂得多一个共享Excel文件大约有八千多行客户记录、个人Outlook联系人、企微群聊天里的历史报单消息、以及另外一套旧系统导出的CSV文件。最初我以为半天就能整理完实际花了整整一周。5.1 数据清洗的目标不是“完整”而是“可用”当时犯过的一个错误是一开始想保留所有字段结果Excel里那些完全没填的列和格式不统一的单元格给清洗工作添了很多麻烦。后来我们定了一个原则保留业务使用所必需的字段其余字段能丢就丢等以后再补。具体清洗流程大概分五步去重。以客户名称为主键手机号为辅助键把重复的客户合并。合并时保留最新联系记录、最近跟进人。格式统一。电话号码统一成11位数字格式日期字段统一成YYYY-MM-DD金额字段统一成数字格式元。状态修正。凡是Excel里标了“已成交”但没有任何合同或订单记录的全部降级为“意向明确”避免误导后续跟进。归属确认。客户的负责人比对当期销售名单离职人员的客户全部抛回线索池重新认领。敏感信息检查。身份证号、银行账号等非必要敏感信息一律不迁入新系统避免权限泄露风险。清洗完成后八千多条原始记录只剩不到六千条有效数据少了四分之一。这种“缩水”在数据迁移里是非常正常的不要为了保住数量而把垃圾数据也倒进去否则后续维护的代价更大。5.2 迁移操作的顺序和验证方法正式导入的时候我们也做了非常保守的顺序控制。因为客户表、跟进记录、工单表之间存在外键关联导错顺序会导致关联失败。我采用的导入顺序是先导入客户基础档案表再导入跟进记录表最后导入工单表和工单操作日志表。每导入完一个表就立刻跑一次数据验证脚本用Python写的小脚本检查关联字段是否有孤儿数据例如跟进记录引用了一个不存在的客户ID或者工单的创建人ID在用户表里找不到。这三类问题在数据迁移中几乎都会出现越早发现越容易修。有个经验可以分享导入时不要一次性全量导入而是按批次每批次500条导入。这样万一遇到数据格式错误日志里定位到具体批次会容易很多不需要去几十万行的文件里大海捞针。6. 真正上线前的临门一脚测试、培训和上线策略系统开发完、数据清洗完并不代表可以马上上线。有一句做系统的人常说的话上线前的测试和培训决定了第一个月大家是夸你还是骂你。6.1 先让“种子用户”试用了两周把问题暴露在正式上线前我们没有选择直接全员培训然后立刻上线而是从销售部和客服部各挑了两位同事当种子用户。要求只有一个每天真实地使用系统处理手头客户和工单发现问题随时截图反馈我们每天下班后集中修复。种子用户测试阶段发现的问题数量其实不少很多都是开发者视角看不到的列表页的“下一步计划”显示的是时间戳而不是“明天下午三点”这种自然语言键盘回车键在客户搜索框里没有绑定搜索事件销售习惯输完直接回车结果搜不出来快速新增跟进记录默认弹出来的时候没有自动带出客户名称工单分配规则有漏洞一个客户如果有多个未关闭工单会被重新分配导致重复处理。这些细节如果不经过真实使用光靠代码评审很难发现。所以我把“种子用户测试”当成上线前绝对不可省略的环节不是走形式而是真的需要留出一周左右的时间。6.2 培训的节奏先讲好处再讲操作培训环节我们也没按常规上来就演示每个功能而是先花了二十分钟讲了一个问题这套系统能帮你解决什么麻烦。比如销售以后不用再翻聊天记录去查客户上次说了什么客服接电话一秒钟就能看到客户历史工单。先让大家意识到系统对“自己”的帮助再演示操作接受度会明显不同。操作培训分三场每场不超过四十分钟第一场客户管理和跟进记录操作销售参与第二场工单处理和客户档案联动客服、技术支持参与第三场数据报表和权限管理管理层、部门主管参与。每场培训最后留十五分钟现场实操和提问。有些问题当场答不上来的我们记录下来第二天给答案。培训结束后把常见问题的操作指引发到企微群减少后续重复问询。上线策略上我们选择了周一早上正式切换然后连续两周每天中午开十五分钟的“使用情况快会”每个部门轮流反馈问题当场记录、排期、答复。这两周是系统稳定性的关键期几乎每天都有新问题冒出来比如某些权限配置不对导致销售看不到客户或者导入工单时的状态值不匹配导致报表统计异常。好在这些问题都能快速修团队整体情绪也还算稳定两周后进入平稳期。7. 上线之后系统不是“做完”的而是一路“养”出来的系统上线至今已经大半年有些当初预料到的问题逐步出现了也有一些新需求是业务跑到那个阶段才冒出来的。分享几个对我们影响较大的调整给大家做参考。7.1 工单模块的“关联回写”是最值得做的增强在MVP阶段工单和客户档案只是做了单向关联客服创建工单时关联客户但工单的处理结果并不会反馈到客户档案里。很快业务部门就提了一个新需求管理层想在客户列表上一眼看到这个客户有没有未关闭的工单、工单处理有没有超时。于是我们在第二阶段加了一个“工单状态摘要”回写字段每当工单状态变更时自动更新客户档案上的“最近工单状态”和“最近工单时间”。这个功能对客服和销售的协作帮助很大销售在联系老客户之前先看一眼工单状态如果上面显示“有未关闭的投诉工单”销售就会调整沟通策略而不是在客户已经在气头上的时候还去推产品。这种跨模块的数据联动才是CRM真正发挥作用的地方——它不只是一个通讯录而是一个承载了客户与公司所有交集的载体。7.2 销售阶段的字段值也是在运行中才调成合理状态的当初设计销售阶段时我参考了常见的销售漏斗理论设置了“初步接触、需求挖掘、方案展示、商务谈判、赢单/输单”六个阶段。结果用了两个月销售反馈最多的问题是阶段跳来跳去有些客户今天谈方案明天又回到需求确认导致报表上的漏斗数据很难看销售主管也不好管理。我们内部的调整方案是不是改变阶段值而是新增了一个“回退原因”必填字段每次阶段回退时都需要选择原因客户预算调整、需求变更、关键联系人变动、竞品介入、其他。这样一来漏斗图上即使出现回退也能追踪到底是因为什么管理动作从责怪销售变成了分析原因。这个改动虽然很小但对销售团队的汇报质量提升很大。7.3 数据报表最容易被忽略却能带来最大价值的功能MVP阶段我只做了几张基础报表后来发现报表是管理层使用系统最频繁的入口。销售主管每天看的是个人跟进量排名和阶段转化率管理层看的是新增客户趋势和工单平均响应时长。这里有一个关于报表的实话报表不是越复杂越好关键是管理者和执行层要看到自己最关心的那几个数字。我们最终在仪表盘页只放了八个核心指标本周新增客户数本周新增线索数线索认领率认领/公池线索总数客户阶段转化率上一阶段到下一阶段的转化比例平均跟进间隔天未关闭工单数工单平均响应时长本月预计成交金额合计。这些指标的SQL都不复杂但叠加了权限范围后销售看自己的、主管看团队的、管理层看全公司的就成了各级管理者都离不开的一个数据入口。尤其是“平均跟进间隔”这个指标原本不在计划里后来销售主管提出来说想监控销售是否在持续跟进客户而不是只做一次性联系我们加进去以后效果非常好销售团队对客户触达的节奏感明显提升了。8. 写在最后的几条实际经验项目走到这里我觉得可以对DeskcommCRM做一个小结了。谈不上什么高深的理论更多是几个用时间换回来的体会。第一CRM系统的成功七分在业务梳理三分在技术实现。你如果连自己的客户流转链路都说不清楚再牛的软件也帮不上忙。先画好业务流、定好需求边界再谈技术和功能。第二权限和字段宁可少而精不要多而杂。字段、权限每多一个配置就多一分维护成本和理解成本。刚开始MVP阶段砍掉的需求到后面有一部分自然会回来但回来的都是真正验证过有必要的。第三自研系统不是一次性交付而是长期运维。我们团队这段时间持续在做的不只是改Bug更多的是和业务部门一起重新理解流程、优化协作方式。CRM这个系统的价值是在持续使用中逐渐长出来的不是在功能上线的那一刻就定型的。如果你所在的公司也在考虑CRM系统的选型或自建我建议你先把Excel里的客户数据导出来认真看一遍数据质量那往往就是当前管理状态的真实投影。理清需求、控制范围、尊重使用习惯稳扎稳打地推进最终效果大概率会让你满意。

相关推荐

从选型到落地:DeskcommCRM在销售客服团队的实战复盘
从选型到落地:DeskcommCRM在销售客服团队的实战复盘

1. 为什么我在一堆CRM里盯上了DeskcommCRM做客户管理这件事,很多团队都卡在同一个地方:工具换了好几轮,客户数据还是乱的。我之前带过一个十来人的销售加客服混合团队,最早用共享表格记录客户,后来换过轻量级在线CRM&a… · 2026/9/25 14:53:52

Rufus离线安装Windows 11 LTSC跳过微软账号教程
Rufus离线安装Windows 11 LTSC跳过微软账号教程

1. 项目概述:为什么这个操作值得花30分钟认真做一遍 Rufus 离线安装 Windows 11 LTSC,跳过微软账号、直接建本地账户——这短短一句话背后,藏着大量普通用户在实际装机过程中反复踩坑、反复重试、最后靠论坛零散帖子拼凑出的“生存指南”。我… · 2026/9/25 14:53:46

SQL Server 样本库 SQL Assessment API Probe Reference 完全指南:探针引用的 JSON 结构与数据编排实战
SQL Server 样本库 SQL Assessment API Probe Reference 完全指南:探针引用的 JSON 结构与数据编排实战

示例工程数据库教程后端 【免费下载链接】sql-server-samples Azure Data SQL Samples - Official Microsoft GitHub Repository containing code samples for SQL Server, Azure SQL, Azure Synapse, and Azure SQL Edge 项目地址: https://gitcode.com/gh_mirrors… · 2026/9/25 14:53:40

Atlas 300V 24G推理加速卡部署YOLO全流程详解
Atlas 300V 24G推理加速卡部署YOLO全流程详解

1. Atlas 300V 24G到底是一张什么卡,凭什么能跑YOLO先说结论:Atlas 300V 24G确实是一块AI运算加速卡,而且是一块专门为推理场景设计的加速卡。很多人第一次看到“300V”这个名字会误以为是显卡,或者以为是某种视频采集卡&#xff… · 2026/9/25 15:28:58

CiLocks钓鱼页面设计解析:仿Instagram特效页背后的社会工程心理学
CiLocks钓鱼页面设计解析:仿Instagram特效页背后的社会工程心理学

CiLocks钓鱼页面设计解析:仿Instagram特效页背后的社会工程心理学 【免费下载链接】CiLocks Crack Interface lockscreen, Metasploit and More Android/IOS Hacking 项目地址: https://gitcode.com/GitHub_Trending/ci/CiLocks CiLocks 是一款面向 Android/… · 2026/9/25 15:28:58

Atlas 300V 24G推理卡部署YOLO:从ONNX到OM全流程解析
Atlas 300V 24G推理卡部署YOLO:从ONNX到OM全流程解析

后台最近被问得最多的两个问题,一个是“atlas 部署 yolo 怎么搞”,另一个是“atlas 300v 24g 是运算加速卡吗”。我一听就知道,问的人多半刚接触昇腾这套东西,手里要么有张卡不知道干啥,要么正准备上视频分析项目。先说… · 2026/9/25 15:28:52

从零搭建AI Agent工具链:CLI、MCP与OpenRouter实战指南
从零搭建AI Agent工具链:CLI、MCP与OpenRouter实战指南

1. 从"treg"这个模糊词说起:它到底指什么第一次看到"treg"这三个字母,我脑子里蹦出来的第一反应是生物学里的调节性T细胞(Regulatory T cell,缩写Treg)。但结合后面跟着的一串热词——OpenRouter、… · 2026/9/25 15:28:39

当ChatBI进入企业,如何守住数据底线?零数据保留策略的边界与落地
当ChatBI进入企业,如何守住数据底线?零数据保留策略的边界与落地

导语 不少企业接入ChatBI(基于大模型的智能对话式BI,可让业务用自然语言直接问数分析)后,一边享受着业务自助分析效率的提升,一边又陷入了数据安全的焦虑:原始业务数据会不会流出去?大模型会不会… · 2026/9/25 15:28:26

ng-zorro-antd Flex 组件对齐方式(nzAlign)完全指南:交叉轴对齐实战与源码级原理解析
ng-zorro-antd Flex 组件对齐方式(nzAlign)完全指南:交叉轴对齐实战与源码级原理解析

UI组件前端 【免费下载链接】ng-zorro-antd Angular UI Component Library based on Ant Design 项目地址: https://gitcode.com/gh_mirrors/ng/ng-zorro-antd 点击查看 免费下载 nz-flex 是 ng-zorro-antd 提供的块级弹性布局容器指令,对齐方式&#x… · 2026/9/25 15:28:14

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码