
    /jjp(                       d dl mZ d dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
  ed          Zej                            d  eedz                       d dlmZ  ed          Z ed	          Z ed
          Zedz  Zedz  Zedz  Z ed           ed           ed           ed          gZg dZdddddddddddddddZh dZdhZd1d%Zd2d'Zd3d)Zd4d.Zd5d/Z e!d0k    r e              dS dS )6    )annotationsN)Path)AnyzH/home/agent/.hermes/worktrees/FinanceManager-sprint16.3-import-readinesssrc)preview_household_importz>/home/agent/jarvis_runtime/finance-system/data/finance.sqlite3zZ/home/agent/jarvis_runtime/finance-system/sprint16.1-uat/real-preview-payload-private.jsonz=/home/agent/jarvis_runtime/finance-system/sprint16.3-analysisz%sprint16.3-final-request-private.jsonz%sprint16.3-final-preview-private.jsonz.sprint16.3-final-preview-evidence-private.jsonz;/home/agent/.hermes/private/finance/sprint16/raiffeisen.csvzA/home/agent/.hermes/private/finance/sprint16/akb_transactions.csvz5/home/agent/.hermes/private/finance/sprint16/visa.csvz7/home/agent/.hermes/private/finance/sprint16/migros.csv))[   expense)galaxusdigitec)   r	   )ikea)   income)einwohnergemeinde)   r    )   r	   r   )r   r	   )	sonneland)   r   )gasser)
   r	   )jumbo)r   r	   )saira)	   r   )
gutschrift)   r	   )beck)   r	   r   )r   r	   )zgesendete zahlung)r   r   )erne   r	   )dauerauftragr    )r!   r	   ubertragu	   übertrag)   r	   )tanken	parkierenfahrzeug)r%   r	   r#   )   r	   )sportfreizeitzentrumzEinmalige AnschaffungenzLohn MelaniezEssen & HaushaltzAuto MelaniezSonstige EinnahmenLiegenschaftsunterhaltu   RückerstattungenzLohn MarcelzHobbys & Selfcare)         r%   r!   r   r   r   r   r      r         >   r)            r   r   pathr   valuer   returnNonec                   |                      | j        dz             }|                    t          j        |dd          d           t          j        |d           t          j        ||            t          j        | d           d S )Nz.tmpFr/   )ensure_asciiindentutf-8encodingi  )with_suffixsuffix
write_textjsondumpsoschmodreplace)r7   r8   tmps      ]/home/agent/jarvis_runtime/finance-system/sprint16.3-analysis/apply_final_package1_private.pyprivate_writerK   G   s    


4;/
0
0CNN4:e%BBBWNUUUHS%JsDHT5    strc                   t          j                    }|                     d          5 t          fdd          D ]}|                    |           	 d d d            n# 1 swxY w Y   |                                S )Nrbc                 .                          d          S )Ni   )read)handles   rJ   <lambda>zsha_file.<locals>.<lambda>R   s    &++k":": rL   rL   )hashlibsha256openiterupdate	hexdigest)r7   digestchunkrR   s      @rJ   sha_filer\   O   s    ^F	4 !F::::C@@ 	! 	!EMM%    	!! ! ! ! ! ! ! ! ! ! ! ! ! ! ! s   ,A##A'*A'dict[str, Any]c            
        t          j        dt           dd          } d |                     d          D             }i |                     d                                          d         t          |                     d	                    d
}|D ]}t          j        |                                          }d}|                     d| d          D ]V}|dz  }|	                    t          j        t          |          dt          d                                                     W||                                d|d         |<   |                                  |S )Nfile:?mode=roTuric                    g | ]
}|d          S )r   r   ).0rs     rJ   
<listcomp>zsnapshot.<locals>.<listcomp>Y   s.      J  J  Jqad  J  J  JrL   z\SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%' ORDER BY namezPRAGMA integrity_checkr   zPRAGMA foreign_key_check)tables	integrityforeign_keyszSELECT * FROM "z" ORDER BY rowidr.   F),:)r<   default
separators)countrZ   rg   )sqlite3connectDBexecutefetchonelistrT   rU   encoderX   rD   rE   rM   rY   close)connrg   resulttablerZ   rn   rows          rJ   snapshotr{   W   s   ?/2///T:::D J  JDLL  *H  I  I  J  J  JF(*F^9_9_9h9h9j9jkl9m  @D  EI  EQ  EQ  Rl  Em  Em  @n  @n  o  oF Q Q//<< I% I I IJJ 	r 	rCQJEMM$*T#YYUC\fgggnnppqqqq,1V=M=M=O=O"P"PxJJLLLMrL   labelacceptedtuple[str, ...]boolc                    d                     |                                                     dd                                                    | pt	          fd|D                       S )N    üuc              3  l   K   | ].}|                                                     d d          v V  /dS )r   r   N)casefoldrH   )rd   token
normalizeds     rJ   	<genexpr>zname_matches.<locals>.<genexpr>h   sC      ggUZu~~//77cBBjPggggggrL   )joinr   rH   splitany)r|   r}   r   s     @rJ   name_matchesr   f   se    %..**224==CCEEFFJ<g3gggg^fggggggrL   c                    t                      } d t          D             }t          j        t                              d                    }t          j        dt           dd          }t          j	        |_
        t          ||          }t          |d         d	 
          d d         t                    dk    rt          dt                               g }t          t!          t"          d          d          D ]\  }\  }}|\  }	}
}|d         |	k    o!|d         |
k    ot%          |d         |          }|                    ||d         |d         t)          j        |d                                                                                   |d           |st          d| d          |                    d                                          }i }|D ]>}|                    t7          |d                   g                               |           ?g }t          d          D ]\  }}|t8          v r|t:          v r!|                    |d         ddg d           9t<          |         }|                    |g           }t          |          dk    r"t          d|dt          |                     |d         }t7          |d                   |d         k    rt          d| d          |                    |d         t7          |d                   d g d!           |d"|iz  }t          ||          }|                                  t                      }d# t          D             }tC          d$         d%                   fd&|d'         D             }fd(t:          D             fd)|d'         D             }fd*t<          D             fd+|d'         D             }i d,tE          d- |D                       d.t          |          d/k    d0t          |          d1k    otE          d2 |D                       d3tE          d4 |D                       d5t          |          d6k    otE          d7 |D                       d8t          |          d9k    otE          d: |D                       d;|d<         d=         du d>|d>         du d?|d?         du d@|dA         dB         dCu dD|dE         g k    dF| |k    dG||k    dH| dI         |dI         cxk    odJk    nc dK| dL         |dL         cxk    og k    nc dM|dN         dO         dPk    }tE          |#                                          st          dQ|           tI          tJ          |           tI          tL          |           tI          tN          |||||dR         |dS         |dT         |d<         |dA         |dU         |dV         |dW         |dN         dX           tQ          t          j)        ||dT         |d<         |dA         |dU         |dW         |dN         dYdCZ                     d S )[Nc                H    i | ]}t          |          t          |           S r   rM   r\   rd   r7   s     rJ   
<dictcomp>zrun.<locals>.<dictcomp>m   s&    HHH4SYYHHHrL   r>   r?   r_   r`   Tra   merchant_clustersc                $    | d          | d         fS )Nrn   merchant_familyr   )items    rJ   rS   zrun.<locals>.<lambda>r   s    DM>SWXiSjBk rL   )keyr3   z expected 20 decision units, got )strictr.   rn   transaction_semanticsr   )unitrn   r   identity_hashpassedzdecision unit z! identity/count/semantic mismatchz]SELECT category_id,name,category_type FROM budget_categories WHERE is_active=1 ORDER BY rowidnamecluster_token!user_confirmed_unmatched_transfer)r   decision_typeowner_confirmedexcluded_row_tokensz	category z must resolve uniquely, got r   category_typez category semantic mismatchcategory_idcategory)r   r   r   r   cluster_decisionsc                H    i | ]}t          |          t          |           S r   r   r   s     rJ   r   zrun.<locals>.<dictcomp>   s&    GGG$CIIx~~GGGrL   r1   
row_tokensc                (    g | ]}|d          v |S 	row_tokenr   )rd   r   unit13_tokenss     rJ   rf   zrun.<locals>.<listcomp>   s(    ZZZTtK7HM7Y7YD7Y7Y7YrL   itemsc                <    h | ]}|d z
           d         D ]}|S r.   r   r   rd   r   r   clusterss      rJ   	<setcomp>zrun.<locals>.<setcomp>   s6    eeeHTTUXDVWcDdee5eeeeerL   c                (    g | ]}|d          v |S r   r   )rd   r   neutral_tokenss     rJ   rf   zrun.<locals>.<listcomp>   s(    \\\d[8I^8[8[T8[8[8[rL   c                <    h | ]}|d z
           d         D ]}|S r   r   r   s      rJ   r   zrun.<locals>.<setcomp>   s8    pppxX\_`X`OabnOoppeupppprL   c                (    g | ]}|d          v |S r   r   )rd   r   applied_category_tokenss     rJ   rf   zrun.<locals>.<listcomp>   s)    nnntkARVmAmAmdAmAmAmrL   identity_checks_passedc              3  &   K   | ]}|d          V  dS )r   Nr   rd   r   s     rJ   r   zrun.<locals>.<genexpr>   s&      %Q%Qd8n%Q%Q%Q%Q%Q%QrL   decision_unit_countr    unit13_remains_seven_manual_rowsr   c              3  .   K   | ]}|d          dk    V  dS )
user_statedecision_neededNr   r   s     rJ   r   zrun.<locals>.<genexpr>   sO        KM  KMw{4P\K]arKr  KM  KM  KM  KM  KM  KMrL   unit13_not_guessed_as_transferc              3  .   K   | ]}|d          dk    V  dS r   r   Nr   r   s     rJ   r   zrun.<locals>.<genexpr>   sG        .M  .Mw{d3J.KOr.r  .M  .M  .M  .M  .M  .MrL   -all_owner_confirmed_transfer_rows_are_neutral%   c              3  .   K   | ]}|d          dk    V  dS r   r   r   s     rJ   r   zrun.<locals>.<genexpr>   s\        Zz  Zz  dhZ^_vZw  |_  [_  Zz  Zz  Zz  Zz  Zz  ZzrL   all_category_rows_resolved   c              3  &   K   | ]}|d          V  dS )r   Nr   r   s     rJ   r   zrun.<locals>.<genexpr>   sJ        QI  QIimQUVcQd  QI  QI  QI  QI  QI  QIrL   concept_v2_gate_metconcept_v2_readinessgate_mettechnically_confirmablebusiness_ready_for_confirmstrict_indicator_separatestrict_quality_indicatorindicator_metFerrors_emptyerrorsdatabase_unchangedsource_hashes_unchangedintegrity_okrh   okforeign_keys_zerori   under_hard_uat_secondsperformanceapi_total_secondsx   z!final preview assertions failed: preview_fingerprintbaseline_fingerprintcountsreview_thresholdexpected_budget_effectexpected_writes)
assertionsidentity_checkssource_hashesdb_snapshotr   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r<   )*r{   SOURCE_FILESrD   loadsBASE_PAYLOAD	read_textro   rp   rq   Rowrow_factoryr   sortedlenRuntimeError	enumeratezipEXPECTEDr   appendrT   rU   ru   rY   rr   fetchall
setdefaultrM   
SKIP_UNITSTRANSFER_UNITSCATEGORY_BY_UNITgetrv   setallvaluesrK   REQUEST_OUTPREVIEW_OUTEVIDENCE_OUTprintrE   ) beforesource_beforepayloadrw   baser   r   clusterexpectedrn   	semanticsr}   r   category_rowsby_namerz   	decisionscategory_namematchesr   final_requestfinalaftersource_afterunit13_itemsneutral_itemsapplied_category_itemsr   r   r   r   r   s                                @@@@rJ   runr  k   sy   ZZFHH<HHHMj///AABBG?/2///T:::D{D#D'22Dd./5k5klllmpnpmpqH
8}}Mc(mmMMNNN,.O%.s8Xd/S/S/SUV%W%W Y Y!!w%-"y(G% C/0I=CW%67BB 	
 	W%%,-D%E$^G4E,F,M,M,O,OPPZZ\\ 
  
 	 	 	  	YWWWWXXX	Y LLg hjj  -/G = =3s6{++R0077<<<<&(I"8Q//  g:>!!!(!9!D#'')	     (.++mR00w<<1f=ffX[\cXdXdffggg1:x())W5L-MMMQQQQRRR$_5x677'#%	
 
 	 	 	 	 2I>>M$T=99EJJLLLJJEGG,GGGL\233MZZZZU7^ZZZLeeeeeeeN\\\\eGn\\\Mpppp1ApppnnnnuW~nnn #%Q%Q%Q%Q%Q"Q"Qs9~~3 	+C,=,=,B  -Ms  KM  KM  @L  KM  KM  KM  HM  HM 	)#  .M  .M  @L  .M  .M  .M  +M  +M	
 	8]9K9Kr9Q  :zVY  Zz  Zz  ly  Zz  Zz  Zz  Wz  Wz 	%c*@&A&AS&H  'IS  QI  QI  rH  QI  QI  QI  NI  NI 	u%;<ZHDP 	"5)B#Ct#K 	%e,H&IT&Q 	$U+E%F%W[`%` 	h2- 	fo 	"=L#@ 	{+u[/AIIIITIIII 	VN3u^7LRRRRPRRRRR  	!%"67J"Ks"R!J$ z  ""## MKzKKLLL+}---+u%%%, *%$%:; %&< =/ %&< =$)*D$E!"45"'(@"A !23]+! !    
$* / %&< =$)*D$E!"45 !23]+         rL   __main__)r7   r   r8   r   r9   r:   )r7   r   r9   rM   )r9   r]   )r|   rM   r}   r~   r9   r   )r9   r:   )"
__future__r   rT   rD   rF   ro   syspathlibr   typingr   WORKTREEr7   insertrM   (jarvis_finance.services.household_importr   rq   r   ROOTr   r   r   r   r   r   r   r   rK   r\   r{   r   r  __name__r   rL   rJ   <module>r     s.   " " " " " "   				  



            4Z[[ 33x%'(( ) ) ) M M M M M M	T
JKKtpqqtKLL<<<<FFD	FGGD	LMMD	@AAD	BCC	  . !     %$$T
         h h h h
w w w wt zCEEEEE rL   