下载页
近 30 天活跃趋势(上报成长的设备数 / 日)
情绪分布
共鸣最多的歌
| 歌曲 | 歌手 | 共鸣数 |
|---|
最近共鸣(匿名)
| 类型 | 歌/句 | 第N | 情绪 |
|---|
现在有多少人在用 (心跳时刻 ∪ 他自己的行为记录,取更近的那个 · 已剔除排除名单里的设备)
我们没有长连接,「在线」= 刚刚还在用。心跳一次冷启只发一发,所以光看心跳会把
「开着 App 玩了一整天、只是没重启」报成好几天没活跃 —— 这几格因此同时认
共鸣 / 听歌 / 每日首登 / 灵田掉落 / 道具台账这几条他自己的行为记录,
取最近的那一个。判据只有一处(服务端 growth.active_device_count),
Telegram bot 的速查屏和日报读的是同一份。
近 48 小时作息(每小时有行为的设备数 · UTC+8)
「有行为」= 听歌 / 共鸣 / 操作 / 登录任一条落了库。开着 app 不动不算, 所以这条曲线比日活低是正常的——它看的是作息,不是日活。
近 30 天日活(每天有多少台设备上报过)
心魄成长
形态分布
段位分布
勋章点亮人数
心魄榜(后台完整名次 · 客户端只看得到自己第几)
| 名次 | 设备 | 邀请码 | 发给谁 | 端 | 心魄等级 | 心魄值 | 听歌成长值 | 累计收听 | 勋章 | 最近上报 |
|---|
里程碑名单(内测奖励依据 · 先到先得,序数落库不重算)
全部榜单(后台看得到完整名次)
跟客户端读的是同一个函数,⛔ 后台不另算一遍 ——
对不上的可能性从设计上就没有。
⚠️ 后台这一份 include_excluded=1:排除出榜的设备也列出来
(客户端看不到)。所以名次可能跟用户屏幕上的差一位,那不是 bug ——
排除名单里不只有测试机,榜单去重也会把真实用户的第二台设备放进来。
用户账号点行进详情
| 账号 | 登录方式 | 设备数 | 介绍人 | 介绍来 | 心魄等级 | 心魄值 | 段位 | 勋章 | 共鸣分 | 最后登录 |
|---|
同设备多号一台设备注册过 ≥2 个心魄号 · 只标记不处理(新注册已按「一台设备至多注册 1 个号」拦住)
| 设备 | 机型 | 注册过的号(心魄号 · 昵称 · 注册时间 · 来源) |
|---|
设备点行进详情
| 设备 | 名次 | 心魄等级 | 心魄值 | 点亮 | 勋章 | 收听 | 共鸣分 | 端 | 型号 | 系统 | App | IP | 最后活跃 | 成长上报 | 账号 | 榜单 |
|---|
崩溃与异常退出点行看堆栈
| 时刻 | 端 | 型号 | 系统 | 崩时 build | 类型 | 原因 | 阶段 | 描述 | 内存 | 设备 | 堆栈 |
|---|
记录来自系统自己保留的进程死亡信息(安卓 ApplicationExitInfo · iOS MetricKit),客户端启动时捞回来上报。安卓这条是回溯的——用户装上新版打开一次,装之前那些崩溃也会一并补报上来。保留 90 天,删号即抹除。
安卓 Java 崩溃的堆栈从 build 74 起才有。系统的
ApplicationExitInfo 对 Java 未捕获异常不给堆栈(只给 ANR 与原生崩溃),
所以 73 及以前那些 crash 记录「堆栈」列是空的——不是漏报,是系统不给。
74 起 App 自己在崩之前把堆栈落盘、下次启动贴回同一条记录。
「被系统清理」不是我们的崩溃。国产 ROM 的清理器(一键清理 / 上滑清理 / 锁屏清理 / 省电清理)会把 app 进程直接 force-stop,前台服务开着、通知栏挂着、 音乐正在响也照杀。系统把凶手写在「描述」那一列里,我们只是照实翻译出来。 进程一死,音乐和桌面歌词一起没 —— 用户报的「播放莫名停止」「微信里看不到桌面歌词」 多半都是它。回答用户时可以按设备查:点某一行的设备哈希只看这一台。
「本地存档出事」也不是崩溃,是用户的数据在丢:手机本地那份存档
(曲库/收藏/共鸣/激活状态全在里面)不见了、或者读不出来。用户那边看到的是「App 变回刚装的样子、
下载的音乐全没了、还要重新绑邀请码」。它比崩溃更要命 —— 崩溃重开一次就好,
档丢了是不可逆的。state_persist_blocked 是最重的一档:那台机器当时
存不了任何东西(这是有意的,宁可这一场不保存,也不拿默认态把用户的档盖掉)。
描述里的 ×N 是同一台机器发生过几次;state_missing 后面跟的
music / pos / bak / corrupt / tmp 是机器上还剩哪些痕迹 —— 有痕迹才说明是真丢了,
全空则是新装、根本不会报上来。
「Dart 错误」不是崩溃,是「没崩但坏了」:某一页白了 / 点了没反应,进程还活着。
它不计进上面的崩溃统计,也不在「异常退出(默认)」里——要看请在筛选里单独选。
同一个 bug 按堆栈签名合并成一条,描述里的 ×N 是发生次数。
站长信箱举报 / 投诉 / 建议 / 问题四类合一,点行看详情与截图
| 时间 | 类型 | 端 | 版本 | 设备 | 内容 | 图 | 状态 |
|---|
客户端「反馈与投诉」入口提交(举报走同一条管线,多两列「指向谁」)。防滥用:单图 ≤3MB、每条 ≤3 图、每设备每日 ≤5 条、每设备累计图片 ≤100MB(都可用 HP_FEEDBACK_* 环境变量调)。已处理条目保留 365 天后连图自动清理;未处理的永不自动清。这条通道任何模式下都不许关(未保法 78 条投诉举报渠道)。
发信奖励落到用户收件箱,由用户点「领取」——货币进钱包,宝箱/碎片/装备/礼物进背包
发件台账
| 时间 | 收件人 | 分类 | 标题 | 附件 | 状态 | 经手 | 操作 |
|---|
用户「一键清除」是软删,清掉的信在这张表里照样查得到(「他说没收到」要能查)。客户端每人只看得到最近 50 封、每页 10 条;服务端一封不删。未领取的可作废;已领取的撤不回来——心魄币走反向发放,宝箱/碎片走不了,道具(头像框/礼物/背景)走下面那一屏收回。
道具收回先查背包看清楚有什么,再收——不够扣整笔拒绝,⛔ 不做部分回收
| 道具 | 键 | 持有 | 其中可赠予 | 操作 |
|---|
收回会往 decor_item_ledger 写一行负数(admin_revoke:<经手>:<时刻>,后台「全服存量」按这个前缀认来源),并往 op_log 落一条 user_item_revoke(记谁收的 + 为什么)。事由不许留空。⚠️ 挂在交易所的件不在背包里,收不到。
人工找回密码内测期唯一的找回通道:邀请码 / 设备哈希前 6 位 / 大致注册时间,三选二
| 心魄号 | 登录名 | 昵称 | 注册时间 | 设备前 6 位 | 邀请码 | 操作 |
|---|
每一次人工改密码都会往 op_log 落一条 password_reset_manual(记「过了哪两项核验 + 谁操作的」,永不记密码本身),并踢掉该账号全部会话、清掉改名冷却。没有规矩的人工通道 = 谁都能来要号。
没设密码的号在用、但从没设过账号密码 —— 换手机就登不回来。点「设初始密码」给他一组临时凭证(不踢会话,他登录后必须先改密码)
| 心魄号 | 昵称 | 最后活跃 | 版本 | 设备数 | 操作 |
|---|
用户名默认 = 心魄号(纯数字合法),密码默认随机 10 位;核验同样三选二。落一条 credentials_init_manual(永不记密码本身)。临时密码只显示一次,关掉弹窗就查不回来了。
成长值超限告警服务端只校验不重算;复核只改状态,永不删行
| 心魄号 | 设备 | 上报累计 | 物理上限 | 在册 | 超出 | 次数 | 状态 | 操作 |
|---|
⚠️ 内测成长数据本身不可比:build ≤73 那个「开播 1.5 秒即算听完」的测试闸污染过全体数据。复核时先排除这一项,别拿内测数字校准任何曲线。
个人签名按心魄号看当前签名与最近 20 次变更;违规可清空(留痕,用户那边显示「已被管理员清空」)
清空签名
清空后用户可以重新写;旧签名原文留在留痕里(signature_cleared,记操作人与原因)。⛔ 不可撤销(不会自动恢复旧签名)。
讨论区独立模块 + 远程开关;下架是留痕不是删除,删除是真删(删前抄原文进管理留痕)
帖子
| 时间 | 作者 | 标题 | 正文 | 回复 | 赞 | 状态 | 操作 |
|---|
回复
| 时间 | 作者 | 内容 | 状态 | 操作 |
|---|
被删掉的配图
| 图 | 删除时间 | 到期时间 | 上传者 | 大小 | 状态 |
|---|
开关在「开关」页的 discussion(默认关;关掉后 /v1/discussion/* 全 403,客户端画不出入口,但这一页照常能看能管)。⚠️ 上架中国大陆之前不许开:讨论区 = 信息发布服务,须先做手机号/身份证实名 + 内容审核。
四个动作的留痕去处:下架/恢复写在帖子行上(谁下的 / 为什么 / 什么时候);修改与删除写进「管理留痕」页(discussion_edit / discussion_delete)—— 修改留的是改之前是什么,删除留的是删之前的整篇原文(含被连带删掉的那些回复)。⛔ 删除不可逆:帖子、它下面所有人的回复、点赞、通知一起没,没有恢复按钮。
配图是唯一留得住的:被删帖子的图,字节进保留期(默认 180 天,对齐《网络安全法》第二十一条的六个月基线),用户侧立刻 404、这一页在保留期内还看得到原图,到期由清扫真删。⚠️ 作者自己撤回、以及用户注销账号,配图都是当场真删——那两条是用户在行使自己的删除权,不进保留期。
同一套动作客户端里的管理员也做得了(rules.discussion.moderators,默认只有心魄号 10001)。⛔ 客户端一个号都没写死 —— 换人管理在这儿改配置即可,不用发包。
心魄灵田
掉落点位与掉率灵田一共六个掉落点位,掉率写在运营 manifest 的 rules.garden;保存即发布
| 点位 | 触发条件 | 当前掉率 | 默认 | 改为 | 键名 |
|---|
「集齐黑胶」「形态里程碑」默认 1.00 = 必得,调低即变成概率点位。 里程碑是终身一次的发放:未命中不写幂等键,下次进灵田还会再掷 —— 调低掉率不会让某台设备永久丢包。 掉率只管附赠的那枚碎片,唱片集齐本身与星痕结算不受影响。 改动落 op_log(action=garden_drop_config_change,含前后值)。
星痕余额与对账
| 设备 | 余额 | 流水重放 | 对账 | 累计产出 | 已注入心魄值 | 私人歌曲 |
|---|
事件流水纠纷就查这里:采撷者与主人两条记录指向同一个 idem_key
| 时刻 | 类型 | 操作者 | 对象 | 曲目 | 星痕 | idem_key | 详情 |
|---|
灵田是服务端权威的(跟成长值那条线相反 —— 那条是客户端算、服务端存)。 事件流水 append-only,永不修改也永不删除;数据库快照按 GFS 轮转(近 48 小时每小时一份、30 天每天一份、12 周每周一份)。 备份只是防灾,流水才是真相:任何余额都能从流水重放出来。
宝箱商店
四档宝箱的价目、开出枚数、档位权重与保底,以及哪几张货架露出去了。
⚠️ 货架开关是「卖不卖」,商城总闸是「进不进得来」 —— 两件事。
总闸关着的时候,货架开着也没人看得见。
🔴 套利自检那张表不是装饰:「买高档箱刷低档碎片更便宜」这类事
只有算出来才看得见 —— 微光箱 20% 那次废掉整个流光箱,就是没人算这张表。
货架
四档宝箱
| 宝箱 | 档 | 心魄币 | 心魄钻石 | 枚数 | 档位权重 | 保底 | 在手 |
|---|
套利自检(每档碎片的最优购买路线)
| 档 | 合成片数 | 最优路线 | 期望单价 | 成品直购价 |
|---|
派发宝箱
⚠️ 发出去收不回来(回收要填负数,且同样进台账)。 每一笔都带幂等键:同一个键重复提交不会发第二次。
海上贸易 · 发行总阀
净印出 = 当天系统付出的银币 − 收回的银币(换汇、同账号设备归拢不算)。它就是这个玩法往经济里灌的水。
改 k:次日北京 0 点生效,每天最多一次,单次不超过上限。急停:当天即时、只许往下,一直沿用到下次改。
海上贸易 · 玩家查看与纠错
海上贸易 · 任务 / 船位 / 心魄币商店 / 新榜
不填心魄号 = 全服概览(线 2 当前生效配置、任务状态分布、周榜冠军、全服首达);填号 = 这个人的船位、任务、解锁、船上装饰。
数值改远程配置 rules.sea_trade.ship_slots / decor / shop / quests / boards / marquee.kinds。
船位纠正:把「买来的船位数」直接改成新值(写 oplog)。
海上贸易 · 酒馆讯息排期
老板会在排期时段里把这句话混进酒馆讯息(跟别的讯息一起按权重抽,权重 1 = 跟普通讯息一样容易被抽到)。
没到开始时间,玩家那边任何接口都拿不到这句话;停用 / 过期同样不出。
港口留空 = 所有港;泉州写 home;多个港用逗号隔开。文案里可以写 {port}(换成本港名)。
冷清天的港只剩一句「生意不好」,排期讯息也会被压掉;预览时勾「不管冷清」能看到它排进去的样子。
预览:某港某时刻会听到什么
海上贸易 · 配置表
灰底格子不能改(主键);其余格子点进去改,离开格子即保存。
「开港」只改港口表的 open 一格。🔴 港口 / 商品不删,用 open / status 下线。
⚠️ 种子只补缺不覆盖:代码里的种子改了不会自己到线上,要在「种子对账」里逐条采用。
海上贸易 · 港口样式与素材包
港口画面(总图昼夜 / 三张内景 / 立绘)不在安装包里,玩家第一次进这个港时下载;叫法和六入口热点也在这里,改完玩家下次进港生效。
开新港(不发包):① 本机跑 build_sea_assets.py → ② 按部署说明上传 sea_assets/ → ③ 这里点「刷新并核 sha256」,这一套「素材包」一格全绿 →
④ 叫法 / 热点没有就在下面新建一套 → ⑤ 配置表里把港口的 style_set 指过来、勾 open。
「下发」关掉 = 这一套不给客户端(还没开的港先备好样式,别剧透)。⚠️ 种子只补缺不覆盖:种子 JSON 改了要在这里逐套「采用种子值」。
| 套 | 名称 | 在用港口 | 下发 | 素材包 | 总图 |
|---|
编辑一套(JSON:name / ports / fac / npc / call / catchphrase / greet / spots)
spots = 六入口框 [x0, x1, y0, y1](图宽 / 图高百分比);没写的入口用模板。fac 键:tavern trade capital wild yard dock;
npc 键:tavern sailor trade wright capital(首府人物可空);greet 键:tavern trader sailor yard tip。
海上繁荣度 · 开关与联动
本周 / 下周捐建
捐建日 = 周日;周六 0 点公示下一个周日的门槛和捐建港,第一次算出来就落表冻结。
还没到公示时刻的那一周标「预演」:照当前公式现算给你看,⛔ 不落表,到点时数据变了结果也会变。
每港一格:本周捐了多少 / 繁荣级(门槛五档)。手排某一周的捐建港 = 远程配置
rules.sea_trade.prosperity.manual_ports(键是捐建日 YYYY-MM-DD)。
本周极品在哪个港
最近几个捐建日的捐款
最近 8 周各港等级
当前生效配置
撤掉一个冻结周(下次读按当时规则重算)
只限还没人捐过的捐建周(有捐款服务端直接拒):试点期冻结过的那周要按正式口径重算时用。写操作留痕。
全服海上事件 · 开关与联动
排期列表
海盗舰队 / 封港 / 大商队求购 / 风暴季 / 丰收。航程只认派船之前排好的事件;预告时刻起酒馆里出传闻、横幅开始倒计时。
参数范围与预告下限服务端写死(见下面「规则」),填错直接拒。⚠️ 已经开始的事件只能改标题 / 传闻 / 备注;
停用 = 酒馆里那条传闻也收回。
新建 / 编辑
瓶中信 · 开关与联动
全服:内容 / 投放 / 收集进度
纸条池 = 服务端数据文件(编号即指纹,只追加不改号)。「在架」= 没下架的;收集进度按在架总数算。 ⛔ 这一屏不出纸条正文和谜底,只数数。
查某个人
任务线 / 单封信整条退回
删掉这个人这条线的进度和委托记录,之后可以重新从瓶子里捞到。⛔ 不收回已经发出去的银币 / 货 / 券(那些走各自的纠正通道)。写操作留痕。
群聊 · 开关与联动
群列表
搜:群号 / 群名片段 / 群主心魄号。「待处理举报」= 信箱里没归档的「群聊」+「群消息」两类举报。
人数上限没单独改过的群跟全站默认(rules.dm_ext.group_member_cap)。
群详情点上面一行的「详情」
处置这个群
群号填好再动手(点「详情」会自动填上)。三件事都写留痕;解散不可撤销:没领完的群红包当场退回发送人,成员收到「该群因违反规定已被解散」。
用户红包 · 开关与联动
对账
逐个红包从钱包流水重放:已关闭的必须 扣出合计 = 领取合计 + 退回合计,开着的 领取合计 + 退回合计 ≤ 扣出合计。不平的条数只该是 0,不是 0 就是事故。每天至少点一次。
红包列表
测试机同设备互发放行名单
正常情况下用过同一台设备的两个号不能互发 / 互领红包。名单里的心魄号不受这条限制(只给测试机用)。
写的是远程配置 rules.dm_ext.rp_same_device_allow_nos,整表替换,清空 = 全撤。写留痕。
冻结一个红包
没领的份立即退回发送人,已领的不追。已经领完 / 退回过的红包冻结不了(什么都不会动)。写留痕。⛔ 不可撤销。
对账
逐箱从钱包流水重放:支付 = 已被抢份结算价合计 + 退款(开着的箱 已被抢 + 退款 ≤ 支付)。不平的条数只该是 0,不是 0 就是事故。
集装箱列表
冻结一个集装箱
立即关箱:没被抢的份按结算价折回 + 未分配余额退回发箱人(只退钻),已抢的不追。已经关了的箱冻结不了(什么都不会动)。写留痕。⛔ 不可撤销。
聊天媒体
私聊 / 群聊里发的图片 · GIF · 语音 · 视频 · 文件。保留口径:≤ 大件线的保留若干天;大件对方 / 全员看过即删、且有最长小时数;没发出去的孤儿件 24 小时清。 删除 = 删盘上字节 + 标「已过期」(行留着,聊天气泡显示已过期)。⚠️ 同一份文件被多条消息共用时,只有最后一条也删了才真删字节。
删除一个媒体件
删盘上字节 + 标已过期,⛔ 不可恢复。只删这个件,不动它所在的消息(消息要隐藏去「看上下文」里点)。写留痕。
全站禁言 · 正在禁言的人
心魄管理员在客户端(客厅名片 / 群成员 / 私聊右上角「⋯」)禁的人:禁言期间私聊、群聊、客厅卧室都发不了言,到点自动失效(这里只列还没到点的)。 时长只有 1 小时 / 1 天 / 7 天 / 永久。后台只能解除,⛔ 不能在这里禁(禁言要心魄管理员本人在客户端做,留痕里记的是官方号)。
解除禁言
立刻恢复这个人在私聊、群聊、客厅卧室的发言。写留痕(谁解的、原因)。
禁言 / 解除流水
最近 100 条,新的在上。「谁」= 官方号的账号,或 admin:后台用户名。
全员通知记录
心魄管理员在聊天主页右上角发的全员通知:以官方号给每个用户发一条私聊(分批、同一次只发一遍)。拉黑了官方号(或被官方号拉黑)的人不发,列在「跳过」里。
每天上限看远程配置 rules.official.broadcast_daily_cap(出厂 3 条)。「发送中」= 中途断了,官方号再点一次同一条会接着发。
聊天表情盘
两种表情:文本表情(系统 emoji,点了插进输入框跟正文一起发;⚠️ 新码位老安卓可能显示成方块,加之前先在测试机上看一眼); 图片表情(上传的小图,点了直接发出去;老版本 App 收到显示成一个占位圆球)。 从没配过时用户看到的是安装包内置那一套 —— 第一次配先点「从内置导入」再改。删掉的图片表情:新消息发不出,聊过的历史照样显示。
改动历史
每次改动存一版全文。「回到这一版」= 把那一版内容再存成新的一版(版本号继续往上走,客户端照常拉到)。
全服共建 · 开关与联动
灵泉:进度与各阶
公式目标预览(不落库)
本周档位快照
最近捐献(200 条)
锁定下一阶目标(开阶)
第一次 = 开第一阶(灵泉开始众筹)。先点上面「算一遍」看公式目标,认可就留空走公式,否则填一个整数。锁定后这一阶目标不再变。写留痕。
灵泉许愿
许愿跟着全服共建那一位开关走;引水(第一阶)完成前回「还没引水」。下面是最近 200 次许愿与各签表的签分布。
试点放行
给指定设备单独打开某个功能(新玩法先给两台测试机跑一轮,
⛔ 别一上来全量)。
🔴 保存是整表替换:这台设备的放行名单以你勾的这一份为准,
没勾的当场撤销。⛔ 别以为只加了一条。
⚠️ 未成年人模式与依赖链压过试点 —— 放行不等于绕过闸。
已放行的设备
| 设备 | 放行的功能 | 备注 | 更新时间 | 操作 |
|---|
升级版本号
LATEST(线上最新):客户端 build 低于它就弹「有新版本」提示(可关、可静音)。
MIN(强制下限):低于它就整壳换成拦截页,只剩「去升级」。
生效值 = 远程值(填了且合法)优先,否则用服务器 env。保存写进运营配置,API 下一个请求就读到,⛔ 不用重启。
用户那边:冷启动、或切回前台(45 秒节流)时拉到。「清除」= 删掉远程值、回到 env。
🔴 顺序:双端包出好 → 下载链接真能下到新版(iOS 在 TestFlight 可装)→ 最后才在这里拨号。
🔴 MIN 不许高于 LATEST(服务端拒);MIN 往上拨会先算出近 7 天活跃里会被拦下几台,再让你确认一次。
| 平台 | 项 | 生效值 | 来源 | 远程值 | env 值 | 改成 | 操作 |
|---|---|---|---|---|---|---|---|
| 加载中… | |||||||
LATEST 与 MIN 一起拨(MIN = LATEST)
仍只在 env(只读 · 改要重启)
兑换码
批量铸码,谁先兑谁得(跟点名发券互补的另一条投放口)。
⚠️ 兑换码是不记名的:事后查不出「这一张原本打算给谁」——
留痕只记「什么时候铸了多少张、谁铸的」,⛔ 不记码本身
(留痕不该变成一份可以直接拿去兑的清单)。
⚠️ 铸出来就在外面了:截图 / 转发都算发出去。一批一个用途,
⛔ 别拿同一批码发两件事,那样对不了账。
| 码 | 类型 | 状态 | 被谁兑了 | 铸于 | 兑于 | 备注 |
|---|
电台 BGM
心魄源电台的背景音清单。重建会按当前上架歌重新扫一遍生成清单 —— ⚠️ 它不改任何一首歌,只重算「电台按什么顺序放」。
衔野归灶
一屏看得出:开没开、三条水口今天放了多少、
灶气封顶摸不摸得到。
🔴 「理论合计」跟「够得着」是两个数:前者按灵性 10 算(目前没有
任何一只随行有),后者按目录里最好的那一只算 ——
后者才是「封顶摸不摸得到」的判据。前者看着 5500 没问题的时候,
后者可能是 4900(2026-09-10 真发生过)。
⚠️ 「卡住的趟」只该是 0;不是 0 就点一下「催结算」(跟读接口懒结算同一条路,幂等)。
随行目录
| 随行 | 出身档 | 偏好 | 下限 | 食性 | 钻价 | 上不上架 |
|---|
珍品家具的具名能力
| 家具 | 能力 | 效果 | 为什么不印东西 |
|---|
内容目录(改完即生效,⛔ 不用发版)
每一节是一份 JSON,改完点「存这一节」。
逐节写,没动的节一个字不碰。
⚠️ 存进去之前会过一遍服务端的清洗:整节要么全好要么整节拒收
(坏值当场 422,⛔ 不会静默回落成默认值)。
🔴 属性码只认这几个:;
族只认 ;
家具能给的东西只认 。
打错一个字**整节拒收**(那是故意的:打错字的静默失效查起来最费劲)。
最近的出野
| 设备 | 随行 | 地点 | 状态 | 到点时刻 |
|---|
魄印足迹
🔴 最上面那三个数只该是 0:卡住的程 / 空程 / 封印码对不上。
⚠️ 揭晓前后台也看不到足迹 —— 后台跟前台走同一个函数,
「能不能提前知道号码」在代码里只有一个答案。
封印码后台永远看得到:那本来就是给人核对的。
| 运营日 / 程 | 状态 | 售出 | 参与 | 足迹 | 封印码 | 揭晓时刻 | 操作 |
|---|
互动数据
送礼 / 赠予 / 合成 / 结 CP / 开客厅 / 交友 / 发帖回帖,按运营日(UTC+8)分天。
⚠️ 「多少人」是整段窗口的去重人数,不是每天人数相加 ——
同一个人天天送礼只算一个人。
⚠️ 合成读的是道具台账里 craft: 那一批,
⛔ 不是合成飘屏表 —— 那张只写心魄档,拿它当合成总数会漏掉前三档。
| 项目 | 合计 | 多少人 | 最高的一天 |
|---|
逐日明细
⭐ 没有数据的那天也有一行 0 —— 少一天会被读成「那天没统计」, 而不是「那天真的一次都没有」。
只有累计的几项
这几项答不出「某天几次」,每一行后面写着为什么。 ⛔ 别拿它们的时间列去分天——那只会把一个人几百次串门全算在最后一天。
| 项目 | 数值 | 为什么没有按天 |
|---|
全服存量
现有=此刻还在用户手里的(台账含负数行重放);
发出过=历史上一共发出去多少件。
两个数刻意都摆出来 —— 只看「现有」看不出「发了 900 件、被消耗掉 880 件」。
⚠️ 成品按「件」、碎片按「枚」,两张表刻意分开 ——
加在一起等于说「我有 3 件半」。
| 指纹 | 名字 | 资产键 | 类别 | 稀有度 | 状态 | 现有 | 发出过 | 设备数 |
|---|
成品来源
每条发货路一共净发出(或净收回)多少件。负数是正常的: 送礼支出、集卡消耗、挂单托管都是从背包里扣。
| 来源 | 台账前缀 | 净件数 | 流水行数 |
|---|
碎片存量
来源分类走碎片自己那份分类函数(全站唯一一份),⛔ 这一页没有第二套口径。
| 碎片 | 现有 | 掉出过 | 设备数 |
|---|
碎片来源
| 渠道 | 净枚数 |
|---|
地图天气
🔴 全服同一套:所有人看到的是同一种天气,⛔ 不读任何人的 IP、不要定位权限。
每天 0 点摇一次;摇中非「正常」的,当天出现一段,起点按 — 小时对齐、
持续 — 小时。段不跨零点。
⚠️ 整条线的总闸不在这一屏,在「运营与发布 › 功能开关」里那条地图天气 ——
开关只许有一处,这儿再放一个迟早跟那儿对不上。
关掉 = 一整天正常天气(⛔ 不摇不落库);昼夜四时段的小时表照常下发,
底图不会停在同一张天光上。
① 概率
⚠️ 整张表一起提交(权重是一组互相依赖的数,只改一个的话「其余分剩下的」就不成立)。 改完立刻生效,⛔ 不动今天已经摇好的那一行。
| 天气 | 权重(万分比) | 占比 | 说明 |
|---|
② 特效包(素材做好在这里接上)
一种天气 × 一个时段 = 一个特效包,跟客厅背景是同一套编排包。
先去「道具资产」那一屏把包传上去(类型 space_bg),再回这里填包名。
改完立刻生效,⛔ 不用发版。
⚠️ 填了还没传上来的包名不拦(先配好、素材随后到是正常顺序),但会
标红——那种日子用户那边什么都不会画。
空着 = 这个时段不画。⛔「正常」那一档不许配包(它的定义就是什么都不画)。
| 天气 | 清晨 | 白天 | 傍晚 | 夜里 | 还没传上来的 |
|---|
③ 新增一种天气
⭐ 加一种全新的天气不用发版:这里填 code + 中文名(+ 一句文案),
加好之后它就出现在上面 ① 和 ② 两张表里,包名去 ② 那张表填,
素材在「道具资产」那一屏传(类型 space_bg)。
🔴 code 是目录名和配置键,不是给人看的名字:只许字母数字与 _
-(⛔ 不许点号 / 冒号 / 斜杠 / 中文,⛔ 最长 24 个字符)。
填错当场报错,⛔ 不会被悄悄改成另一个 code 存进去。
名字(中文)随便写,用户看到的是它。
⚠️ 新加的天气权重是 0 = 摇不到。要让它出现,去上面 ① 把它那一行的权重填上
再整表保存一次(⛔ 权重不能只改一个)。
权重 0 的天气仍然能用下面「现在就变天」和「指定某一天」点名。
⚠️ 没填包名的时段会按 wx_<code>_day(清晨/白天/傍晚)与
wx_<code>_night(夜里)两个默认名去找包 ——
传包时直接用这两个名字最省事,不用再回 ② 改一遍。
④ 段的对齐 / 时长 / 段数,与昼夜几点换
改完立刻生效,⛔ 不用发版;但 🔴 不动今天已经摇好的那一行
(今天的天气是既成事实)——要改今天走下面「现在就变天」。
⚠️ 只提交改过的那几格。填了范围外的数当场报错,
⛔ 不会「看起来存上了、生效值没变」。
| 参数 | 值 | 单位 / 范围 | 是什么意思 |
|---|
🔴 昼夜四个时段各从北京几点开始(升序,⛔ 不许相等)—— 这一行同时决定三样东西:地图底图那一张天光、天气用白天版还是夜晚版、 以及哪几只小动物出得来。⚠️ 改它要客户端 build ≥ 124 才认; 更旧的包收不到这一行,照它自己内置的 05 / 09 / 17 / 21 走(= 今天的行为)。
⑤ 现在就变天
覆盖今天那一行,立刻生效。⚠️ 超过零点会被截断,截了会在结果里说出来。
小时⑥ 指定某一天
⚠️ 只生效一次:那天 0 点摇的时候认它、不摇,用掉就自动清,⛔ 不会永久锁死。
天后(1 = 明天)| 哪一天 | 定成什么 | 用掉没 |
|---|
最近 14 天
| 日期 | 天气 | 时段 | 怎么来的 |
|---|
镖局 · 运营旋钮
运镖 / 围镖 / 押镖 / 钱庄的全部可调项。每一格都写着单位、合法范围、
这是什么意思,以及改了之后什么时候生效。
保存逐键覆盖:只动你改过的那几格,⛔ 别的键一个都不碰。
🔴
🔴
⚠️ 每天最大次数那六格在「镖局统计」那一屏(同一张登记表的一个切面,两边改哪边都一样)。
⚠️ 总闸在「功能开关」那一屏 —— 开关只许有一处。
暗镖牌库
每张牌是登记表里的一行:原语(写死在代码里)+ 参数 + 牌名 / 大字 / 小字 / 颜色 + 出现率 / 上限 / 资格 / 开关。
改牌的流程:新建草稿 → 改 → 校验 → 预算(子进程调平 + 重算公示)→ 主理人逐条划公示 → 主理人确认生效。
生效 = 写 rules.<组>.cards(版本号 +1),下一局开局起用新表,进行中的局照局记录结完。
🔴 调平旋钮的出现率只能由预算算出来,手填无效。🔴 同一时刻全后台只许一个预算在跑。
🔴 只有主理人账号能「确认生效」和切换牌组。
充值 VIP · 五档门槛与特权
基础值(⚠️ 这一屏改不了,只是给你对照)
| 哪一项 | 基础值 | 单位 | 叠加方式 | 去哪一屏改 |
|---|
五档
| 档 | 门槛(元) | 门槛(分) | 这一档新增 | 一次性钻石 这一档那一份 |
一次性头像框 这一档那一个 |
一次性聊天气泡 CB 的号,0 = 不给 |
累计之后生效 |
|---|
现在谁是几档
按 recharge_orders 里已到账的单现算。⚠️ 金额这一列只在后台看得到 ——
对外任何地方只发等级数字,⛔ 不发金额。
| 心魄号 | 昵称 | 累计(元) | 单数 | 档 |
|---|
镖局 · 每天最大次数
运镖 / 围镖 / 押镖三个玩法的每日额度都在这儿,改完立刻生效,⛔ 不用发版。
🔴 0 = 一次都不许(⛔ 不是「不限」)。要放开填个大数。
⚠️ 只挡新的接单 / 押注 / 开局,⛔ 不打断已经在路上的那一趟。
⚠️ 镖局还有第七个每日次数 ——炒镖每天几笔(escort_vault.speculate_daily_max),
它在「镖局旋钮」那一屏(跟这六格同一张登记表)。其余五十多格可调项也都在那一屏。
| 玩法 · 哪个次数 | 每天最多 | 说明 |
|---|
运镖统计
⭐ 归日直接读运镖流水自己那一列(接单时刻切的运营日),
⛔ 不拿时间戳重切一次 —— 那是第二套口径。
⚠️ 「奖励钻石」只算已结算的那些:回报在接单那一刻就摇定了,
T+10 分钟才入账,把在途那趟算进去,账面上的「已发钻石」会提前变大。
⚠️ 「消费钻石」含刷新任务单的花费 —— 漏掉它这个数就是偏小的。
| 运营日 | 人数 | 趟数 | 消费钻石 | 奖励钻石 | 净额 | 头奖 | 作废 |
|---|
用户经济
每个人现在手上有多少:两种货币的余额 / 累计到手 / 已花掉,
加上碎片、背包、挂在交易所的、待领的、累计充值。
🔴 一行 = 一个人(同一账号的多台设备已经合起来算),
没绑账号的设备各自一行。
⚠️「已花掉」是推导量(累计到手 − 余额),不是另记的一张表;
负数只可能来自后台反向发放收回,如实显示。
⚠️ 挂在交易所的件不在背包里(挂单那一刻已进托管)⇒ 两列分开,别相加。
🔒「心魄钻石·余额」= 钱包可用余额(用户钱包页看到的那个数),不含保险箱;
保险箱里的钻单独一列(单位:钻)。「钻·已花掉」= 累计到手 − 可用 − 保险箱(锁进保险箱不算花掉,取出也不算新到手)。
⚓「银币·海上贸易」= 航海账户余额,单位是银币(1 钻 = 10 银币),⛔ 别跟钻那几列相加。
⛔ 这一页只读,也不做对账:「只该是 0」的那几个数在「对账」页。
对账
把只该是 0 的几个数放一屏。每一条都是「物化列 vs 台账重放」的差 ——
append-only 台账是权威,物化列只是列表页的加速。对不上就以台账为准。
⚠️ 灰色的「查不了」不是 0:那是这台库还没有那张表
(对应玩法从没被打开过)。⛔ 别把它当成「一切正常」。
⛔ 这一页只读:修法在各自那一页(灵田 / 交易所 / 心魄币发放),
统计页不开第二条纠正通道。
免费账户名单里的人,每周一北京时间 0 点自动补给;手上还够的那周就不发
内测用户里有不少还在念书的人,想继续测试就得花家里的钱充值 ——
这条线就是不让他们花这个钱:把人放进这张名单,每周一
看一眼手上还剩多少,不够就补上。
🔴 判定口径只有一处,而且只看心魄钻石:钻低于存量线就补一份,
到线(正好等于)就算够、不补。下面那行规则写的就是此刻真正生效的判据,
名单里那一列「本周判定」跟真发那一刻读的是同一个函数。
⛔ 心魄币既不比较、也不发 —— 它是充值币,白发它等于绕过充值这条线本身。
名单里那一列心魄币余额只是给你看的背景(这人充没充过),不参与任何判断。
⚠️ 发放走收件箱:用户点「领取」才进钱包。所以刚发完
余额不会立刻变 —— 那不是没发出去,是他还没领。
⚠️ 一周只发一次。手动发过,周一那一拍就跳过;反过来也一样。
真要在同一周再发一次,勾「强制补发」——台账上看得出那是本周第几次。
自动发放与数额
单项上限 10000(防手滑,不是业务规则:这条线是机器 自动跑的,多打一个零的时候人不在场)。两个数额不许同时为 0 —— 那样每人收到一封什么都没有的信,比不发更糟。
名单
| 心魄号 | 昵称 | 状态 | 心魄币(仅参考) | 心魄钻石 | 本周判定 / 已发 | 备注 | 加入时间 | 操作 |
|---|
封停 = 留在名单里但不发(要看得见自己停过谁,所以不是删掉),随时能恢复。
移出只把人从名单里拿走,已经发出去的记录一行不动。
⚠️ 「号没了」那一行是这个账号已经注销或退号 —— 那种情况不会发,也不该指望它会。
🔴 发完之后那一列还会写「要补」,这是对的:信刚发出去、用户还没点领取,
他的余额一个字没变,按规则当然还是「要补」。真正回答「这周发没发」的是它下面那个绿标。
每周统计
| 那一周(周一) | 发了几人 | 够了没发 | 跳过 | 心魄钻石合计 | 最后一次跑 |
|---|
读的是下面那张台账,⛔ 不是「跑了几轮」那几个数 —— 同一周补发过就有两轮,合计要把它们加在一起。
发放记录
| 时间 | 那一周 | 心魄号 | 昵称 | 判定 | 发了钻 | 判定时的钻 | 方式 | 经手 |
|---|
管理操作留痕
后台自己干了什么。⚠️ 这一页之前不存在 ——
op_log 一直在写,但唯一的读取方按「哪个用户 / 哪台设备」过滤,
而绝大多数管理动作这两个键都是空的(改配置、作废、发布、
充值、每日盘点全是),于是那些行通过界面永远翻不出来,
只有直接开库才看得见。这一页刻意不按主体过滤。
动作那一列标红的是不可逆 / 动钱的操作。
操作人为空的是老行 —— 那时还没有这一列,能从备注里翻出来的已经翻了,
⛔ 翻不到的留空,不猜。
| 时间 | 动作 | 对象 | 操作人 | IP | 备注 |
|---|
后台循环
这 12 条循环每一条都是「抓异常 → 记日志 → 下一拍继续」——
一条连着崩一周,跟健康的循环在日志外面看起来一模一样。
这张表回答两件事:上次跑完一轮是什么时候、是不是崩了又被拉起来
(启动次数 蹭蹭涨而 本次已跑 总是个位数 = 崩溃循环,
systemd 的 is-active 看不出这件事)。
⚠️ 写这张表的是 API 进程,读它的是后台进程 ——
全部一起变红多半不是十二条循环同时坏了,是 API 进程整个没在跑。
「从没跑完过」不是故障:清理是 24 小时一拍,进程起来不久本来就还没到第一拍。
| 循环 | 状态 | 间隔 | 上次跑完 | 已过 | 本次已跑 | 启动次数 | 本次启动于 | 最后一次错误 |
|---|
功能开关
按模块分组,每条开关带着它的依赖与联动一起显示—— 「开了没反应」多半是上游没开(会标红「开了也白开」);「关错范围」是因为下游功能会跟着一起没。 标「编译期」的条目后台改不了(要发新包),如实显示而不是假装能改。 每次改动写 op_log(action=flag_change),配置文件改前自动备份。
运营待办
奖励台账记的是已决的奖品;这里记的是「说了要做但还没落点」的事—— 补偿给什么未定 / 活动到期要结算 / 券等时机 / 发版前验收欠账。 只增不删:不做了就置「已作废」,行留着,台账要能回答「当时为什么记」。 活动到期与待发放的奖会自动冒出来(同一件事只建一次;办完置状态后不会再回来)。
新增待办
| 状态 | 优 | 类别 | 标题 / 说明 | 到期 | 来源 | 操作 |
|---|
送礼
送礼流水是 append-only 台账:所有读数(送出/收到/榜单/飘屏)都从它算出来, 一个计数列都不落——所以纠错只要把一行标「已作废」,全部派生数字当场自愈, 扣掉的道具同时退回去。行永不删除(台账要能回答「这笔曾经发生过、后来被谁作废」)。
档位缺口
这些在架礼物解析不出稀有度档位(资产目录 gifts/catalog.json 里没有、 碎片池里也没有),因此只会在房间内播、不进全 App 飘屏。 修法:把资产目录传上去,或在下面的参数面板里给它一个人工覆盖档位。
参数(rules.gifts · 保存即生效,不用发版)
扣减模式是开送礼前必须先定的那件事: 「扣持有的道具」是经济宪法口径(送出消耗一件手里的礼物), 但它要求碎片掉落已开闸、用户手上真有货,否则谁也送不出去; 「不扣(内测)」只记流水,先把链路跑通。
| 时间 | 礼物 | 档 | 件 | 送礼人 | 收礼人 | 场景 | 扣减 | 状态 | 操作 |
|---|
心价总值与四张榜
两种心价别混:送出 / 收到 / 客厅刷出是成交额
(gift_sends.ref_value 是送礼那一刻的心价快照,事后调价一分不动);
卡册是现价估值(item_catalog.ref_value 当前值 × 已点亮的卡,调价当场跟着变)。
全部现算,一个计数列都不落 —— 作废一行送礼,四个数当场自愈;任意一天可重放。
心价缺口
这些在架道具的 ref_value 是空或 0,按 0 计入上面所有心价读数
—— 这张表不空,那几个数就是偏低的。(种子是 INSERT OR IGNORE,只对新插入的行生效,
所以老库里的行加了列也补不上值。)修法:去「道具」页签逐件补价。
这里绝不按档位反推一个数字把窟窿盖住 —— 缺口要看得见。
| 名次 | 谁 | 心价 |
|---|
名次口径与成长榜同源:并列同名次;未成年人模式的人整行不发且名次不重排
(前 20 可能只回 19 行 —— 名次全站只有一个定义,宁可空一格)。
「排除」角标:名下每一台设备都在「排除设备」里的账号。
客户端那一面它一点痕迹都没有 —— 整行不发、
不占席位(后面的人自动前移)、自己那一行也不发、按号也查不到读数;
后台这一面相反:照常列出来(运营要看得见它的数据),只是没有名次。
两处治理原则相反且都对:闸收敛的是「对外露面」,不是让这个人从运营视野里消失。
榜长:累计总榜(卡册)前 20 名,日榜(送出 / 收到 / 客厅)前 10 名。
卡的是「席位数」不是「行数」。
参数(后台可调 · 存了客户端下次拉配置就变,不发包)
每一块单独保存,互不牵连。保存前服务端用线上同一套规则试算一遍:坏值当场拒并说哪一格不对, 不会「存进去再悄悄回落默认」。保存成功会写操作留痕(前后值)。 名字 / 档位 / 在架状态的真源是「道具台账」,这里只读。
礼物宝箱
每个数都从开箱台账数出来。开箱次数= 请求数(「1 个勾三人」或「10 连」都算一次), 箱数= 一共开了几箱。返金是开箱那一刻真正记上的数(未成年人收礼方记 0)。 实测概率只拿自然摇出的箱算:保底顶出来的那一箱不是摇的,算进去会让保底件的实测偏高, 保底次数单列。
最近开箱
| 时间 | 开箱号 | 送礼人 | 收礼人 | 宝箱 | 箱数 | 扣钻 | 开出 | 保底 | 返金 | 状态 | 操作 |
|---|
整次开箱作废 · 会退钻、收回返金
以一次开箱为单位(上表一行 = 一个开箱号)逐箱作废:按开箱那一刻的单价退钻给送礼人,
收回收礼人拿到的返金(先从待领收益里收,不够再从钱包里收,都不够就照实报「收不回来」),
飘屏撤下,锦鲤红包还没领的份作废(已领走的钻追不回)。
幸运值不回滚(开过就是开过)。幂等:已作废的箱不会退第二次。
先点「干跑」看会动什么,确认无误再点「确认作废」(要连点两下)。
锦鲤红包
至尊宝箱开出锦鲤 ⇒ 那间客厅生成一个红包,开出那一刻就预先拆好每一份。 已结束= 抢完 + 过期(自然收尾);作废= 开出它的那一箱被作废了(纠正通道动过)。 状态按读路径那一份判:到了时间还没被循环拨走的,这里照样显示「已过期」。
| 时间 | 红包号 | 客厅 | 开出人 | 宝箱 | 状态 | 已领份数 | 已领钻 | 到期 | 领取明细 |
|---|
海崖垂钓
钓的次数= 请求数(钓 1 次 / 钓 10 次各算一次),钓出件数= 一共钓了几条。 鱼饵进出按账本事由归来源;认不出的来源单列成「未归类」,不并进「其它」。 🔴 这里的概率只给后台看:客户端公示一个概率都不发。
最近钓鱼记录
| 时间 | 谁 | 次数 | 扣饵 | 钓出 | 幸运值 | 保底 | 飘屏 | 分享 |
|---|
每日鱼饵任务 · 按日领取
🔴 这里统计的是「领取」:用户点了领取才落一行,做完了没领的人看不见。 格子 = 当天领了这条的人数(按账号去重;一个账号一条一天只领得到一次,所以人数 = 次数), 小字是发出去的鱼饵。定义里已删的任务照样一行,标「定义里已没有」。 日期是运营日(北京 0 点切)。任务的增删改在「宝箱与垂钓 › 参数」⑥ 那一栏。
发放账目
心魄币只有两条来源:这个按钮和 telegram /coins,
两条都写进同一本 append-only 流水(coin_events),
账目不另起表——同一份清单存两处必漂移。
判重认的是发放事由(下面那个下拉),不是备注:
自由文本永远不会字面相同(库里 9 笔派发就写出了「内测」和「内测用户」两种写法)。
命中口径是「同心魄号或同设备」的净额——换台设备拦得住,
发错了反向收回之后又能重新发。
发放 / 回收
发给最后上报该版本的每一个账号(一个账号一份,
名下两台设备不发两份);排除名单里的设备不发(跟全站统计同一份名单)。
⭐ 谁拿过记在账号上,卸载重装换了设备也领不到第二份;
用户升到下一个版本之后就不在这一批名单里了 —— 奖励绑在这个 build 上。
⚠️ 版本是「最后一次上报」的值:装了新版但一直没打开 App 的人,这里还算在旧版里。
在途
走「发到收件箱」发出去、用户还没点领取的钱。 还没落进流水,也不算进汇总——它还没到人手上。 急着让人立刻拿到,就把上面的「怎么给」切成直接到账。
| 发出时间 | 谁 | 事由 | 数额 | 经手 |
|---|
按事由汇总
一个事由发过几个人、发出去多少、最近一次什么时候。 事由为空的历史行归到「(无事由)」里照样列出来—— 兜底桶可以兜底,但不能把它藏起来。
| 事由 | 发给了谁 | 币种 | 笔数 | 人(设备) | 发出 | 收回 | 净额 | 最近一次 |
|---|
流水(谁 / 因为什么 / 多少 / 什么时候)
事由写错了会让上面那张汇总表算错,所以每一行都能改事由(✎)。 ⚠️ 改的只有事由:钱、时间、发给谁、经手一个字都不动; 每一次订正都留痕(谁 / 什么时候 / 从什么改成什么),行上带「已订正」角标,鼠标停上去看得见。 ⚠️ 判重会跟着搬家:改成新事由之后,这个人在新事由下就算发过了、在旧事由下又变成没发过。
| 时间 | 谁 | 事由 | 数额 | 备注 | 经手 | 设备 | 订正 |
|---|
免费碎片哨兵
一枚白得的碎片,顺着「攒碎片 → 合成礼物 → 送出去拿返还」这条路
最后能变成多少钻。它不是常量:返还四档、定档权重、每档里礼物占的比例
(道具增删就变)、各件合成片数,任何一个动了它都跟着动 ——
所以这里现算,⛔ 没有任何一版的现值被写死在代码里。
⚠️ 两列分叉是预期:差额 = 逐件 craft_shards 覆盖把这枚碎片抬高(或压低)了多少。
荒野销毁哨兵
玩家在荒野背包里销毁装备换钻,按档定价。单价是远程键 rules.overlord.scrap_gem,
而装备的来量由掉率决定 —— 调掉率 = 调这里的发行量。
充值(爱发电)
用户在爱发电付钱 → 我们拿订单号回源核对 → 按实付金额发心魄币。
钱数一律以爱发电查到的为准,通知正文一个字都不信(那条通知没有签名,谁都能伪造)。
认不出人的挂在下面的「待认领」等指人 —— ⛔ 从不猜:发错了收不回来。
⚠️ 「类型」那一列要看:月卡单卖的不是心魄币(它发钻石 —— 到账一份 + 每天领一份),
所以它的「心魄币」天生是 0,跟作废单长得一模一样。
分得开靠的就是那一列(类型=月卡 / 心魄币)。
收款算所有订单 —— 待认领那几笔钱是真收了的,只是还没找到人;
把它们排除掉,账面上就凭空少了一块。
已发出只算已到账的:还挂在半路上的币算进去,
就会让「发出去多少」提前变大,而这个数正是拿来跟钱对账的。
时间切的是我们记下这笔的时刻,不是爱发电的下单时刻:对账补回来的旧单算在补记那天。
对不对得上
把爱发电最近几页订单拉回来,没记过的补记补发——补的是通知丢了、 或者我们重启时错过的那些。这一步要走外网,慢的时候十几秒; 平时它每 5 分钟自己跑一次,这个按钮只是「现在就跑一次」。幂等,重复点不会重复发钱。
凭证
⛔ 只显示末 4 位——够你认出「是不是我刚贴上去的那一把」, 又不至于让这一页的截图变成一把钥匙。完整值一次都不会发到浏览器上。 改一把 = 贴新的、点保存,当场生效,不用重启; 留空保存 = 清掉后台这一把,退回服务器环境变量里那一把。
「测试连通」只查不发钱:拿现在这把钥匙敲一次爱发电的门,看放不放我们进去。 要补发漏掉的订单请用上面的「立即对账」。
绑定(爱发电账号 ↔ 心魄号)
认对过一次的爱发电账号会被记下来,以后他不填留言也认得出——
用户看到的规则「第一次填留言、以后不用填」就是这一行在兜底。
绑错了才来这儿断开:两个人共用一个爱发电账号、
或者他第一次留言写的是朋友的号。⚠️ 绑定是粘的——
绑上之后他在留言里改写新号也没用,钱照旧进旧号,只有在这儿断开才换得掉。
解绑只影响将来。断开之后,这个爱发电账号的下一笔
回到「看留言认人」:留言里写了心魄号就直接发给那个号;没写、写错、写了两个,
就落进下面的「待认领」等你指人 ——
钱不会丢,只是要人指一次。
已经发出去的币、已经记下的订单一个字都不动(那是台账,只增不改)。
⚠️ 这儿改不了「绑给谁」:要把这个爱发电账号挂到另一个人,
等他下一笔进「待认领」,在那儿指给新的号 —— 指成功会自动绑上新的人。
⛔ 这里没有「改绑」输入框是故意的:那等于开一个绕过订单、凭手输就能改钱去向的口子。
待认领
留言里认不出心魄号的单子。对着留言原文确认是谁,填号、按「发给他」。
⚠️ 发出去收不回来——号填错了就是发给了别人。
⭐ 指成功会顺手把这个爱发电账号绑给他,以后他不填留言也认得出。
绑错了去上面的「绑定」卡断开。
订单
| 订单号 | 时间 | 实付 | 类型 | 心魄币 | 档位 | 心魄号 | 状态 |
|---|
交易所(玩家挂单自售道具)
玩家把自己的道具挂出来、别人用心魄钻石买走。
出发点是把线下私下交易拉到台面上防欺诈,不是变现口 ——
⛔ 全链路没有任何现实货币的入口、出口或换算。
挂单那一刻货就从背包扣走进托管,撤单/过期/道具下架都原样退回卖家。
⭐ 卖出的货款不直接进钱包:先落在「交易所收益」里,用户自己点一下
转入钱包才变成心魄钻石。所以下面的待转入是一笔真实的负债 ——
那些钱已经是用户的了,只是还没搬进钱包。成交费从卖家货款里扣,扣掉的那份销毁。
托管中= 在架挂单还压着的件数(这些货此刻不在任何人的背包里)。 钻石流水只算没被作废的成交:作废那几笔钱货都已经搬回去了, 算进来账面上就凭空多一块。
收口 · 会动别人的货
过期流拍+道具下架强制流拍,货原样退回卖家。
幂等,重复点不会退两次。
平时市场页每次打开都会顺手跑一次,「立即收口」只是「现在就跑一次」。
「强制流拍这一件」会把该道具的全部在架单一次性退掉 ——
在加工台把一件道具改成下架之后才用它,填资产键
(frame_54 / gift_train / bg1)。
在架挂单
| 单号 | 卖家 | 道具 | 类别 | 单价 | 剩 / 总 | 状态 | 对账 |
|---|
求购单
⭐ 求购单是挂单即冻:挂出去那一刻钻就从买家钱包扣走压在交易所。 「冻结」那一列跟钱包流水重放对不上就是事故(对账列会当场标红)。 撤单 / 过期(48 小时)/ 道具下架都会把剩余的钻原路退回钱包。
| 单号 | 买家 | 道具 | 类别 | 出价 | 剩 / 总 | 冻结 | 状态 | 对账 |
|---|
成交订单
⭐ 作废是这一摊的纠正通道:钱退回买家、从卖家收回,货从买家搬回卖家。 行永不删除,翻状态让所有读数当场自愈。 ⚠️ 买家已经把货花掉了就作废不了(会明说原因),那种情况先让他补回来。
| 单号 | 时间 | 买家 | 卖家 | 道具 | 来自 | 件数 | 成交额 | 状态 |
|---|
道具台账
全部装扮/玩法元素的指纹登记簿:指纹 = 类别前缀-三位序号(如 FR-054),永不复用—— 下架只改状态占号,没有删除。每次改动记 op_log(action=item_change,含前后值)。 「素材未就绪」= 状态为「规划中」的条目。
新增条目选类别后序号自动分配,指纹生成后不可改
| 指纹 | 类别 | 中文名 | 获取方式 | 稀有度 | 合成片数 | 解锁条件 | 参考价 | 资产键 | 状态 | 备注 |
|---|
发布与回滚
改台账只是写进这台服务器;客户端手里还攥着旧目录缓存。发布= 目录版本 +1,
等于对全部客户端喊「你手上的目录过期了,去重拉」。每发布一次存一版台账快照,
发错了可以回滚到任意一版。
⚠️ 回滚是「前滚回旧内容」:版本号继续 +1,不会退回去 ——
退回一个客户端见过的号等于告诉它「没变」,用户手里就永远是错的那一版。
道具资产
台账管「这件叫什么」,资产管「它长什么样」。传进来就进
/v1/decor/assets.json,装机的客户端下次刷新自己换上,不用发版。
撤掉 = 资产层的回滚:客户端回落到安装包里那版(纯远程的新件回落占位)。
半截包(精灵图没传齐)会被挡在清单外并在下面列出原因 ——
它不会报错,只会让用户看到的还是旧的。
头像框渲染参数
洞径 / 洞心 / 编排包目录。以前写死在服务端源码里,改一个值要改代码再部署一次;
现在填完就进 /v1/decor/frames.json,客户端不用更新也认得这个号。
⭐ 对已有号同样生效:运营覆盖层下发时带 override,客户端对随包已有的号整条替换
(洞径 / 洞心 / 编排包 / 名字 / 家族)—— 换包时先把包传到上面的资产区,客户端下完包才换上,不会出现洞径换了图还是旧的。
撤掉覆盖 = 客户端回到随包那版。台账里把号设成 retired = 客户端选择页去掉该格、戴着的人退回无框。
客户端每 10 分钟自动重拉一次,不用点「发布」。
上传歌曲(后台直传)
音频必填;歌词收 srt / lrc / vtt(带时轴)或 txt(无时轴——App 端整段平摊显示,逐句滚动不可用,建议本地加工台配好时轴后同名重传覆盖)。同「专辑+歌名」重传会覆盖同一首。
心魄源歌曲(上下架 / 备注 / 删除)
| 歌曲 | 指纹 | 专辑 | mood | 词/封面 | 时长 | 听完 | 下载 | 来源 | 状态 | 备注 | 操作 |
|---|
歌曲举报用户举报的歌与理由 · 处置 = 软删 + 删文件,行留着可追溯
| 时间 | 歌 | 上传者 | 举报人 | 理由 | 状态 | 操作 |
|---|
用户在 App 里举报一首房间背景音乐,这里就会多一行。
⚠️ 默认只列未处理的 —— 处置完的要靠上面那个下拉才看得见。
在这之前「已处理」那一批在后台整个不存在,
事后想复核一条自己当初怎么判的都翻不出来。
互动歌曲(用户上传的房间背景音乐)按上传者心魄号搜 · 一键下架 = 软删 + 删文件,行留着可追溯
| ID | 上传时间 | 上传者 | 歌名 / 艺人 | 时长 | 大小 | 私有 | 在几人歌单 | 举报 | 状态 | 操作 |
|---|
开关在「系统 › 开关与循环」页的 room_music(默认关;依赖 voice_chat)。这里只做 UGC 存储与转发:没有官方歌单、没有推荐位、不按热度排(版权口径)。下架 = 软删 + 删文件 + deleted_reason=takedown,用户歌单里那一行保留但不可播;正在放的歌由 API 兜底循环在 10 秒内跳过。
活动公告(心魄页标题右侧入口)
改公告三步:① 在下方表单填写(改已有公告先点列表行「编辑」带入)→ ② 点「加入列表 / 保存修改」→ ③ 点「发布到线上」。图片 / 视频上传后同样要走完 ② ③ 才会出现在线上。
有未发布的本地修改
| 标题 | 正文 | 时间窗 | 图/链 | 顺序 | 操作 |
|---|
归档区(0)—— 已撤下但留档的公告,不发给客户端
| 标题 | 正文 | 时间窗 | 图/链 | 操作 |
|---|
新增公告
最多 30 段。段落支持 **粗体** 与换行;图 / 视频选择文件即上传;按钮要么填 https 外链、要么选站内页面,二选一。
都留空 = 常驻显示;填了到点自动上/下线(按本机时区填即可)。
飘屏公告(全客户端顶部飘过)
跟上面那张表**不是一回事**:上面是「有哪些公告可以读」(长期驻留、有未读红点、进公告中心); 这里是「什么时刻往全体屏幕上飘一句话」(转瞬即逝、按次数播、可定向、可撤回)。 发布即生效,不用发版、也不用点上面那个「发布到线上」。 想让用户点飘屏能看全文,就在「关联公告」里选一条上面已发布的公告。
发一条
时间按本机时区填。重复间隔最少 1 分钟(全服广播是稀缺资源);填了「播几次」大于 1 就必须给间隔, 否则几次会落在同一毫秒上、用户只看到一条。
| 状态 | 正文 | 样式 | 面向 | 时间窗 | 节拍 | 已播/计划 | 下次 | 关联公告 | 操作 |
|---|
运营活动
奖励参数(阈值 · 奖额 · 达标口径)
⚠️ 全站只许有一条活动勾这个,且周期必须是 2026-09-17 ~ 2026-10-16
(跟公告一字不差)—— 对不上时服务端会拒绝记账并说清楚差在哪,⛔ 不会替你猜一条。
| 活动 | 周期 | 状态 | 台账 | 操作 |
|---|
活动规则(点开)
当日听歌时长榜
按 UTC+8 切天。今天的数字是活的——快照不是零点打的,「当日听歌」实际覆盖「昨天最后一次同步 → 现在」, 所以会看到「今天才过 1 小时,榜首却有 1.5 小时」。要定稿数据看前一天。 设备当天没同步 App,那天的听歌会算进它下次同步的那天(「基线」列会标跨天)。
| 名次 | 发给谁 | 邀请码 | 端 | 当日听歌 | 基线 | 累计 | 记奖 |
|---|
配音秀数据录入(外部数据 · 人工)
| 名次 | 参与者 | 点赞 | 链接 | 收集人 | 录入时间 | 记奖 |
|---|
心魄榜(实时 · 与 App 同口径)
| 名次 | 发给谁 | 邀请码 | 心魄值 | 累计收听 | 记奖 |
|---|
勋章达标名单(已获得 ≥9 枚勋章)
| 发给谁 | 邀请码 | 勋章数 | 点亮(含人格) | 圆满 | 最近上报 | 记奖 |
|---|
阶梯达标面 某个数值每跨一档给一份奖(「心魄值到 300 的倍数」就是这个形状)
| 谁 | 当前值 | 跨了几档 | 已登记 | 已发 | 还欠 | 距下一档 | 操作 |
|---|
三态:够格(还欠有值)→ 点「登记」记进下面的台账 → 台账里「发到收件箱」变已发。「已发」现查收件箱的发件幂等键(act:<活动>:<量>:<档>)——那条唯一索引才是真正挡住重复的闸;拿台账当判据会出现「台账说发过、闸说没发过」两个结论。在排除名单里的设备与不够格的行不给按钮(⚠️ 名单里不只有测试机,也有被榜单去重排掉的真实用户第二台设备)。
推广奖励面 介绍来的新用户达标,给推荐人发
| 推荐人 | 介绍来 | 达标 | 够几档 | 已登记 | 已发 | 还欠 | 操作 |
|---|
发放台账(奖品线下/外部发放,这里只记账)
| 日期 | 奖项 | 奖品 | 获奖者 | 依据 | 状态 | 操作 |
|---|
第三期活动
⚠️ 台账、冲销都在这一页上面那一节,⛔ 不用跳去别的活动。
① 内测推广 · 点赞阶梯
⛔ 不做对账(朋友圈截图你在讨论区人工看)。填几个赞,这里算该发多少。
参与记录 ·「记」和「点」是两个动作
⚠️ 同一个号只能有**一笔有效**的参与记录(公告的「仅有一次」就是这道闸)。 记错了 ⇒ 作废那一笔重记;点错了 ⇒ 去上面的发放台账冲销。
② 进军排行榜 · 本周前三
| 榜 | 第 1 名 | 第 2 名 | 第 3 名 |
|---|
该发的清单 (这一份是活的:榜一变它就变。要发奖,先在下面「记」一份快照)
| 心魄号 | 身份 | 依据 | 心魄币 |
|---|
周评快照 ·「记」和「点」是两个动作
⚠️ 榜是会变的 —— 不先封存,下周就再也查不回来这一周到底谁前三 (公告让同学们保留周评截图,我们这边也得有自己那一份)。
记错了 ⇒ 作废整周重记;点错了 ⇒ 去《活动》页把那一行冲销。两条通道,别混。
手动改绑介绍人
新用户自填会漏会错(⛔ 邀请码追不到是谁发的,98 张票一张都没挂号)。填错/没填的在这儿直接指定。
③ 充值测试 · 结束时该补的钻石
发币档 = 到手币数 × 10;月卡档 = 月卡钻石总额(1350/张)× 2。 ⚠️「账上实发」只做对账参照,补发按理论值。
| 心魄号 | 实付 | 到手币 | 币侧补发 | 月卡 | 月卡补发 | 合计 |
|---|
结算留痕 ·「记」和「点」是两个动作
⚠️ 已经有有效留痕的号跳过不覆盖 —— 中途记一次、结束时再记一次是安全的, 第二次只补新出现的人。某个人的数字要重记,先把他那一笔作废。
⚠️ 台账单行有上限(10000),一笔大额补发会拆成几行记,每行各自发一次。
总闸 · 这一届现在开着没有
总闸住在远程配置(rules.festival)——
改完客户端下一次拉配置就生效,⛔ 不用发包。
🔴 活动定义(活动名 / 幕次 / 件 / 价格 / 任务文案)一个字都不在远程配置里:
那份 JSON 是匿名公开的,写进去 = 开幕前全网可见。
它在库表 festival_config,在下面「活动定义」那一栏改。
⚠️ 未成年人模式压过试点放行,顺序不许反。按设备单独放行走
「试点放行」那一屏的 ,⛔ 这一屏改不了(开关只许有一处)。
⚠️ 「压过时间表」是手动的:⛔ 没有「到点自动开幕」这种逻辑,
该开的时候得有人来点。
客户端此刻收到什么
⭐ 这一块不是后台另算的 —— 它就是 GET /v1/festival/state
的回包本身(一台没被试点放行的普通设备)。上下两栏改完点保存,
这里当场跟着变;对不上就说明改的不是同一个东西。
⚠️ 关着的时候这里一个字都不发(活动名 / 幕次 / 块全不带)——
回包是开幕前唯一一条会被人抓的线。
⚠️ tasks 块在任务引擎接上之前整块不下发:
宁可少一块,也⛔ 不发一屏 0/20 的假进度。
活动定义 ·
一届一行。id 同时是节日册的册名(会进客户端的路由参数),
所以只收小写字母开头的字母数字下划线,⛔ 改名请新建一行。
⚠️ 块的种类是发包那一刻定死的契约()——
发包后只能少不能多。配了认不出的种类,保存这一步就会拦住你;
真漏进去的话客户端是整块丢掉且不报错。
⚠️ 幕次的 starts_at / ends_at 是整数毫秒时间戳。
⚠️ 任务定义住在 tasks 块的 items 里。判据(metric)
只能是这几个: ——
全部是服务端自己写的行,⛔ 成长值 / 心魄值 / 听歌时长那些
是客户端算完上报的,改包就能刷。配错了服务端是整条丢掉,
所以保存这一步会当场拦住你。
⚠️ 件清单不在这里:这一届有哪几件,真源是
道具台账的 series 那一列(填成这一届的 id)——
⛔ 别在配置里再抄一份,两份必漂。
已经存了这几届
| id | 活动名 | 幕 | 块 | 任务 | 大小 | 改于 | 谁改的 |
|---|
幕次
| key | 幕名 | 从 | 到 | 现在是它吗 |
|---|
块(客户端照单画)
| 种类 | 标题 | 里面几条 | 客户端认得吗 |
|---|
整包 JSON
发出去多少
「今天」按运营日切(北京 0 点),跟掉落日闸同一把尺子。
任务 · 领了多少
判据一律落在服务端自己写的行上(掉落 / 灵田 / 镖局 / 开箱 / 送礼流水)——
⛔ 成长值、心魄值、听歌时长那些是客户端算完上报的,改包就能刷。
⚠️ 一个账号一条任务一天只领得到一次(换台手机也不行),
所以「今天领了几次」= 今天有几个人做完了这条。
| 任务 id | 文案 | 判据(metric) | 目标 | 奖 | 今天领了 | 累计领了 | 多少人领过 |
|---|
任务 · 按日领取
🔴 这里统计的是「领取」(festival_task_claims 一次领取一行)——
做完了没点领取的人看不见。格子 = 当天领了这条的人数(按账号去重),小字是发出去的宝箱数。
⚠️ 一次性任务(once,整届一次)不属于任何一天,单独在「一次性」那一栏(整届累计);
当天汇总里「一次性」那一行按领取时刻切运营日另算。双节没有「领满额外奖励」那一类,那一格是「—」。
双节宝箱按来路
| 来路(reason) | 今天发 | 累计发 | 涉及多少人 |
|---|
限定件
| 资产键 | 指纹 | 名字 | 档 | 状态 | 心价? | 合成片数 | 合出? | 买到? | 直购单数? | 花了 | 总共到手 | 此刻在手 | 多少人有? | 碎片还剩? |
|---|
节日册进度分布
| 点亮几格 | 多少人 |
|---|
回收折算
关灯那天把没用完的活动碎片折算掉 · 会真发货
先干跑(默认就是干跑):给出「会动多少人、折出多少」的数,
一个字节都不写库。把数交主理人看过,再回来真跑。
🔴 真跑发出去追不回来,所以要把活动 id 手打一遍才点得动。
⚠️ 干跑是单进程的 —— 它证明不了并发下的样子。真跑完去回查库,
⛔ 别只看返回码。
邀请码(内测准入门票)
网页注册
| 心魄号 | 来源 | 登录名 | 昵称 | 邀请码 | 介绍人 | 已装设备 | 邮箱 | 注册时间 |
|---|
| 票码 | 备注 | 激活 | 创建 | 状态 | 操作 |
|---|
通知通道
绑定飞书自定义机器人或 Telegram bot 之后,用户反馈、异常告警、发币回执都会推到那里
(两个都绑就两边都发)。凭证只回显末 4 位;输入框留空点保存 = 清掉后台里这一项,退回环境变量
HP_FEISHU_* / HP_TELEGRAM_* 兜底。每次改动写 op_log(action=notify_setting,只记掩码)。
飞书自定义机器人
Telegram bot
发送记录(最近 20 条)
| 时间 | 类型 | 级别 | 通道 | 结果 | 详情 |
|---|
疯狂碎片 · 超级奖励模式
积累池 池子是**计数器不是奖金袋** —— 奖品是固定额,池子只决定什么时候触发。 阈值是**倍数**,开出「超级大奖」那一档才全服清零(跑完没开出 ⇒ 继续累积)。 🔴 这几个数一个都不许下发给客户端。
| 档 | 本轮累计 | 下一次触发线 | 还差 | 本轮已触发 | 开服至今抽水 | 累计触发 | 清过 | 上次清零 |
|---|
成本口径 期望支出按**每人抽一次**算(N 人局 = N 次)。宝箱成本是现算的, 跟红线哨兵同源。
| 档 | 阈值(币) | 阈值(钻) | 匣子数 | 单人期望支出 | N=5 期望 | N=5 占阈值 |
|---|
最近几局 逐人一行:他点了哪个匣、开出什么、是不是超时代开。 ⚠️ 点哪个匣**不决定**开出什么(按钮是表演,结果由概率表现掷)。
心魄迷局
按配比分组
规则整套挂远程配置(rules.room_game,保存即生效);这张表是调参数的依据。
守方胜率的分母**不含**「没有胜方」的局。
| 配比 | 局数 | 守方胜 | 蚀心胜 | 无胜方 | 守方胜率 | 平均轮数 | 平均局长 | 中立达成 | 发奖 |
|---|
此刻生效的四档
改这些不用发版:运营 manifest 的 rules.room_game。一局开始后就锁死在
config_json 里,改配置不影响进行中的局。
| 人数 | 阵营 | 角色 | 首夜平安 | 阶段时长 | 信息口径 |
|---|
| 局 | 房主 | 开局 | 结束 | 人数 | 配置 | 状态 | 结束原因 | 胜方 | 奖励 |
|---|
客厅台球
| 近 24 小时局数 | 客厅 | 好友 | 球房 | 欢乐场 | 发奖跳过 |
|---|
命中率打标(近 7 天)
真人对局里非开球杆的合法进球率;判据只在服务端(rules.billiards.flag),这里只照着列。只打标、不拦截、不扣奖励。
| 心魄号 | 最近打标日 | 杆数 | 进球 | 进球率 |
|---|
闯关 · 关卡管理
底库关来自 billiards_levels.json;这里新增 / 改的关存数据库,不用发版,客户端按服务端下发的关数显示。
新增 / 改一关必须先让服务端机器人真打一遍:在 limit 杆内打不过、三星线 par 低于机器人杆数、球位重叠都会被拒。
下架 = 玩家看不到、开不了局,解锁顺延到下一个上架的关;已拿的星与首通钻不动。每 10 关一章,每章第 10 关是章末关(首通钻按章末价)。
随机出一盘当底稿 / 从现有关复制
| 关 | 章 | 来源 | 目标 | limit / par | 机器人 | 难度画像 | 状态 | 操作 |
|---|
登录账号
用户名:
二次认证: