Overview
运行概览
小程序四条产品线(解析 / 聊天 / 在线用户 / 3D 魔方)的整体运行水位、接口热度和 7 日趋势。
演示数据。字段名与枚举值取自真实代码(server/wxService.js、
utils/logger.js、pages/parseLog/),数值为样例,接后端时替换数据源即可。
运行健康度
7 段对应项目真实子系统。任一段转为警戒/异常时,优先看对应的源码模块。
接口调用热度
后端 body.type 分发分支,共 34 个;下列为 Top 8。
解析趋势
按平台拆分 · 近 7 日
Parse
解析记录
只统计事件名 === parse 的日志条目(取自前端请求行的请求体 type)。
平台徽标由关键词匹配得出;解析历史 URL 本体存于小程序本地 storage。
历史链接
—
| 平台 | 域名 | 链接 | 解析时间 | 耗时 | 状态 |
|---|
Orders
虚拟支付订单
订单由后端 /pay 接口下发。状态字段兼容字符串与 0–4 数字,此处按 normStatus() 归一化展示。
订单明细
未付款订单 10 分钟自动关闭(ORDER_EXPIRE_MS)
| 订单号 | 商品 | 类型 | 数量 | 金额 | 状态 | 下单时间 | 支付时间 |
|---|
Permissions
用户与权限
页面 → 权限位映射。以后端 global.APP_CONFIG 的 perm.pages 为唯一来源,
小程序由 PAGE_PERMISSION 下发、本地 PAGE_PERMISSION_MAP 兜底。
本页所有字段均可直接编辑,保存后业务节点在下一条消息即生效。
配置来源
运行时配置整体替换本地兜底表
- 当前生效来源
- 后端 APP_CONFIG · perm.pages
- 本地兜底
- PAGE_PERMISSION_MAP
- 静默窗口
- 60 000 ms
- 最近成功拉取
- —
- 缓存键
- PERMISSION_CONFIG
- 登记页面数
- —
_permCfgLoading 防并发;成功后进入 60s 静默窗口,
窗口内的广播风暴与反复进出页面不会重复请求。改了本页配置后,后端会主动广播
permission_config_updated,小程序立刻强制重拉 —— 不必等静默窗口过期。
越权提示文案
全站统一,改完保存即全站生效;正文支持换行
perm.revokedTitle/Content 与
perm.noPermTitle/Content,下发字段 PERM_REVOKED_* /
PERM_NO_PERM_*,小程序侧留空即回落到自身兜底文案。
morefeatures)不整体拦截,逐项在页面内自行校验;
PermissionManagement / virtualpay / payorders 属管理或支付流程,不做权限位拦截。
页面 × 权限位 矩阵
点格子即把该页面的权限位切成这一列;标题与路径可直接改。
列头显示的中文名可以随便改,title 里的字段名须与后端 permisionsList 的 key 逐字一致(不可改)。
权限位中文名
控制台与小程序「权限管理」页的显示名。name 是提交给后端的字段名,
改了等于把该权限位静默清零,所以这里只让改中文名。
小程序在线用户 · 权限下发
勾选后点「保存」→ 入队 → wxService 应用并递增 permRc(旧离线票据立即作废)
Devices
设备与运行环境
系统信息统一由 utils/windowInfo.js 提供:模块加载期探测一次并冻结缓存,避免监听器累积。
当前设备
来自 getSystemInfo() 的合并结果
统一入口:三出口
调用方只认这三类出口,不再各自读 API
getSystemInfoSync 返回全字段对象,
若并入会在 device → window → base → setting 合并时覆盖前三片已取到的细分字段;
同时会让「有细分 API 时绝不调旧 API」的设计目标失效。
environment 仅由旧 getSystemInfoSync 返回,四件套细分 API 均不含它 ——
因此企业微信识别必须走 getEnvironment(),且只取值不判断,
=== 'wxwork' 的比较留在 platform.js。
端分布
请求头 sys.environment 随签名一起上报,后端据此区分请求来源端
Logs & Trace
日志与登录链路
日志上报配置在本页直接改,改动写入 Node-RED global.APP_CONFIG,
业务节点在下一条消息即生效;登录链路追踪记录从 doLogin 到凭证落库的每个关键节点。
上报配置
global.APP_CONFIG,业务节点下一条消息就读到新值。
但生效时机分两类:log.ttlSec / maxGlobalCount / maxUserCount
/ traceMax 是后端写 Redis 时用的,保存后下一次写日志即按新值裁剪;
而 log.defaultConfig.* / reportLevel / adminReportLevel
是 get_logger_config 的下发值,
要等小程序下次调用该接口(冷启动 / 重进小程序)才拿到 —— 保存成功 ≠ 已下发到客户端。
级别分布
仅 reportLevel 白名单内的级别进入上报队列
pushRemote 触发恢复。
这两个阈值是 logger.js 里的代码常量(FAIL_THRESHOLD /
PAUSE_MS),不在上面的可配项里,改它们要改源码。
日志流
不选用户 = 全局日志(wx:app:logs);选用户 = 该用户日志(wx:app:logs:<openid>)
| 级别 | 内容 | 时间 |
|---|
—
登录链路追踪
冷启动失败闭环:wx.login → 401 兜底 → reLogin → 补试
Config
运行配置
后端 wxService.js / wsService.js 的可调参数集中在这里
(日志与上报参数已移到「日志与链路」页,在那边的「上报配置」里改)。
改动写入 Node-RED global.APP_CONFIG,业务节点在下一条消息就会读到新值 ——
不用重贴 function 节点、不用重启 Node-RED。
flow 只放「同一条 flow 内共享的业务表」
(appidList / authUserSet / help_content / ws_sessions …),
global 放「全局开关 / 密钥 / 跨 tab 的运行时状态」
(ws_sign_mode / admin_openids / qlgq_appid / ADMIN_PASSWORD …)。
配置项属于后者,所以与 ws_sign_mode 完全同一套写法。