平台总览
上游接入状态点一行看它的设备
近 14 日平台收益上游原始全量
资源信息
这一页怎么读(编号隔离 / 扣量 / 操作含义)
· 节点ID 显示的是平台自己的编号(用户在小程序里看到的 12 位 hex),下方小字才是内部平台 SN;
· 上游 / 上游节点ID 仅内部可见,用户端接口不会返回任何上游信息;
· 生效扣量 按 设备 > 用户 > 业务 > 平台默认 取优先级,用户端流量图实时按它折算(后台显示的是上游原始全量);
· 规格/线路 是上游给的资源信息,悬停可看原始 JSON;标 口径不一致 表示上游登记的省市运营商与它自己探测出来的对不上;
· 行内操作:上机/下机 调上游接口、发码 给客户二维码、分配/释放 改归属、扣量 单独设比例、校准 回读上游对齐台账、清退/复活 改生命周期。
· 上游 / 上游节点ID 仅内部可见,用户端接口不会返回任何上游信息;
· 生效扣量 按 设备 > 用户 > 业务 > 平台默认 取优先级,用户端流量图实时按它折算(后台显示的是上游原始全量);
· 规格/线路 是上游给的资源信息,悬停可看原始 JSON;标 口径不一致 表示上游登记的省市运营商与它自己探测出来的对不上;
· 行内操作:上机/下机 调上游接口、发码 给客户二维码、分配/释放 改归属、扣量 单独设比例、校准 回读上游对齐台账、清退/复活 改生命周期。
| 节点ID | 别名 | 上游 | 状态 | 带宽 | 规格/线路 | 归属用户 | 生效扣量 | 今日收益 | 累计收益 | 操作 |
|---|
收益结算
按上游汇总
按日汇总
上游接入
平台通过统一适配层对接各家上游:域名、鉴权方式、接口路径都在这里配置,换上游不改代码。当前未填真实凭据的上游运行在 mock(模拟) 模式,填好凭据并切到 live 即可真实上业务。
| 标识 | 名称 | 类型 | 运行模式 | 鉴权方式 | 接口域名 | 节点数 | 备注 | 操作 |
|---|
同步中心
同步做了什么(4000+ 台,约 1~2 分钟,期间请勿关页)
① 从各上游拉取资源信息 → 新建平台 SN 并建立「平台 SN ↔ 上游节点 ID」映射;
② 拉取近 14 日收益,按上面的映射归集到平台账。
同步是幂等的:已存在的设备只更新字段,不会重复建号。
② 拉取近 14 日收益,按上面的映射归集到平台账。
同步是幂等的:已存在的设备只更新字段,不会重复建号。
上次同步结果
| 上游 | 模式 | 结果 | 新增节点 | 更新节点 | 上游节点总数 |
|---|---|---|---|---|---|
| 尚未执行同步 | |||||
用户管理
账号是怎么来的 / 权限怎么给
账号是用户自己注册的 —— 客户在小程序里第一次微信登录(或手机号验证码登录)就自动建号,默认给 普通用户 权限:只能看自己绑定的设备、自己设备的网络信息、自己的钱包和自己的业务。
上机也是他们的默认能力 —— 登录后即可扫设备码把机器接进来,不需要你授权;只有后台管理权限要你单独分配。要收回能力,点「停用」即可。
注册模式在「系统设置」里切换:自助注册(登录即开通)或 需审核(新号先挂「待审核」,你在这里放行)。
上机也是他们的默认能力 —— 登录后即可扫设备码把机器接进来,不需要你授权;只有后台管理权限要你单独分配。要收回能力,点「停用」即可。
注册模式在「系统设置」里切换:自助注册(登录即开通)或 需审核(新号先挂「待审核」,你在这里放行)。
批量查询用户一行一个 / 逗号分隔,支持 用户ID(U100001)、手机号、昵称、备注 混合查询
查询结果会替换下方列表;点「清批量筛选」回到全量
| 用户ID | 昵称 | 手机号 | 备注(仅后台可见) | 设备数 | 业务数 | 扣量 | 累计收益(原始) | 钱包余额 | 角色 | 账号类型 | 邀请关系 | 状态 | 注册时间 | 操作 |
|---|
业务订单受理
用户在小程序提交业务申请后在此受理:点「受理并开通」即调用上游接口为该设备开通业务(切到 live 模式后就是真实上业务)。上游业务编号与上游单号仅本页可见,用户端不返回这些字段。
| 业务单号 | 业务名称 | 上游 | 上游业务编号 | 上游单号 | 用户 | 载体 SN | 带宽 | 状态 | 提交时间 | 操作 |
|---|
业务产品
上架规则 / 改名 / 定价 / 平台自建业务(采购与运营请看这里)
小程序「业务市场」显示哪些业务、叫什么名字、卖多少钱,完全由这里决定。
· 从上游同步回来的业务默认不上架(一次能拉回一两百个,名字多是「定向Z」「金满贯」这类内部叫法,直接放给用户既没用又外泄上游信息)。挑好点「上架」才进小程序;
· ⚠️ 上架前必须定价。单价为 0 的业务一旦上架,用户在小程序会看到「0 元」并可直接下单开通。列表里单价显示 待定价 的就是这种,用上方「批量定价」或行内「编辑」处理;
· 改名:名称默认跟随上游;点「编辑」改过名会自动打 本地改名 锁住,之后同步不会被覆盖,想跟回去点「跟随上游」。建议把上游内部代号改成用户看得懂的名字(如「W-带宽」→「标准带宽上量(日结)」);
· 单价、计价单位、结算周期、起量、备注说明都能改,改完小程序端立即生效;
· 「手动新建业务」= 平台自建(来源 平台自建):只在平台登记、不调上游开通,平台编号可自定义(如 PRD2001);同步时自动排除,永不被上游下架。
· 权限:能进这一页 = 可看;要能改价改名改上架,需在「内部用户」里给该账号勾上「业务产品 = 可操作」。
· 从上游同步回来的业务默认不上架(一次能拉回一两百个,名字多是「定向Z」「金满贯」这类内部叫法,直接放给用户既没用又外泄上游信息)。挑好点「上架」才进小程序;
· ⚠️ 上架前必须定价。单价为 0 的业务一旦上架,用户在小程序会看到「0 元」并可直接下单开通。列表里单价显示 待定价 的就是这种,用上方「批量定价」或行内「编辑」处理;
· 改名:名称默认跟随上游;点「编辑」改过名会自动打 本地改名 锁住,之后同步不会被覆盖,想跟回去点「跟随上游」。建议把上游内部代号改成用户看得懂的名字(如「W-带宽」→「标准带宽上量(日结)」);
· 单价、计价单位、结算周期、起量、备注说明都能改,改完小程序端立即生效;
· 「手动新建业务」= 平台自建(来源 平台自建):只在平台登记、不调上游开通,平台编号可自定义(如 PRD2001);同步时自动排除,永不被上游下架。
· 权限:能进这一页 = 可看;要能改价改名改上架,需在「内部用户」里给该账号勾上「业务产品 = 可操作」。
业务清单
已选中 0 个
| 平台业务编号 | 业务名称(小程序显示) | 来源 | 上游 | 业务类型 | 上游业务编号 | 调度范围 | 计价 | 单价 | 结算 | 起量 | 扣量 | 订单数 | 状态 | 操作 |
|---|
钱包与提现审核
提现单
| 提现单号 | 用户 | 金额 | 手续费 | 税 | 到账 | 收款方式 | 状态 | 提交时间 | 操作 |
|---|
用户钱包余额
| UID | 昵称 | 可提现 | 在途 | 累计收益 | 已提现 |
|---|
内部用户
这一页管什么(后台账号 / 权限两档 / 谁不能用)
· 这里管的是后台管理系统的登录账号,和小程序用户是两套完全独立的账号,互不影响;
· 超级管理员(owner)恒有全部权限,是唯一能进本页的人;普通成员(staff)的权限由这里逐页勾选;
· 每页两档:可查看 能进页、能看数据但页内写操作全部拒绝;可操作 可见 + 可写(新增/改/删/清退…);
· 不勾 = 既看不到也调不通。前端只是不显示,真正拦截在服务端 —— 直接敲接口地址一样 403;
· 停用后账号立刻不能登录,手里未过期的 token 也一并失效;
· 本页不能勾给普通成员(避免成员互相提权),也不允许删除/停用/降级自己,且系统至少保留一个超管。
· 超级管理员(owner)恒有全部权限,是唯一能进本页的人;普通成员(staff)的权限由这里逐页勾选;
· 每页两档:可查看 能进页、能看数据但页内写操作全部拒绝;可操作 可见 + 可写(新增/改/删/清退…);
· 不勾 = 既看不到也调不通。前端只是不显示,真正拦截在服务端 —— 直接敲接口地址一样 403;
· 停用后账号立刻不能登录,手里未过期的 token 也一并失效;
· 本页不能勾给普通成员(避免成员互相提权),也不允许删除/停用/降级自己,且系统至少保留一个超管。
后台账号
| 账号 | 姓名 | 身份 | 权限 | 状态 | 最近登录 | 创建 | 操作 |
|---|
系统设置
运行状态判断「有没有配错」看这里
读取中…
扣量与结算平台毛利
扣量是怎么算的
接入后的量按比例扣量,扣掉的即平台毛利:
· 用户端看到的流量图 / 收益 / 带宽 = 上游原始值 ×(1 − 扣量),实时折算;比例一改图立刻变,历史曲线也按新比例呈现
· 钱包入账按入账当时的生效率折算,已入账的不追改
· 级联优先级:设备 > 用户 > 业务 > 平台默认(这里)。谁设了用谁的,没设就往上一级要
· 后台各处显示的都是上游原始全量,毛利在总览页单独看
· 用户端看到的流量图 / 收益 / 带宽 = 上游原始值 ×(1 − 扣量),实时折算;比例一改图立刻变,历史曲线也按新比例呈现
· 钱包入账按入账当时的生效率折算,已入账的不追改
· 级联优先级:设备 > 用户 > 业务 > 平台默认(这里)。谁设了用谁的,没设就往上一级要
· 后台各处显示的都是上游原始全量,毛利在总览页单独看
邀请与分成拉新返佣
邀请规则(只算一层 —— 这条最关键)
· 只算一层,不递归:A 邀 B、B 邀 C 时,A 只能看 B,看不到 C,也拿不到 C 的奖励;B 才看得到 C
· 奖励从被邀请人的收益里抽:被邀请人实得 = 收益 ×(1 − 比例),抽出的部分给直接邀请人
· 级联优先级:个人单独设置 > 商务默认 / 普通默认(这里)> 平台默认
· 商务账号在「用户管理」里点「设为商务」标记 —— 可见范围与普通用户完全一致(同为直接下级),只是默认比例更高
· 邀请人的账号被停用期间不抽成,避免钱进到停用账号里
· 奖励从被邀请人的收益里抽:被邀请人实得 = 收益 ×(1 − 比例),抽出的部分给直接邀请人
· 级联优先级:个人单独设置 > 商务默认 / 普通默认(这里)> 平台默认
· 商务账号在「用户管理」里点「设为商务」标记 —— 可见范围与普通用户完全一致(同为直接下级),只是默认比例更高
· 邀请人的账号被停用期间不抽成,避免钱进到停用账号里
注册与权限
用户能看到什么
无论哪种模式,新账号一律是普通用户,只能看自己和自己直接邀请的人:
· 自己绑定的设备(/api/app/devices 只返回 ownerUid = 自己 的设备)
· 自己设备的网络信息(IP / 地区 / 运营商 / 带宽 / 线路 / NAT / 硬盘,走服务端白名单过滤,不含上游厂商号、上游业务名、上游备注、上游结算价)
· 自己的钱包与收益、自己的业务订单
· 自己直接邀请的人(「我的团队」页):可看其设备与收益、并按其收益抽成 —— 但看不到下级再邀请的人(一层隔离)
· 上机是注册用户的默认能力,登录后即可扫码接入设备,无需后台授权
· 自己绑定的设备(/api/app/devices 只返回 ownerUid = 自己 的设备)
· 自己设备的网络信息(IP / 地区 / 运营商 / 带宽 / 线路 / NAT / 硬盘,走服务端白名单过滤,不含上游厂商号、上游业务名、上游备注、上游结算价)
· 自己的钱包与收益、自己的业务订单
· 自己直接邀请的人(「我的团队」页):可看其设备与收益、并按其收益抽成 —— 但看不到下级再邀请的人(一层隔离)
· 上机是注册用户的默认能力,登录后即可扫码接入设备,无需后台授权
后台登录密码
当前账号 admin。改完下次登录生效,当前会话不掉线。
和浏览器弹窗的密码是两套
这里改的是后台管理系统的登录密码;浏览器打开时弹的那个账号/密码框是 nginx 的 Basic Auth,两套互不影响。
微信小程序
| 登录状态 | 检查中… |
| AppID | manifest.json → mp-weixin.appid |
| 接口地址 | config.js → API_BASE(须 HTTPS 且配为合法域名) |
打包上传命令
node scripts/init-project.js --appid wx... --api https://...
node scripts/upload-wechat.js -v 1.0.0 -d "版本说明"
上传通道自动选:开发者工具 CLI(扫码)→ 失败回退 miniprogram-ci。
node scripts/upload-wechat.js -v 1.0.0 -d "版本说明"
上传通道自动选:开发者工具 CLI(扫码)→ 失败回退 miniprogram-ci。
数据与安全
| 存储 | JSON 文件 server/data/*.json,无需数据库 |
| 上游信息 | 仅后台可见;用户端接口已做归属校验,越权返回 404 |
| 资金接口 | 提现打款通道未开放,接入前需单独评审 |
用户端可见范围(逐字段)
只有自己名下的:设备(含网络信息)、收益与钱包、业务订单、平台 SN 与自己的绑定码。
看不到别人的任何数据,也不含任何上游编号 / 名称 / 结算价。
看不到别人的任何数据,也不含任何上游编号 / 名称 / 结算价。