Enhance transaction detail extraction in LamassuTransactionProcessor: implement None-safe defaults for transaction fields and add validation checks for required fields, improving error handling and logging for missing data.
This commit is contained in:
parent
3a03efde20
commit
c38a20b6da
1 changed files with 23 additions and 9 deletions
|
|
@ -503,11 +503,25 @@ class LamassuTransactionProcessor:
|
||||||
logger.info("No Flow Mode clients found - skipping distribution")
|
logger.info("No Flow Mode clients found - skipping distribution")
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
# Extract transaction details
|
# Extract transaction details with None-safe defaults
|
||||||
crypto_atoms = transaction["crypto_amount"] # Total sats with commission baked in
|
crypto_atoms = transaction.get("crypto_amount") # Total sats with commission baked in
|
||||||
fiat_amount = transaction["fiat_amount"] # Actual fiat dispensed (principal only)
|
fiat_amount = transaction.get("fiat_amount") # Actual fiat dispensed (principal only)
|
||||||
commission_percentage = transaction["commission_percentage"] # Already stored as decimal (e.g., 0.045)
|
commission_percentage = transaction.get("commission_percentage") # Already stored as decimal (e.g., 0.045)
|
||||||
discount = transaction.get("discount", 0.0) # Discount percentage
|
discount = transaction.get("discount") # Discount percentage
|
||||||
|
|
||||||
|
# Validate required fields
|
||||||
|
if crypto_atoms is None:
|
||||||
|
logger.error(f"Missing crypto_amount in transaction: {transaction}")
|
||||||
|
return {}
|
||||||
|
if fiat_amount is None:
|
||||||
|
logger.error(f"Missing fiat_amount in transaction: {transaction}")
|
||||||
|
return {}
|
||||||
|
if commission_percentage is None:
|
||||||
|
logger.warning(f"Missing commission_percentage in transaction: {transaction}, defaulting to 0")
|
||||||
|
commission_percentage = 0.0
|
||||||
|
if discount is None:
|
||||||
|
logger.info(f"Missing discount in transaction: {transaction}, defaulting to 0")
|
||||||
|
discount = 0.0
|
||||||
|
|
||||||
# Calculate effective commission percentage after discount (following the reference logic)
|
# Calculate effective commission percentage after discount (following the reference logic)
|
||||||
if commission_percentage > 0:
|
if commission_percentage > 0:
|
||||||
|
|
@ -813,11 +827,11 @@ class LamassuTransactionProcessor:
|
||||||
return
|
return
|
||||||
|
|
||||||
# Calculate commission amount for sending to commission wallet
|
# Calculate commission amount for sending to commission wallet
|
||||||
crypto_atoms = transaction["crypto_amount"]
|
crypto_atoms = transaction.get("crypto_amount", 0)
|
||||||
commission_percentage = transaction["commission_percentage"]
|
commission_percentage = transaction.get("commission_percentage") or 0.0
|
||||||
discount = transaction.get("discount", 0.0)
|
discount = transaction.get("discount") or 0.0
|
||||||
|
|
||||||
if commission_percentage > 0:
|
if commission_percentage and commission_percentage > 0:
|
||||||
effective_commission = commission_percentage * (100 - discount) / 100
|
effective_commission = commission_percentage * (100 - discount) / 100
|
||||||
base_crypto_atoms = int(crypto_atoms / (1 + effective_commission))
|
base_crypto_atoms = int(crypto_atoms / (1 + effective_commission))
|
||||||
commission_amount_sats = crypto_atoms - base_crypto_atoms
|
commission_amount_sats = crypto_atoms - base_crypto_atoms
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue