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