feat: 迁移奶龙风控业务模块与演示文档

This commit is contained in:
zhangshy
2026-09-10 21:03:44 +08:00
parent 6516ccb385
commit a94d5c754d
62 changed files with 10815 additions and 0 deletions
+52
View File
@@ -0,0 +1,52 @@
from app.model.risk import RiskLoginRecord, RiskUser, RiskWorkOrder
def test_risk_user_maps_existing_identity_table_without_sensitive_credentials() -> None:
columns = set(RiskUser.__table__.columns.keys())
assert RiskUser.__tablename__ == "sys_user"
assert {
"id",
"user_no",
"username",
"user_type",
"customer_tier",
"investor_type",
"professional_investor_status",
"status",
} <= columns
assert "password_hash" not in columns
assert "email" not in columns
def test_login_record_maps_device_and_result_fields() -> None:
columns = set(RiskLoginRecord.__table__.columns.keys())
assert RiskLoginRecord.__tablename__ == "sys_login_record"
assert {
"user_id",
"login_at",
"login_result",
"ip_region",
"device_id",
"is_common_device",
"failure_reason",
} <= columns
def test_work_order_maps_risk_and_transaction_compatibility_fields() -> None:
columns = set(RiskWorkOrder.__table__.columns.keys())
assert RiskWorkOrder.__tablename__ == "biz_work_order"
assert {
"alert_id",
"work_order_type",
"order_type",
"product_id",
"channel",
"risk_disclosure_ack_at",
"second_confirmation_at",
"recording_reference",
"request_detail",
"handle_result",
} <= columns