BizLink · bizlinkbiz.com · 补充件 V1.0

后端选型决策 · 开源集成边界 · 供给侧获客引擎 · AI 企业服务产品线

本件回答四件事:后端到底选 A 还是 BDify / Chatwoot / EspoCRM 在架构里到底站哪、 被严重低估的供给侧资源采集与 AI 初对接子系统(SAE)如何落地, 以及你已有的AI 企业服务能力(外链→内链)如何成为 BizLink 的冷启动引擎——含合规红线与成本量级。

主文档补充件 V1.12026-09-17外部依赖已逐条核实 含 1 则对标高危判例8 节 · 5 图 · 27 表成本均为量级估算

00结论先行

四句话:后端锁方案 ADify 进架构但只能做 AI 层,且有一条许可证红线爬虫+AI 不是一个后台功能,它是一个独立子系统(SAE),需要单独排期采集能自动化,但"拿到电话并打过去"这一步受严格监管,自动化空间比你想的小得多

A
后端方案(NestJS 全栈)
已锁定,见 01
1 条
Dify 许可证红线
直接命中你的多租户场景
SAE
供给侧获客引擎
新增独立子系统
¥1~2 万
5 城 × 6 类机构
首年数据成本量级

0.1 对你三个质疑的直接回应

你的质疑判断我的回应
"为什么没有用 Dify?" 成立 这是我的疏漏。主文档把 AI 写成"LLM 网关 + 多模型抽象",只解决了"调哪个模型", 没解决"AI 逻辑谁编排、谁迭代、谁运营"。这一层就是 Dify 的位置,已在 03 节补上。 但我核实后发现一条你会踩的许可证条款,必须先看。
"后端方案 A 还是 B 不定" 可定 主文档给了两个方案却说"我倾向 A",这是我的表述不负责——选型不是让你猜我的心思。 01 节给一个 if/else 决策表 + 触发切换的明确条件,你按自己团队现状一分钟内能定。
"AI 和爬虫作为后端技术支持不够" 成立 完全成立。主文档只在技术架构图里给了 AI 与采集各一个框,没有流程、没有数据模型、没有质量闭环、没有成本模型。 这不是"加强一下"能解决的——04 节把它提升为独立子系统,按子系统规格重做。
"必须做好和服务商的直接交互" 要改设计 这一条我此前低估了。我原设计把服务商当"被调 API 的对象",错了。 真实情况是 90% 的服务商没有 API、不会为你开发,他们的数字化能力就是"一部手机 + 一个微信"。 05 节给了一套不依赖对方改造的直连方案(统一核销码协议)。
"我本身做 AI 企业服务
(外链 → 内链)"

你的补充,见 08 节
改变策略 这条澄清修正了我 3.2 节的一个误判(我误以为"AI 企业服务"是让客户在平台上自助配 Agent)。 更重要的是:它解答了我在主文档里反复强调却没给答案的问题——冷启动的种子客户从哪来。 你已有的企业客户关系 + 深入企业内部的位置,正是 BizLink 最缺的东西。 冷启动策略因此从"先建平台再找客户"改为 "用已有客户定义平台第一批功能"
00.2 因你的补充而更新的两条结论
  1. 冷启动时间表可以大幅提前。主文档建议"第 5 个月用人工跑通一场真实培训会", 前提是那时要从零找客户。你现在就有可触达的企业客户, "跑通第一场"这件事可以在 60 天内发生——前提是这些客户中确实存在培训会需求(8.4 风险②给了验证方法)。
  2. Dify 的职责要收窄。原计划是"全部 AI 逻辑都走 Dify",现在改为 Dify 只做内部运营 AI,对客 AI 产品(AI 官网 / AI 办公)自建—— 因为后者要给多家企业交付,会实质触碰多租户许可证条款。详见 8.5。

01后端选型:锁 A,附切换条件

1.1 先给结论

锁 方案 A(NestJS + TypeScript 全栈 + PostgreSQL) 理由不是"A 更好",而是在你的约束条件下 A 的风险更低。你的约束是:5~8 人团队起步、 工期长业务线长、你自己熟悉 Node/Strapi/阿里云 ECS、需要快速验证商业模式。 这套约束下,开发速度损失比运行性能损失更致命——你最大的风险是"做到一半钱烧完了还没跑通一场会", 不是"并发撑不住"。

1.2 决策表:按你团队现状对号入座

把下面 5 个问题按实际情况打分,选 A 或 B 只需看第 1 条和第 4 条,其余是校验项。

#判断条件满足 → A满足 → B
1 主导开发的人(含你自己)现在写得最快的是哪门语言?
这是决定性的一条,权重高于其他全部之和
JavaScript / TypeScriptJava
2团队规模与预期≤ 8 人,公有云 SaaS 为主≥ 10 人,或有大客户私有化交付
3未来 12 个月最缺什么功能上线速度资深后端人手
4 是否需要给大客户做私有化交付(代码/系统装进甲方机房)?
甲方采购流程里"Java + Spring"常是隐性加分项,甚至写进招标文件
不需要 / 极少是核心收入来源之一
5是否已有可复用的 Java 中台/组件资产没有有完整一套
触发切换到 B 的三个条件(任一成立即改判)
  1. 你签下第一个要求私有化部署且年费 ≥ 30 万的大客户(这类客户的 IT 通常会做技术栈审查);
  2. 你能以低于市场价招到 3 名以上资深 Java 工程师,且他们能全职投入 12 个月;
  3. 你自己决定把主力开发交给一位 Java 背景的 CTO(语言跟着负责人的手走,不跟着技术评测走)。

1.3 一个我没在主文档说透的点:真正的风险不在语言

你担心选错后端。但把过去十年这类平台项目的失败原因排个序,语言选型进不了前五。 真正的杀手是下面三个,而它们和 A/B 无关:

真实风险杀伤力规避手段(与语言无关)
状态机散落 5 条业务流程各自写 if/else 改状态,半年后没人知道一个订单到底有多少种中间态。 必须统一工作流引擎 + 状态机配置化(主文档 05 节已给出 JSON 定义)。这个做错,换什么语言都救不回来。
多租户漏过滤 一次漏 tenant_id 就是数据泄露事故。RLS + ORM 拦截器 + CI 卡口三重保险(主文档 04 节)。
外部依赖侵入业务代码 道旅/美团/停车厂商的接口直接写在订单服务里,接口一变全站改。 全部收口到 Adapter 层 + 人工兜底通道(主文档 03 节)。

结论:不要在 A/B 之间反复权衡,这是低价值决策。把精力放在上面三条上,它们的回报高一个数量级。

1.4 关于"业务线长"的架构补充

你说"业务线很长",这在工程上的正确解法不是换语言,是划清模块边界。给一条可执行的硬规则:

模块间通信的三条铁律(写进代码规范,Code Review 卡)
  1. 禁止跨模块直连数据库表。A 模块要 B 模块的数据,只能走 B 模块暴露的 Service 接口或内部事件。
  2. 跨模块的写操作,一律走领域事件(BullMQ 或 Postgres 事务性发件箱),不写同步调用链。 这样将来任何模块想独立部署,拆出去只是物理拆分,不用改逻辑。
  3. 每个模块独立目录、独立 Prisma schema 文件、独立导出 API,禁止 import 另一个模块的 internal/。 用 ESLint 的 no-restricted-imports 规则强制。

做到这三条,即使你今天用"模块化单体"(A),将来业务真的大了要拆微服务或换语言重写某个模块, 都是可控的局部手术而不是推倒重来。这才是应对"业务线长"的正确姿势——用边界换未来的灵活性,而不是用语言

02开源系统的集成边界(Chatwoot / EspoCRM / Dify / n8n)

你熟悉开源项目、倾向用开源降本——这个方向完全正确。但集成开源系统有个致命陷阱: 让业务状态住进了开源系统的数据库里。一旦如此,你的核心业务就被别人的数据模型绑架了, 将来想换掉它的成本等于重写业务。这一节就是划清"谁拥有什么数据"。

2.1 核心原则:一个数据只有一个 Owner

数据唯一 Owner其他系统说明
租户 / 用户 / 角色自建 IAM只读订阅多租户的根,绝不能交给开源系统管。所有系统通过 SSO 统一登录。
客户 / 学员 / 服务商主体自建 CRM 域同步过去EspoCRM 里可以有副本,但以自建为准,单向流出。改动必须回流审批。
活动 / 报名 / 摊位 / 订单 / 结算自建核心域不进开源系统你的命脉。任何开源系统都只是"看",不能"写"。
客服会话 / 消息记录Chatwoot自建只读引用会话天然属于客服系统,让它当 Owner。自建只存 conversation_id 用于跳转。
销售线索跟进过程EspoCRM自建触发创建销售日常在 EspoCRM 里跑。但线索的来源与最终成交状态回写自建,否则你统计不出"SAE 采集 → 签约"的转化率。
AI 应用 / Prompt / 知识库Dify自建调用Prompt 迭代是高频动作,放在 Dify 里让运营也能改,不要硬编码在后端。
反面案例:这是集成开源系统最常见的死法

某团队用 EspoCRM 当客户主数据,销售在 EspoCRM 里改客户信息。 后来要做"一个学员可属于多个租户"(你的场景就有),发现 EspoCRM 的数据模型不支持, 于是加自定义字段硬改 → 半年后 EspoCRM 升级,自定义字段冲突 → 业务停摆两周改回去。

教训:开源系统的价值在于"它擅长的工作流",不在于"它的数据模型刚好能装下你的业务"。 把业务语义留在自己手里。

2.2 四个开源系统的定位与集成方式

系统在你的架构里的角色是否对外可见集成方式与关键注意点
Chatwoot
开源客服/IM
统一客服与站内信。承接学员咨询、服务商咨询、客户工单。也是 SAE 里"AI 初对接"的人工接管端。 嵌 widget SSO(OIDC)打通,用户免登。
关键动作:把自建的 tenant_id 写进 Chatwoot 的 custom_attributes,用它的 Teams + 自定义视图做租户级会话隔离—— 但注意 Chatwoot 的隔离是"视图级"不是"数据级",客服能看到其他租户会话。 若客户对隐私要求高,需要二开或改用"每租户一个 Inbox + 严格权限组"。这一点要在 PoC 阶段验证,别等上线才发现。
EspoCRM
你已在用
平台侧销售与渠道管理。管:业务员/代理商的线索池、服务商拓展跟进、商务谈判记录。 用于客户的私域学员管理。 仅内部 通过 REST API 双向同步:
· 自建 → Espo:SAE 产出的服务商线索自动建 Lead
· Espo → 自建:线索状态变更(已联系/已签约)回写,用于计算 SAE 转化率
坑:EspoCRM 的 API 是 ORM 风格,字段名会随实体定义变化,必须封装一层防腐层(ACL),不要在业务代码里直接拼字段名。
Dify
AI 应用编排
全部 AI 逻辑的编排与运行时。见 03 节详述。 仅 API 自建后端通过 POST /v1/workflows/run 调用,传 user 字段承载 tenant 标识用于审计。 绝不让终端用户直接接触 Dify 的界面或 API——既是许可证要求,也是安全要求。
n8n
(可选)集成胶水
低频、非核心的系统间集成:如每日同步报表到飞书、供应商账单邮件归档、监控告警转发。 仅内部 建议一期先不上n8n 与 Dify 能力有重叠(n8n 有 1000+ 集成节点,Dify 强在 LLM/RAG)。 两者都上的团队通常的分工是:n8n 做触发器与系统连接,Dify 做 AI 推理,n8n 通过 HTTP 调 Dify。 但在你一期人手紧张时,两套编排系统是两套运维负担。先用代码写定时任务,等集成需求超过 10 条再引入 n8n。
注:n8n 采用 Sustainable Use License(fair-code),自托管内部使用免费, 但把它作为服务转售给客户需商业授权——与 Dify 的多租户条款是同一类问题,引入前先看清楚。

2.3 统一身份:SSO 是集成的地基

四个系统 + 自建后端,如果不做 SSO,用户要记 4 套密码、运营要在 4 处开账号—— 这套东西上线三个月就会被人绕过。做法:

客户 / 学员 Web · H5 · 小程序 平台运营 内部后台 业务员 / 代理商 移动办公 服务商 核销 / 接单 自建 IAM · IdP Keycloak / Ory / Authelia 或自研 OIDC Provider tenant_id 写进 JWT claims 自建核心后端 活动/摊位/订单/结算 Dify 仅后端 API 调用 Chatwoot OIDC + tenant 属性 EspoCRM 内部销售用 为什么必须先做 SSO ① 一处禁用账号,全平台立即失效(离职/解约风控) ② tenant_id 随 JWT 传递,各系统无需重复查库 ③ 审计日志能串起"谁在哪个系统改了什么" ④ 避免密码散落 → 最现实的安全事故来源 注意 Chatwoot 社区版 SSO 需确认版本支持情况; Dify 的 SSO 属企业版特性,社区版需用 「仅后端调用 + 不开放 Dify 界面」绕过(见 03 节)。
图 1 — 统一身份链路。IdP 是整个集成架构的地基,必须在引入第二个开源系统之前就搭好, 否则每上一个系统就要补一次账。

03Dify 的定位、红线与工作流清单

3.1 先说为什么主文档漏了它

主文档写的是"LLM 网关 + 多模型抽象",这只解决了"调哪个模型、限不限流、怎么降级"。 但你的业务里 AI 要做的是跨多步的逻辑——比如"拿到一条机构数据 → 判断它是不是连锁酒店 → 提取可承接的会议规模 → 生成一段首触话术 → 决定该派给哪个城市的业务员"。这是编排(Orchestration)问题,不是调用问题。 自己用 LangChain 写这套,代码量不大但迭代极痛苦:换个 Prompt 要发版、运营不能改、没有执行日志。Dify 解决的就是这一层。

3.2 ⚠️ 一条你必须先看的许可证条款

Dify 不是纯 Apache 2.0 —— 它有一条直接命中你场景的限制

我拉取了 github.com/langgenius/dify 的 LICENSE 原文(Modified Apache 2.0),附加条款第 1 条 a 款:

# 原文
1. Dify may be utilized commercially, including as a backend service for
other applications or as an application development platform for enterprises.
Should the conditions below be met, a commercial license must be obtained
from the producer:

a. Multi-tenant service: Unless explicitly authorized by Dify in writing,
you may not use the Dify source code to operate a multi-tenant environment.
    - Tenant Definition: Within the context of Dify, one tenant corresponds
      to one workspace. The workspace provides a separated area for each
      tenant's data and configurations.

b. LOGO and copyright information: In the process of using Dify's frontend,
you may not remove or modify the LOGO or copyright information...

中文要点:未经 Dify 书面授权,不得用其源码运营"多租户环境"; 而条款明确定义 —— 一个 workspace(工作区)= 一个租户

这对你意味着什么:三种用法,两种安全,一种要谈

用法判定说明
① 全平台共用一个 workspace
所有租户的 AI 请求都打到同一个 Dify workspace, tenant_id 作为变量传入,不按客户开 workspace
安全 这是你要走的路。条款约束的是"运营多租户环境",而你没有按租户切 workspace, 整个平台对 Dify 而言是"一个租户"。这也是绝大多数公司自托管 Dify 的用法。
配套动作:禁止终端用户访问 Dify 界面,全部通过后端 API 中转(同时也是安全最佳实践)。
② 给每个客户开一个 workspace
客户 A 一个空间、客户 B 一个空间, 甚至允许客户登录 Dify 自己配 Agent
触发限制 这就是条款字面禁止的用法。如果你打算把"客户可自定义 AI Agent"作为产品卖点 (你的规划里有"AI 企业服务",要警惕这一点),必须提前与 LangGenius 谈商业授权。 不要等上线了再谈,那时议价权最低。
③ 修改 Dify 前端并对外提供服务 触发限制 条款 b 款禁止移除/修改前端 LOGO 与版权信息(注意:不使用其前端则不受此条限制)。 所以 方案①同时规避了 a 与 b 两条——你只调 API、不碰前端,两条都不触发。
我的建议(不是法律意见)
  1. 一期严格走用法①:单 workspace + 纯 API 调用 + 不开放 Dify 界面。这是最稳的姿态。
  2. 提前做一件事:给 business@dify.ai(或官网商务入口)发一封邮件, 简要说明你的业务形态与用法,争取书面确认。即使对方不回复,你也留下了"已主动确认"的记录—— 这在将来有争议时非常重要。成本是一封邮件,收益是风险归零。
  3. 在架构上留退路:所有 AI 调用走自建的 AiCapability 接口,Dify 只是其中一个实现。 万一将来要换掉,改动只在一个 Adapter 内。这是应对任何开源依赖的正确姿势,不只针对 Dify。
  4. 本节内容是技术事实整理,不构成法律意见。若 AI 能力会成为收费卖点,请让法务过一遍。

3.3 Dify 在你架构里的确切位置

Web / H5 / 小程序 客户 · 学员 · 服务商 · 运营 自建核心后端(NestJS) 业务状态机 · 事务 · 权限 AiCapability 抽象接口 自建防腐层 · 可替换 Dify(单 workspace) 工作流 · RAG · Agent · 模型路由 HTTP 核心设计约束(这一条比选什么 AI 平台更重要) Dify 只做推理,不做写入。所有工作流输出结构化 JSON(建议 + 置信度 + 依据), 由自建后端决定是否落库、是否执行。AI 永远不直接改业务数据。 理由:LLM 会出错,让它直接写库等于把数据一致性交给概率。且一旦 AI 有写权限,审计与回滚都无法做。 模型层(可插拔) DeepSeek / Qwen / 海外模型 模型路由·降级 知识库(RAG) 课程 · 课件 · 服务商档案 由后端推送入库 人工确认环节 运营复核 · 一键采纳/驳回 低置信度 → 转人工 成本 / 审计台账 按 tenant 归集 token 成本 记账 为什么不让前端直连 Dify: ① 许可证(避免构成多租户环境) ② 密钥不落地客户端 ③ 可按租户限流与计费 ④ 可审计每条 AI 输出的输入与依据
图 2 — Dify 在架构中的位置。关键不是"用了 Dify",而是"AI 只推理不写入"这条边界—— 它决定了你的系统能不能在 AI 出错时优雅降级。

3.4 一期要跑的 Dify 工作流清单

按优先级排序。前 4 个属于 SAE(见 04 节),是你现在最需要的;后几个按业务节奏后置。

ID工作流触发方式输入 → 输出(结构化)
SAE-01机构信息清洗与结构化采集入库后异步 原始抓取文本 → {name, city, district, address, category, phone[], contact, capacity_hint, source_url}, 并标记 confidence。低置信度转人工。
SAE-02能力打标与分级SAE-01 之后 机构档案 → {can_host_training, max_pax, has_catering, has_parking, price_band, tags[]}这一层优先用规则 + 关键词,AI 只处理规则判不出的部分(降本且可控)。
SAE-03合作意向初筛评分批量(夜间) 机构档案 + 你方需求 → {score 0-100, reason, recommended_approach}。 用于决定"值得打电话"还是"只发短信"。
SAE-04首触话术生成运营点击生成时 机构档案 + 触达渠道 → 一段 80~150 字的个性化开场白(必须含身份明示与退订说明,见 06 节)。 输出后必须人工过一遍才能发送
CRM-01客户咨询意图识别与分派Chatwoot 新会话 会话文本 → {intent, urgency, suggested_assignee, draft_reply}。 坐席看到 AI 草稿,确认后发送。
OPS-01异常订单诊断订单异常事件 订单轨迹 + 供应商返回 → {root_cause_hint, suggested_action, need_human}典型场景:道旅下单超时、酒店满房、摊位超卖。
MATCH-01服务商 ↔ 需求匹配活动创建时 活动需求(城市/人数/预算/日期)→ 候选服务商排序。一期用规则打分即可,AI 只做"补充说明为什么推荐"
CONTENT-01课件结构化与摘要后置 上传的 PDF/PPT → 章节结构 + 摘要 + 标签。服务于需求 1,但如前所述内容分发 API 受限,建议后置。
REC-01课程 / 项目推荐后置 没有 1 万条以上真实行为数据之前不要做。冷启动期用规则推荐(同城、同行业、同价位),效果更可控也更省钱。

3.5 部署与运维的现实参数

项目参数与建议
最低配置官方 Docker Compose 起步要求 2 核 CPU / 4 GB 内存。但这只是"能跑"。
建议生产配置4 核 / 8~16 GB 独立 ECS 实例。Dify 是模块化多容器栈(web / api / worker / db / redis / vector / nginx / ssrf_proxy 等), 容器数量在 10 个量级,和你的业务后端挤在一台机器上会在高峰期互相拖垮
向量库一期用内置即可。若你后续已自建向量设施(含此前调研的 WeMM-Embedding 路线), 可通过外部向量库接入,但一期不建议为此增加复杂度。
调用方式POST /v1/workflows/runresponse_modeblocking(后端同步等待); 交互式场景(如客服)用 streaminguser 字段传 tenant_id:user_id 便于审计。
版本升级Dify 发布节奏很快(官方称已发布 160+ 版本)。这会成为真实运维负担: 建议锁定版本、每季度评估一次升级,不要跟随 latest。
成本量级服务器 ¥200~500/月 量级(阿里云 ECS 4C8G,以实时官网报价为准); 模型推理成本极低——见 04.8 的测算,SAE 全量跑一遍 AI 打标的 token 成本在百元量级
一句话总结 Dify 的价值边界买不到"智能",它买到的是:让运营人员也能改 Prompt 和流程、让每次 AI 调用有执行日志、让模型可随时换。 如果你的 AI 逻辑只有 2~3 个简单调用,其实不需要 Dify;但按你的业务线长度,AI 逻辑会累积到几十处, 没有编排层就一定会变成散落各处的硬编码 Prompt,那是维护灾难

04供给侧获客引擎 SAE(Supply Acquisition Engine)

你说"'AI 和爬虫'作为后端技术支持不够"——这句话是对的,而且比你想的更对: 它根本不是后台的一个功能模块,它是一个有自己数据模型、自己的调度、自己的人工工作台、自己的合规边界的独立子系统。 本节按子系统规格重做。先给一个可能改变你想法的判断。

最重要的一句话:你不需要"全量抓取每个城市的所有机构"

我核实了高德地图开放平台搜索 POI 2.0 官方文档(lbs.amap.com/api/webservice/guide/api-advanced/newpoisearch, 最后更新 2026-07-15),其中明确写着:

# 高德官方文档原文
目前搜索是不支持返回全量数据的,同请求参数翻页查询最多支持获取 200 条数据
(page_size 取值 1-25)

这意味着"把一个城市所有酒店/会场的电话都抓下来"在技术上就做不到——不是难,是接口层面直接卡死。

但这恰恰是好事。因为你的真实需求从来就不是全量:一个二线城市能承接 100 人以上培训会、且有餐饮住宿配套的场地, 撑死也就几十家。你需要的是头部供给的精准名录,不是工商登记里的几万条。 想清楚这一点,采集量级从"几十万条"降到"几万条",成本、工期、合规风险同时下降一个数量级。

4.1 SAE 的目标与产出定义

维度定义
一句话目标 把"找到某城市可合作的服务商并谈成协议"这件事,从纯人工变成 70% 机器做、30% 人做, 且全过程可量化、可预测、可交接。
输入 城市 + 服务商类别(场地 / 会展布置 / 视频拍摄 / 媒体传播 / 酒店 / 餐饮 / 停车)+ 可选的能力要求(人数、预算带)
输出 不是"一堆数据",是一条「已核实、已触达、已确认意向」的服务商档案,可直接进入商务谈判环节。
成功的度量 不是"采集了多少条",而是 「单家服务商的获取成本(元)」「从线索到签约的转化率(%)」。 只考核采集条数必然导致灌水数据。
明确不做 不做对外数据售卖、不做数据 API 对外输出。采集数据仅供本平台业务使用——这一点直接决定合规姿态(见 06 节)。

4.2 数据源分层:四条路,成本与合规差别极大

把你说的"自动抓取"拆开看,实际上是四类完全不同的数据源,混为一谈是设计失败的根源。

数据源合规成本量级能拿到什么 / 关键限制
L1 地图 POI API
高德 / 百度地图开放平台
Web 服务 API
最稳 免费额度内 首选主力源
能拿到:名称、地址、经纬度、联系电话(需 show_fields=business 返回 tel 字段)、 营业时间、商圈、评分、人均消费、停车场类型(parking_type、实景照片。
限制:翻页上限 200 条/组合;须用「城市 + 类型码 + 多组关键词」定向召回,不能全量拉取。
配额:官方文档未在我核实页面明示个人/企业免费额度;第三方资料称个人约 5000 次/日、企业认证约 3 万次/日, 该数字为二手信息,请以开放平台控制台实时显示为准
L2 商业工商数据 API
企查查 / 天眼查 / 启信宝
较贵 用于"核验"而非"采集"。企查查官方报价(openapi.qcc.com)示例: 企业模糊搜索 0.10 元/次(每次最多返回 5 条);企业信息核验 1.00 元/次(含联系信息、经纬度、企业规模等); 客户身份识别 3.00 元/次。价格以官网实时报价为准。
正确用法:只对已进入商务谈判前的少数机构调用(见 4.8 的分层调用策略), 绝不要对全量名单调用,否则账单会失控。
L3 自有沉淀 + 反向入驻
业务员录入 · 活动积累 · 服务商自助入驻
最稳 几乎为零 质量最高、被严重低估
· 每办完一场会,场地方的现场表现就是最真实的评分
· 做一个"服务商自助入驻"页面:地推时给二维码,对方自己填资料、传营业执照、选可承接的能力。 对方主动提交 = 天然授权,零合规风险,且信息准确率远高于抓取。
这一条我建议你一期就做——它比爬虫的 ROI 高得多。
L4 公开网页抓取
机构官网 · 行业目录 · 公开黄页
有边界
但隐性成本高
只抓机构自己的官网(获取官方联系方式与业务介绍),不抓搜索引擎、不抓企查查/天眼查等数据平台
为什么是这条红线——见 06 节那则判例,它与你的需求高度对标。
隐性成本:页面结构各异、反爬对抗、持续维护解析规则。投入产出比通常不如 L1 + L3。
推荐的配比(首年)
60% · L1 地图 POI

拿名录与联系电话,免费额度内,立即可用

25% · L3 自助入驻 + 沉淀

质量最高,对方主动提供,零合规风险

10% · L4 官网抓取

只做补充字段(官网、业务介绍),不做主力

5% · L2 工商核验

仅谈判前核验资质与风险,控制调用量

注意这个配比里"爬虫(L4)只占 10%"。这和你原本的设想不同,但它更省钱、更快、更安全。

4.3 采集层架构

① 采集任务编排 CrawlJob(任务定义) city + category + keywords[] + typecode + page_limit 调度:BullMQ 延迟队列 限速:令牌桶,可配置 重试:指数退避 + 死信 每个源一个独立限速策略 节制原则(写死在代码里) · 单域名 QPS ≤ 1,随机抖动 · 遵守 robots.txt 与 ToS ② 接入适配器 AmapPoiAdapter(L1 主力) QccVerifyAdapter(L2 核验) OfficialSiteAdapter(L4) SelfServiceAdapter(L3) 统一接口: fetch(job) → RawRecord[] ③ 清洗 · 去重 · 归一化 统一字段:名称/地址/电话 地址 → 经纬度(地理编码) 电话 → 号段清洗 + 去重 去重键优先级: 统一社会信用代码 › POI ID › 名称+地址 hash › 电话 ④ 质量分与分级 completeness 字段完整度 freshness 数据新鲜度 source_weight 源可信度 cross_validated 多源印证 → quality_score(0-100) ≥70 自动流转 · <70 转人工核实 ⑤ 落库与流转 supply_lead(原始线索池) 保留原始快照 + 来源 + 抓取时间 永不物理删除,便于追溯 supply_org(正式档案) 去重合并后的主体 关联 capability / contact 运营确认工作台 人工核实 / 补充 / 驳回 见 4.6 outreach(触达) AI 生成话术 → 人工确认 → 发送 见 4.7 · 合规约束见 06
图 3 — SAE 数据流水线。两个关键设计:原始线索(supply_lead)与正式档案(supply_org)分表存储, 原始快照永不删除——将来出现"这家机构说我们从没授权你们联系我"的争议时,你拿得出抓取时间、来源 URL 与原始内容。

4.4 数据模型(新增实体)

以下是 SAE 需要新增的核心表,与主文档 21 个实体的关系是: supply_org 在服务商确认合作后升级为 ServiceProvider(主文档已有实体), SAE 的实体位于它上游。

// ① 原始线索(只增不改不删,保留抓取现场)
supply_lead {
  id, dedup_key(唯一索引), source(L1_MAP|L2_QCC|L3_SELF|L4_WEB),
  source_url, raw_json(jsonb),          // 原始响应全量留存,争议追溯依据
  fetched_at, job_id,
  status(NEW|PARSED|MERGED|REJECTED|DUPLICATE)
}

// ② 正式档案(SAE 的主产出)
supply_org {
  id, name, alias, category(场地|会展布置|视频拍摄|媒体传播|酒店|餐饮|停车|其他),
  city_code, district, address, lng, lat,
  uscc(统一社会信用代码, 可空), poi_id(可空),
  website, intro,
  quality_score(0-100), confidence(0-1),
  verify_status(UNVERIFIED|AI_VERIFIED|HUMAN_VERIFIED|FIELD_VERIFIED),
  lifecycle(LEAD|CONTACTED|NEGOTIATING|SIGNED|COOPERATING|CHURNED),
  owner_agent_id,                        // 归属业务员/代理商
  created_at, updated_at, last_verified_at
}

// ③ 联系人(一个机构多人,区分"公开座机"与"个人手机")
supply_contact {
  id, org_id, name, title,
  phone_type(PUBLIC_LANDLINE|PUBLIC_MOBILE|PROVIDED_BY_SELF),  // 合规关键字段
  phone_encrypted,                       // 加密存储
  consent_at, consent_channel,           // 同意时间与来源:合规证据
  is_primary, do_not_contact(bool),      // 拒触达黑名单,写入即永久生效
  source
}

// ④ 能力标签(决定能否被匹配到具体需求)
supply_capability {
  id, org_id, cap_type(HOSTING|CATERING|PARKING|SHOOTING|LIVE|EXHIBITION),
  max_pax, min_pax, indoor_area_sqm,
  has_projector, has_stage, has_parking, parking_slots,
  price_band, currency, unit(DAY|SESSION|PERSON),
  valid_from, valid_to, verified_at
}

// ⑤ 触达任务与触达记录(每一次联系都必须留痕)
outreach_task  { id, org_id, channel, template_id, status, assignee_id, scheduled_at }
outreach_attempt {
  id, task_id, channel(CALL|SMS|EMAIL|IM|VISIT),
  ai_generated(bool), human_approved_by,  // AI 生成 + 谁批的,缺一不可
  content_snapshot, sent_at,
  result(NO_ANSWER|REACHED|INTERESTED|REJECTED|INVALID_NUMBER),
  recording_url, do_not_contact_triggered(bool)
}
三个容易被忽略但会救命的字段
  1. phone_type:区分"企业公开座机"与"个人手机号"。两者的合规处理规则完全不同(见 06 节)。 不区分就无法做差异化合规策略。
  2. consent_at + consent_channel:记录"这个联系方式是怎么来的、对方是否主动提供"。 这是将来应对投诉时唯一的证据。没有它,你说不清数据来源。
  3. do_not_contact:只要对方表达过拒绝,立即置位且全平台永久生效(不因换业务员而重置)。 这既是合规硬性要求,也是避免重复骚扰的运营需要。

4.5 AI 处理流水线:AI 做什么,不做什么

把 AI 放进这条链路时,最大的错误是让 AI 从采集一路干到发送。正确做法是按"决策风险"切分, 不同环节给 AI 不同的权限。

#环节AI 权限说明
1信息结构化全自动 从原始文本抽字段。错了代价低(可人工改),且量大。适合 100% 自动化
2分类与能力打标规则优先 先用规则/关键词/类型码判定,AI 只处理规则判不出的那部分(通常不足 30%)。 理由:规则可解释、零成本、零延迟;AI 全量跑既贵又慢还不可解释。这个设计能省下 70% 的 token。
3合作意向初筛评分全自动 输出 0~100 分与理由。只用于排序,不用于淘汰——低分的进"暂不触达"池,可随时捞回。 绝不能让 AI 直接删除数据
4真实性核验AI 不做 对方是否真实存在、电话是否打得通、报价是否属实——AI 无法验证,只能靠人或交叉数据源。 这是流水线里唯一必须 100% 人工的环节,也是防止"AI 幻觉导致你带着假名录去谈"的唯一闸门。
5话术生成生成 + 人工发送 AI 生成 80~150 字个性化开场白,必须人工过目后发送。见 4.7 的合规约束。
6谈判与成交AI 不做 涉及价格、账期、责任划分。一期坚决不做 AI 自动谈判
为什么"规则优先"而不是"AI 全量"

举个具体例子:判断一家机构"能否承接 100 人以上培训"。

· 规则路径:高德 POI 类型码属于"会议展览/宾馆酒店"类 且 cost(人均)在阈值内 → 直接判定候选,0 成本、0 延迟、可解释

· AI 路径:把机构简介丢给模型问"这家能承接百人培训吗" → 要钱、要等、判错了你也不知道为什么

只有当规则判不出时(比如信息缺失、表述模糊)才调用 AI 兜底。这是把 AI 成本压到可忽略水平、同时保证可控的关键设计。

4.6 运营确认工作台(人在这里做什么)

你说"AI 初步对接,然后运营人员确认"——这个界面设计得好不好,直接决定 SAE 是省人还是费人。 给一份具体的界面规格。

区域内容与交互
① 待办队列 左侧列表,按 quality_score 降序 + 本城市本类别的缺口优先 排列。运营打开就看到"今天最该联系的 20 家", 而不是面对一个 5000 行的大表。队列来源:AI 评分 ≥ 70 且未触达。
② 机构卡片 中间区:名称、地址(带地图)、电话(点击即拨,走软电话或 Chatwoot)、AI 提取的能力标签、 多源信息对照(高德说有 200 个车位,官网说有 150 个 → 标红提示冲突,需人工确认)。
③ AI 建议区 显示 AI 给出的评分、理由、推荐话术。必须显示"依据"(引用了哪条原始信息), 否则运营无法判断该不该信——不显示依据的 AI 建议,运营三次之后就不会再看
④ 三个按钮 采纳(进入触达)/ 修正后采纳(记录修正内容)/ 驳回(必填原因)。 修正与驳回的数据必须回流——它们是优化 AI 规则与 Prompt 的唯一素材。
⑤ 触达执行 一键拨号 + 通话结果下拉(未接/已联系/有意向/拒绝/空号)+ 备注。 选择"拒绝"自动置位 do_not_contact,全平台生效。
⑥ 我的效能 顶部小指标:今日已处理 / 通过率 / 转签约数。让运营看到自己的产出,也让你看到每个人的效率差异
一个反直觉但重要的设计:把"AI 的修正记录"当成核心资产 运营每次修正 AI 的判断(比如"这家其实有停车,AI 判错了"), 都要结构化记录下来。积累 500 条修正后,你就有了一个属于你自己业务的标注数据集—— 它比任何通用模型都更懂"什么样的场地适合培训会"。这个数据集才是 SAE 长期真正的壁垒,不是爬虫技术。

4.7 "AI 初步对接"能做到哪一步:五个等级与合规边界

你希望"用 AI 和他们初步对接"。这一条我必须把话说清楚:技术上五个等级都能做, 但合规上只有前两级可以放心做。这不是保守,是因为国内对营销触达的监管近两年明显收紧。

形态合规建议说明
L0AI 只整理信息,不对外接触安全立即做 清洗、去重、分类、评分、生成内部摘要。不产生任何对外的触达行为,无合规风险。
L1AI 生成话术,人工审核后发送/拨打安全一期主推 AI 负责"说什么",人负责"按发送键"。省下的是运营写话术的时间(通常是整个环节耗时的 40%), 而每一次对外触达都有人为它负责。这是我推荐的一期形态。
L2AI 自动发短信 / 邮件有条件二期 需满足:① 明示发送者真实身份与联系方式 ② 提供一键退订且立即生效 ③ 内容不得夸大。 短信通道本身也需通过正规服务商并做实名与签名报备。
L3AI 语音外呼(机器人拨打)强监管谨慎 见下方专述。核心结论:不要自建外呼系统对外呼出,应通过持牌服务商,且需取得对方同意。
L4AI 自动谈判与议价不建议不做 涉及价格承诺与责任认定,一旦 AI 说错就是合同纠纷。至少三年内不碰。
如果一定要做 AI 外呼(L3),这些是硬门槛

以下要点来自多篇行业合规文章的归纳,多来源一致的部分我保留,口径不一致的明确标出

我的建议:一期完全不做 AI 外呼。用 L1(AI 写话术 + 人打电话)。 等你有了真实签约数据、确认这条业务线跑得通,再评估是否值得投入资质与合规成本。 在商业模式未验证前就背上电信资质与外呼合规负担,是典型的本末倒置。

4.8 成本量级测算(5 城 × 6 类,约 5000 家机构)

前提假设:每城每类用 4 组关键词 × 8 页(达到官方 200 条/组合上限),去重后总规模约 5000 家。 所有价格为量级估算,实际以各平台实时报价为准。

成本项测算金额量级说明
地图 POI 数据5×6×32 页 ≈ 960 次请求
(含重试约 1500 次)
¥0 企业认证开发者日配额内即可覆盖,这是选它做主力源的核心原因
工商核验(L2)仅对进入谈判的 Top 20%
1000 家 × ¥1.00
¥1,000 分层调用是关键:全量核验需 ¥5000,只对高价值机构核验降到 ¥1000。
AI 打标与评分5000 家 × ~1.1k token
规则过滤后约 30% 走 AI
¥50~200 可忽略按国产模型公开价格量级估算。AI 不是成本项,人工才是。
Dify 服务器4C8G ECS × 1 台¥200~500/月 独立部署,不与业务后端争资源。
人工核实大头5000 家 ÷ 80 家/人日
≈ 62 人日 ≈ 3 人月
¥15,000~25,000 这才是 SAE 真正的成本中心。按 ¥6~8k/人月估算。
合计(首轮 5 城铺开):约 ¥1.7 万 ~ 2.7 万 其中 数据与 AI 合计不到 8%,人工占 90% 以上
这个测算最重要的结论 SAE 的经济价值不在于"省数据费"(数据本来就很便宜),而在于"省人工"。 假设转化漏斗为 5000 线索 → 1000 有意向 → 200 进入谈判 → 50 签约: 漏斗各层转化率是假设值,必须用你第一场真实活动的数据替换。但结论是稳的: 省人,不省钱(数据钱本来就少)。所以工作台的交互效率(4.6 节)比优化 Prompt 更值得投入。

4.9 冷启动节奏:先做 1 城 1 类,别铺开

阶段做什么验证什么(不达标就停)
W1 单城单类只做 1 个城市 × 培训场地 这一类。采集 → 打标 → 人工核实 20 家 → 触达。 AI 打标准确率 ≥ 70%(人工判定"AI 提取的字段基本正确"的比例)。 低于此说明 Prompt 或解析规则不行,先修再扩。
W2 验证触达对核实后的机构打电话,用 AI 生成的话术。 电话有效接通率 ≥ 40%意向率 ≥ 10%。 接通率过低说明数据源质量不行(高德电话常有过期),需要换源或增加交叉验证。
W3 加到 3 类增加酒店、餐饮。 不同类别的字段模板是否复用;运营成本是否线性增长。
M2 扩到 5 城复制到其他城市,同时上线服务商自助入驻页 自助入驻占比能否到 20%+(这个比例越高,你的采集成本越低、合规越稳)。
一个诚实的提醒 高德 POI 里的 tel 字段存在过期、错配、是前台/总机而非业务负责人的情况—— 这是所有 POI 数据的通病,不是高德的问题,换成任何数据源都一样。 所以"人工核实"这一步永远不可能被完全自动化,你只能压缩它的范围,不能消灭它。 任何声称能全自动拿到准确联系人并自动谈成的方案,都是在卖你一个幻觉。

05服务商直连:不依赖对方改造的对接方案

你强调"必须做好和每个服务商直接的交互,比如停车场系统的二维码接入到我们的系统中"。 这一条我上一版设计错了——我默认服务商是"有 API 可被我调用的对方", 真实情况是 90% 的服务商没有 API、没有技术团队、也不会为你的平台做二次开发。 他们的数字化能力就是"一部手机 + 一个微信 + 一个收款码"。 按这个前提重新设计,结论完全不同。

5.1 先给服务商分级,不同级别用不同对接方式

服务商特征占比估计对接方式说明
L0只有名录,未建立合作最大仅展示,不可下单 SAE 采集来的大部分落在这里。用于"知道有这家",不作为履约依据。
L1已签协议、有价格,但无系统绝大多数统一核销码 + 人工通道 本节的主体。平台发码、对方扫码核销、按月对账。零技术对接成本,当天可上线。
L2有自己的小程序/收银系统,愿意配合少数H5 核销页 + 对账导出 给对方一个"服务商端"H5 页面,扫码即核销,可导出对账单。仍不需要对方开发。
L3有开放 API 且愿意定制(连锁酒店、大型车场、道旅等聚合商)极少Adapter 直连 主文档的 SupplierAdapter 五方法接口。 只对单量大到"人工核销扛不住"的服务商才值得投入
判断标准:什么时候才值得做 L3 API 对接 一个简单公式:年对接维护成本 < 年人工核销成本。 按一次核销人工成本 ≈ ¥1(含沟通与对账分摊)估算, 某服务商年核销量低于 5000 次,做 API 对接就是不划算的。 先靠 L1 跑量,跑出规模后再逐个谈 L3——那时你带着单量去谈,对方也愿意配合。

5.2 停车场二维码:三条路径的真实对比

我核实了停车行业主流厂商的开放能力,结论和"接个 API 就行"的直觉差别很大。

路径可行性成本核实到的事实与判断
路径 A
厂商 API 直连

捷顺 / 科拓
捷顺确有自己的开放平台(jsopen.jslife.com.cn),流程为 注册账号 → 企业认证 → 能力购买 → 应用开发测试 → 上线,需购买服务包、拿 appid/secret。
但第三方评测指出该行业普遍"核心接口需付费定制、厂家二次开发,对接周期长、成本高"; 从公开的可用动作看,多为查询类(号码查车牌、查停车场信息、查车主信息), 未见公开的通用核销/分账接口该评测为自媒体内容,建议以厂商官方接口清单为准。
判断:只适合你已锁定、单量极大的固定合作车场,一期不做。
路径 B
商家停车券

厂商领券接口
捷顺云开放平台宣传有"消费打折"能力(支持线上扫码领券、链接领券)。理论上可行, 但仍需逐个厂商、逐个车场谈,且不同厂商接口不通用——你有 50 个城市就是几十套对接。
判断:作为重点城市的优化项,不是通用解。
路径 C
平台自营核销码

推荐
极低 推荐默认方案 平台生成二维码 → 学员出示 → 停车场工作人员用平台提供的"服务商小程序"扫码核销 → 系统记账 → 按月对账结算。
优势:任何停车场都能用(哪怕是手写停车票的小型车场);当天上线;不依赖任何厂商; 核销记录自带时间、地点、核销人,争议可追溯。
代价:需要对方工作人员扫一下(这就是你说的半自动化,可接受)。

5.3 统一核销码协议(UVCP):一套码覆盖全部线下服务

停车、餐饮、住宿、会场签到、甚至摊位入场——本质是同一件事:凭码履约 + 留痕 + 对账。 不要给每类服务各做一套,做一套统一的。

码的设计

// 二维码内容(短链接,不要把业务信息明文写进码里)
https://biz.link/v/A7X2K9QM

// 服务端 voucher 记录
voucher {
  code:            "A7X2K9QM",     // 8-12 位随机短码,服务端生成,不可预测
  voucher_type:    PARKING | CATERING | ROOM | VENUE | BOOTH,
  tenant_id,                            // 归属客户(多租户隔离)
  activity_id,                          // 关联活动
  provider_id,                          // 服务商
  sub_order_id,                         // 关联子单
  status:          ISSUED | USED | VOID | EXPIRED | SETTLED,
  valid_from, valid_to,                 // 时效窗口(防止转卖/隔天使用)
  max_redeem:      1,                   // 一码一次,防重复使用
  geo_fence:       {lng, lat, radius_m}, // 可选:核销地理围栏,防异地扫码
  settlement_price_minor, currency,     // 结算价(最小货币单位整数)
  redeemed_at, redeemed_by, redeemed_geo // 核销留痕
}
四个必须做的防作弊设计
  1. 短码不可预测(随机 + 服务端校验),禁止自增 ID 或明文参数——否则可被遍历伪造。
  2. 时效窗口:停车券只在活动当天有效,过期自动 VOID。防止学员把码转卖给他人。
  3. 一码一次:核销接口必须原子更新 status(用数据库行锁或条件更新),并发下不能重复核销。
  4. 地理围栏(可选):核销时校验扫码位置距服务商 ≤ N 米,防"人在外地扫码套现"。 缺点是停车场常在地库没有 GPS 信号,此场景下应允许降级关闭围栏。

核销时序

平台 学员(H5/小程序) 服务商(核销端) 说明 生成码 下单后发码 子单确认即生成 voucher,状态 ISSUED 出示码 现场亮码 离线也能显示(提前缓存二维码图片) 扫码核销 POST /voucher/redeem 携带 GPS + 核销人 + 时间戳 原子校验 校验:存在 · ISSUED · 未过期 · 围栏 · 归属该服务商 任一不通过 → 返回明确原因,绝不静默失败 核销成功 放行进场 status → USED,写入 redeemed_* 四个字段 月末对账 结算单确认 按 USED 汇总 → 对账单 → 双方确认 → 付款 争议凭证:核销时间 + GPS + 核销人 + 原始码
图 4 — 统一核销码时序。这一套同时解决停车、餐饮、住宿、会场签到、摊位入场—— 它们的数据模型几乎完全一样,做成一套能省掉 5 套重复开发。

5.4 合作酒店信息入库:区分"库存"与"资产"

你说"合作的酒店信息也要保存到我们的系统中"。这里有个容易混淆的点,必须先分清两类完全不同的酒店数据:

类别来源存什么用途与注意
① 可预订库存道旅 Content API
(离线同步)
酒店静态信息、房型、图片、设施、城市 用于搜索与比价。每晚离线同步入本地库hotel/list 限频极低, 绝不能放在用户请求链路里——道旅接入指南已详述)。这不是你的资产,随时可换供应商。
② 协议资产
真正值钱的
业务员签约
SAE 采集
酒店自助入驻
协议价、账期、结算方式、联系人、可售房型、保留房规则、违约责任 这才是你平台的护城河。存在自建的 hotel_asset 表,与道旅数据用 hotel_key(城市+名称+地址 hash 或手动映射)关联。
下单时的优先级逻辑:有协议价 → 走协议(利润高)→ 无协议或协议房售罄 → 走道旅兜底。
一个直接产生利润的设计 协议价与道旅价并存时,前台应显示"协议价"并在内部标注节省额。 客户看到的是"我们通过平台拿到比携程低 15% 的价"—— 这就是你平台价值的直观证明,比任何功能列表都有说服力。 而实现上只需一个价格优先级规则,成本极低。

5.5 对账与结算:半自动化的最后一公里

环节做法
自动汇总每月 1 日按服务商维度汇总上月 USED 状态的 voucher,生成对账单草稿。
服务商确认服务商在小程序端查看明细、可逐条提出异议(如"这笔我没收到")。 异议会带上原始核销记录(时间/GPS/核销人)作为证据。
差异处理差异项进入人工工单,业务员介入。不允许系统自动抹平差异——对账差异往往暴露流程漏洞, 抹平了就永远发现不了。
结算确认后走付款流程。注意:若涉及预收学员款项再代付服务商,需确认资金存管合规要求 (主文档第 12 节的待确认问题之一)。

06合规红线:一条与你的需求高度对标的判例

先看这个案例,它和你想做的事几乎是同一件事

公开可查的刑事判例 (2019)闽0524刑初397号(范某某、徐某某、李某某等侵犯公民个人信息罪案):

# 判决要点(据公开法理评述整理)
徐某某通过"爬虫"软件从"企查查""天眼查"等网站上获取
企业法定代表人的联系方式等信息 414,994 条,
整理成 excel 表格后出售给范某某,获利 12,420 元。
→ 法院认定:属于非法获取公民个人信息予以出售获利,
  构成侵犯公民个人信息罪,且属情节特别严重

法理评述中一个你必须注意的推论:这些联系方式在企查查/天眼查上是"已合法公开"的个人信息, 按《个人信息保护法》第 13 条,收集已合法公开的信息原则上无需再次取得同意—— 但本案仍被认定构成犯罪,主流观点认为原因是"利用爬虫大量收集超出了合理的收集范围"。

这条界限目前司法实践中仍较模糊。而你的需求——"抓取每个城市机构的信息和对接电话、联系人"—— 正好落在模糊地带里。刑责与"已公开"之间只隔着一个"合理范围"的认定。

6.1 三条不能碰的红线

#红线具体边界
1不抓数据平台 不抓企查查、天眼查、启信宝、爱企查等任何商业数据平台。 要它们的工商数据就买 API(企查查企业信息核验 1.00 元/次量级)。 这是在拿确定的法律风险换不确定的省钱——不划算,且完全没必要。
2不批量抓个人手机号 只采集企业公开的对外联系座机/客服电话(如地图 POI 的 tel、官网页脚电话); 不采集法定代表人、高管、业务员的个人手机号
数据模型中 phone_type 字段就是为了强制区分这两类—— 个人手机号只有在对方主动提供(PROVIDED_BY_SELF)时才可入库
3不绕过反爬 / 不大量抓取 不使用代理 IP 池、不打码平台、不逆向接口、不伪造 UA 绕过限制; 遵守 robots.txt;单域名低频(建议 ≤ 1 QPS 并加随机抖动); 只抓机构自己的官网,不抓搜索引擎结果页。
同时注意地图平台服务协议通常也限制"超出服务目的的大规模数据获取", 建议签约前让法务核对高德/百度开放平台开发者协议的具体条款 (我未逐条核对到官方原文,不能替你确认)。

6.2 四个必须做的合规动作(低成本,高保护)

  1. 数据只自用,绝不外流:不售卖、不提供对外查询 API、不给第三方共享。 这一点必须写进公司制度并体现在产品权限上(没有"导出全部"按钮)。 它决定了你是"合理使用"还是"数据交易"——两者法律定性完全不同。
  2. 保留来源与时间戳:每条记录存 source / source_url / fetched_at / raw_json。 将来有人质疑"你哪来的我的电话",你能拿出证据说明来源合法、时间明确。
  3. 一键退订与拒触达永久生效do_not_contact 一旦置位全平台永久生效, 且不因换业务员、换批次而重置。
  4. 隐私政策与告知:在服务商自助入驻页与首次触达时,明确告知"信息来源、用途、如何要求删除"。 对方主动提交时勾选同意框,并留痕 consent_at
最后一句实话 本节是基于公开法条、判例评述与行业合规文章的整理,不构成法律意见。 数据合规的认定高度依赖具体场景,我强烈建议你在 SAE 正式采集前,花几千元请一位数据合规方向的律师过一遍方案。 相对于可能的刑事风险,这是极高性价比的支出。

07对主文档的修订、待你决策的问题

7.1 主文档需要同步的修订点

主文档位置动作修订内容
03 技术架构图新增 在"应用服务层"与"AI 能力层"之间补 Dify 编排层(单 workspace),并标注"AI 只推理不写入"的边界。
03 技术架构图新增 SAE 子系统(采集调度 / 线索池 / AI 打标 / 运营工作台)作为一个独立的支撑域, 不是"后台的一个功能"。
03.1 架构决策表补充 "AI 接入方式"一行从"LLM 网关 + 多模型抽象"扩展为 "LLM 网关 + 编排层(Dify)+ 防腐层(AiCapability 接口)"
03.2 技术栈选型确认 结论从"倾向方案 A"改为 "锁定方案 A(NestJS),附三条切换条件"(见本文 1.2)。
04 多租户设计新增 补充规则:SAE 采集数据属平台侧资产(不属任何租户), 但一旦某服务商被某租户的活动使用,产生的业务数据归属该租户。 防止"A 客户发展的场地商信息被 B 客户看到"。
05 业务流程状态机新增 补两条子流程状态机:① 服务商生命周期(LEAD→CONTACTED→NEGOTIATING→SIGNED→COOPERATING→CHURNED) ② 核销码生命周期(ISSUED→USED/VOID/EXPIRED→SETTLED)。
06 数据模型新增 补 6 张表:supply_lead / supply_org / supply_contact / supply_capability / outreach_task / outreach_attempt 及 1 张 voucher 表(见本文 4.4、5.3)。
09 风险清单新增高风险 新增三条:① 数据采集合规风险(判例已存)Dify 多租户许可证风险AI 外呼资质风险

7.2 需要你拍板的 6 个问题

#问题我的建议
1团队主力开发语言是 TS 还是 Java?
决定后端方案最终落定
按 1.2 的决策表对号入座。如果是你一个人主导起步,就选你写得最快的那个—— 不要为了"将来招人方便"牺牲当下的开发速度,那是以确定的损失换不确定的收益。
2是否同意给 Dify 官方去函确认授权? 建议同意成本是一封邮件,收益是把许可证风险从"灰色"变成"有据可查"。 同时严格执行"单 workspace + 纯 API 调用"。
3接受"AI 写话术 + 人打电话"(L1),暂不做 AI 自动外呼吗? 强烈建议接受自建外呼需要 B24 资质与一整套合规体系, 在商业模式验证前投入这些是巨大的浪费。等业务跑通、单量上来再评估。
4地图数据源选高德还是百度,还是双源交叉? 建议高德为主(本文核实的是高德文档,字段含 telparking_type, 对你的场景更对口)。重点城市可加百度做交叉验证,用于提高电话准确率—— 这是解决"电话过期"最省事的手段。
5服务商自助入驻页面是否一期就做? 建议做开发量很小(一个表单 + 审核流), 但它是唯一零合规风险且数据质量最高的采集渠道,ROI 高于任何爬虫。
6摊位费/培训费是否涉及预收资金?
沿用主文档第 12 节
涉及就有资金存管合规要求。这个问题会改变结算模块的架构,必须在开发前确认。

7.3 三天内可以启动的事(不需要等系统开发完)

最后

这一版我改了三处上一版的判断,都记在这里,方便你核对我的思路变化:

  1. 后端选型:从"倾向 A"改为"锁定 A 并给出切换条件"——之前的表述把决策成本推给了你。
  2. AI 与爬虫:从"后台的一个模块"提升为"独立子系统 SAE"——你指出得对,上一版给的分量不够。
  3. 服务商对接:从"以 API 对接为主"改为"以统一核销码为主、API 对接为例外"—— 因为我把服务商的假设搞错了,他们绝大多数没有 API,也不会为你开发。

08AI 企业服务产品线:外链 → 内链的渗透路径

本节来源与一个需要先做的修正

你补充说明:"我本身就是做技术的,AI 对企业的服务能力,比如企业网站重构成 AI 基因、 企业 AI 辅助办公,通过外链完成对企业的内链后对企业客户完成服务和支持。"

据此修正 3.2 节的表述:我在 3.2 节提醒"若把客户可自定义 AI Agent 作为卖点会触发 Dify 多租户红线"。 你的澄清说明这个担心前提不成立——你说的"AI 企业服务"是你交付给企业的服务, 不是"客户在你的平台上自助配置 Agent"。这两者在许可证上的定性完全不同。修正后的判定见 8.5。

8.1 这条路径回答了我上一轮最担心的问题

主文档和本文反复强调:这个项目最大的风险不是技术,是供给侧冷启动—— 会小二做到 9 万家深度合作场地用了约 10 年;没有种子客户、没有服务商,平台就是空转。

而你现在手里其实已经有三样东西:

① 已有的企业客户关系

你服务过的企业,已经建立了信任付费习惯。 这比冷启动陌生客户便宜一个数量级。

② 深入企业内部的位置

"内链"意味着你已经在客户的业务流程里。 你知道他们缺什么、在找什么、预算在哪——这是任何外部平台拿不到的信息位。

③ 技术交付能力

BizLink 对你不是"从零学做平台", 而是把已有能力的上游延伸。开发成本对外部团队是百万级,对你是人力时间。

所以 BizLink 的冷启动策略应该改写 不是"先建平台再找客户",而是 "用已有的 AI 企业服务客户作为 BizLink 的种子客户, 用他们的真实需求定义平台第一批功能"。 这把我上一轮"第 5 个月先用人工跑通一场真实培训会"的建议,往前推到了现在就能开始—— 你不需要再造一遍客户关系。

8.2 三层渗透模型

L1 外链层 · AI 官网 · 官网 AI 化:智能客服 / 内容生成 · 多语言、智能表单、访客意图识别 · 面向企业外部访客 决策链:市场部即可定 · 见效快 L2 内链层 · AI 办公 · 企业知识库问答、文档处理 · 流程辅助、报表生成、内部助手 · 面向企业内部员工 决策链:需老板/IT · 粘性高 L3 平台层 · BizLink · 培训会 O2O、摊位招商与成本对冲 · 服务商对接、学员与项目资源链接 · 面向企业的客户与经营 决策链:业务负责人 · 按活动付费 信任 需求 反向数据闭环(被低估的资产) L1 的访客咨询 + L2 的内部提问 → 真实需求信号 → 反哺 L3 的选题、课程与撮合 核心逻辑:用低门槛的外链建立关系与信任,用高粘性的内链锁定客户,用平台承接客户的经营需求。 每一层都在为下一层降低获客成本——L1 的获客成本最高但门槛最低,L3 的获客成本接近于零但门槛最高。顺序不能反。
图 5 — 三层渗透模型。关键不在于三层都做,而在于顺序: 先 L1 拿关系,再 L2 拿粘性,最后 L3 拿交易。跳过 L1/L2 直接做 L3,就是花钱买冷启动。

8.3 被低估的资产:企业网站 AI 客服的会话数据

这一条我认为是你手里最有价值、且竞品买不到的东西。

数据源它能告诉你什么对 BizLink 的用途
企业官网 AI 客服的访客提问 真实客户在问什么、关心什么、卡在哪。这是未经修饰的需求原声, 比任何问卷都真实。 发现培训需求:若 30 家企业网站的访客都在问"怎么做短视频/怎么做外贸", 这就是一场培训会的选题依据,而且你知道它一定有市场。
企业内部的 AI 提问 员工在处理什么业务、缺什么能力、流程卡点在哪。 定制课程与项目资源:直接对应你的需求 2(培训)与需求 3(项目资源链接)。
跨企业的横向聚合 单个企业的样本少,但几十家企业的聚合能看出行业趋势。 这是你做"内容推荐"唯一的真实数据源—— 比主文档里说的"需要 1 万单"更早就能起步,因为你不只有交易数据,还有咨询数据。
但这里有一条必须守住的边界 这些会话数据属于企业客户,不属于你。可用于聚合统计与趋势分析不可用于:把 A 企业的访客线索拿给 B 企业、把单家企业的原始会话披露出去、 或未经授权用于模型训练。
工程上的要求:所有对客 AI 产品的数据必须按 tenant 隔离存储,对外只暴露聚合结果, 且合同中写明数据使用范围。这条一旦出事,是信任崩塌级别的损失—— 你卖的是"深入企业内部"的位置,而它成立的前提是客户信任你会守边界。

8.4 三个必须警惕的风险

风险严重度说明与规避
① 变成项目制外包公司 最高 这是这类公司最常见的死法。每家企业的 AI 官网都要单独定制 → 人力线性增长 → 你从"做平台的人"变成"接项目的老板",而项目制收入不 scalable、没有复利、也融不到资。
规避:L1/L2 必须做成标准化 SaaS + 配置化(模板 + 企业知识库 + 品牌配置), 定制部分严格限制在"配置"层面。判断标准:新增一个客户的边际交付工时是否趋近于零。 如果不能,就说明你在做外包。
② 外链→内链的转化率未验证 中高 "做了官网 AI 化,客户就会买 AI 办公"——这是个假设,不是事实。 很多企业买完官网项目就结束了,市场部和 IT/老板之间隔着很长的距离。
规避:现在就去统计你已有客户里,从 L1 转化到 L2 的比例是多少。 这个数字直接决定这条路径值不值得作为 BizLink 的冷启动引擎。 如果转化率低于 20%,说明渗透不成立,冷启动要另想办法。
③ 三块业务互相拖累 L1/L2 是现金牛和客户关系来源,L3 是未来但需要大量投入。 最危险的是 L3 把 L1/L2 的现金流抽干
规避给 L3 设一个明确的止损线(比如"12 个月内未跑通 3 场真实活动就暂停"), 并且 L3 的开发优先复用 L1/L2 已有的基础设施(IAM、租户模型、AI 层)。

8.5 技术分界:对客 AI 产品自建,Dify 只做内部运营 AI

这是本节最重要的工程结论,也是 3.2 节许可证讨论的延伸。 一旦你要给多家企业交付 AI 产品,Dify 的多租户条款就会从"理论风险"变成"实际要处理的问题"。

场景能否用 Dify建议与理由
内部运营 AI
SAE 打标、异常诊断、客服草稿
可以 全公司共用一个 workspace,终端用户接触不到 Dify。 这是 Dify 最安全的用法,也是我建议它承担的全部职责。
对客 AI 产品
AI 官网、AI 办公
建议自建 四个理由,任何一个单独成立都足够:
白标需求:你交付给企业的产品不可能带着 Dify 的品牌与界面,只能全自建 UI(而定制前端本身也触碰条款 b);
租户隔离:每家企业需要独立的知识库与配置,这在实质上就是多租户供给, 即使你技术上用单 workspace + 标签隔离,性质上仍与条款精神相悖
成本:这块要自建的东西(RAG 检索、对话管理、知识库)本身并不复杂, 为了省这点开发量背一个许可证风险,不划算;
可控性:对客产品要做 SLA、计费、审计,自建比改造别人的系统简单得多。
具体分工(一句话版本) Dify = 你自己员工的 AI 工具;对客 AI 产品 = 你自己写的代码。 两者通过 AiCapability 抽象接口统一(见 3.3 图 2), 将来无论哪一侧要换实现,改动都被限制在 Adapter 内。

对客 AI 产品的最小技术栈(参考)

// 不需要重,核心只有四块
1. 知识库与检索:PostgreSQL + pgvector(与主库同实例,省运维)
                  文档 → 切片 → embedding → 检索 + rerank
                  // 与你此前调研的向量/Embedding 路线可直接对接
2. 对话与会话管理:自建(对话历史、上下文窗口、引用溯源)
                   // 比 Dify 简单,因为你不需要通用的编排能力
3. 租户与配额:复用 BizLink 的 IAM + tenant_id
                   // 这是复用价值最大的一块,别重写
4. 嵌入与交付:一个 JS widget(官网挂一段代码即可)+ 一个后台 H5
                   // 决定交付成本的关键:做到"挂代码即用",不做定制

这四块对一个有 20 年经验的工程师是几周的工作量,不是几个月。 真正的难点不在技术,在于把它做成不需要定制的产品——对应 8.4 的风险①。

8.6 本周就能做的三件事(验证这条路径是否成立)

  1. 统计你的历史客户转化数据:做过 AI 官网(L1)的客户里,有多少家后来买了 AI 办公或后续服务(L2)? 这一个数字决定整条路径的价值。低于 20% 说明"外链→内链"的渗透假设不成立, 那 BizLink 的冷启动要另想办法(比如直接做垂直行业的培训会)。
  2. 挑 3 家关系最好的企业客户,直接问一个问题: "你们今年有没有办客户培训会/渠道会/招商会的计划?现在怎么找场地、怎么管报名?" 不要推销 BizLink,只问现状。如果三家都说"有,而且很麻烦",你的需求假设就被验证了; 如果都说"没有",那说明目标客户画像要调整。
  3. 翻一下你服务过的企业官网 AI 客服的会话记录(如果有的话): 把高频问题按主题聚个类。看看有没有明显集中在某个主题上—— 那就是你的第一场培训会最可能的选题,而且你知道它一定有受众。
这三件事的共同点:都不需要写代码 第 1 件查你的历史记录,第 2 件是三通电话,第 3 件是看已有数据。 加起来不超过两天,但它们能验证的东西,比再写一份设计文档多得多。 这也是我反复强调"第 5 个月先人工跑通一场会"的同一个道理—— 系统应该把已验证的流程自动化,而不是边开发边猜流程。