1快速开始
零依赖应用,不需要安装 npm 包;SaaS 版需要登录账号,单机直开 HTML 时仍可离线使用大部分功能。
| 步骤 | 操作 | 说明 |
|---|---|---|
| 启动 | 双击 启动SaaS.cmd(或原来的 启动获客Agent.cmd) | 弹出 CMD 窗口并自动打开浏览器。窗口不要关,关了服务就停了。两个脚本效果相同。 |
| 登录 | 打开 http://127.0.0.1:8788,会自动跳到登录页 | 首次部署的内置管理员 admin / admin888;登录后请立刻在「账户 ▾」里改密。其他人点「注册新组织」自建团队,或用邀请码加入已有团队。 |
| 确认 | 看右上角「● 已登录」与「组织 · 账号」 | 显示「已登录」= 数据按组织落盘、可跨设备;显示「单机模式」= 只存浏览器,公开页采集与官方地图 API 不可用。 |
| 停止 | 在 CMD 窗口按 Ctrl + C,或直接关窗口 | 数据已落盘,下次启动原样恢复;会话 Cookie 7 天内有效,重启服务不用重新登录。 |
data/state.json(含全部真实线索)会完整克隆为内置管理员的租户账本,原文件保留不动。新数据写到 data/saas/states/<租户ID>.json。public/index.html 会以「单机模式」运行,粘贴解析、打分、话术、跟进、导出全部可用;但单机模式没有账号、团队与套餐,也不跨设备同步。PORT=9000,或编辑启动脚本里的 set "PORT=8788"。要给别人访问见第 14 章。网站版(v3.6 新增)
同一套应用已做成可公网访问的网站:https://tuoke.xhcsyun.com(自有服务器,Nginx 反代到本机 127.0.0.1:8788,HTTPS + systemd 常驻)。
| 访问路径 | 看到什么 |
|---|---|
/ 未登录 | 官网首页:产品介绍、3 阶段 9 步、三档价格、合规边界、注册 / 登录入口 |
/ 已登录 | 直接进入工作台,与本机版完全一致 |
login.html / login.html?mode=register | 登录页 / 直接展开注册表单 |
admin.html | 平台管理后台,仅平台管理员可进,匿名自动跳登录 |
deploy-tuoke/网站管理员密码.txt,不上传服务器),不是 admin888。功能、9 步引导、六大雷达、话术、订阅与合规边界完全相同。deploy-tuoke/build.js 生成 deploy-tuoke/site/,只含代码、官网首页、Nginx / systemd 配置与干净初始数据,不含本机真实账号、线索、订单和支付密钥。upload_tuoke.py 用本人提供的 SSH 凭据上传,服务器执行 install.sh 完成 Node 检测、systemd 常驻、Nginx 反代与 certbot 证书。线上数据固定在 /opt/quanwang-agent/data,重新上传代码不会覆盖它。商户凭据仍由本人在「平台管理 → 微信支付配置」填写,HTTPS 回调域名已预置为本域名,在线通道默认关闭。2一分钟看懂
它不是「自动加人、自动群发」的机器人,而是把找客户、判断意向、写话术、排跟进这些重复活自动化;平台登录、看评论、发消息、谈价成交由您本人完成。
整个流程只记 3 个阶段,不用背 9 步:
第 1–3 步→二 · 把客户找出来
第 4–6 步→三 · 跟进到成交
第 7–9 步
7 / 9),关掉浏览器也不会丢;一轮走完点「重开一轮」开始下一批,线索不会删除。它自动做
- 按产品 / 地区 / 半径生成精准检索式与一键打开入口
- 把您粘贴的评论、聊天、商家资料切成条目并打分分级
- 识别客户类型、需求标签、地区与附近信号、商家类型
- 去重、建档、算下次跟进日、生成分阶段话术
- 换算地图坐标系、导出 KML / 坐标 CSV、统计漏斗
您本人做
- 登录各平台、浏览评论区、复制意向内容
- 核对昵称与联系方式、确认是否入库
- 把话术复制到对应平台手动发送
- 发完回来点「已发送 · 推进阶段」
- 谈价、寄样、报价、收款、发货、售后
3界面地图
左侧 6 个页签,顶部引导条在所有页签常驻。
| 页签 | 用来做什么 |
|---|---|
| 获客雷达 | 主战场:产品、地区、附近、地图、全网检索、拼多多评价、粘贴解析与入库预览。 |
| 线索池 | 全部客户台账;多条件筛选、打开档案抽屉、改阶段、记备注与联系方式。 |
| 今日跟进 | 当天到期清单、复制话术、点「已发送 · 推进」或「顺延 1 天」。 |
| 成交漏斗 | 各阶段数量、客户类型分布、渠道效果、复盘统计。 |
| 话术库 | 按阶段 / 平台 / 客户类型查看和复制标准话术。 |
| 设置 · 数据 | 品牌与话术变量、最低入库分、自动排期开关、导入导出与清空。 |
| 顶栏「订阅与账单」 | v3.3:账期状态、套餐 / 月付年付下单、扫码支付、订单记录、续订设置;顶部横幅提醒试用 / 宽限 / 只读。 |
顶部引导条(v3.4 新版)
| 按钮 | 作用 |
|---|---|
| 带我去做 ▶ | 定位并高亮「现在做这一步」的卡片,不改变进度。 |
| 跳过这步 | 把当前步标记为「已跳过」(一般用于第 3 步「要不要只找附近」),进度照常推进。 |
| 自动跟随 | 默认开:完成一步自动切页签 + 滚动高亮。关掉后只更新文字提醒,不自动跳转。 |
| 重开一轮 | 把 9 步进度清零,从第 1 步重新开始(不会删除任何线索)。 |
每做完一步,刚操作的那张卡片下方还会就地出现绿色「已完成 → 下一步」提示条,带「去做下一步 ▶」按钮,视线不用离开当前卡片。
4完整 9 步流程(每天照着走一遍)
下面每一步都不用背:顶部引导条会写明「现在做第几步 / 在哪做 / 点什么」,每做完一步,卡片下方立刻出现下一步提示。
| 步 | 现在做 | 在哪做 / 点什么 | 做完得到什么 → 下一步提示 |
|---|---|---|---|
| 1 | 选好这次卖什么 | 「第 1 步」产品卡 · 点产品、选规格 | 检索式 / 词库 / 话术自动切换 → 提示第 2 步 |
| 2 | 定好去哪儿找客户 | 「第 2 步」地区卡 · 选省 / 市 / 区县;做全国点「恢复全国」 | 检索式自动带地区词 → 提示第 3 步 |
| 3 | 要不要只找附近 可跳过 | 「第 3 步」附近卡 / 地图商家雷达 · 设半径与商家类型,或点「跳过这步」 | 线索记下距离 / 类型 / 坐标 → 提示第 4 步 |
| 4 | 按检索式去平台找客户 | 「第 4 步」检索雷达 / 拼多多评价专渠 · 点检索式、一键打开、复制意向评论 | 得到一批意向原文 → 提示第 5 步 |
| 5 | 把内容粘进来自动识别 | 「第 5 步」粘贴区 · 粘贴评论,点「识别意向线索」 | 自动打分分级、标客户类型 → 提示第 6 步 |
| 6 | 核对后存进线索池 | 「第 6 步」预览表 · 核对昵称和分数,点「全部入库」/「仅入库 S / A 级」 | 去重建档、排首次跟进日 → 切到「今日跟进」提示第 7 步 |
| 7 | 复制话术,自己去打招呼 | 今日跟进「第 7 步」清单 · 点「复制话术」,去平台手动发送 | 客户收到第一条问候 → 提示第 8 步 |
| 8 | 发完回来记一笔 | 今日跟进「第 8 步」· 点「已发送 · 推进到…」;暂不联系点「顺延 1 天」 | 阶段推进、下次跟进日自动排好 → 切到「成交漏斗」提示第 9 步 |
| 9 | 看效果、导出台账 | 成交漏斗「第 9 步」+ 顶栏导出 · 看转化,导出 CSV / JSON / KML / 坐标 CSV | 显示 9 / 9,提示「重开一轮」找下一批客户 |
同一步反复调参数不会重复提醒,只有首次完成才推进进度;乱序操作也支持,引导条永远指向「第一个还没完成、也没跳过的步骤」。第 3 步是唯一可自由跳过的步骤,其余步骤跳过前会二次确认。
5六大雷达模块
5.1 第 1 步 · 本次要销售的产品 / 规格
内置 4 个产品:海南山柚油、海南冷榨椰子油、山柚油礼盒 · 伴手礼、海南马鲛鱼。点选后,检索式、意向词库、话术、品牌变量、线索归档会一起切换。可「新增产品」填名称、品类关键词、检索式、品牌变量。规格会追加到检索式和线索档案。
5.2 第 2 步 · 本次获客地区
省 / 市 / 区县三级下拉,默认全国。内置 34 省、367 市、3439 区县,另有热门地区快捷按钮。选中地区后检索式自动追加地区词,文本里出现该地区名的线索 +8 分。可自定义地区词、一键复制、一键「恢复全国」。
5.3 第 3 步 · 附近的人 / 附近商家
- 三种模式:关闭 · 全网获客(默认)/附近的人/附近商家。
- 距离 1–200 km 可设,可填起点商圈 / 经纬度;商家类型多选 + 自定义(餐饮、月子母婴、礼品特产、美容 SPA 等,可自己加类型与话术切入点)。
- 命中附近信号 +6 / 商家类型 +10,线索档案会记录半径、起点、类型。
5.4 第 3 步支线 · 地图商家雷达
从四个平台整理商家档案:店名、地址、经纬度、公开电话、品类、来源平台、坐标系、地图链接,并按商家类型算「适配分」、生成 B 端陌拜话术。
| 平台 | 坐标系 | 官方 POI 接口 | 怎么用 |
|---|---|---|---|
| 百度地图 | BD-09 | 有(需自己的 AK) | 方式 A 填 AK 直接检索;方式 B 粘贴详情页 |
| 腾讯地图 | GCJ-02 | 有(需自己的 Key) | 同上;必须指定城市,全国检索需选到市/区县或填起点经纬度 |
| 高德地图 | GCJ-02 | 有(需自己的 Key) | 同上;支持周边检索与多关键词 |
| 奥维互动地图 | WGS-84 | 无公开接口 | 导出 KML / 坐标 CSV → 在 PC 客户端导入 → 按距离圈选、规划跑店路线 |
- 方式 A · 官方 API:在三个开放平台申请自己的 Key 填进页面(只存本机,导出 JSON 时自动脱敏)。点「检索商家」由本地服务请求官方接口,限速 700ms / 平台、每平台最多 20 条、不翻页。结果先预览再入库。
- 方式 B · 粘贴解析(无需 Key):复制地图详情页 / 分享链接连同文字粘进来,自动抽店名、地址、电话、经纬度、品类,识别
lng,lat、lat,lng、URL 的location/center/ll参数、度分秒。 - 坐标自动换算:百度 BD-09 / 高德·腾讯 GCJ-02 → WGS-84,档案里同时保留原始坐标、坐标系与换算结果;抽屉里可手工补录或修改。
- 导出:「导出 KML」给奥维、「导出商家坐标 CSV」给 Excel / 其他地图工具。
5.5 第 4 步 · 全网检索雷达 + 拼多多评价专渠
- 按当前产品 / 地区 / 附近模式生成检索式 chips,覆盖抖音、小红书、视频号、快手、百度、博客论坛、朋友圈、1688 等;点「一键打开」进对应平台,带「需登录」标记的请在 App 内操作。
- 可填自定义检索式;点「复制提示」连检索式带操作说明一起复制。
- 拼多多专渠:按「要大桶 / 长期拿货 / 店里用 / 要开票 / 追评」等信号词在评价区人工找;粘贴评价块后自动切出昵称(掩码)、规格、日期、追评,剔除商家回复,区分本店评价(可站内回复)与同行评价(只做需求洞察,不进今日待办、不去对方评价区打广告)。
5.6 ② 粘贴解析区 + 公开页采集
- 选来源平台 → 粘贴一整段评论 / 聊天 → 点「识别意向线索」→ 自动切分、打分(S / A / B / C)、分型、抽需求标签、去重 → 下方预览表。
- 非本品类评论会降权并标注「非本品类」;纯好评、同行广告会被压到低分或 0 分。
- 公开页采集:填关键词,由本地服务抓取无需登录的搜索结果页 / 博客 / 论坛正文,只抽含求购信号的句子;不采评论区、不采登录态内容、不采手机号。
- 预览表确认后点「全部入库」或「仅入库 S / A 级」;低于「最低意向分」的线索不会误入。
6线索池与客户档案
筛选
支持关键词、分级、阶段、平台、产品、获客地区、附近范围、地图来源 8 类筛选,可组合,点「重置」清空。
列表字段
分级 / 意向分 / 客户昵称 / 产品与规格 / 获客地区 / 附近与商家类型 / 平台 / 客户类型 / 原文摘要 / 地图与坐标 / 阶段 / 下次跟进 / 操作。分级参考:S 高意向A 明确需求B 有苗头C / 低分 仅观察
档案抽屉
- 可编辑:联系方式、备注、阶段、商家地址、经度、纬度、坐标系(改坐标后 WGS-84 自动重算)。
- 可查看:原始文本、命中词、需求标签、地区匹配、附近信号、评价来源、地图档案(原坐标 / 换算坐标 / 坐标系 / 来源链接)、完整跟进轨迹。
- 可操作:复制当前阶段话术、推进阶段、顺延 1 天、删除线索。
7跟进节奏与话术
7 个阶段
新线索 → 已触达 → 需求确认 → 报价 / 寄样 → 谈判中 → 成交 / 流失。阶段推进时按内置节奏自动排下次跟进日(可在设置页关闭自动排期)。
跟进节奏
D0 首触 → D1 → D3 → D7 → D15 → D30,每个阶段的话术开场各不相同:首触不逼单、D1 补资料、D3 给规格与检测报告、D7 谈开票与配送、D15 唤醒、D30 长尾维护。地图商家线索另有一套 B 端陌拜话术。
平台风格
同一句话会按平台切换语气:抖音 / 快手短句口语、小红书重体验与检测报告、微信偏正式、拼多多只给站内合规回复、地图商家走电话 / 上门开场。话术只生成、不自动发送,复制后由您手动发出。
8数据管理与备份
| 功能 | 产出 / 位置 | 说明 |
|---|---|---|
| 自动落盘 | data/saas/states/<租户ID>.json + .bak | 每个组织一份独立账本,每次写入前自动备份;物理隔离、清浏览器缓存不丢数据、换设备登录原样恢复。 |
| 导出 CSV | 全网获客_客户线索_日期.csv | Excel 可直接打开,含产品、地区、附近、地图、经纬度等全部字段。 |
| 导出 JSON 备份 | 全网获客_线索备份_日期.json | 完整状态(含流程进度),地图 Key 自动脱敏;用于换电脑 / 回滚。 |
| 导入 JSON | 设置 · 数据 → 导入 JSON | 选之前导出的备份文件即可恢复;旧版本备份也能自动补齐新字段。 |
| 导出 KML | 全网获客_地图商家_日期.kml | WGS-84 坐标,导入奥维互动地图做点位与路线规划。 |
| 导出商家坐标 CSV | 全网获客_商家坐标_日期.csv | 原坐标 + WGS-84 双份,方便其他地图工具使用。 |
| 清空 / 示例 | 设置 · 数据 | 「清空全部线索」需二次确认;「载入示例线索」用于练手,会覆盖当前台账,先导出备份。 |
quanwang_agent_state_v1;旧版键 shanyou_agent_state_v1 会作为只读回退自动迁移,旧线索不会因改名丢失。单机数据不上传、不与团队共享。rev 检测冲突,后保存者会收到「其他成员刚更新了台账」提示并自动同步最新数据,不会静默互相覆盖;重试刚才那一步即可。public/engine.js / server.js / saas.js 必须重启服务;只改前端页面 / 样式,刷新浏览器即可。9动作边界表
设计原则:能自动的自动,不能自动的不假装能自动。
| 环节 | Agent 自动完成 | 您本人操作 |
|---|---|---|
| 全网发现 | 检索式、一键打开入口、公开网页正文抽取 | 登录平台、看评论区、复制意向文本 |
| 拼多多评价 | 评价块解析、批发信号识别、本店 / 同行区分、站内话术 | 翻评价、复制文本、站内公开回复;不私信买家、不站外导流 |
| 附近 / 地图 | 范围检索式、官方 API(用您的 Key)、粘贴解析、坐标换算、KML / CSV、适配分 | 申请保管 Key、人工核对公开资料、复制详情页、逐家联系 |
| 识别建档 | 切分、打分、分型、去重、落盘、排跟进日 | 确认昵称与联系方式、补备注 |
| 打招呼 | 按阶段 / 平台 / 客户类型生成可复制话术 | 手动发送(先公开互动再私信) |
| 跟进成交 | 到期提醒、阶段推进、轨迹、漏斗统计、导出台账 | 实际沟通、发资料、寄样、报价、签约、收款、发货 |
| 订阅与支付 | 下单签名、回调验签、金额校验、账期实时判定、到期只读、订单流水、审计 | 本人申请商户资质、保管密钥、配置公网 HTTPS 回调、真实小额付款实测;核对线下汇款到账并确认收款 |
10合规红线
- 不批量爬评论区、不绕反爬、不模拟登录态、不使用第三方「评论区 / 私信」黑接口。
- 不自动私信、不群发、不站外导流;朋友圈 / 视频号 / 微信「附近的人」没有公开搜索或 LBS 接口,只能人工查看或好友转介。
- 不采集个人手机号 / 微信号;联系方式由对方主动提供后您手动录入。
- 不批量拉地图商家库、不缓存转售 POI;只登记商家公开电话,首次联系一次只发一家,被拒不再打扰。
- 数据只存本机,不上传第三方;地图 Key 只存本机且导出备份时脱敏。
11常见问题
admin / admin888(可用环境变量 ADMIN_PASSWORD 改)。忘记密码时,删掉 data/saas/accounts.json 并重启会重建管理员,但会生成新组织;更稳妥是先备份整个 data/saas/ 再操作。不要删 states 目录,那是所有线索。.json 账本,租户 ID 只从服务端会话推导,请求体里伪造的 tenantId 会被强制覆盖;未登录访问任何业务 API 都返回 401。127.0.0.1:8788。服务已在跑就直接开网页,不要重复启动;确实要重启先关旧窗口。启动获客Agent.cmd 后刷新页面即可;单机模式下粘贴解析、话术、跟进、导出仍可用。data/state.json;只有单机模式才存浏览器,建议定期「导出 JSON 备份」,换电脑时用「导入 JSON」恢复。engine.js / server.js / saas.js / payments.js / billing.js 必须重启服务;只改 HTML / CSS / 前端 JS 刷新浏览器即可(必要时 Ctrl+F5 强刷)。支付配置改完不用重启,在后台点「重载支付配置」。12请实测清单(第一次用建议跑一遍)
- 双击
启动SaaS.cmd,浏览器自动跳登录页 → 用admin/admin888登录 → 确认右上角「● 已登录」、顶栏显示「组织 · 账号」,原先的 12 条真实线索与流程进度都还在。 - 点「账户 ▾」→ 核对 6 条配额进度条 → 改一次密码;平台管理员再点顶栏「平台管理」看组织总览与审计日志,可试填一次「成员上限」再恢复默认(见 14.3)。
- 确认顶部「三阶段总览」与「现在做第 1 步」大卡片(在哪做 / 点什么 / 做完得到什么),「第 1 步」产品卡带金色高亮,卡片下方有「现在做」提示条(新组织从
0 / 9开始)。 - 点第二个产品 → 刚操作的卡片下方立刻出现绿色「已完成 → 下一步 第 2 步」提示条(带「去做下一步 ▶」按钮),引导条同步换成「现在做第 2 步」;选「海南省 / 海口市」→ 提示第 3 步;点「跳过这步」→ 阶段一变绿、阶段二变金并提示第 4 步。
- 在「地图商家雷达」点「填入 4 条示例」→「解析商家资料」→ 预览表应出现 4 行,含坐标与公开电话;点「导出 KML」确认能下载。
- 在「第 5 步 粘贴区」点「填入示例」→「识别意向线索」→ 核对分数梯度(S / A / C)→「全部入库」,应自动跳到「今日跟进」。
- 点「复制话术」→ 点「已发送 · 推进到…」,应自动跳到「成交漏斗」;点顶部「导出 CSV」,引导条应显示
9 / 9并提示「重开一轮」;点「重开一轮」确认线索仍在、进度归零。 - 每完成一步,检查「下一步提示」是否同时出现在:卡片下方绿条、引导条完成提示、「现在做」大卡片、右下角短提醒,且下一步卡片被金色高亮定位。
- 最后到「设置 · 数据」点「导出 JSON 备份」,留一份底;需要练手再点「载入示例线索」。
- 点顶栏「订阅与账单」→ 确认当前组织显示「平台授权 · 不限期」、三档价格与三条通道状态;切到「线下汇款」下一单,应生成待支付订单与收款信息(不会真的扣钱)。
- 用
admin进「平台管理 → 订阅、账期与在线支付」→ 对该订单点「确认收款」,订阅应立即变为有效;再点「立即停用」,回工作台试着新增线索应被 402 拦住且数据仍可导出;最后点「开通 / 续期」恢复。测试完记得恢复原有订阅状态。 - 在「平台管理 → 微信支付配置」点「本地自检(不联网 / 不下单)」,看报告逐项列出还缺什么;把
apiclient_key.pem放进data/saas/certs/后刷新,确认出现「可用」与「一键采用」按钮(见 14.8.3)。
13文件与技术信息
| 文件 | 作用 |
|---|---|
启动SaaS.cmd | SaaS 版启动脚本(纯 ASCII + CRLF,自动开浏览器;与旧脚本等价) |
启动获客Agent.cmd | 原双击启动脚本,保留不变,同样启动 SaaS 服务 |
server.js | 零依赖 HTTP 服务:会话鉴权、租户隔离、配额、采集、地图官方 API 代理、CSV 导出 |
saas.js | 多用户内核:账号 / 租户 / 会话 / 邀请码 / 套餐 / 用量 / 审计 / 订阅与订单 API |
payments.js | 支付网关:微信 v3 / 支付宝 RSA2 签名、下单、查单、回调验签;配置安全写盘、格式校验、脱敏视图、本地自检(零依赖) |
billing.js | 订阅账期内核:状态机、订单、幂等开通、管理员开通 / 停用 |
pay-config.example.json | 支付配置模板与字段说明(无真实凭据) |
public/login.html / auth.js | 登录、注册、邀请码加入页面 |
public/admin.html / admin.js | 平台管理后台:组织、套餐、自定义成员上限、订阅 / 账期 / 订单 / 收款确认 / 微信支付可视化配置 / 本地自检、审计日志 |
public/index.html / app.js / style.css | 工作台页面、交互与样式(含账户菜单、订阅横幅与入口) |
public/billing.js / qrcode.js | 订阅账单面板、支付二维码页、主动查单轮询 / 本地 QR 编码器 |
public/engine.js | 共用引擎:打分、解析、话术、地图、地区、3 阶段 9 步流程状态机与引导文案 |
public/regions.js | 全国省 / 市 / 区县三级行政区划数据 |
public/使用说明.html | 本说明书(可在应用顶栏「使用说明」打开,可打印成 PDF) |
使用说明.md | 同内容的纯文本版,便于复制转发 |
data/saas/ | accounts.json 账号 / tenants.json 组织(含 maxMembersOverride) / sessions.json 会话 / invites.json 邀请码 / usage.json 用量 / audit.log 审计 / states/ 台账 / subscriptions.json 订阅 / orders.json 订单 / pay-config.json 支付凭据(敏感)/ certs/ PEM 密钥 |
data/state.json / .bak | v2 旧台账,首次启动的完整迁移源,保留不删不改 |
deploy-tuoke/build.js | 生成网站部署包 deploy-tuoke/site/:代码副本 + 官网首页 + 干净初始数据 + 部署配置 |
deploy-tuoke/templates/home.html | 官网首页模板:产品、3 阶段 9 步、三档价格、合规边界 |
deploy-tuoke/site/install.sh / nginx-*.conf | 服务器端安装脚本与 HTTP 引导 / HTTPS 正式两阶段 Nginx 配置 |
deploy-tuoke/upload_tuoke.py / selftest.js | SFTP 上传脚本(凭据命令行传入、不写盘)与网站包本地自检 |
deploy-tuoke/网站管理员密码.txt | 首次部署随机生成的平台管理员密码,只存本机、不上传 |
运行环境:Node.js 内置模块(无需 npm install)· 按租户分文件存储 · 前后端共用 UMD 模块 · 服务模式(需登录)/ 单机 localStorage 离线模式自动降级 · 默认端口 8788。
14多用户 SaaS
v3 起从「一台电脑一个台账」升级为「按组织隔离的多账号系统」。原来的全部功能、3 阶段 9 步引导、六大雷达、话术与合规边界保持不变,只在外面加了账号、团队、套餐三层。
14.1 数据怎么隔离
| 层级 | 说明 |
|---|---|
| 组织(tenant) | 注册时创建;每个组织一份独立账本 data/saas/states/<租户ID>.json,物理隔离,互不串户 |
| 成员(user) | 归属某个组织;同组织成员共享同一份线索池,每条新线索自动记录建档人,档案抽屉里可看 |
| 会话(session) | HttpOnly + SameSite=Lax Cookie,服务端持久化,7 天有效、滑动续期;重启服务不用重新登录 |
/api/* 除 /api/health 与登录注册外都要校验会话;租户 ID 只从会话推导,请求体里伪造会被强制覆盖;管理后台页面匿名访问直接 302 回登录页。14.2 三种角色
| 角色 | 能做什么 |
|---|---|
| 平台管理员 | 内置 admin:进入 admin.html 查看全部组织、调整套餐、按组织设置自定义成员上限、启停组织 / 账号、看审计日志;同时拥有一个自己的组织 |
| 组织管理员(owner) | 注册人:生成邀请码、查看成员、停用 / 恢复成员、看本组织配额 |
| 成员(member) | 用邀请码加入:正常使用全部获客功能,共享线索池;不能管理团队、不能进管理后台 |
14.3 套餐与配额(服务端强制)
| 能力 | 个人版 | 专业版 | 团队版 |
|---|---|---|---|
| 线索总量 | 200 条 | 5000 条 | 50000 条 |
| 粘贴识别 / 天 | 30 | 500 | 5000 |
| 公开页采集 / 天 | 10 | 120 | 1000 |
| 地图官方 API / 天 | 不含(粘贴解析仍可用) | 100 | 1000 |
| 导出 / 天 | 10 | 200 | 2000 |
| 成员上限(默认,可覆盖) | 1 人 | 5 人 | 30 人 |
| 月付价格 | ¥69 / 月 | ¥168 / 月 | ¥368 / 月 |
| 年费特惠 | ¥600 / 年(省 ¥228) | ¥1680 / 年(省 ¥336) | ¥3680 / 年(省 ¥736) |
用量按组织统计,每日 0 点(UTC)重置;超额不会静默丢数据,会返回明确提示。新注册组织默认个人版,由平台管理员在后台调整。
价格与结算
上表价格是对外标价展示:登录页、工作台「账户 ▾」、平台后台「套餐说明」都会显示月付价与年费特惠。月付 / 年付只是结算周期不同,功能与配额完全相同。
saas.js 的 PLANS。按组织自定义成员上限(v3.1 新增)
套餐里的成员上限只是「默认值」。平台管理员可以为单个组织单独覆盖这一项,其它配额仍然随套餐走。
admin 登录 → 顶栏「平台管理」→「组织与套餐」表。② 设置 找到目标组织的「成员上限」列,输入 1–10000 的整数 → 点「保存」(输入框回车等效),该行显示「生效 N 人 · 自定义」。
③ 还原 点「恢复默认」,或清空输入框再点「保存」,即回到套餐默认值。
④ 生效位置 生成邀请码、用邀请码注册两处都按新上限校验;工作台「账户 ▾」的成员配额进度条与团队标题同步显示自定义上限。
⑤ 边界 只影响人数,不动线索、其它配额与账号。若上限调得低于现有活跃成员数,已有账号不会被删除,只是不能再新增成员,后台会明确提示。
data/saas/tenants.json 对应组织的 maxMembersOverride 字段;字段缺省 / 留空即回退套餐默认。每次调整写入审计日志 MEMBER_LIMIT,仅限平台管理员操作。14.4 邀请同事(标准 SOP)
② 同事 打开链接 → 自动切到注册页并填好邀请码 → 填账号、密码 → 点「创建组织并登录」(有邀请码时不会新建组织)。
③ 核对 管理员面板「团队成员」应多出一人;同事的线索池应能看到组织已有的全部线索。
④ 离职 在该成员行点「停用」,其账号立即无法登录,已建线索保留。
14.5 安全设计
- 密码
scrypt+ 每账号随机盐,服务端不存明文;连续 5 次登录失败锁定 10 分钟。 - 写请求校验同源
Origin/ 自定义 CSRF 头;Cookie HttpOnly + SameSite=Lax,HTTPS 部署加 Secure。 - 响应带
X-Content-Type-Options/X-Frame-Options/Referrer-Policy;静态目录禁止../穿越。 - 账本带
rev版本号,多人并发保存时后写者收到 409 并自动同步最新数据,避免静默覆盖。 - 审计日志
data/saas/audit.log记录登录、注册、改套餐、改成员上限(MEMBER_LIMIT)、下单、支付开通、线下收款确认、回调拒绝、成员变更、导出;不记录密码、商户密钥、支付链接、地图 Key、线索正文。 - 支付回调必须验签(微信 RSA-SHA256 + APIv3 密文解密 / 支付宝 RSA2),时间戳防重放,金额与订单不符拒绝,通道不符拒绝,重复回调幂等;商户密钥只在服务端,后台不展示、不回传、不进日志。
- 合规红线不变:不爬评论区、不自动私信群发、不抓个人手机号、不批量拉商家库。
14.6 从本机到团队 / 公网
| 场景 | 做法 |
|---|---|
| 仅自己用 | 默认 HOST=127.0.0.1,双击 启动SaaS.cmd,浏览器开 127.0.0.1:8788。 |
| 局域网同事共用 | 启动时设 HOST=0.0.0.0(Windows CMD:set HOST=0.0.0.0 && node server.js),同事访问 http://你的内网IP:8788;放行防火墙 8788 端口。 |
| 公网 / 域名(v3.6 推荐) | 用 deploy-tuoke/ 一键部署到 https://tuoke.xhcsyun.com:Nginx 反代 + certbot HTTPS + systemd 常驻 + 官网首页,详见第 1 章「网站版」。 |
| 公网 / 域名(手工) | HOST=0.0.0.0 + SECURE_COOKIE=1 + ADMIN_PASSWORD=强密码,前面挂 Nginx / Caddy 做 HTTPS 反代,务必先改掉默认管理员密码。 |
| 换端口 | PORT=9000(或改启动脚本里的 set "PORT=8788")。 |
# Nginx 公网反代示例(先申请证书)
server {
listen 443 ssl;
server_name lead.example.com;
ssl_certificate /path/fullchain.pem;
ssl_certificate_key /path/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8788;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
}
ADMIN_PASSWORD 并开启 HTTPS 后设 SECURE_COOKIE=1;③ 定期备份整个 data/saas/ 目录;④ 不要把这个仅用于内网可信环境的文件存储版直接暴露到公网承载敏感客户数据——正式商用建议再接数据库、备份策略与等保措施。14.7 动作边界
| 环节 | 系统自动完成 | 你 / 管理员操作 |
|---|---|---|
| 账号与团队 | 注册登录、密码加盐、会话、租户隔离、邀请码校验、权限判定、审计日志 | 设置管理员密码、生成并分发邀请码、停用离职成员 |
| 套餐 | 按组织统计用量、超额拦截、每日重置、自定义成员上限校验、价格展示 | 在管理后台分配套餐、按需设置单组织成员上限;开票、签约 |
| 订阅与支付 | 下单签名、回调验签、金额校验、幂等开通、账期实时判定、到期只读、订单流水、审计 | 本人申请商户资质、保管密钥、配置公网 HTTPS 回调、真实小额付款实测;核对线下汇款到账并确认收款 |
| 部署 | 监听地址与端口、静态资源、API | 申请域名与 HTTPS 证书、配置反代与防火墙、定期备份 |
| 获客业务 | 与 v2 完全一致(检索式、打分、话术、跟进、导出) | 与 v2 完全一致(人工登录平台、复制、发送、成交) |
14.8 订阅、在线支付与账期(v3.3 新增)
已接入 微信支付 Native 扫码、支付宝当面付扫码、线下汇款人工确认 三条通道,配套订阅台账、账期到期停用与订单管理。支付代码零依赖(仅 Node 内置 https / crypto),不引第三方支付 SDK。商户凭据默认全空、通道默认关闭,未配置时绝不生成模拟二维码或假装支付成功。
14.8.1 账期状态机(每次请求实时判定,不靠定时任务)
| 状态 | 含义 | 工作台 |
|---|---|---|
| 平台授权 | 升级到 v3.3 时已存在的组织自动获得「不限期」授权,不会被新账期锁死 | 全部可用 |
| 试用期 | 新注册组织默认 7 天(trialDays 可配) | 全部可用,顶部蓝色提醒 |
| 正常有效 | 订阅期内 | 全部可用 |
| 宽限期 | 到期后 3 天(graceDays 可配) | 全部可用,顶部黄色提醒 |
| 已到期 · 只读 | 超过宽限期,或管理员点「立即停用」 | 所有写操作被服务端 402 拦截;线索可查看、可导出,绝不删除 |
| 到期不续订 | 用户主动勾选,有效期内仍可用 | 到期后按上面规则进入宽限 / 只读 |
billing.js 的 view()),不依赖定时器,也不能靠前端改按钮绕过。只读时仍允许登录 / 改密 / 退出、查看台账、导出 CSV / JSON、订阅查询与下单续费(不会把自己锁死);被拦的写操作统一返回 402 SUBSCRIPTION_EXPIRED。台账在 data/saas/subscriptions.json,订单在 orders.json。14.8.2 三条通道与「双通道到账确认」
| 通道 | 怎么付 | 到账确认 |
|---|---|---|
| 微信支付 · 扫码 | 微信支付 API v3 Native 下单 → 浏览器本地生成二维码 | 回调 RSA-SHA256 验签 + APIv3Key 密文解密,或服务端主动查单 |
| 支付宝 · 扫码 | 当面付 alipay.trade.precreate | 回调 RSA2 验签,或 alipay.trade.query 查单 |
| 线下汇款 · 管理员确认 | 以订单号作备注转账,把付款凭证发给管理员 | 管理员核对到账后点「确认收款」,系统不会自动标记已付 |
支付网关异步回调会自动开通订阅;若服务器没有公网入站回调地址,用户在支付页点「我已完成支付」(或等 5 秒自动轮询)由服务端主动向微信 / 支付宝查单,只有网关返回真实 SUCCESS / TRADE_SUCCESS 才开通。因此部署只需服务器能出网访问支付网关,不强依赖公网回调;生产环境仍建议配好回调。二维码由 public/qrcode.js 在浏览器本地生成(Byte 模式 / 纠错 M,已与标准库逐模块对拍),支付链接不发给任何第三方二维码服务。
14.8.3 微信支付配置(v3.5 起在后台填表,不必手改 JSON)
admin 登录 → 顶栏「平台管理」→「订阅、账期与在线支付」→ 展开「微信支付配置 · 填表即生效」。保存后系统自动写盘、重载配置并跑一次本地自检,不用重启服务、不用改文件。| 步 | 填什么 | 去哪拿 |
|---|---|---|
| 1 商户信息 | mchId、appId、APIv3 密钥、证书序列号 | 微信支付商户平台 pay.weixin.qq.com → 账户中心 · 商户信息 / API 安全;AppID 须在「产品中心 → AppID 账号管理」与商户号绑定 |
| 2 密钥证书 | 商户 API 私钥、微信支付公钥(或平台证书) | 把 apiclient_key.pem、pub_key.pem 放进 data/saas/certs/,页面上点「用作商户私钥 / 用作平台公钥」自动填路径;也可直接粘贴 PEM 全文 |
| 3 公网回调 | baseUrl、两个启用开关 | 公网 HTTPS 域名 + 反代;回调自动推导为 baseUrl + /api/pay/notify/wechat,页面可一键复制 |
- 留空 = 保留原值:改一项不用重填所有密钥;要删掉某项点字段旁「清除已存值」。
- 已保存的密钥一律不回显,只显示「已配置 / 未配置」;APIv3 密钥输入框为密码型;保存成功后输入框立即清空。
- 本地自检纯本地运行,不联网、不下单、不模拟支付,逐项检查 9 项:两个开关、mchId / appId / APIv3 / 序列号格式、私钥 PEM 解析与 RSA 签名自测、平台公钥解析、回调地址公网 HTTPS。全绿后才建议真实小额收款。
- 格式明显错误(APIv3 不是 32 位、私钥 PEM 损坏、baseUrl 为 http / 本机 / 内网)直接拒绝保存并列出原因,不会写坏配置。
- 保存前自动备份到
data/saas/pay-config.bak.json(同样含密钥,勿外传),原子写入;审计日志只记字段名、不记任何值;仅平台管理员可访问。
data/saas/pay-config.json(模板 pay-config.example.json),改完点后台「重载支付配置」。字段说明见模板 _字段说明。外部环节仍由你本人办理:① 申请商户号、下载 API 证书、绑定 AppID、设置 32 位 APIv3 密钥、下载微信支付公钥;② 准备公网 HTTPS 域名 + 反代,让回调地址可被微信访问(本机
127.0.0.1 / 内网 IP 不可用);③ 表单填值 → 保存 → 自检全绿 → 用真实小额订单实测扫码付款;④ 核对到账与订阅自动延长,线下汇款由管理员在后台「确认收款」。pay-config.json,不上传第三方、不写日志。凭据缺失或自检未通过时下单会明确报错并列出缺少的字段,不会生成任何收款二维码,可改选「线下汇款」。pay-config.json 与 certs/ 含敏感信息,务必设权限、不要提交到代码仓库。14.8.4 安全边界(服务端强制)
- 金额一律由服务端按
PLANS.billing计算(单位:分),忽略前端传的金额;回调金额与订单不符直接拒绝开通。 - 微信回调验
Wechatpay-Signature(RSA-SHA256 + 平台公钥)后用 APIv3Key 做 AES-256-GCM 解密;支付宝回调验 RSA2 签名;时间戳超 5 分钟按重放拒绝。 - 用订单号反查本地订单,租户 ID 绝不从回调体取;支付通道必须与下单通道一致(防止用微信回调确认线下汇款订单);重复回调幂等,不重复延长账期。
- 支付回调是匿名白名单,跳过 CSRF 校验但必须验签;失败返回 401 /
fail并写PAY_NOTIFY_REJECT审计。 - 审计新增
ORDER_CREATE/ORDER_PAID/PAY_MANUAL_CONFIRM/SUBSCRIPTION_ACTIVATE/ADMIN_REVOKE等,不记录密钥、支付链接与线索正文。
14.8.5 订阅管理怎么操作
| 谁 | 入口 | 能做什么 |
|---|---|---|
| 组织管理员 | 顶栏「订阅与账单」或「账户 ▾ → 订阅与账单」 | 看账期与剩余天数;选套餐 / 月付年付 / 通道下单;扫码或复制支付链接;主动查单;取消未付订单;查最近 20 笔订单;设置「到期不续订 / 续订提醒」 |
| 平台管理员 | 「平台管理 → 订阅、账期与在线支付」 | 看全部组织账期与收款累计;手动开通 / 续期(可填天数顺延);确认线下收款;授予 / 取消平台授权;立即停用订阅;重载支付配置;查最近 80 笔订单 |
payments.js。14.8.6 新增文件
| 文件 | 作用 |
|---|---|
payments.js | 支付网关:签名 / 下单 / 查单 / 回调验签 + 配置写入 / 脱敏 / 自检 |
billing.js | 订阅账期内核:状态机、订单、幂等开通、管理员开通 / 停用 |
public/qrcode.js | 纯前端 QR 编码器,本地生成支付二维码 |
public/billing.js | 订阅与账单面板、支付页、主动查单轮询、到期横幅 |
pay-config.example.json | 配置模板与字段说明(无真实凭据) |
data/saas/subscriptions.json / orders.json | 订阅台账 / 订单流水(金额单位:分) |
data/saas/pay-config.json / certs/ | 支付配置与商户凭据(敏感)/ PEM 密钥,自行创建并设权限 |
data/saas/pay-config.bak.json | 每次保存前的自动备份(同样含密钥,勿外传) |