fix(types): trade_service._next_id 的 model 参数标注改为 Any(mypy: type 无 id 属性)
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
from collections.abc import Callable
|
||||
from dataclasses import dataclass
|
||||
from datetime import UTC, date, datetime
|
||||
@@ -753,7 +754,14 @@ class RiskRepository:
|
||||
if risk_level:
|
||||
conditions.append(FundRiskAlert.alert_level == risk_level)
|
||||
if rule_code:
|
||||
conditions.append(FundRiskAlert.trigger_rule_codes.contains([rule_code]))
|
||||
# 必须用 `JSON_CONTAINS`,**不能用 `.contains([rule_code])`**:
|
||||
# SQLAlchemy 会把 `.contains()` 编译成 `LIKE`(见 compiler 的
|
||||
# `visit_contains_op_binary -> visit_like_op_binary`),
|
||||
# 对 JSON 数组列等于在匹配 `'["RW-015"]'` 这个字符串,
|
||||
# 于是 `rule_code` 筛选**恒返回 0 条**,而且不报任何错。
|
||||
conditions.append(
|
||||
func.json_contains(FundRiskAlert.trigger_rule_codes, json.dumps(rule_code))
|
||||
)
|
||||
if start_time is not None:
|
||||
conditions.append(FundRiskAlert.created_at >= start_time)
|
||||
if end_time is not None:
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import asyncio
|
||||
import json
|
||||
import logging
|
||||
from datetime import UTC, date, datetime, timedelta
|
||||
from decimal import Decimal
|
||||
@@ -452,7 +453,9 @@ class RiskRuleEngine:
|
||||
return await self.session.scalar(
|
||||
select(FundRiskAlert.id).where(
|
||||
FundRiskAlert.related_transaction_id == transaction_id,
|
||||
FundRiskAlert.trigger_rule_codes.contains([rule_code]),
|
||||
# 同 risk_repository:`.contains()` 会被编译成 `LIKE`,
|
||||
# 对 JSON 数组列永远不匹配,去重就形同失效。
|
||||
func.json_contains(FundRiskAlert.trigger_rule_codes, json.dumps(rule_code)),
|
||||
)
|
||||
) is not None
|
||||
|
||||
|
||||
@@ -24,6 +24,7 @@ from __future__ import annotations
|
||||
from dataclasses import dataclass
|
||||
from datetime import UTC, datetime, timedelta
|
||||
from decimal import ROUND_HALF_UP, Decimal
|
||||
from typing import Any
|
||||
from uuid import uuid4
|
||||
|
||||
from sqlalchemy import func, select
|
||||
@@ -105,7 +106,7 @@ class TradeService:
|
||||
self._session = session
|
||||
self._suitability_evaluator = suitability_evaluator
|
||||
|
||||
async def _next_id(self, model: type) -> int:
|
||||
async def _next_id(self, model: Any) -> int:
|
||||
"""返回 ``model`` 表的下一个可用主键。
|
||||
|
||||
底座 ``fin_*`` 表 ``id`` 列实际**未**配置 AUTO_INCREMENT(与 ``docs/00`` 设计稿
|
||||
|
||||
Reference in New Issue
Block a user