feat(douyu-pool): 支持和平精英号池兑换与商品自动刷新,优化号池操作面板
- 扩展号池支持 peace (和平精英/小跑道) 活动 scope,映射 xpd_balance 与 exchange_xpd_goods 任务 - 新增 POST /douyu/pool/refresh-goods 接口与前端一键刷新,支持复用库内有效 CK 自动更新商品快照 - 前端 DouyuPoolPage 升级视觉设计与栅格布局,商品选择器支持按活动类型分类联动 - 修复 DouyuTask.result 类型守卫、account_events actor_id 类型防御与 runner 过滤规则边界值处理 - 验证方式:全量 pytest (797 通过)、pyright (0 错误)、tsc -b 及 ruff format/check 全部通过
This commit is contained in:
@@ -101,13 +101,33 @@ class TestSupply(_ApiBase):
|
||||
def test_unsupported_scope_is_400(self):
|
||||
with pytest.raises(HTTPException) as exc:
|
||||
pool_router.pool_supply(
|
||||
scope="peace",
|
||||
scope="unknown_scope",
|
||||
commodity_id=COMMODITY,
|
||||
db=self.session,
|
||||
current=self.support,
|
||||
)
|
||||
assert exc.value.status_code == 400
|
||||
|
||||
def test_peace_scope_supply(self):
|
||||
from web.backend.models import DouyuXpdGoodsSnapshot
|
||||
|
||||
xpd_item = DouyuXpdGoodsSnapshot(
|
||||
commodity_id="xpd_bag_1",
|
||||
name="和平礼包",
|
||||
price=8800,
|
||||
)
|
||||
self.session.add(xpd_item)
|
||||
self.session.commit()
|
||||
|
||||
supply = pool_router.pool_supply(
|
||||
scope="peace",
|
||||
commodity_id="xpd_bag_1",
|
||||
db=self.session,
|
||||
current=self.support,
|
||||
)
|
||||
assert supply["commodity"]["name"] == "和平礼包"
|
||||
assert supply["commodity"]["score"] == 8800
|
||||
|
||||
|
||||
class TestExchange(_ApiBase):
|
||||
def _patch_runner(self, monkeypatch, captured: list):
|
||||
@@ -151,6 +171,7 @@ class TestExchange(_ApiBase):
|
||||
assert task.task_type == "exchange_goods"
|
||||
assert task.handbook_scope == "elite"
|
||||
assert task.batch_id == result.batch_id
|
||||
assert task.result is not None
|
||||
assert task.result["payload"]["commodity_id"] == COMMODITY
|
||||
assert task.result["payload"]["num"] == 1
|
||||
|
||||
|
||||
Reference in New Issue
Block a user