潮汐●竞品监控

运营后台 · 总部专用

潮汐●竞品监控 · 运营后台 总部

数据消耗

按接口调用计费。单价来自「平台与端点」,调用次数由采集端每日回传。

版块对照(原型 ↔ 正式端)

原型 tabCost 一共 10 个版块 —— 这一张表回答「还缺哪块」
加载中…
★ 演示 = 原型同款假数据,便于逐块比对; 真实 = 采集端已回传、后台现算。 数字可以假,标记不能假 —— 换真数据的那一刻,标记必须跟着换。

近 30 天成本趋势(按数据源拆分)

柱=当日采集成本(¥),线=当日收入(¥,右轴)
加载中…

成本结构:哪个模块在烧钱

本月累计含费成本 ¥412.6
加载中…

端点消耗明细(Top 10)

同一平台不同端点单价可差 8 倍,选型错了成本翻倍 —— 这张表就是用来抓这个的
加载中…

按客户:谁在亏钱

成本率 = 含费采集成本 ÷ 套餐售价;红线 70%,黄线 60%
加载中…

按象限:哪条线毛利最薄

四象限各自本月成本与毛利率
加载中…

余额与充值(数据源账户)

欠费=全量客户采集中断,必须提前预警
加载中…

数据对账(后台算的 vs 数据源账单)

每天 00:05 与结算任务一起跑;差异 > 3% 要人工查
加载中…
用量从哪来:采集端(api-server)每天汇总各端点的调用次数,调用 POST /api/usage/report 回传;本端按端点单价现算金额。 外部只报「次数」,金额由这里算 —— 这条对内部接口同样成立。

商品数据源与双源切换

只管「抖音商品销量」这一个采集点(Apify 在我们整个数据源里只干这一件事);TikHub 的账号 / 视频 / 直播不在此列,也不参与这个开关。所有配置改完即生效,不发版、不改代码。

当前实际是单源运行,别被"双源"三个字骗了:备源下拉里的 APISpace 标为「待 POC 确认」 —— 它官网没有公开的抖音电商商品接口文档,必须先打 400-616-0330 确认「有没有 + 多少钱」。 确认通过前,备源为空,主源挂了就是真的挂了。开关与适配层先建好,备源确认后填进来即可,不用改结构。
当前主源
—
—
备源
—
—
切换模式
—
主源故障时自动切备源
主源成功率(24h)
—
—
本月商品采集成本
—
—

双源配置(后台可配,共 7 项)

其余的端点、单价、重试退避都是采集侧内部项,不放在这里 —— 放进来的标准是「运营需要改,且改了不用发版」
配置项取值说明与红线
主源 日常走哪家。APISpace / JustOneAPI 在 POC 通过前选了也拉不到数据,界面会直接提示"该源未接入"
备源 主源挂了顶上去。主备不能选同一家(选了界面标红并拒绝保存)
切换模式 lock 只在对账期或调试时用:锁定后主源故障也不会切,商品数据会断 —— 正常运营必须 auto
降级触发 连续失败 3 次
或 5 分钟窗口失败率 > 30%
两个条件任一满足即切备源。单次失败不切(偶发 429 / 超时会误触发,来回横跳比短暂失败更伤)
切回策略 不自动切回(默认)
/备源稳定 24h 后用单商品探针验证
★ 默认不自动切回,理由:主源刚恢复时往往不稳定,自动切回会造成来回横跳,客户看到数据忽有忽无。要切回就人工点一下,或用 1 个商品探针连续 3 次成功再切
双源对账 关(默认)
开时:1/10 频率 · 仅核心商品 · 连续 3 天
★ 对账=同一商品两家都采,成本直接翻倍。所以限定:只对核心商品、只跑 1/10 次数、只跑 3 天。用途只有一个:切源前确认两家口径是否一致,不是常态开着
客户级覆写 可指定单个客户单独走备源 某个客户在某源上反复失败时,只把它切走,不动全局。覆盖关系写在客户行上,全局变更时不覆盖它
保存后即刻生效并写一条切换日志;任何一次自动切换都会推一条后台告警(商品断供=电商线核心功能失效,不能静默)。

可选源清单(谁有资格进这个开关)

进开关的硬门槛:① 能按关键词/标题搜索;② 能拿到日销序列
源归属单次含费搜索日销序列状态
Apify
zen-studio
境外 · 捷克$0.023✅✅ 30 天在用(主源)
APISpace国内 · 深圳银云¥0.1~0.3待确认待确认待 POC 第 5 步
JustOneAPI国内团队 · 主体不公开登录后可见✅ V1待实测候选(有搜索端点)
抖店官方国内 · 字节¥0.0002✅❌排除(只能查自己店铺)
TikHub境外主体$0.050❌ 需 ID❌排除(贵 2.3 倍且要 product_id)
★ 抖店官方便宜 1000 倍但只能查自家店铺 —— 盯不了竞品,再便宜也不进这个开关。能"按标题搜到竞品"比便宜重要得多。

字段标准化映射(双源能切换的技术前提)

两家返回的字段名和口径都不一样,必须先归一到同一张表,否则切源=改解析代码
统一字段ApifyAPISpace(待填)
product_idproductId待 POC 确认
titletitle待 POC 确认
pricepriceAmount待 POC 确认
shop_nameshopName待 POC 确认
monthly_soldmonthlySold待 POC 确认
daily_series[]salesTrend(30 天)待 POC 确认
source由适配层写入,每条快照都带 —— 必填,见下方红线 2
为什么这张表比开关本身更重要:开关只是个下拉,真正决定"能不能无痛切换"的是适配层。映射没做完就开双源,切过去的瞬间解析就崩。

双源对账结果(仅在开关打开时产生)

判据:同一商品两家的月销量差异 ≤ 5% 才算口径一致;超过就要查是谁把"已售"算成了"已付款"
商品Apify 月销APISpace 月销差异判定
当前备源未接入,无对账数据。APISpace 通过 POC 后,这里会自动出现第一批 3 天的对照记录。
★ 差异超过 5% 时的处置:不是"取平均",是判定两家口径不同 → 不能互为主备,只能整段整段地换(换的那一刻打断点标记,历史数据分段看)。

切换日志

每一次切换、每一次配置变更都留痕 —— 数据出问题时要能回溯"那天到底走的哪家"
时间事件触发影响范围操作人
★ 主源抖一下而没有备源可切时,只能硬扛 —— 这是真实风险的样子,也是要把 APISpace 接进来的理由。

三条红线(改配置前必读)

红线内容
1 · 字段先归一映射表没填完,不许把 APISpace 设为主源 —— 切过去解析崩在采集侧,客户看到的是商品数据整片空白
2 · 跨源不连点每条快照都带 source;销量趋势图不允许把两家数据连成一条线,切换点必须断开 + 打标记。两家"已售"口径可能不同(含不含退款、含不含预售),连起来会出现假的暴涨暴跌,客户会以为系统坏了
3 · 对账别常开对账=成本翻倍。只在切源前后各开 3 天,对完立刻关;忘记关的话,商品线成本会直接 ×2,把毛利从 66% 打到 32%

支付与密钥

密钥在这里填写与管理,全部加密落库;页面只回显掩码,不显示明文。

支付通道状态

下面这张表说的是「配置项【填没填】」,不是「通道【通不通】」—— 两者不一样:五项全填了、但微信不认这三者组合是完全可能的状态。 要看微信认不认,请用下面的「跑一次通道自检」。
加载中…

通道自检

真的拿着商户号与私钥去微信签一次名,看它认不认。 这一步本地无法替代:私钥里不含商户号,序列号只是一个字符串, 三者各自看都是「填了」,只有微信的回应能给出答案。
尚未自检 —— 点上面的按钮,结果出炉约需 1~3 秒。

客户端登录

控制客户端「微信登录」这个按钮出不出、能不能真的登进去
加载中…
加载中…
★ 最容易填错的一项:支付 AppID ≠ 登录 AppID。 收款用【公众号 / 移动应用】AppID(上面「支付」那组), 微信登录用【微信开放平台 · 网站应用】AppID(下面这组)。 混填的表现是收款一切正常、客户端点微信登录一直失败, 而后台界面上完全看不出来 —— 只能去翻客户端日志。
真实门槛(上线前必读):微信开放平台网站应用需要 企业资质 + 300 元/年认证 + 备案域名。 没拿到之前把开关关着,让按钮干脆不出现,比让它出现但点不动要好; 账号密码登录是兜底,不依赖任何第三方凭据。

API 密钥

加载中…
两条通道要分开看:能下单(商户号 + 证书序列号 + 私钥)不等于能验回调 (平台证书 + APIv3 密钥)。缺后者时下单会成功、回调被拒 —— 这时靠轮询补账, 而不是跳过验签。

渠道与卡密(内部管理)

代理卖的是卡密(激活码),客户在客户端「卡密开通」页输入即用。卡密=印钞机,所以这一页的全部设计围绕一件事:先收钱、再出码,出码即可追溯。本页是我们的管理视图(看全部代理);代理本人打开的是另一个网站。

★ 先把一句话钉死:代理不进这个后台。代理用的是另一个独立应用 agent.<主域>,能看到的东西只有四样:自己的余额、自己的发码额度、自己的卡密、自己名下客户的到期状态。本页全部内容(成本 / 毛利 / 供应商单价 / 代理名单 / 折率口径 / 权限矩阵 / 四条红线)代理一条都看不到 —— 不是 CSS 藏起来,是代理那份构建产物里根本没有这些代码和字段。

① 统一登录:一个账号,四个应用(不是三个)

片小帮与潮汐是两套产品、两套数据,但账号中心只有一个 —— 客户不用记两套密码,我们也不用维护两套用户表
应用谁用入口账号来源能看到的数据
片小帮客户现有主域同一个账号中心
微信扫码登录,一个微信=一个 uid
自己的生成次数与订单
潮汐·客户端客户Windows 客户端自己的监控范围、套餐、预警
潮汐·运营后台只有我们admin.<主域>全部:成本、毛利、供应商单价、全部代理与客户
潮汐·渠道后台
独立应用
代理agent.<主域>只有自己:余额、额度、自己的卡密、名下客户到期状态
★ 统一登录 ≠ 统一后台。账号打通(一个 uid 走天下),应用分开:片小帮后台、潮汐运营后台、潮汐渠道后台是三个独立进程、三个独立库。
★ 最容易写错的一句:把「一个账号走三个应用」理解成「代理也进运营后台」。代理进的是渠道后台,永远不是运营后台 —— 这是本轮专门拆出来的第 4 个应用。统一登录只统一身份,绝不统一权限:同一个 uid,在运营后台是「我们」,在渠道后台是「代理」,权限由后端按 uid 的角色下发,与用哪个入口登录无关。

② 权限矩阵:代理能看什么、不能看什么

判据只有一条:凡是能反推我们成本或让代理自己调价的能力,一律不给。
能力管理员
运营后台
代理
渠道后台(另一应用)
终端客户
客户端
看 API 成本 / 供应商单价✅❌ 屏蔽❌
看毛利 / 客户成本率✅❌ 屏蔽❌
改全局套餐定价✅❌❌
改数据源 / 双源开关✅❌❌
看客户名单✅ 全部✅ 仅自己名下—
看客户监控数据(账号 / 视频 / 商品)✅❌ 只看订阅状态✅ 自己的
生成卡密✅ 无限额✅ 余额与限额内❌
作废未核销卡密✅✅ 仅自己名下❌
作废已核销卡密✅❌ 需管理员❌
改自己的进货折扣✅❌—
开下级子账号✅⚠️ 可申请,需审批❌
导出客户数据✅⚠️ 仅自己名下且脱敏❌
看到其他代理的信息
余额 / 发码量 / 名下客户数
✅ 全部❌ 只能看自己❌
看到成本口径 / 权限矩阵 / 四条红线✅❌ 整个页面不存在❌
★ 为什么连「看客户监控数据」都不给代理:代理拿到客户在盯哪些竞品,等于拿到客户的核心商业情报,转手就能卖给别人。代理只需要知道「这个客户还有 23 天到期、该续费了」。
★ 为什么连「其他代理」都要屏蔽:代理之间互相看得见余额与发码量,等于把渠道盘子摊开给所有人 —— 大代理会被小代理比价,小代理会去猜我们的成本结构,最直接的结果就是串货压价。

③ 代理列表(可操作):设置 · 名下客户 · 累计发码 —

★ 【65 轮拍板 · 现行定案】渠道进价是价表不是折率:社媒 标准 ¥44 / 专业 ¥97;电商 标准 ¥75 / ¥149(走卡密批发);旗舰版(两线)不进批发,走推荐成交返点 10%(¥29.9/单);年付(两线)不开放渠道批发。等级只调单日发码额度,不调进价 —— 需要给个别代理特殊价时走下面 ④ 的设置,且必须留痕。
进价表本身(上表那四个数)改全局默认:点右上「✎ 改统一价表」;只改某一个代理:点本行「设置」。
加载中…
★ 当前为筛选视图,只显示满足条件的代理;计数列(名下客户 / 累计发码)仍是该代理的全量数字,不是筛选后的子集 —— 否则会把「这个人总共发了多少」读成「这个人在筛选结果里有多少」。
★ 【64 轮校正 · 62 轮此处写错了】62 轮写「全等级统一 7.5 折,沿用渠道价 ¥75 / ¥149 / ¥219」,这句话本身不成立:
 ① ¥75 / ¥149 / ¥219 是电商线的价(基于电商售价 ¥99 / ¥199 / ¥299 算的),不能套到社媒线 —— 社媒标准售价才 ¥59,若按「¥75 进货」,进货价比零售价还贵 ¥16;
 ② ¥219(旗舰)根本不是批发价 —— 已判定:旗舰版让利后渠道毛利仅 27.9%,代理按最低零售价卖一单只赚 ¥50(18.6%),双方都赚不到钱 → 不进批发,改走推荐成交返点 10%(¥29.9/单);
 ③ 折率与价表自相矛盾:7.5 折下旗舰应为 ¥224.25,而定案是 ¥219(7.32 折),两个数不可能同时成立。
★ 65 轮拍板(现行定案):渠道进价是「价表」不是「折率」—— 社媒线 标准 ¥44 / 专业 ¥97;电商线 标准 ¥75 / 专业 ¥149;旗舰版(两线)不进批发走返点 10%;年付(两线)不开放渠道批发。等级只调额度、不调进价 —— 进价多档(或按等级打折)会让同一批货出现多种成本,对账和串货追溯都会乱。
★ 电商线还要先降本再放量:电商·国内实测成本率 60~68%(客户把商品位全设成核心),按折率进货毛利仅约 9%。先落地「核心商品位硬限=重点账号数」,把成本率压回 40% 以内再放量。
★ 零售价不干涉,但协议里写最低零售价不低于 9 折 —— 否则代理低价甩卖会打穿直营价格体系。

③⁺ 新增代理 正式端扩展

原型是静态演示,没有这个入口;正式端必须能真的建代理。建完立刻出现在上方列表。
★ 初始密码 123456 是弱密码,系统会自动标记为「待修改」,代理首次登录后应自己改掉(渠道后台右上角「改密码」)。留空用户名则不建登录账号,之后再补发凭据。

★ 单日总额上限必须 ≤ 张数上限 × 最高进价 ¥149,高于它就是一条永远触发不了的死条款。

④ 代理设置:等级 / 限额 / 可批发档位 / 进货价与折扣(后台直接设定) —

统一价表本身也可以改:点标题右侧的蓝色「✎ 改统一价表」按钮,四档进货价逐个填,改完立即影响所有「跟随统一价表」的代理的发码扣款并写改价留痕。
默认全部代理跟随统一价表(65 轮定案)。要改成「按折率打折」或「自定义价表」:点表格里「进货价模式」那一列的蓝字(或本行最右的「设置」),弹窗第二行就是「模式」下拉 —— 改完立即生效并写操作日志。
代理进货价模式社媒·标准
零售 ¥59
社媒·专业
零售 ¥129
电商·标准
零售 ¥99
电商·专业
零售 ¥199
年付旗舰最近改价操作
加载中…
★ 改价三条硬校验(写进代码,不是写在文档里):
① 进货价必须小于零售价 —— 一旦算出「进货 ¥75、零售 ¥59」这种数直接拒绝保存(65 轮就是在这上面栽过一次);
② 折率低于 7.5 折要二次确认 —— 不是不让给,是要让你确认一遍:这是在拿平台毛利换渠道量;
③ 单日总额上限不许高于「张数上限 × 最高进价」 —— 高过它这条上限永远触发不了。最高进价现取当前价表,不写死(原 ¥20,000 对 50 张就是一条死条款)。
★ 代理自己永远改不了价:设置入口只存在于运营后台,代理端连这个字段都没有。每一次改价都要留痕(谁改的、从多少改到多少、什么时候),否则出现串货压价时无法追溯。
★ 年付与旗舰默认关闭:年付本身已 9 折,再叠渠道折等于等效 67.5 折,规则未评估前不放开;旗舰让利后渠道毛利仅 27.9%,定案走推荐成交返点 10%(¥29.9/单)而不是批发。要放开必须先在上面列表里勾选并定价。
★ 「改」标记=该档进价与统一价表不同(已单独让价);点每行「设置」可改等级 / 限额 / 可批发档位 / 进货价与折扣。

④⁺ 代发卡密(管理员手动发码) 正式端扩展

走的是与代理端完全同一套校验(余额 / 单张上限 / 单日张数 / 单日总额 / 面额准入)—— 管理员没有"信任通道"。

⑤ 名下客户与累计发码查询 正式端扩展

在上方列表点「名下客户 N」或「发码 N」看单个代理;也可以在这里按卡号 / 客户名 / 代理名全局搜。
全局搜索 —
★ 为什么管理员能看、代理不能看:管理员看到的是对账与风控视角(这个代理压了多少货、核销了多少、卖给了谁);代理只能看到自己那一份,且看不到客户在盯什么 —— 那是客户的商业情报,转手就能卖。两个视角共用一个「能看到什么」的字段白名单,在接口层按角色过滤,不是前端隐藏。

⑥ ★ 代理后台暴露自查:这些东西代理一个都看不到

每往代理端加一个可见字段,都要先过这张表。判据一句话:凡是能反推我们成本、能看穿渠道盘子、能带走客户情报的,一律不进代理端。
数据 / 设置代理端不给他看的理由
API 采集成本、供应商单价($0.001~$0.05)❌ 源码级不含单价能直接反推我们的毛利,是定价底牌
毛利 / 毛利率 / 客户成本率❌看到毛利就知道还能往下砍多少价
商品位成本(核心 ¥5.26 / 普通 ¥0.75)❌反推套餐的真实成本结构
其他代理的身份 / 余额 / 发码量 / 名下客户数❌渠道盘子摊开=互相比价、串货压价
「可赚」这类差值(面额 − 进价)❌ 81 轮补差值做一次减法就能反推进价 —— 金额本身不是情报,差值是
各等级折率表(自己的进货价除外)❌知道别人的进价就会要求对齐,折率体系守不住
全局套餐定价配置(改价能力)❌能改价=能把直营价格体系打穿
数据源与双源开关、切换日志❌暴露我们用的哪家、多少钱、谁在供货
客户的监控内容(盯哪些竞品 / 账号 / 视频)❌ 只看到期状态客户的核心商业情报,转手就能卖
本页(权限矩阵、四条红线、风控规则)❌ 页面不存在等于把我们的防守策略告诉对手
全站客户名单、端点清单、余额与对账❌与代理业务无关,纯风险
任何提及「运营后台 / 内部 / 成本 / 毛利」的说明性文案
原型说明横幅 · 副标题 · 安全提示横幅
❌ 字符串都不存在64 轮补:「存在一个内部运营后台」本身就是情报;解释性文案等于把我们的安全边界讲给代理听。代理端只做「做事」,不做「解释」 —— 边界靠接口字段白名单 + 越权告警约束,不靠文案声明
★ 实现红线(最容易写错的一条):前端隐藏 ≠ 隔离。代理端不许用「同一个页面 + 判断角色隐藏菜单」的做法 —— 那样代理按 F12 就能从 HTML / JS 里读到全部数字。正确做法:同一套源码、编译两份产物(运营端 / 代理端),代理那份里物理上不打包成本、毛利、供应商相关代码;接口层再按 role 过滤字段(在后端过滤,不是前端过滤),且代理端查询只接受 agent_id = 自己,任何越权 id 直接 403。

⑦ 卡密流水(全部代理 · 管理员视图) —

核销绑定客户 uid(不绑设备);批次号用于串货追溯 —— 哪一批、谁发的、卖给了谁
加载中…
★ 代理端那一侧的「操作」列只有未核销的码才有按钮(自助撤销、按进货价退余额);已核销的码,代理端整列是空的。这条必须硬卡:否则代理可以先把码卖给客户收了钱,再把码作废退款,白赚一道。
★ 反向也要留口子:管理员可以「强制作废」已核销的码(客户跑单、码被盗、纠纷处理),但:要二次确认 + 写操作日志 + 默认不退代理余额(退款需人工审),否则这条会变成代理绕开红线的后门。

四条红线(发码前必读)

红线内容
1 · 先款后码绝不允许"先出码、后结账"。生成即从预付款余额扣款,余额不足直接拒绝。代理跑路时,已出的码就是净损失 —— 一张 ¥3229 的旗舰年付码,发出去就是 3229 元收不回来
2 · 一码一账号
(不绑设备)
核销时绑定 uid、不绑 machine_id —— 本地客户端换电脑、重装系统是常态,绑设备会制造大量「我换电脑就用不了了」的工单。一张码=一个账号已足够防多人共用;真正的防滥用靠90 天有效期 + 批次追溯 + 核销留痕。异常只告警不硬拦:同一张码被不同 uid 反复尝试核销 → 后台告警,代理无权处理
3 · 未核销可退、已核销不退代理只能作废自己名下未核销的码,作废后按进货价退余额;已核销的码任何情况下都不由代理操作 —— 见上方流水表最后一行的说明
4 · API 与人工同校验代理"自动获取卡密"走 API,必须复用本页同一套校验函数(余额 / 单张上限 / 单日张数 / 单日总额 / 有效期)。不允许给 API 单独开一条"信任通道" —— 那等于把红线 1~3 全部废掉
补充:卡密前缀按产品区分 —— 片小帮 PXB-,潮汐 TIDE-。两个产品共用一个账号中心,但卡密不能混用(片小帮的码兑不了潮汐的套餐),核销接口按前缀路由。

客户与套餐

卖什么价、开几个号、什么时候该续费。本页对应控制项总表 A 组 18 项(套餐售价 / 账号与商品名额 / 重点账号数 / 核心商品位上限 / 加购单价表 / 计费周期与折率 / 升降档与退款规则 / 续费提醒与自动续费 / 套餐权益文案),另承载客户侧的团队管理项(子账号权限 / 账号删除权限 / 团队邀请码)。本页是可编辑的下发配置源:这里增删改并点「保存并下发」后,客户端显示的套餐价、名额、加购单价、周期折率随之变化;客户端一个价格都不许自己算。

在线客户
—
在用套餐的账号数
在售档位
—
社媒 3 + 电商 3(两区域同价)
配额占用
—
账号名额占用 / 已售名额
7 天内到期
—
到期前 7 / 3 / 1 天三次提醒
配置版本
—
每次下发自增,客户端设置页可见

① 在线客户与配额占用

名额就是钱的边界:账号名额决定采集成本,商品名额决定商品线成本。超限必须先加购,后台不允许静默超卖。
加载中…
★ 「编辑」可改客户的档位 / 周期 / 到期日 / 名额;名额不能小于档位自带名额(否则客户端会显示「13 / 8」这种超用还算正常的话术)。「删除」释放名额并停止采集,历史快照按 90 天保留(不是立刻清库)。
★ 72 轮起:类别与渠道不在「编辑」里 —— 监控范围选定即锁定,改它只能走「重置范围」(见下面 ①⁺ 那张卡),且要二次确认 + 写留痕。
★ 账号名额与成本线性相关,商品名额不是:账号每多 1 个=多一条轮询;商品位里只有「核心」是每日刷新(最贵的 ¥5.26/个/月),「普通」是每周一次。所以超卖账号是即时亏钱,超卖商品位要看它是不是被设成了核心。

①⁺ 监控范围一次性锁定(scope_locked)

客户在客户端选了「类别 / 渠道 / 平台」之后就固定下来,不可再自行变动。这不是前端一句拦截文案,而是服务端字段 + 客户端动作层两头都锁。
环节强制手段
客户端 · 界面层两个「重新选择」入口整条删除(我的套餐页、支付弹窗)—— 不是隐藏,隐藏=F12 改一下就回来
客户端 · 动作层setScope() / togglePlat() / changeScope() / backToScope() 全部先过 scopeDeny();不再有「没开通套餐就能改」的例外(旧逻辑的洞)
客户端 · 状态层点「确认,进入工作台」即 lockScope('self');成员邀请加入即 lockScope('team')。退出登录不解开锁(否则退出重进就是绕开锁的捷径)
服务端 · 写入POST /monitor/scope 只在 scope_locked=0 时可写;锁定后一律 409 + 越权告警,不做静默忽略
服务端 · 下发GET /monitor/config 返回 scope{cat,region,plats,locked};客户端只认下发,本地没有任何自解逻辑
唯一合法变更客户联系客服 → 本页「重置范围」(admin 角色 + 二次确认 + 写留痕)→ 下发 scope{lock:0, reset_at} → 客户端解锁一次 → 重选后立即再次锁定
重置的代价原象限的采集任务立即停止、历史数据保留 keep_days=90 天;成员席位同步跟随主账号。所以重置不是「换个线玩玩」,必须让客户先知道
★ 为什么连未付费客户也不许改:换线会同时改变套餐价、名额、采集任务与PLAT_METRIC口径,客服对不上账,客户也会以为范围可以反复试。「选定即锁定」必须是开户那一刻就成立的属性。
★ 一次性令牌:reset_at 由客户端消费一次即失效,重复导入同一份 JSON 不会反复解锁。
★ 老配置兼容:71 轮及以前下发的配置没有 lock 字段,cfgNorm() 一律按已锁定补齐 —— 绝不能因为字段缺失就当成没锁。

①⁺⁺ 范围重置留痕

重置是会停掉采集任务的动作,必须能回答「谁、哪天、把谁的范围从什么改成了什么」
加载中…
★ 与「告警与日志 → ④ 操作日志」的关系:这里只留与监控范围有关的动作;全量操作日志仍在那一页,两处不重复造一份真源。

② 套餐与名额矩阵(A 组主体)

改这里=改报价。动价格前先跑 scripts/cost_model.py(它算的是毛利率,不是感觉)。三列配额有硬校验:重点账号数 ≤ 账号名额、核心商品位 ≤ 重点账号数、商品总数 ≥ 核心数。
加载中…
★ 「核心商品位上限 = 重点账号数」这一项必须在后台硬限(57 补):电商·国内实测成本率 60~68%,根因就是客户把 10 个商品位全设成了核心,而模型假设是「核心 2 + 普通 8」。不硬限,旗舰版毛利会被打到 15% —— 这条已写进 planCheck(),改数据时自动拦截。
★ 年付价 = 月价 × 12 × 折率取整,由右侧「年付价」列实时现算,不许在别处写死数字。
★ 下架 ≠ 删除:下架后客户端不再显示该档位但订单还在;删除会把配置永久移除,且有客户在用的档位不让删。
★ 套餐权益文案支持占位符:{count} / {focus} / {poll} / {core} / {total} / {norm} / {seatsNote} / __LIVE__;写死平台名会被拦下来(㊿ 红线:四个象限必然串台)。

③ 加购单价表与上限(㉞ 已废「固定包」)

单价后台下发、数量客户在客户端自填。改单价即时生效(改下一个计费周期的价格),不需要发客户端版本。
加购项单价 ¥ / 个 / 月单次上限总数上限说明状态操作
★ 不该印在界面上的话,这里也不能印:客户端上的加购入口不印价、不带数量,价格只在扫码页出现(按钮不印价规则,㉛/㉜)。
★ 生效时点两套并存、必须分清:加购按下个计费周期生效;套餐升级即刻生效。金额一律由后台算(pay_amount),客户端只传 {item, qty}。
★ 商品位免费换绑 2 次 / 月(GOODS_REBIND_FREE);超次是否收费要后台定,否则等于无限换绑。
★ 停用 ≠ 删除:停用后客户端不出现该加购入口。

④ 计费周期与折率(period_options[])

周期是全局单一变量,与象限无关 —— 四象限同步跟随,客户端入口 applyServerPeriod()。改折率时右侧「各档算价」列会同步重算。
周期月数天数折率状态各档算价(电商线)操作
★ 折率必须后台可配、不能写死在客户端 —— 它是定价的一部分,且要用真实留存数据回来重算。降低折率的唯一正当理由=实测月付流失率高于假设。8 折的原建议已被 LTV 模型推翻(全线倒亏 9%~24%、电商旗舰毛利跌破 40% 线)。低于 8.88 折会告警但仍然允许保存 —— 后台不能替业务做决定,只能把代价说清楚。
★ 默认周期只有一个且不许下线/删除:客户端打开时默认选中它。

④⁺ 下发通道(后台 → 客户端)

三个通道并存,任选其一即可:① 本机演示用「保存并下发」写本地存储;② 跨机器 / 交付演示用「导出 JSON → 客户端粘贴导入」;③ 正式环境走 GET /monitor/config 下发给所有在线客户端。
当前版本 —
★ 下发的是「配置」,不是「网页」:客户端拿到的只有价 / 名额 / 权益文本,没有任何后台结构信息 —— 这也是代理端隔离能成立的前提。
★ 每次下发都自增版本号 v,客户端设置页会显示正在使用的配置版本,便于客诉时确认「他看到的是哪一版价格」。

⑤ 升级 / 降档 / 退款 / 续费

这四条都是「客户感知差很大」的规则,必须在支付页写清,否则必客诉
规则现行口径为什么这么定
升级补差价全额收新档价,不折算(¥59 → ¥129 收 ¥129)另一种常见做法是「按剩余天数折算补差」,客户感知差很大 —— 必须由后台定死
降档不支持自助降档,走客服涉及退款必须后台可查可审,不能只靠客户端一句拦截文案
年付退款不支持无理由中途退;确需退按「已用月数 × 月付原价」折算后退余额否则客户可以「年付 9 折买入 → 中途退」套利
续费提醒到期前 7 / 3 / 1 天三次桌面通知(renew_notify_days 可调)+ 一键续费(复用现有 Native 扫码)续费率是这个生意的命门;零新资质
自动续费本期不打通,保留后期(字段与接口都留着)微信自 2025-07-28 起委托代扣仅向企业/政府/事业/社会组织开放,个体工商户已被排除;现收款主体是 B 个户商户号。后期切到 A 公司主体新开商户号再开
到期降级超配额先冻结超额部分,历史数据保留 90 天不能一到期就删数据 —— 那是客户的资产

⑥ 客户与团队管理

这些是「客户自己能改,但必须由我们定规则」的项
控制项当前取值关闭 / 收紧的后果
子账号权限开 —— 可增删改监控账号子账号共享主账号名额池,不额外占配额
账号删除权限主账号可删;子账号默认不可删删除立即停止采集并释放名额(含重点名额),历史快照一并清除 —— 不可逆,必须限权
团队邀请码7 天有效,绑定前可撤销卡密有面值控制项,邀请码此前只有界面上写死的一句话 —— 后台必须能改天数、能强制作废
单客户成本上限(熔断)建议 = 售价 60%防恶意刷量把毛利打穿;超线先告警,再降频
客服联系方式「联系我们」面板(禁止暴露客服个人号)现原型为占位号,上线前必须换真实号

价格三条红线

红线内容
1 · 平台枚举现算套餐权益 feat[] 只写占位符,按 scopeKey() 现算。写死平台名 = 客户切象限那天权益开始说假话。
2 · 「(…除外)」不上卡判据:括号是「排除」→ 删;是「限定承诺覆盖哪些平台」→ 留。删了但事实不能藏 —— 在设置页与点重点的 toast 里如实告知。
3 · 金额一律后台算客户端只传 {item, qty},后台返回 pay_amount,前端拿到什么显示什么、一个字都不许自己乘。
4 · 有客户在用的档位不许删删除 / 下架档位前先查 usersOfPlan():正在服役的档位只能先给客户换档再删,否则客户端会显示「档位已失效」。这条同样适用于周期。

⑦ 新增 / 删除(正式端扩展 · 原型无此块)

原型只有「改」,正式端要能开新档、新客户。两条硬校验写进代码:新增档位的三列配额(重点 ≤ 账号、核心 ≤ 重点、商品 ≥ 核心)与删除前查 usedBy(有客户在用的档位不许删)。
范围档位 key名称月价账号重点商品核心席位轮询(秒)
★ 新增档位时权益文案从所选范围的同档位继承(占位符原样带过来)—— 权益不是自由文本,写死平台名会被 planCheck() 拦下。

平台与端点

客户能加哪些平台、每个平台能拿到什么、多久采一次。本页对应控制项总表 B 组 7 项(采集频率)+ E 组 9 项(平台可见性);端点白名单与单价表属 C 组,在「数据源与双源切换」页维护。本页改的是「客户看得见的能力」,改错会直接变成对客户的承诺。

社媒在架平台
11
国内 7 + 海外 4
暂停展示
3
配置保留 · 可一键恢复
不可设重点
4
小红书 / 视频号 / IG Reels / Lemon8
支持开播检测
3
抖音 / 快手 / TikTok
每日只更新 1 次
3
端点单价 > $0.001 即降频

① 社媒线平台名单与能力(在架 11 个)

「能力档位」是内部口径,只在本页维护、不进客户端界面(客户端只显示平台名与结果)
加载中…
★ 为什么 Lemon8 在架也不能设为重点:它有账号 / 搜索 / 单条端点,但拿不到该账号的作品列表 → 根本判不了爆款。这与「降频平台不能设重点」是两个不同原因,话术必须分开说(客户会以为是同一件事)。
★ 国内能拿到播放量的只有快手与 B 站;微博 interaction.* 字段在、值全为 0 → 标「待真实账号作品列表复测」,不许写成「拿得到」。

② 电商线平台名单 + 暂停展示开关

电商线与社媒线共用平台名(抖音两条线都有),所以绝不许靠平台名反推象限
平台象限状态能力档位开播检测可设重点商品采集
抖音电商 · 国内在架full支持可Apify 每日 1 次
快手电商 · 国内在架part支持可—
小红书电商 · 国内在架partDaily不支持不可—
视频号电商 · 国内本线不上off不支持不可—
TikTok电商 · 海外在架full支持可TikTok 商品线
暂停展示(PARKED_PLATS):Facebook Reels · Pinterest Video Pin · Snapchat —— 三个平台配置全部保留、只从展示与选择里摘掉。恢复方法=把平台名从这一个数组里删掉,其余配置一行都不用改。
★ 暂停必须是「单一开关」:原型 PARKED_PLATS 与 scripts/sync_scope_data.py 的 PARKED 两处必须同进同出,否则会出现「选择器里没有、数据里还有」的幽灵平台。暂停时该平台的演示账号 / 视频 / 预警一起下线。
★ 这三个平台走的是 Apify 外部源,计费口径是「按条 / 按账号」,与 TikHub 的按次计费不是一套 —— 恢复时成本要重算。
★ 已下线(不再进名单):Twitter / Reddit / Telegram / Threads / LinkedIn。

③ 采集频率(B 组 7 项)

频率翻倍=成本翻倍。这是成本模型里最灵敏的一个旋钮
采集项现行频率谁能改乱改的后果
账号趋势刷新6h / 4h / 4h(随档位)跟档位多一条轮询线,成本线性涨
视频统计三档统一固定 4h / 轮跟档位不跟随账号轮询,别以为改了账号频率它就跟着变
开播检测三段变频:休眠 4h → 待播窗口高频 → 开播后降到 45min跟档位高频覆盖整场会高估成本 3 倍(我们按峰值算的)
高价平台降频端点单价 > $0.001 → 每日 1 次通用规则不降=成本 305%~335% 售价(小红书 / 视频号)
核心商品刷新每日 1 次(可退到 3 天)可调退到 3 天毛利 +3.6pt(代价:销量突增的发现延迟由当天变 3 天)
普通商品刷新每周 1 次可调改成每天 1 次,标准档毛利直接转负
新账号冷启动前 7 天 30min 级自采样可调≈ ¥2.4/账号 一次性,砍掉会让新账号首日窗口说不清

④ 平台准入与能力字段(改错直接影响对客户的承诺)

字段含义现行取值关闭 / 改错的后果
focus_ok该平台能否设为重点账号排除 4 个:小红书 / 视频号 / IG Reels(降频)+ Lemon8(无作品列表)放开=对高价平台承诺「1 小时发现爆款」,实际一天只采 1 次
live_ok该平台是否支持开播检测抖音 / 快手 / TikTok「重点账号 3 分钟发现开播」这句承诺只在这 3 个平台成立;客户加了不支持的平台还看见承诺,必客诉
accept该平台可以填什么(原样输出到界面)按 PLAT_INPUT_RULES 十平台逐条定义客户不知道该复制什么 → 填错 → 无效参数照样计费
象限映射表类别 × 地区 → 平台名单社媒·国内 7 / 社媒·海外 4 / 电商·国内 3 / 电商·海外 1串台的病根就在这 —— 客户端只认下发结果
本机缓存估算值设置页「清理缓存」显示的值社媒 3.6 MB / 电商 5.2 MB实际构成随保留天数变,应随配置一起下发,不许写死
★ 哪条线、哪个地区有哪些平台,必须是后台的一张表。客户端只认下发结果,不许靠平台名反推象限 —— 抖音在社媒线和电商线都有,反推必错。

⑤ 输入识别规则与短链白名单

实测坑:TikHub 传无效参数仍返回 HTTP 200 并正常计费(视频号 $0.01/次)—— 所以必须在客户端本地先做格式校验
平台该平台可以填什么短链域名(需后端跟随 302 再解析)
抖音主页链接 / 分享口令 / 抖音号v.douyin.com
视频号视频号ID号—
小红书主页链接 / 分享链接 / 小红书号xhslink.com
快手主页链接 / 分享链接 / 快手号chenzhongtech.com · v.kuaishou.com
哔哩哔哩主页链接 / UIDb23.tv
TikTok主页链接 / @unique_idvm.tiktok.com
其余(知乎 / 微博 / YouTube / Instagram)主页链接 / ID按 PLAT_INPUT_RULES 逐条维护
★ 短链不含 ID —— 必须先由后端跟随 302 拿到真实主页链接再解析。平台改域名时只改后台,不必发客户端版本。后端真正要传的接口参数名(sec_user_id 等)是内部资料,绝不上界面,只给后端开发看。

平台三条红线

红线内容
1 · 端点表只说明「有」
不说明「活着」
端点表里 instagram/web_app/* 有价但实测 404。凡是要进合同的能力结论,必须真调一次 + 按字段路径打印 ≥5 条样本。
2 · 同源坑:
推荐流有 ≠ 轮询端点有
① 「推荐流能看到」不代表「轮询端点拿得到」;② 「字段在」不代表「值有」—— 微博 interaction.* 全 0,只能判「待复测」,不许写成能拿到。
3 · 降频是通用规则判据是端点单价 > $0.001,不是「是不是小红书」。旧版写死平台名单,漏掉了 IG Reels($0.002=2 倍价) —— 既没被降频、又没被排除重点。

⑥ 端点维护(正式端扩展 · 原型无此块)

改单价会连带重算降频与「可设重点」—— 这两列都是单价的推论,不是手拧的开关
加载中…

告警与日志

什么情况算异常、通知谁、留什么痕。本页对应控制项总表 D 组 5 项(预警阈值与通知)+ G 组 8 项(存储与归档),并集中承载全部操作日志。告警的价值不在「响」,在于「响了之后有人能查到发生了什么」—— 所以阈值与日志在本页成对出现。

24h 告警
7
已处理 5 · 待处理 2
待处理
2
1 条成本率黄线 · 1 条余额
越权探测(24h)
0
非零即 403 + 立即告警
磁盘配额超线
0 个
告警线 50 MB / 客户
最快耗尽窗口
9 天
Apify 余额 $6.10

① 预警阈值(D 组 5 项)

阈值口径与爆款指数引擎同源 —— 唯一实现是 backend/hvi_engine.py,改阈值前必读该文件,不许在文档或界面里另抄一份数值
预警项触发条件档位差异备注
爆款判定24h 互动增量(赞 + 评 + 藏 + 转)≥ 该账号近 30 条中位数 × 3旗舰可自定义阈值播放量不参与判定 —— 抖音 / 小红书 / 知乎 取不到,混口径会让倍率不可横向比
开播 / 下播检测账号 profile 自带 live_status—与账号快照合并去重,不额外发一次请求(省一份钱)
粉丝异动周均 3 倍旗舰可调—
商品销量突增阈值待定旗舰只有核心商品是日更,这条预警只对核心商品才有意义
通知偏好免打扰时段 / 按类型订阅 / 提示音客户端本地全表唯一一项客户端本地控制项 —— 自建 WebSocket,零 API 成本
★ 四种结果必须分开显示:🔥(S / A 级)|潜力(B 级)|常规|未判级。「常规」≠「未判级」 —— 混标会被客户当成采集坏了。

② 通知通道与推送节奏

事件推给谁节奏为什么是这个节奏
爆款 / 直播 / 商品异动客户客户端实时(WebSocket 推送)自建通道,零 API 成本;免打扰时段可关
套餐到期客户到期前 7 / 3 / 1 天三次续费率是命门;到期前不再打扰
成本率黄线 / 红线我们(后台)黄线 60% 即时;红线 70% 即时黄线是预警,红线要人工介入(提醒客户改回核心商品配额)
数据源余额我们(后台)可用天数 < 14 天 → 首页红条;< 7 天 → 每天早上 9 点推一次欠费=全量客户采集中断,必须提前预警
数据源自动切换我们(后台)即时商品断供=电商线核心功能失效,不能静默
代理端越权访问我们(后台)即时告警(并发 403)越权探测本身就是信号,只拦不报=把信号丢掉
异常核销我们(后台)即时告警,只告警不硬拦硬拦会误伤正常换设备;代理无权处理

③ 存储与归档(G 组 8 项)

存储是「看不见的成本」—— 加长任何一个窗口,时序行数都线性上涨
控制项现行取值说明
热层窗口(全量时序点 + 缩略图落地)7 天加长 = 时序行数线性涨,这是存储最大的旋钮
温层窗口(降采样为日 1 点)30 天中位数样本的天然来源;短于 30 天会出现「样本不足」
冷层窗口(只留汇总,不留点)90 天到期降级为月度汇总
每账号作品保底条数100 条元数据行数的硬上限(18 账号 = 1,800 行封顶)
单视频时序点上限65 点(热 42 + 温 23)锁死放开 = 行数失控;65 点是「7 天画曲线 + 30 天看趋势」的最小够用值
缩略图落地范围仅「爆款 + 热层」锁死全量落地 = 磁盘占用 ×20;平台 CDN 链接失效后本地图才是唯一凭据
归档任务执行时刻每日 03:00避开 4h 采集整点(00 / 04 / 08…)
单客户磁盘配额告警线50 MB超线告警 + 强制降到 30 天窗口,不直接删数据
★ 三项系统级常量有意不可配:日界 0 点、采集锚点右对齐 23:00、结算 00:05 —— 它们不是运营旋钮,是可复现性的前提(换一个值,历史数据的「今日净增」就不可比)。

④ 操作日志(全量留痕)

数据出问题时要能回溯「那天到底谁改了什么」—— 任何改变金额、权限、数据源的动作都必须留痕
时间类型事件操作人影响范围
10-05 00:10结算每日结算任务完成(周一为 00:10)系统全局
10-04 15:20配置数据源配置变更:主 Apify / 备 无 / auto龙四全局
10-04 11:30卡密生成卡密 1 张(社媒·专业·月付 ¥129)义乌老王1 张 · 扣预付款 ¥97
10-03 10:12卡密作废未核销卡密 1 张,按进货价退余额 ¥44义乌老王1 张
10-02 19:05核销卡密核销绑定客户 uid义乌饰品厂1 张
10-02 03:12告警主源连续 3 次失败 → 无备源可切 → 告警系统全局(数据缺 1 个采集点)
10-01 09:00告警Apify 余额可用 < 7 天,推送提醒系统全局
09-30 09:03强制作废作废超期未核销码,按进货价退代理余额(二级审批已通过)系统 · 首次审批 龙四1 张 · 退 ¥47.2
★ 强制作废「已核销」码必须走二级审批(默认开):管理员可以强制作废(客户跑单 / 码被盗 / 纠纷处理),但必须二次确认 + 写操作日志 + 默认不退代理余额。关掉这项=给代理留了一条绕开「已核销不退」的后门。
★ 代理端越权访问要立刻告警(默认开):请求带非自己的 agent_id、或试探运营后台接口 → 403 + 立即告警。
以下为系统实时记录(正式端扩展 · 原型此处为口径示例)
加载中…

告警三条红线

红线内容
1 · 越权只拦不报=
把信号丢掉
越权探测本身就是信号。拦截必须与告警成对出现,否则我们永远不知道有人在试探边界。
2 · 强制作废必须
二级审批
已核销码的强制作废默认不退代理余额,退款需人工审。否则这条会变成代理绕开「已核销不退」的后门。
3 · 配额超线只降窗口
不删数据
磁盘配额超线 → 告警 + 强制降到 30 天窗口。直接删数据是客户资产损失,不可作为省空间手段。

联系我们(客户端求助入口)

客户点客户端左下角「💬 联系我们」看到的那个面板,内容全部在这一页配置。改完点「保存并下发」,客户端按下发结果渲染 —— 换客服号不必再发新版客户端。

红线:客户端只见客服入口,绝不暴露客服个人号 —— 面板里出现的号是工作号, 不是任何人的私人微信 / QQ。判据:写进客户端 DOM 的每一个字,客户按 F12 都能读到, 所以公司名、私人号、内部称呼一律不进面板文案。

① 面板文案

这三行是客户看清的第一个东西,措辞要短、要能自己看懂
面板标题
副标题
微信行文案
★ 「请联系客服 XXX」这种写法不许出现 —— 客户看到的是一个人的账号,不是一个入口。文案一律写成「扫码添加客服微信(备注「潮汐●竞品监控」)」。

② 联系方式与二维码

项现行取值说明
QQ 客服号
客户端「复制」按钮复制的就是它。占位 现为演示占位号,上线前必须换成真实工作号
客服微信二维码
还没有图
(客户端回落内置占位图)
图片地址
换码流程:选图 / 填地址 → 预览确认能扫 → 保存并下发。客户端下次启动即用新码。
⚠ 二维码有效性无法自动验证 —— 后台只能存图,扫不扫得开要靠人工确认。
★ 客户端本地缓存 3 天:断网或下发缺字段时先用上一次的图,避免客户看到白框。换码后个别客户仍见旧图=本地缓存,重启客户端即刷新。
★ 二维码是唯一需要「换图」的配置项,所以它是本页最容易被改错的地方:改错的代价是全量客户扫到旧号 / 死号,且要到客户来投诉才发现。故本页必须有预览,保存前先看一眼。
★ 只接受 https:// 开头的地址,或 data:image/(png|jpg|gif|webp);base64, 开头的内嵌位图 —— 客户端会把这个串直接塞进 <img src>,放 javascript: 或相对路径进去等于让客户端渲染任意内容。SVG 也不收:它是 XML 文档,能带脚本与外链。

③ 显示项开关

「哪些入口出现在客户端」也是配置,不是写死的
显示项开关说明
展示客服微信二维码 已关闭 关掉后客户端面板只剩 QQ 一行 —— 只在换码过渡期临时关,长期关=把客户往窄路赶
展示 QQ 客服号 已关闭 关掉后客户只剩扫码这条路
展示「定制服务」提示 已关闭 客户要按自己口径来(结算时区、专属字段、私有化、批量渠道)时知道该找谁 —— 这是把「定制」这门生意接住的钩子,建议常开
展示服务时间 已关闭 原型这一块只列了上面三项;服务时间这一项下发契约里本来就有,留在页面上才不会出现「有配置但没地方改」
★ 不允许两条路径同时不可用:二维码与 QQ 号是仅有的两条联系路径,全关=客户点「联系我们」看到一条空面板。保存时会被拦(见下方自检第 ② 条)。
★ 「填了值」与「下发它」是两件事:上传二维码或填好 QQ 号之后,对应的开关也必须是「已开启」,否则下发配置里这一项是空串,客户端仍然什么都不显示。已接通 现在填值会自动打开对应开关,界面上也始终能看到当前是开是关。

④ 保存与下发

与「客户与套餐」同一条下发通道(正式环境 GET /monitor/config 的 contact{} 字段)
★ 两个按钮分工不同,不要只看一个:
・预览面板 = 用你刚填的值画一遍 —— 验的是「我这次填的对不对」(保存前、本地)。
・核对已下发 = 读服务端真实存下的值再画一遍,并逐项列出收下的原文 —— 验的是「客户到底会看到什么」。
保存成功后它会自动出现。如果两者不一致,以「核对已下发」为准。
★ 保存前必过五条自检:① QQ 号非空且为 5–12 位数字;② 二维码与 QQ 行至少留一条;③ 标题与副标题均非空;④ 文案里不许出现「个人号 / 私人微信 / 内部 / 运营后台」等越界字样;⑤ 二维码地址只接受 https:// 与 data:image/。自检不过 = 存不进去,不是弹个提示了事。

⑤ 变更留痕

换号换码是会影响全量客户的动作,必须能回答「这号是谁、哪天换的」
时间项变更操作人
★ 与「告警与日志」的关系:本页只列与客服入口有关的记录;全量操作日志仍在「告警与日志 → 操作日志」,两处不重复造一份真源。

本页三条红线

红线内容
1 · 客户端不放私人号面板出现的一律是工作号。私人号写进客户端 DOM = F12 就能读到,且客户会绕开我们直接找个人。
2 · 换码必须能预览二维码改错=全量客户扫到旧号 / 死号,且要到投诉时才发现。所以「保存并下发」旁边永远有「预览面板」和「核对已下发」—— 前者验「我填的」,后者读服务端存下的再验一遍「客户会看到的」。
3 · 至少留一条联系路径二维码与 QQ 号不允许同时关闭 —— 否则「联系我们」变成一个点了什么都拿不到的空面板。

用户管理

全局用户——不分渠道,一次看全。每个用户都带代理 / 渠道标签(代理来的标渠道名,没有渠道的标「直客」),可按渠道筛选。增删改查全在本页完成,每一次写操作都进操作日志。

用户总数
—
当前筛选结果内的行数
渠道带来
—
agent_id 非空
直客
—
没有归属渠道
7 天内到期
—
含已过期
未激活
—
开户后从未登录

① 筛选

三个条件是「并且」关系;清空即回到全量。筛选在服务端做(SQL 里 WHERE),不是拉全量到浏览器再过滤
渠道 关键词
★ 「到期」与「是否激活」是两个维度,界面上分成两列:一个"3 天后到期但从没登录过"的用户,两个结论都要看得见 —— 挤进一个字段就只能报其中一个,而这两个问题运营都要回答(要不要催续费 / 这张码到底卖给谁了)。

② 用户清单

每行右侧三个动作:编辑(改名 / 换渠道 / 换套餐 / 改周期 / 改到期日)· 删除 · 重置范围
加载中…
★ 删除会同时作废这个用户的登录令牌 —— 只删用户不撤令牌的话,令牌在缓存期内还能通过鉴权,等于「用户没了但还能用」,而且这条是静默的,没有任何报错。
★ 换渠道是允许的,但必须留痕:渠道归属错了要对账,不允许改=逼人删了重建,而重建会丢掉这个用户的采集历史。所以日志里带上新旧两个渠道。
★ 不能换到已下架的档位 —— 允许把在用的用户换过去,等于给「下架」这个动作开后门。

本页两条红线

红线内容
1 · 删人必须撤钥匙删用户同时把 client_tokens 里未作废的令牌全部置为已撤销。只删主体不删它的凭据,等于没删。
2 · 到期日不静默回落传了到期日就照用;格式不对直接报错,绝不悄悄改成"按周期推算"出来的值 —— 那会让改期的人以为改成了。

订单管理

全局订单——充值单(渠道向我们付款)与卡密单(渠道把货发给客户)合在一处看,每一行都带代理 / 渠道标签,可按渠道、类型、状态筛选,关键词可搜订单号 / 卡号 / 买家 / 渠道名。增删改查全在本页完成。

订单总数
—
当前筛选结果内的行数
充值单
—
渠道向我们付款
卡密单
—
渠道发给客户
已收 / 已核销
—
充值已付 + 卡密已核销

① 筛选

「渠道 / 类型 / 状态」是服务端筛;「关键词」在结果集里再过滤一次
渠道 类型 状态 关键词

② 订单清单

充值单可改状态 / 备注;卡密单可改状态 / 买家。删除受三条硬限(见下方红线)
加载中…
★ 金额一律「分」,显示时才 ÷100,前端一个字都不许自己乘。
★ 补录只接受充值单:卡密涉及库存与面额准入,绕过发码接口直接插一行=绕过「先款后码」那条红线,所以这里直接拒绝,并指回「渠道与卡密」页。
★ 补录默认就是「已支付」:线下的钱已经到账了,系统里补的单留成"待支付"的话,它会自己过期,而代理余额永远涨不上去。补录同时落一笔资金流水 —— 余额是流水的聚合结果,不落流水等于钱"到了但没到"。

本页三条红线

红线内容
1 · 已支付的单不许删删掉它,资金流水里那笔进账还在 ⇒ 余额凭空多出一笔钱。要改请走作废 / 退款流程。
2 · 已核销的卡密不许删、不许改状态客户已经在用了 —— 未核销可退、已核销不退。改回去等于把已开通的客户悄悄关掉,而客户那边不会收到任何通知。
3 · 关单不可逆已支付的充值单不能关;关掉的单不可回退。重复关单返回「已经是关闭状态」而不是报错(幂等)。
代理设置 ✕