Files
ds_quickbooks/__pycache__/ai_matcher.cpython-311.pyc
T

49 lines
6.2 KiB
Plaintext
Raw Normal View History

§
ePehÒãódddlZddlmZmZddlmZmZddlZddlmZm Z m
Z
Gdd¦«Z dS)éN)ÚdatetimeÚ timedelta)ÚListÚTuple)ÚReceiptÚ TransactionÚMatchcó¼eZdZdZdeedeedeefdZdedeedefdZ dedeedeefdZ
ded ede e e
ffd
Zd S) Ú AIMatchercó\tjtj¬¦«|_d|_dS)N)Úapi_keyzllama3-8b-8192)ÚgroqÚGroqÚconfigÚ GROQ_API_KEYÚclientÚmodel)Úselfs ú(/Users/user/mkd/quickbooks/ai_matcher.pyÚ__init__zAIMatcher.__init__s$Ý”i­Ô(;Ð<ˆŒ Ø%ˆŒ
ˆ
ˆ
óÚreceiptsÚ transactionsÚreturncóg}|D]/}| ||¦«}|r| |¦«Œ0t|dd¬¦«S)Ncó|jS)N)Úconfidence_score)Úxs rú<lambda>z:AIMatcher.match_receipts_to_transactions.<locals>.<lambda>s ¨QÔ-?€rT)ÚkeyÚreverse)Ú_find_best_matchÚappendÚsorted)rrrÚmatchesÚreceiptÚ
best_matchs rÚmatch_receipts_to_transactionsz(AIMatcher.match_receipts_to_transactions s_؈àð +ˆGØ×.¨w¸ ÑEˆJØð
˜zÑ*øågÐ#?Ð#?ÈÐNrr&cóÒ| ||¦«}|sdSd}d}|D]E}| ||¦«\}}||kr$|tjkr|}t ||||¦«}ŒF|S)Nr)Ú_filter_candidatesÚ_calculate_match_scorerÚCONFIDENCE_THRESHOLDr ) rr&rÚ
candidatesr'Ú
highest_scoreÚ transactionÚscoreÚreasons rr"zAIMatcher._find_best_matchsØ×,¨W°lÑ
Øð ؈
؈
à Hð HˆKØ ×ÀÑM‰MˆEµ&Ô2MÒ)MÐ)MØ %
Ý" 7¨K¸ÀÑG
øàÐrcó°g}|jdz}|D]F}t|j¦«}t|j|z
¦«|kr| |¦«ŒG|S)Ngà?)ÚamountÚabsr#)rr&rr-Úamount_thresholdr/Útransaction_amount_abss rr*zAIMatcher._filter_candidates&smðˆ
Ø"œ>¨CÑà /ˆKå%(¨Ô);Ñ%<Ô%<Ð 7”>Ð$:Ñ;Ð?OÒ×! +Ñ.øàÐrr/cóªt|j|jz
j¦«}t|j¦«}t|j|z
¦«}|jdkr
||jz dznd}d|jd|jd|j d¦«d|jd|jd|d |j d¦«d
|d |d |d
d|jd|jd} |jjj  
|j d|dœgdd¬¦«}|j dj
j ¦«} d| vrl|  dd¦«\}
} t#|
 ¦«¦«} t%t'| d¦«d¦«|  ¦«fSdS#t($r}
ddt+|
¦«fcYd}
~
Sd}
~
wwxYw)Nrédz…
Compare this receipt with this transaction and provide a confidence score (0-1) and brief reason:
Receipt: z, $z, z%Y-%m-%dz
Transaction: z
(absolute: $z), z:
Differences:
- Date difference: z$ days
- Amount difference: $z (z.1fz!%)
- Vendor comparison: "z" vs "ap"
Scoring guidelines:
- Perfect matches (same vendor, amount, date): 0.95-1.0