fix: user
This commit is contained in:
@@ -15,7 +15,7 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
async def assess_case(case_id: UUID, db: AsyncSession) -> list[FraudAssessment]:
|
||||
"""Run rule-based assessment on all non-duplicate transactions and replace old results."""
|
||||
"""Run rule-based assessment and replace old results."""
|
||||
# Replace mode: rerun analysis for the same case should overwrite prior assessments
|
||||
# instead of appending duplicated rows.
|
||||
await db.execute(
|
||||
@@ -26,23 +26,40 @@ async def assess_case(case_id: UUID, db: AsyncSession) -> list[FraudAssessment]:
|
||||
result = await db.execute(
|
||||
select(TransactionRecord)
|
||||
.where(TransactionRecord.case_id == case_id)
|
||||
.where(TransactionRecord.is_duplicate.is_(False))
|
||||
.order_by(TransactionRecord.trade_time.asc())
|
||||
)
|
||||
transactions = list(result.scalars().all())
|
||||
|
||||
assessments: list[FraudAssessment] = []
|
||||
for tx in transactions:
|
||||
level, reason, exclude_reason = classify_transaction(tx)
|
||||
if tx.is_duplicate:
|
||||
level = ConfidenceLevel.low
|
||||
reason = "该笔交易在交易归并中已标记为重复记录,属于同一笔交易的重复展示。"
|
||||
exclude_reason = "交易归并已判定重复(订单号一致或人工标记为重复),不重复计入被骗金额。"
|
||||
review_status = ReviewStatus.rejected
|
||||
assessed_amount = 0
|
||||
elif tx.is_transit:
|
||||
level = ConfidenceLevel.low
|
||||
reason = (
|
||||
f"该笔交易在交易归并中已标记为中转({tx.source_app.value} -> {tx.counterparty_name}),"
|
||||
"属于本人账户间资金流转。"
|
||||
)
|
||||
exclude_reason = "交易归并已判定中转(本人账户间互转),不直接计入被骗金额。"
|
||||
review_status = ReviewStatus.rejected
|
||||
assessed_amount = 0
|
||||
else:
|
||||
level, reason, exclude_reason = classify_transaction(tx)
|
||||
review_status = ReviewStatus.pending
|
||||
assessed_amount = float(tx.amount) if level != ConfidenceLevel.low else 0
|
||||
|
||||
fa = FraudAssessment(
|
||||
case_id=case_id,
|
||||
transaction_id=tx.id,
|
||||
confidence_level=level,
|
||||
assessed_amount=float(tx.amount) if level != ConfidenceLevel.low else 0,
|
||||
assessed_amount=assessed_amount,
|
||||
reason=reason,
|
||||
exclude_reason=exclude_reason,
|
||||
review_status=ReviewStatus.pending,
|
||||
review_status=review_status,
|
||||
)
|
||||
db.add(fa)
|
||||
assessments.append(fa)
|
||||
|
||||
Reference in New Issue
Block a user