{{ tabTitle }}
组织 {{ me.tenant_id || '(平台全局)' }}
{{ tenants.length }}
组织总数
{{ users.length }}
平台账号
{{ devices.length }}
接入设备
{{ tasks.length }}
编排任务
{{ codes.length }}
激活码总数
{{ endUserCount }}
C端用户
RBAC 多组织隔离 · 已启用
本期交付:环境编排底座(compose / 网络 / 卷 / 健康检查)
后续路线:M4 接入 MinIO 视觉网关 · M5 切换 EMQX MQTT 调度 · M6 内容工厂 · M7 直播举牌
后续路线:M4 接入 MinIO 视觉网关 · M5 切换 EMQX MQTT 调度 · M6 内容工厂 · M7 直播举牌
组织管理
刷新
+ 新建组织
{{ row.name }}
{{ row.tenant_id }}
{{ row._user_count }}
用户数
{{ row._device_count }}
设备数
{{ formatTime(row.created_at) }}
创建时间
成员 ({{ row._user_count }}){{ row._expanded ? '▾' : '▸' }}
该组织下暂无用户
{{ u.username }}
{{ u.role==='platform_admin' ? '平台管理员' : '组织管理员' }}
{{ u.user_id }}
{{ formatTime(u.created_at) }}
暂无数据
用户管理
+ 新建用户
刷新
{{ row.user_id }}
暂无数据
卡密管理(边缘端 LJ)
导出未使用
生成卡密
刷新
{{ row.card_id }}
{{ row.created_by }}
{{ row.used_by || '—' }}
暂无数据
激活码管理(C端 DJ 码)
导出未使用
生成激活码
刷新
{{ row.code }}
暂无数据
{{ c }}
{{ approvalStats.pending||0 }}
待审批
{{ approvalStats.approved||0 }}
已通过
{{ approvalStats.rejected||0 }}
已拒绝
{{ approvalStats.expired||0 }}
已过期
审批队列
刷新
暂无审批单
预演快照
{{ JSON.stringify(approvalDetail.payload, null, 2) }}
AI 建议
{{ JSON.stringify(approvalDetail.ai_suggestion, null, 2) }}
审核备注
{{ approvalDetail.review_note }}
{{ financeMargin.revenue||0 }}
累计收入(元)
{{ financeMargin.cost||0 }}
进货成本(元)
{{ financeMargin.gross_margin||0 }}
毛利(元)
{{ financeMargin.calls||0 }}
AI调用次数
人工充值(C端账户)
工序定价新增定价
订单管理
导出 CSV
刷新
{{ row.order_id }}
{{ row.user_id }}
暂无数据
设备大屏 · 组织 {{ me.tenant_id || '(平台全局)' }}
设备列表
链路拓扑
☁
{{ topo.cloud.name }}
云端中心 · {{ topo.cloud.transport.toUpperCase() }}
{{ topo.cloud.mqtt_broker || '直连 HTTP' }}
运行中
{{ e.note || e.node_id }}
✎
{{ e.node_id }}
组织{{ e.tenant_name || e.tenant_id }}
设备{{ (e.devices||[]).length }}/{{ e.device_count||0 }}
版本{{ e.client_version || '—' }}
系统{{ topoOsShort(e.os_info) }}
IP{{ e.ip || '—' }}
状态{{ e.status || '—' }} / {{ e.online ? '在线' : '离线' }}
心跳{{ e.seconds_since_heartbeat==null?'—':e.seconds_since_heartbeat+'s前' }}
📱 设备 {{ devOnline(e) }}/{{ (e.devices||[]).length }}
详情 ›
{{ topoDevShort(d) }}
+{{ (e.devices||[]).length-topoDevMax }}
暂无边缘节点
任务编排 · 组织 {{ me.tenant_id || '(平台全局)' }}
批量删除{{ taskSel.length ? '(' + taskSel.length + ')' : '' }}
新建任务
AI 模型 · Key 池(多供应商轮询 + 配额熔断)
添加 Key
组织 AI 额度(按组织计费)
店铺管理({{ filteredStores.length }})· 一店一环境一 IP,防关联硬校验
+ 新建店铺
CSV 批量导入
+ 新建店组
刷新
PC 店铺环境({{ profiles.length }})· 独立指纹+代理,登录态持久化,单节点上限可配
+ 新建环境
刷新
代理 IP 池({{ proxies.length }})· 一 IP 绑一店不漂移
+ 新建代理
刷新
商品档案({{ products.length }})· 一次建档,M2 起 AI 生成 N 店差异化变体
+ 新建商品
刷新
定时任务({{ schedules.length }})· cron 到期自动按店铺组/节点下发,调度器每 30s 扫描
+ 新建定时任务
刷新
{{ row.cron_desc || row.cron_expr }}
{{ row.cron_expr }}
经营日报 · 多店采集聚合(tb_daily/tb_health 结果落库后自动汇总)
推钉钉
推送配置
刷新
未采到数据({{ reportSummary.missing.length }} 家):{{ reportSummary.missing.join('、') }}(检查店铺绑定执行端与定时任务)
抖音群资产 · 加群任务产出(入群状态 / 门槛类型 / 存活巡检)
刷新
手机分组 · 按组编排手机,不同组绑定不同 Skill
+ 新建分组
GROUP
{{ skillName(row.skill_id) }}
{{ row.name }}
{{ row.desc || '—' }}
暂无分组,点右上角「+ 新建分组」。
分组「{{ currentGroup.name }}」内设备({{ groupDevices.length }})
刷新
Skill 库({{ skills.length }})· 云端统一管理技能
⚙ 平台管理
⇪ 分发全部给组织
+ 上传 / 新建 Skill
{{ grp.label }}
({{ grp.items.length }})
{{ row._no }}
{{ grp.label }}
{{ row.has_code?'已上传':'骨架' }}
{{ row.name || row.skill_id }}
{{ row.skill_id }}
{{ row.desc || '—' }}
暂无 Skill,点右上角「上传 / 新建 Skill」。
内容目录 · 客户端菜单云端统发({{ catalogItems.length }} 项)
+ 新建目录项
{{ k.t }} · 客户端「{{ k.t }}」列表({{ kindList(k.k).length }} 项)
{{ row.item_id }}
暂无{{ k.t }}目录项(客户端该列表将显示包内内置基线)——点上方「+ 添加{{ k.t }}」新建
MQTT 管理 · EMQX 消息总线 ↗ 新窗口打开 EMQX 后台
若上方空白/被拦截(EMQX 默认禁止 iframe 嵌入),请点右上角「新窗口打开 EMQX 后台」。
默认账号可在 EMQX 容器初始化时设定,或查 docker-compose 中的 EMQX_DASHBOARD__DEFAULT_USER__* 环境变量。
平台信息
服务信息
版本
v0.1.0
服务地址
{{ location.host }}
部署形态
Docker Compose(云-边-端调度底座)
登录安全
修改我的密码
注册与套餐
任务调度
连接配置
四模态模型
视频参数(可选)
任务下发通道
节点列表({{ filteredEdges.length }})· {{ edgesListTitle }}
全部
在线
离线
{{ row.node_id }}
{{ row.online ? (row.status==='running'?'运行中':'在线') : '离线' }}
组织
{{ row.tenant_id }}
账号
{{ row.username || '—' }}
版本
{{ row.client_version }}
鉴权
{{ row.auth_mode==='code'?'授权码':'账号' }}
出口IP
{{ row.ip }}
设备
{{ row.device_count || 0 }}
失败
{{ (row.stats&&row.stats.consecutive_fail)||0 }} / {{ (row.stats&&row.stats.failed_total)||0 }}
最后心跳
{{ timeAgo(row.seconds_since_heartbeat) }}
暂无节点