当日大盘
⟳ 加载中…(后端 8 平台并发可能需 1-2 分钟)数据更新时间 {{ overviewTime }}⚠️ 未加载,点右上 ⌄→刷新当前
日期
|
对比
组别
产品
{{ card.title }}
当日{{ card.prefix }}{{ card.value.toLocaleString() }}
低基数
{{ card.ratio >= 0 ? '↗' : '↘' }}
{{ Math.abs(card.ratio).toFixed(2) }}%
当日预估
{{ card.estimate.toLocaleString() }}
📅 {{ grandRangeLabel }} 累计 {{ primaryTotals.days }} 天
{{ card.isRange ? '对比区间累计' : '对比日总计' }}({{ grandCmpRangeLabel }})
{{ card.compareTotal.toLocaleString() }}
{{ grandRangeLabel }} 累计 · 对比{{ card.isRange ? '区间' : '' }}: {{ card.compareTotal.toLocaleString() }}
小时趋势
00:0006:0012:0018:0023:00
当日
对比日
📊 8 家平台对比 (今日实时)
{{ i+1 }}
{{ p.name }}
{{ cmpMetric === 'charge' ? '¥' : '' }}{{ p.val.toLocaleString() }}
数据加载中...
{{ diagData ? `${diagData.summary.ok}/${diagData.summary.total} 正常 · ${diagData.time}` : '加载中...' }}
{{ cat }}
{{ it.ok ? '✓' : '✗' }}
{{ it.name }}
{{ it.detail }}
{{ it.action.slice(0, 28) }}
充值
加载中… 真实 · 8 平台 · 近 {{ chargeTrendRows.length }} 天 ⚠ {{ chargeTrendError }}活跃账号
新增
⚡ 正在同步最新数据...
⚠ {{ biError }}
✓ 数据更新于 {{ biLastTime }}
点 🔄 同步最新数据
组别
⟳ 加载中
⚠ {{ overviewError }}
实时 · {{ overviewTime }}
{{ filteredProducts.length }}/{{ products.length }}
产品
{{ statusEmoji(selectedProduct.status) }}
{{ selectedProduct.name }}
{{ selectedProduct.team }}
最后更新: {{ selectedProduct.updated }}
🚨 {{ selectedProduct.alert }}
📊 实时今日
新增
{{ selectedProduct.daily_new }}
活跃
{{ selectedProduct.active }}
充值
¥{{ selectedProduct.charge }}
成功率
{{ selectedProduct.pay_rate || '—' }}
📈 累计
会员总数
{{ Number(selectedProduct.total_members).toLocaleString() }}
⚡ 快捷操作
加载详情中…
📊 后台详细数据 ({{ Object.keys(productDetail.fields).length }} 字段,按业务分组)
🔥 核心指标
{{ stripToday(k) }}
{{ v }}
📈 留存率
👥 注册 / 活跃
💰 充值 / 订单
📥 落地 / 下载
🎬 内容消费
💸 提现 / 奖金
📊 累计 / 周月
{{ group }}
{{ stripToday(k) }}
{{ v }}
📈 16 天趋势
{{ t.label }}
{{ fmtNum(productDetail.fields._trends[t.key].slice(-1)[0]) }}
📊 后台详细数据
{{ stripToday(k) }}
{{ v.value }}
{{ v.sub }}
📈 15 天趋势
{{ t.label }}
{{ fmtNum(productDetail.fields._trends[t.key].slice(-1)[0]) }}
📱 H5
{{ fmtNum(productDetail.fields._trends.device_bar[0]) }}
🤖 Android
{{ fmtNum(productDetail.fields._trends.device_bar[1]) }}
⚠️ {{ productDetail.error }}
📊 该平台详细数据待接入(留存 / 渠道 / 设备分布 / 趋势图)
{{ statusEmoji(p.status) }}
{{ p.name }}
{{ p.team }}
新增{{ fmtNum(p.daily_new) }}
活跃{{ fmtNum(p.active) }}
充值¥{{ p.charge }}
成功率{{ p.pay_rate || '—' }}
🚨 {{ p.alert }}
7 天充值
{{ sparklineTrend(perPlatformHistory[p.name]) >= 0 ? '↗' : '↘' }} {{ Math.abs(sparklineTrend(perPlatformHistory[p.name])).toFixed(0) }}%
更新:{{ p.updated }}
{{ filterTeam === '全部' ? '今日合计' : filterTeam + ' 合计' }}
新增
{{ fmtNum(totalize('daily_new')) }}
活跃
{{ fmtNum(totalize('active')) }}
充值
¥{{ totalize('charge') }}
订单数
{{ totalize('orders_count') }}
成功订单
{{ totalize('orders_ok') }}
🚨 今日告警 ({{ alerts.length }})
{{ a.level === 'critical' ? '🚨' : '⚠️' }}
{{ a.time }}
{{ a.msg }}
✅ 已恢复
📊 数据查询
查询类型:
时间范围:
→
产品:
{{ queryType === 'user' ? '用户 UID:' : '订单号:' }}
天数:
产品选「全部」= 整组逐日加总 · 选具体一家 = 单产品 · 8 家全支持(d.php 4家实时/LGBT·他他GV后台/不撸帝·Boys快照T+1)
环比周期:
"产品"留「全部」= 看整组; 选具体产品 = 单家。本期(昨天往前)vs 上一等长周期
本期区间:
至
对比区间:
至
订单类型:
d.php 4 家专用
查询耗时 {{ queryDuration }}ms · 共 {{ queryResults.length }} 条
{{ queryError }}
📈 {{ huanbiData.scopeLabel }} · {{ huanbiData.periodLabel }}
本期 {{ huanbiData.curRange }} vs 上期 {{ huanbiData.prevRange }}{{ row.指标 }}
{{ row.本期 }}
上期 {{ row.上期 }}
低基数
{{ row.环比 }}
数据源: business_history 历史快照按天累加 · 充值/新增为区间累计, 活跃为日活累加(人次)
| {{ col }} {{ daySortDir === 'asc' ? '↑' : '↓' }} |
|---|
| ✅ 通过 ❌ 拒绝 ✅ 成功 ❌ 失败 {{ r[col] }} {{ r[col] }} |
| 没有查到数据 |
每页:
共 {{ queryResults.length }} 条
第 {{ currentPage }} / {{ totalPages }} 页
📊
选择查询条件,点"查询"开始
支持充值/审核/活跃/用户/订单 五类查询
筛选:
操作:
命中 {{ filteredAuditProducts.length }} 产品 · {{ filteredAuditTimeline.length }} 条动作
✅ 通过
{{ filteredAuditTotals.pass.toLocaleString() }}
❌ 删除
{{ filteredAuditTotals.delete.toLocaleString() }}
🚫 禁言
{{ filteredAuditTotals.ban.toLocaleString() }}
⏸️ Hold
{{ filteredAuditTotals.hold.toLocaleString() }}
📊 各产品审核统计(最近一轮)
⟳ 加载中 {{ auditStats.time }}| 产品 | 通过 | 删除 | 禁言 | Hold | 分类拆分 |
|---|---|---|---|---|---|
| {{ p.product }} | {{ p.pass.toLocaleString() }} | {{ p.delete.toLocaleString() }} | {{ p.ban.toLocaleString() }} | {{ p.hold.toLocaleString() }} | {{ c.name }}({{ c.pass }}/{{ c.delete }}/{{ c.ban }}) — |
| 没有命中数据 | |||||
📈 审核趋势
最近 {{ auditTrend.summary.days }} 天 · 累计 {{ (auditTrend.summary.total || 0).toLocaleString() }} 条 ✅ {{ (auditTrend.summary.pass || 0).toLocaleString() }} ❌ {{ (auditTrend.summary.reject || 0).toLocaleString() }} 🚫 {{ (auditTrend.summary.ban || 0).toLocaleString() }}暂无数据
🕐 最近审核动作(按违规理由聚合)
从 review log 解析
{{ r['产品'] }}
{{ r['操作'] }}
{{ r['类型'] }}
{{ r['理由'] }}
没有命中的审核动作
💡 Content-Studio v1.0 · 全链路发帖工作台 · 上传视频 + 多平台分发 + 任务追踪
今日发帖
{{ content.totals.today }}
含成功+失败+进行中
已完成
{{ content.totals.success }}
成功率 {{ contentSuccessRate }}%
流水线进行中
{{ content.totals.in_progress }}
{{ content.totals.in_progress }} 个待人工确认
发布失败
{{ content.totals.failed }}
点击查看详情
覆盖平台
{{ content.totals.platforms_active }}
今日活跃 {{ content.totals.platforms_active }} 个
📜 最近流水线任务
展示最近 50 条 点 + 新建视频发布 上传你的视频| ID | 标题 | 目标平台 | 流水线进度 | 状态 | 时间 | |
|---|---|---|---|---|---|---|
| #{{ t.id }} | {{ t.post_type === 'post' ? '📝' : '📹' }} {{ t.title }} | {{ sub.platform_name }} |
{{ t.progress }}
|
{{ t.status }} | {{ t.created.split(' ')[1] || t.created }} | |
|
📭
还没有发布任务,点右上角「+ 新建视频发布」开始
|
||||||
📊 今日各平台发帖
{{ plat }}
{{ stat.total }} 单
✅ {{ stat.success }}
❌ {{ stat.failed }}
今天还没有发布
📜 封面历史 · 全员共享 · 滚动保留最近 200 条 · 单图/批量混合按时间倒序
已加载 {{ filteredCoverHistory.length }} / {{ coverHistoryTotal }}
· 搜索"{{ coverHistorySearch }}"
⏳
加载封面历史…
📭
还没有生成记录
先点头部「🎨 生成封面」做一次
🔍
没有匹配"{{ coverHistorySearch }}"的记录
🖼️
{{ h.kind === 'batch' ? '🎞️ ' + h.count + '×' + (h.styles||[]).length : '🎨 ' + h.cover_count }}
{{ h.kind === 'batch' ? ('批量 #' + h.id.substr(0, 6)) : (h.title || '—') }}
{{ h.user }}
{{ (h.created || '').substring(5, 16).replace('T', ' ') }}
🔍 跨平台用户查询 · 输 UID/uuid/Boys Code/手机号/订单号 反查 · 充值/禁言/AFF 一站查
v0.1 仅查询
组:
产品:
关键词:
⚠️ {{ account.error }}
查询关键词
{{ account.profile.query }}
命中平台
{{ account.profile.platforms_seen.length }}
{{ account.profile.platforms_seen.join(' / ') || '—' }}
订单数
{{ account.profile.total_orders }}
成功 {{ account.profile.total_success }}
累计金额
{{ account.profile.total_amount }}
最近 30 天
活跃时段
首: {{ account.profile.first_seen.split(' ')[0] }}
末: {{ account.profile.last_seen.split(' ')[0] }}
{{ p['性别'] === '女' ? '👩' : '🧑' }}
{{ p['别名(昵称)'] || '(无昵称)' }}
{{ p['平台'] }}
👑 {{ p['VIP卡名'] || ('等级 ' + p['VIP等级']) }}
🚫 已禁言
✓ 已认证
uid: {{ p['uid'] }} · {{ p['用户名'] }}
📋 基本资料
用户名{{ p['用户名'] }}
手机{{ p['手机'] }}
权限{{ p['权限'] }}
性别{{ p['性别'] }}
UUID
{{ p['uuid'] }}
👑 会员金币
VIP 等级
{{ p['VIP等级'] || '0' }}
🎫 {{ p['VIP卡名'] }}
VIP 到期
{{ formatVipExpire(p['会员到期']) }}
⏰ 无限看
{{ formatVipExpire(p['无限看到期']) }}
金币余额
{{ p['金币余额'] }}
消费总额{{ p['消费总额'] }}
App 版本{{ p['应用版本'] }}
📍 活动轨迹
注册
{{ p['注册时间'] }}
📍 {{ p['注册IP'] }}
最后访问
{{ p['最后访问'] }}
📍 {{ p['最后IP'] }}
登录 {{ p['登录次数'] }} 次
📡 渠道推广
渠道{{ p['渠道'] }}
AFF{{ p['AFF'] }}
邀请人数
{{ p['邀请人数'] }}
⚡ 账号操作
ℹ️ {{ p['平台'] }} ops 接口待大哥抓 cURL
⚠️ 这个关键词在选定平台上没找到匹配的用户。可能:用户在别的产品 / uuid 错了 / 平台权限不到。
📊 各平台汇总
| 平台 | 订单数 | 成功 | 累计金额 | 首单 | 末单 |
|---|---|---|---|---|---|
| {{ p['平台'] }} | {{ p['订单数'] }} | {{ p['成功'] }} | {{ p['累计金额'] }} | {{ p['首单'] }} | {{ p['末单'] }} |
💰 充值明细
最近 50 条| 创建时间 | 平台 | 订单号 | 类型 | 订单金额 | 实付金额 | 支付渠道 | 产品id | 订单信息 | 状态 |
|---|---|---|---|---|---|---|---|---|---|
| {{ o['创建时间'] || o['时间'] }} | {{ o['产品'] }} | {{ o['订单号'] }} | {{ o['类型'] || '-' }} | {{ o['订单金额'] || o['金额'] }} | {{ o['实付金额'] || o['金额'] }} | {{ o['通道'] }} | {{ o['产品id'] || '-' }} | {{ o['订单信息'] || o['商品'] || '-' }} | {{ o['状态'] }} |
💰 充值明细
最近 30 天📭
该用户在所选范围内(最近 30 天)没有充值记录
不是 bug — 是用户真的没充过 / 充值在 30 天之前
🚫 命中禁言/删除/拒绝记录 ({{ account.ban_records.length }})
{{ r['平台'] }}
{{ r['操作'] }}
{{ r['内容'] }}
🔍
输入 UID / uuid / 手机号 / 订单号开始查询
系统会跨 8 个平台聚合该用户的充值、禁言、活跃记录
示例查询:
08a9731c(搜同 uuid 前 8 位)
🚫 禁言用户 · 不撸帝走 /user/save (is_disabled=1) · 5-3 实战验证
🚫 禁言用户 · d.php 系走 doBlack workflow(listAjax 拉评论 → 拿 cid → flag=ban)· 实战验证可靠
⚙️ 操作表单
⚠️ 操作不可逆 · 会禁言整个用户(不只单条评论) · 本操作会写入操作日志(谁/何时/对谁)
{{ banResult.ok ? '✅ 禁言成功' : '❌ 失败' }}
🚫 {{ banPlatform }} uid={{ banUid }}: 正常 → 已禁言
{{ banResult.msg || banResult.error }}
使用 cid: {{ banResult.cid_used }} · 评论预览: "{{ banResult.comment_preview || '—' }}"
💡 LGBT/他他GV/不撸帝/Boys/小蓝/Gili Gili 待抓后台 cURL,以后陆续接。本期先 搜同 + GTV。
✏️ 改昵称 · 走 d.php members?code=save 部分更新模式 · 仅改 nickname,其他字段不动
⚙️ 改昵称表单
⚠️ 不可逆 · 仅改 nickname 字段(其他保留)· 写操作日志
{{ renameResult.ok ? '✅ 改昵称成功' : '❌ 失败' }}
✏️ 昵称: {{ renameResult.before.nickname_before }} → {{ renameNew }}
{{ renameResult.msg || renameResult.error }}
uid: {{ renameResult.before.uid }} · 之前: {{ renameResult.before.nickname_before }}
💡 当前仅 d.php 4 家(搜同/GTV/小蓝/Gili Gili)。Boys 已知接口 PUT update 17 字段(/admin/cluser/m/user/update),不撸帝/TaTa 接口未做。重置密码/改头像/改角色 后续按需加。
🎟️ 改用户会员 · 改某用户的会员等级 + 到期日(月卡/年卡/至尊卡 等)· 工单常用
ℹ️ 搜同走 productuser 卡包(11 张真卡 + 取消)
流程:dashboard 提交后,后端 list 用户当前卡 → 全部 del → save 新卡(到期日由 productuser 按卡种自动算,永久卡 ≈ 27 年,月卡 30 天)· 同时支持转移会员卡(顶部 🔄 转移会员)
⚙️ 改会员表单
后端自动算到期日(永久卡 ≈ 27 年,月卡 30 天)
⏳ 加载会员卡列表中... (没出来就刷新)
ℹ️ 后端拉当前 vipEnd → 延长 N 天(已过期则从今天起算)→ PUT update + 反查 verify。点按钮直接提交,不再点下面"改会员"
ℹ️ 搜同走 productuser:到期日由后端按卡种自动算,不需手填
⚠️ 不可逆 · 直接覆盖用户当前会员 · 写操作日志
↑ Boys 走快捷按钮提交
{{ vipResult.ok ? '✅ 改会员成功' : '❌ 失败' }}
{{ vipResult.msg || vipResult.error }}
🔄 {{ formatVipChange(vipResult) }}
用户: {{ vipResult.before.nickName || vipResult.before.nickname || '?' }}
之前: vip_level={{ vipResult.before.vip_level_before }} 到期 {{ vipResult.before.expired_at_before }}
之前 VIP: 开始 {{ vipResult.before.vipBegin_before || '(未充)' }} 到期 {{ vipResult.before.vipEnd_before || '(未充)' }}
· 累充 ¥{{ vipResult.before.rechargeTotal }}
💡 已支持 6 平台:d.php 4 家(搜同/GTV/小蓝/Gili Gili)+ Boys(page2 反查 + 全字段 PUT)+ 不撸帝(group_id + group_end_time)。LGBT/他他GV 博主分成模式无 VIP 概念,设计跳过。
🔄 转移会员卡 · 把 A 用户的会员卡转给 B 用户(仅搜同 productuser 卡包,工单常用)
⚙️ 转移会员表单
📦 当前卡包: {{ c.vip_level_str || c.product_id }}(pk={{ c.id }})
⚠️ 该用户当前没卡可转
⚠️ 不可逆 · 删 From 全部卡 + 加新卡到 To · 写操作日志
{{ transferResult.ok ? '✅ 转移成功' : '❌ 失败' }}
🔄 卡: uid={{ transferFromUid }} → uid={{ transferToUid }}
{{ transferResult.msg || transferResult.error }}
已删 From 卡: pk={{ d.pk }}({{ d.vip_level_str }})·{{ d.ok ? '✅' : '❌' }}
加 To 卡: {{ transferResult.added.card_name }} (pid={{ transferResult.added.product_id }}) · {{ transferResult.added.ok ? '✅' : '❌' }} {{ transferResult.added.msg }}
📜 操作日志 · 全员最近 ops.* 操作(责任到人 · 出问题可追)· 默认 admin/管理 可看,运营需到 🛡️ 角色管理 加 admin.audit.view 权限
操作人:
动作:
操作日志 · {{ myAuditItems.length }} 条
加载中…
还没操作记录
| 时间 | 操作人 | 动作 | 目标 | 详情 |
|---|---|---|---|---|
| {{ (it.time || '').slice(5, 19).replace('T', ' ') }} | {{ it.actor }} | {{ it.action }} | {{ it.target || '—' }} | {{ JSON.stringify(it.after).slice(0, 80) }}{{ JSON.stringify(it.after).length > 80 ? '…' : '' }} {{ it.note }} — |
⏰ 无限看(免费看金币视频) · GTV/小蓝/Gili Gili 后台 add_free · 累加模式 · 清零功能待业务方修(day=0 接口 bug) · 工单常用
⚙️ 加无限看天数
⚠️ 累加模式:多次点会叠加 · 清零不可逆 · 写操作日志
{{ freeViewResult.ok ? '✅ 提交成功' : '❌ 失败' }}
{{ freeViewResult.msg || freeViewResult.error }}
💡 d.php 后端无现成反查接口,提交后请去对应平台后台核对实际无限看天数 · 搜同后台没此功能(下拉无搜同选项)
💰 金币上下分 · 给用户加/扣金币(quantity 正=上分,负=下分)· 工单常用
⚙️ 上下分表单
⚠️ 不可逆 · 直接调整用户余额 · 写操作日志
{{ coinResult.ok ? '✅ 上下分成功' : '❌ 失败' }}
💰 {{ coinPlatform }} {{ coinUserCode || coinUserId }}:
{{ Number(coinQuantity) >= 0 ? '上分 +' : '下分 ' }}{{ Number(coinQuantity).toLocaleString() }}
金币
{{ coinResult.msg || coinResult.error }}
💡 已支持 6 平台:Boys (balance/adjust) + d.php 4 家 (chargeadmin/save) + 不撸帝 (/user/recharge,自动带 TOTP)。LGBT/他他GV 待抓 cURL。
🤖 Agent 状态总览 · {{ agents.summary.services_active }}/{{ agents.summary.services_total }} 服务 · {{ agents.summary.crons_total }} cron · {{ agents.summary.infra_ok }}/{{ agents.summary.infra_total }} 基建
{{ agents.time }}
在线服务
{{ agents.summary.services_active }}/{{ agents.summary.services_total }}
7×24 跑的 bot 和服务
失败服务
{{ agents.summary.services_failed }}
{{ agents.summary.services_failed === 0 ? '一切正常' : '需要排查' }}
Cron 任务
{{ agents.summary.crons_total }}
定时跑的脚本
基础设施
{{ agents.summary.infra_ok }}/{{ agents.summary.infra_total }}
OpenAI / Cookie / Token / SS
🤖 业务 Bot 与服务
| 服务 | 职责 | 状态 | 已运行 | 内存 | PID |
|---|---|---|---|---|---|
|
{{ s.icon }}
{{ s.display }}
{{ s.unit }}
|
{{ s.role }} | {{ s.state === 'active' ? '🟢 运行中' : s.state === 'failed' ? '🚨 失败' : '⏸️ ' + s.state }} | {{ s.uptime }} | {{ s.mem_mb }} MB | {{ s.pid }} |
🌐 远端 Agent 节点
其他组的机器人 / 独立 VPS · 暴露 /health 后纳入实时采集
{{ r.icon }}
{{ (r.probe_result && r.probe_result.state === 'active') ? '🟢 在线' :
(r.probe_result && (r.probe_result.state === 'dead' || r.probe_result.state === 'failed' || r.probe_result.state === 'inactive')) ? '🔴 离线' :
r.status === 'ok' ? '🟢 在线' :
r.status === 'pending_endpoint' ? '⏳ 待接入' : '📦 已移交' }}
{{ r.name }}
{{ r.team }} · {{ r.product }}
{{ r.role }}
📍 {{ r.host }}
{{ r.note }}
PID {{ r.probe_result.pid || '—' }} · {{ r.probe_result.etime || '—' }}
⏰
{{ cs.script || cs.file }}
{{ cs.status }}
{{ (cs.last_run_at || '').substring(5, 16).replace('T', ' ') }}
· {{ (cs.message || '').substring(0, 30) }}
⏰ 关键定时任务
从 crontab 比对,{{ agents.crons.filter(c => c.configured).length }} / {{ agents.crons.length }} 已配置| 任务 | 执行频率 | 配置 | 最近 |
|---|---|---|---|
|
{{ c.icon }}
{{ c.display }}
{{ c.fragment }}
|
{{ c.schedule }} | {{ c.configured ? '✅ 已配' : '⏸️ 未配' }} | {{ c.last_run }} |
🏗️ 基础设施
{{ i.icon }}
{{ i.name }}
{{ i.status === 'ok' ? '🟢 OK' : i.status === 'warn' ? '🟡 警告' : i.status === 'error' ? '🔴 错误' : '⏸️ ' + i.status }}
{{ i.note }}
📥 用户反馈(巡检评论 - 已去黄推)
{{ feedback.date }} · 原始 {{ feedback.total_raw }} 条 · 过滤 {{ feedback.blocked_blacklist }} 条黄推 · 命中分类 {{ feedback.classified }} 条
产品:
分类:
| 产品 | 分类 | 评论内容 | 位置 | UID | 视频/帖子 |
|---|---|---|---|---|---|
| {{ r['产品'] }} | {{ r['分类'] }} | {{ r['评论'] }} | {{ r['位置'] }} | {{ r['UID'] }} | {{ r['视频/帖子'] }} |
| 没有命中的反馈 | |||||
已显示 {{ feedbackPageSize }} / 共 {{ filteredFeedbackRows.length }} 条
⚙️ 基础
📰 跑马灯(叠播放器底部滚动)
#{{ idx+1 }}
🎯 广告位(按 ?from= 分流,各平台用户只看自家)
分组名(default/gtv/sotong/xiaolan 等)对应 URL `?from=` 参数,从 GTV 落地页跳来的 URL 加 `?from=gtv` 就只显示 gtv 那组广告。
{{ group }}{{ group==='default' ? ' (无 from 参数走这个)' : ' (?from=' + group + ')' }}
这个分组没有广告,点上面 ➕ 加一个
📊 埋点(最近 200 条)
总数: {{ zhiboEvents.length }}
页面打开: {{ zhiboEvents.filter(e=>e.event==='page_open').length }}
视频播放: {{ zhiboEvents.filter(e=>e.event==='video_play').length }}
广告点击: {{ zhiboEvents.filter(e=>e.event==='ad_click').length }}
跑马灯点击: {{ zhiboEvents.filter(e=>e.event==='marquee_click').length }}
{{ e.ts.slice(11,19) }} · {{ e.event }} · from={{ e.from }} · sid={{ e.sid.slice(0,8) }} {{ e.ad_id ? '· ad=' + e.ad_id : '' }}
还没埋点数据,等用户访问直播站后再看
⏳ 加载中...
等待加载...
📝 AV 落地页配置
▶ 预览落地页
{{ landingConfigMsg }}
📌 顶部主信息
🔝 顶栏统计
🎯 主 Banner (页面最大那块)
🖼️ Banner 轮播大图 ({{ (landingCfg.banner_slides||[]).length }} 张)
两种方式都行:① 点 📁 直接选本地图(支持多选,自动上传)② 贴公网 URL(jpg/png/webp/gif),建议 1600×900 横图
还没图,点 + 加图 加一张试试
📊 数据指标卡 ({{ landingCfg.metrics.length }} 个数字)
🌶 双榜热推 (左右两张大卡)
⬅ 左卡
➡ 右卡
📱 APP 卡片 ({{ landingCfg.apps.length }} 个)
📱 {{ a.name || '(未命名)' }} [{{ a.key }}]
🔥 精选视频 ({{ landingCfg.videos.length }} 个)
🦶 页脚
改完点保存,落地页刷新就生效
⏳ 加载中...
等待加载...
🎬 媒体数据
⚠ 部分数据源拉失败: {{ Object.entries(mediaFails).map(([k,v])=>`${k}: ${v}`).join(' | ') }}
{{ mediaKind === 'video' ? '🎥 视频' : '📝 帖子' }} Top {{ mediaListFiltered.length }} · 按{{ {play:'播放',like:'点赞',sale:'销量'}[mediaSort] }}排
加载中...
总 {{ mediaTotal }} 条
| # | 平台 | 标题 | 播放 | 点赞 | 销量 | 售价 | 标签 | 创建时间 |
|---|---|---|---|---|---|---|---|---|
| {{ i+1 }} | {{ it.plat }} | {{ it.title }} | {{ (it.play||0).toLocaleString() }} | {{ (it.like||0).toLocaleString() }} | {{ (it.sale||0).toLocaleString() }} | {{ it.coins||0 }} | {{ t }} | {{ (it.created||'').slice(0,16) }} |
|
📭
{{ mediaKind === 'post' && mediaPlatFilter === 'Gili Gili' ? 'Gili Gili 无社区帖' : '无数据' }}
|
||||||||
🏷️ 标签排行 Top 20
| # | 标签 | 条数 | {{ {play:'播放',like:'点赞',sale:'销量'}[mediaSort] }} |
|---|---|---|---|
| {{ i+1 }} | {{ t.tag }} | {{ t.count }} | {{ (t[mediaSort]||0).toLocaleString() }} |
| 无标签数据 | |||
🎁 活动策划
🤖
嘿大哥,告诉我活动思路
"我要给搜同 8 月做一个抽奖,周期 7 天,预算 5 万..."
🥚 铁蛋(活动策划)
🔧 铁蛋调了 {{ m.tool_trace.length }} 个能力 (点开看)
{{ t.name }}({{ JSON.stringify(t.args).slice(0, 80) }})
⏳ 任务派发中: {{ m.task_info.action }} (~{{ m.task_info.estimated_seconds }}秒)... 完成后这里出链接
✅ 任务完成
❌ {{ m.task_result.error }}
完整结果 (点开)
{{ JSON.stringify(m.task_result, null, 2) }}
⏱️ 任务 5 分钟没出结果,可能 worker 卡了。看 /tmp/activity_ai_tasks/{{ m.task_info.task_id }}.log
✨ 铁蛋已经准备好派发任务:{{ m.pending_action.__action__ }}
· {{ m.pending_action.platform }}
"{{ m.pending_action.activity }}"
🤖 思考中…
{{ act.name }}
{{ act._auto_status || act.status }}🎨 {{ act.theme }}
📅 {{ act.start }} → {{ act.end }} ({{ activityDays(act) }} 天)
🌐 {{ (act.platforms||[]).join(' / ') || '—' }}
🏷️ {{ act.type }}
📜 {{ act.rules }}
🏆 {{ act.notes }}
进度{{ activityProgress(act).toFixed(0) }}%
还没活动,点"+ 新建活动"加一个
{{ activityForm.id && activityFormIsEdit ? '✏️ 编辑活动' : '+ 新建活动' }}
人员架构
加载中… 真实 · {{ orgChartData.total }} 人 · {{ orgChartData.updated }} ⚠ {{ orgChartError }} 数据源:江瑞源头表运营部 · {{ gName }}
{{ grp.all.length }}
{{ grp.leader ? '管理:' + grp.leader.name : '无管理' }}
{{ grp.leader?.products || '—' }}
🏢 {{ dName }}
{{ Object.values(dept).reduce((s, g) => s + g.all.length, 0) }} 人{{ gName }}
{{ grp.all.length }} 人
👑 {{ grp.leader.name }}
· 负责 {{ grp.leader.products }}
{{ p.name }}
{{ p.role }}
全员明细 ({{ orgChartData.people.length }} 人)
| {{ h }} | |||||||
|---|---|---|---|---|---|---|---|
| {{ p['花名'] }} | {{ p['职位'] }} | {{ p['部门'] }} | {{ p['小组'] }} | {{ p['直属上级(花名)'] }} | {{ p['负责产品'] || '—' }} | {{ p['入职日期'] || '—' }} | {{ p['状态'] }} |
用户活跃
⟳ 加载中…(后端 8 平台并发可能需 1-2 分钟)数据更新时间 {{ overviewTime }}⚠️ 未加载,点右上 ⌄→刷新当前明细数据
| {{ h }} | |||
|---|---|---|---|
| {{ fmtDay(r.day) }} | {{ fmt(Number(r['新增']||0)) }} | {{ fmt(Number(r['活跃']||0)) }} | {{ Number(r['活跃']) ? (Number(r['新增']||0)/Number(r['活跃'])*100).toFixed(2) : '0' }}% |
充值构成
⟳ 加载中…(后端 8 平台并发可能需 1-2 分钟)数据更新时间 {{ overviewTime }}⚠️ 未加载,点右上 ⌄→刷新当前日期明细 真实: 会员卡(VIP) vs 金币 vs 其他(d.php 4 家有拆分, 余 4 家归"其他")
| {{ h }} | |||||
|---|---|---|---|---|---|
| {{ fmtDay(r.day) }} | ¥{{ fmt(Number(r['充值']||0)) }} | ¥{{ fmt(Number(r['VIP充值']||0)) }} | ¥{{ fmt(Number(r['金币充值']||0)) }} | ¥{{ fmt(Math.max(0, Number(r['充值']||0) - Number(r['VIP充值']||0) - Number(r['金币充值']||0))) }} | {{ Number(r['充值']) ? (Number(r['VIP充值']||0) / Number(r['充值']) * 100).toFixed(1) : 0 }}% |
用户休眠
⟳ 加载中…(后端 8 平台并发可能需 1-2 分钟)数据更新时间 {{ overviewTime }}⚠️ 未加载,点右上 ⌄→刷新当前新增账号数
{{ fmt(dormantStats.newCount) }}
环比前一日 {{ dormantStats.newRatio >= 0 ? '+' : '' }}{{ dormantStats.newRatio.toFixed(2) }}%
新增休眠账号数
{{ fmt(dormantStats.newDormant) }}
昨日新增 × (1 - 次留率)
回流账号数
{{ fmt(dormantStats.returning) }}
今日活跃 - 昨活 - 今增 (净增)
活跃账号占累计总用户比例 活跃 / (累计总用户 - 活跃) = 休眠占比
账号流入与流出趋势 真实算: 新增 / 新增休眠 (新增 × 流失率) / 回流 (活跃净增)
漏斗分析
官网总访问
{{ fmt(chargeTrendRows.reduce((s,r) => s + Number(r['官网总访问数']||0), 0)) }}
总下载
{{ fmt(chargeTrendRows.reduce((s,r) => s + Number(r['总下载']||0), 0)) }}
访问→注册 转化率
{{ (() => { const v = chargeTrendRows.reduce((s,r)=>s+Number(r['官网总访问数']||0),0); const n = chargeTrendRows.reduce((s,r)=>s+Number(r['新增']||0),0); return v ? (n/v*100).toFixed(2)+'%' : '0%'; })() }}
漏斗图
{{ s.label }}
{{ s.rate }}
流失 {{ s.lost }} 人
日期明细
| {{ h }} | |||||
|---|---|---|---|---|---|
| {{ fmtDay(r.day) }} | {{ fmt(Number(r['官网总访问数']||0)) }} | {{ fmt(Number(r['总下载']||0)) }} | {{ fmt(Number(r['新增']||0)) }} | {{ Number(r['官网总访问数']) ? (Number(r['总下载']||0) / Number(r['官网总访问数']) * 100).toFixed(2) : 0 }}% | {{ Number(r['总下载']) ? (Number(r['新增']||0) / Number(r['总下载']) * 100).toFixed(2) : 0 }}% |
路径分析
⟳ 加载中…(后端 8 平台并发可能需 1-2 分钟)数据更新时间 {{ overviewTime }}⚠️ 未加载,点右上 ⌄→刷新当前🛤️
需 App 前端埋点采集页面路径,后台暂无此数据源
热力图分析
⟳ 加载中…(后端 8 平台并发可能需 1-2 分钟)数据更新时间 {{ overviewTime }}⚠️ 未加载,点右上 ⌄→刷新当前🔥
需 App 前端埋点采集点击坐标,后台暂无此数据源
热力图管理
⟳ 加载中…(后端 8 平台并发可能需 1-2 分钟)数据更新时间 {{ overviewTime }}⚠️ 未加载,点右上 ⌄→刷新当前
→
| {{ h }} | ||||||||
|---|---|---|---|---|---|---|---|---|
|
📋
需 App 前端埋点采集,后台暂无此数据源
| ||||||||
{{ findMenu(activeMenu)?.name }}
⟳ 加载中…(后端 8 平台并发可能需 1-2 分钟)数据更新时间 {{ overviewTime }}⚠️ 未加载,点右上 ⌄→刷新当前 加载真实数据… 真实 · 8 平台 · 近 {{ chargeTrendRows.length }} 天 ⚠ {{ chargeTrendError }}
→
指标
组别
产品
{{ card.label }}
当日
{{ card.prefix }}{{ card.isFloat ? card.value.toFixed(2) : (card.isPercent ? card.value.toFixed(2) + '%' : fmt(card.value)) }}
低基数
{{ card.ratio >= 0 ? '↗' : '↘' }}
{{ Math.abs(card.ratio).toFixed(2) }}%
{{ card.sub }}
{{ currentAnalysis.chartTitle }}
{{ analysisTrendPoints.days[0] }}
真实 {{ analysisTrendPoints.field }} · 8 平台聚合 · 峰值 {{ analysisTrendPoints.isRate ? analysisTrendPoints.max.toFixed(2) + '%' : analysisTrendPoints.max.toLocaleString() }}
{{ analysisTrendPoints.days[analysisTrendPoints.days.length - 1] }}
加载中…
⚠ {{ chargeTrendError }}
明细数据
共 {{ currentAnalysis.tableRows.length }} 项数据| {{ h }} |
|---|
{{ findMenu(activeMenu)?.icon || '📋' }}
{{ findMenu(activeMenu)?.name || activeMenu }}
该模块建设中 · 数据接入后开放
🏛️ 南风馆后台
3,181 部漫画 · 697 动画 · 86 小说 · 4 站合一
📢 广告中心
真实 · {{ adsysProducts.merchant_name }} · {{ adsysProducts.total }} 平台
加载 adsys 数据…
① 粘运营群消息
⚠ {{ batchParseErr }}
② 全局参数 应用到所有 {{ batchRows.length }} 行
客户
广告类型
广告模式
备注
📌 上架单指定位置: {{ batchLocationHint }}
— 请在下方表格 ✋ 手动选每家对应的广告位
③ 待上架 {{ batchRows.length }} 条 {{ batchAds.length }} 广告 × {{ batchApps.length }} 平台
| # | 广告标题 | 产品 | 广告位 | 链接 | 图标 | 状态 |
|---|---|---|---|---|---|---|
| {{ i+1 }} | {{ r.title }} | {{ r.app_code }}{{ r.app_name }} | {{ r.url }} | 待上架 上架中 ✓ 成功 ✗ 失败 |
📄 第 1 条 payload 预览 (其他 {{ batchRows.length-1 }} 条同结构)
{{ batchPreviewPayload }}
运营组
应用名称
{{ getProductName(code) }}
请选择 (可多选)
▼
{{ p.display_name }} ({{ p.app_code }})
✓
加载中…
广告位
广告名称
广告链接
广告 ID
客户名称
广告类型
广告模式
广告宽度
广告高度
尺寸比例
状态
备注
已选 {{ selectedAdCodes.size }} 条
真实 · 万有引力 · {{ adsList.total }} 条
加载中…
⚠ {{ adsList.error }}
| 序号 | 应用名称 | 广告位名称 | 广告名称 | 广告链接 | 广告素材 | 排序 | 广告 ID | 客户名称 | 广告类型 | 广告模式 | 操作 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ (adsList.page-1)*adsList.pageSize + i + 1 }} | {{ ad.appName || '-' }} | {{ ad.advertiseLocationName || '-' }} | {{ ad.advertiseName || '-' }} | {{ ad.advertiseUrl }} - |
无
素材 |
{{ ad.advertiseCode || ad.id || '-' }} | {{ ad.customerName || '-' }} | {{ materialTypeName(ad.advertiseType) }} - | {{ ad.adMode }} - |
|
||
|
📋
{{ adsList.appCode ? '该筛选条件下无结果' : '请选择应用名称后查询' }}
|
||||||||||||
共 {{ adsList.total }} 条
{{ adsList.page }} / {{ Math.ceil(adsList.total / adsList.pageSize) || 1 }}