fix(trade): 补 from None 修掉 ruff B904;附 integration 抢队列的复现结论

两件事,都源自组员 e3c316a(下单授权与适当性校验)合并之后:

1) ruff B904:app/service/trade_service.py 在 except 分支里抛
   SuitabilityMismatchError 时没写 from None/from exc,门禁因此变红。
   这里被捕获的是"风险等级字段解析失败",对上层没有诊断价值,
   用 from None 截断因果链即可。

2) tests/integration 出现 2 个失败,**与代码无关**,是常驻 Agent Worker 抢队列:
   - 带 Worker 跑:102 passed / 2 failed
   - 停掉 Worker 跑:104 passed(已复现两次)
   失败用例是 test_complete_run_rolls_back_every_write_on_outbox_conflict 与
   test_cancel_is_idempotent_and_terminates_original_request,都是 run 队列相关 ——
   Worker 会把测试创建的 run 领走并执行,测试自己的状态机就乱了。
   这正是 docs/20 与 AGENTS.md「跑验收前先停常驻 Worker」那条的实际复现,
   顺手把结论写进 commit 备查:判断 integration 红不红之前,先确认 Worker 在不在跑。
This commit is contained in:
2026-09-13 19:30:59 +08:00
parent d9d3420cf0
commit f3af00e645
+1 -1
View File
@@ -202,7 +202,7 @@ class TradeService:
except (AttributeError, ValueError):
raise SuitabilityMismatchError(
f"产品 {getattr(product, 'product_code', '')} 风险等级无效,交易已拒绝"
)
) from None
decision = await evaluate(
SuitabilityToolInput(
customer_id=str(customer_id),