added a server manager

This commit is contained in:
2025-10-29 14:27:44 +00:00
parent fa25f7bafd
commit 85fafae311
4 changed files with 4246 additions and 71 deletions
+73 -71
View File
@@ -731,79 +731,81 @@ async def match_specific_receipts(request: MatchSpecificRequest, db: db_dependen
match_responses = []
for result in matching_results:
# Get final tax amount from LLM analysis if available, otherwise use receipt's stated tax
final_tax = result.receipt.tax
# if result.tax_analysis and "final_tax_amount" in result.tax_analysis:
# final_tax = result.tax_analysis["final_tax_amount"]
if result.confidence_score > 0:
final_tax = result.receipt.tax
# if result.tax_analysis and "final_tax_amount" in result.tax_analysis:
# final_tax = result.tax_analysis["final_tax_amount"]
# Extract flag_for_review and auto_approve from tax_analysis if available
flag_for_review = None
auto_approve = None
if result.tax_analysis:
flag_for_review = result.tax_analysis.get("flag_for_review")
auto_approve = result.tax_analysis.get("auto_approve")
# Extract flag_for_review and auto_approve from tax_analysis if available
flag_for_review = None
auto_approve = None
if result.tax_analysis:
flag_for_review = result.tax_analysis.get("flag_for_review")
auto_approve = result.tax_analysis.get("auto_approve")
match_response = MatchResponse(
receipt_id=result.receipt.id,
transaction_id=result.transaction.id
if result.transaction
else "no_match",
confidence_score=result.confidence_score * 100,
match_reason=result.match_reason,
receipt_vendor=result.receipt.vendor,
receipt_amount=result.receipt.amount,
receipt_description=result.receipt.description,
receipt_category=result.receipt.category,
receipt_tax_amount=final_tax,
transaction_vendor=result.transaction.vendor
if result.transaction
else "",
transaction_amount=result.transaction.amount
if result.transaction
else 0.0,
tax_analysis=result.tax_analysis,
flag_for_review=flag_for_review,
auto_approve=auto_approve,
# Transaction metadata
transaction_source=result.transaction.source
if result.transaction
else None,
# QuickBooks CSV fields
TxnId=result.transaction.TxnId if result.transaction else None,
AccountType=result.transaction.AccountType
if result.transaction
else None,
AccountNumber=result.transaction.AccountNumber
if result.transaction
else None,
TransactionDate=result.transaction.TransactionDate
if result.transaction
else None,
TransactionType=result.transaction.TransactionType
if result.transaction
else None,
ChequeNumber=result.transaction.ChequeNumber
if result.transaction
else None,
Description1=result.transaction.Description1
if result.transaction
else None,
Description2=result.transaction.Description2
if result.transaction
else None,
VendorId=result.transaction.VendorId
if result.transaction
else None,
VendorName=result.transaction.VendorName
if result.transaction
else None,
AccountId=result.transaction.AccountId
if result.transaction
else None,
AccountName=result.transaction.AccountName
if result.transaction
else None,
)
match_responses.append(match_response)
match_response = MatchResponse(
receipt_id=result.receipt.id,
transaction_id=result.transaction.id
if result.transaction
else "no_match",
confidence_score=result.confidence_score * 100,
match_reason=result.match_reason,
receipt_vendor=result.receipt.vendor,
receipt_amount=result.receipt.amount,
receipt_description=result.receipt.description,
receipt_category=result.receipt.category,
receipt_tax_amount=final_tax,
transaction_vendor=result.transaction.vendor
if result.transaction
else "",
transaction_amount=result.transaction.amount
if result.transaction
else 0.0,
tax_analysis=result.tax_analysis,
flag_for_review=flag_for_review,
auto_approve=auto_approve,
# Transaction metadata
transaction_source=result.transaction.source
if result.transaction
else None,
# QuickBooks CSV fields
TxnId=result.transaction.TxnId if result.transaction else None,
AccountType=result.transaction.AccountType
if result.transaction
else None,
AccountNumber=result.transaction.AccountNumber
if result.transaction
else None,
TransactionDate=result.transaction.TransactionDate
if result.transaction
else None,
TransactionType=result.transaction.TransactionType
if result.transaction
else None,
ChequeNumber=result.transaction.ChequeNumber
if result.transaction
else None,
Description1=result.transaction.Description1
if result.transaction
else None,
Description2=result.transaction.Description2
if result.transaction
else None,
VendorId=result.transaction.VendorId
if result.transaction
else None,
VendorName=result.transaction.VendorName
if result.transaction
else None,
AccountId=result.transaction.AccountId
if result.transaction
else None,
AccountName=result.transaction.AccountName
if result.transaction
else None,
Source=result.transaction.source if result.transaction else None,
)
match_responses.append(match_response)
# Calculate statistics
high_confidence = len(
+1
View File
@@ -181,6 +181,7 @@ class MatchResponse(BaseModel):
VendorName: Optional[str] = None
AccountId: Optional[str] = None
AccountName: Optional[str] = None
Source: Optional[str] = None
class MatchingResponse(BaseModel):