 Sandbox UserandClaude
|
087b0656a7
|
refactor: 取消离线待领池「溢出转灵石」设计,修为不设上限
按需求调整:原「待领池上限 = 本层需求 100%,超出部分按 30% 转灵石」
的设计从未真正给玩家发放过灵石(只累加了一个 overflow_converted 统计
字段,没有任何加灵石动作),属于名不副实的死逻辑,现整体取消。
- core/offline.py:删除 PENDING_CAP_RATIO / PENDING_OVERFLOW_RATIO /
CLAIM_OVERFLOW_RATIO 三个常量及 settle/claim 中的封顶与折算逻辑;
删除 OfflineState.overflow_converted 字段及其序列化;待领池修为
完整沉淀、不设上限,领取时超出本层需求的部分由 add_exp 截断后
完整留池(突破后继续领,不丢失、不折算)
- tests:改写 test_pending_pool_capped_and_converted 为
test_pending_pool_uncapped(验证不封顶)+ 新增
test_claim_overflow_stays_in_pool(验证超出部分留池)
- overview.md:为历史变更日志加注记,标明该设计已取消
验证:317 项回归测试全绿(+1);全库无残留常量/字段引用。
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-09-06 01:58:47 +08:00 |
|
 Sandbox UserandClaude
|
6d15450a35
|
feat: 阶段2a 实时化——状态推送 + 命令走 WS,去高频轮询
- /ws/chat 升级为游戏主通道(聊天 + 命令 + 状态推送三合一):
- {"cmd": ...} 执行命令,回 {"type": "cmd_result"}
- 服务端每 4s 推送 {"type": "status"}:接替原 4s HTTP 轮询的职责
(挂机结算 _settle_online 与节流落库都在 status() 里,不能因
去掉轮询而停摆——由周期推送持续触发)
- 命令与状态调用含 threading.Lock 同步阻塞,一律 asyncio.to_thread
进线程池,不卡事件循环
- 前端:命令优先走 WS(通道未就绪自动回退 HTTP 兜底);状态/行动
按钮由推送驱动渲染;4s 高频轮询取消,榜单降为 30s 兜底刷新
(presence 广播已即时更新在线状态)
验证:316 项回归测试全绿;端到端冒烟通过(命令走 WS / 状态周期
推送 / 聊天回归 / 推送间隔正常 / HTTP 兜底可用)。
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-09-05 16:16:21 +08:00 |
|
 Sandbox UserandClaude
|
afc10c9a48
|
feat: 阶段1b 世界聊天(WebSocket)+ 实时上下线推送
- world.py:WS_CONNECTIONS 连接注册表(同账号可多端多连接);
在线判定升级为「活 WS 连接」口径,替代阶段1a 的会话近似;
broadcast 全量广播,发送失败的连接顺手清理
- app.py:/ws/chat 端点(token query 参数鉴权,浏览器 WS 不支持
自定义 header)——连接即上线广播、断开即下线广播、文本消息
全量广播(含道号/境界);无效 token 以 4401 拒绝
- 前端:世界聊天卡片(发言框 + 消息流 + 系统上下线提示),
自动重连(退避重试),聊天消息与境界同显;收到 presence
广播即时刷新「同服修士」面板,替代纯 4s 轮询感知
验证:316 项回归测试全绿;WebSocket 端到端冒烟通过
(双账号上线广播/互发消息含境界/下线广播/无效 token 拒绝/
在线列表实时性)。
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-09-05 15:04:07 +08:00 |
|
 Sandbox UserandClaude
|
02957c0ff1
|
fix+feat: 补两处高危修复(挂机死循环/刷修为)+ 阶段1a 同服可见
一、高危修复
1. idle() 死循环:修为圆满+冲关冷却中+时间预算耗尽时循环永不退出
(联网版单进程下会卡死全服)。接上从未接线的 _idle_mode 旁路预算
闸门,并加「时间零推进即停滞退出」兜底检测。
2. cultivate() 零成本刷修为:先发修为后推时间,预算耗尽时白拿修为。
改为先推进时间、按实际推进时辰等比折算发放(与 law.wudao 同款)。
二、阶段 1a:同服可见(在线列表 + 战力榜)
- web_views.py:combat_power() 综合战力口径(战斗五维加权,属性基数
已含境界量级,不再乘境界系数避免双重放大)
- db.py:list_all_saves() 全服存档摘要(离线玩家也上榜)
- world.py(新增):进程内在线列表 + 战力榜,在线以会话属性为权威、
离线从存档反序列化属性计算,复用同一战力口径
- app.py:/api/online、/api/rank 端点 + 前端「同服修士」面板(排名/
在线状态点/战力),4s 随状态轮询刷新
- .gitignore:忽略运行时 SQLite 数据库
三、基线修正:阶段0 重构后 test_web_error_field_and_sessions 断言指向
已搬迁到 web_views.py 的 choose 按钮逻辑,更新断言位置。
验证:316 项回归测试全绿;端到端冒烟通过(注册/榜单/离线上榜/401 拦截)。
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-09-05 12:36:25 +08:00 |
|