§
    éƒtj·  ã                  ó€  — U d Z ddlmZ ddlZddlmZ ddlmZ ddlm	Z	 ddl
mZmZmZmZmZmZmZmZmZ ddlmZmZmZmZ dd	lmZ ed
         Z ej        d¦  «        Z ej        d¦  «        Z ej        d¦  «        ZddddœZ de!d<    ed¬¦  «         G d„ d¦  «        ¦   «         Z"d%d„Z#d%d„Z$d%d„Z%ddd œd&d$„Z&dS )'u  Analyst intent â€” separate retrieval needs from reasoning.

Six categories (exactly one per turn):
  1. general_chat       â€” greetings, identity, capability, smalltalk
  2. general_knowledge  â€” concepts / facts; base LLM only
  3. document_lookup    â€” factual fields from header/summary (period, holder, year)
  4. financial_analysis â€” advice / habits / save-cut spend (evidence + LLM)
  5. mixed              â€” retrieve relevant chunks, then LLM synthesizes
  6. calculations       â€” pure math / hypotheticals
é    )ÚannotationsN)Ú	dataclass)ÚLiteral)Úis_pure_math)	Úclassify_finance_intentÚis_analyse_overview_askÚis_payment_list_questionÚis_period_coverage_questionÚis_profit_loss_questionÚis_statement_field_questionÚis_statement_identity_questionÚis_statement_period_questionÚ!is_unrelated_party_spend_question)Úis_conversational_questionÚis_document_metadata_questionÚis_general_knowledge_questionÚis_hypothetical_or_calc)Úis_kb_meta_question)Úgeneral_chatÚgeneral_knowledgeÚdocument_lookupÚfinancial_analysisÚmixedÚcalculationsa7  (?i)\b(save\s+money|reduce\s+(?:my\s+)?(?:spend(?:ing)?|expenses?|outflows?)|cut\s+(?:back\s+)?(?:on\s+)?(?:spend(?:ing)?|expenses?)|spending\s+too\s+much|spend(?:ing)?\s+too\s+much|where\s+(?:should|can)\s+i\s+cut|(?:analyze|analyse)\s+(?:my\s+)?(?:habits?|spending|spend)|spending\s+habits?|budget\s+(?:tips?|advice|help)|how\s+(?:can|do)\s+i\s+(?:save|budget|spend\s+less)|what\s+should\s+i\s+(?:cut|reduce)|overspend(?:ing)?|frugal|money[\s-]?saving|advice\s+on\s+(?:my\s+)?(?:spend|money|budget)|help\s+me\s+(?:save|budget|cut)|am\s+i\s+(?:over)?spend(?:ing)?)\bzÙ(?i)\b(statement\s+(?:year|period|date\s*range)|what\s+(?:year|period)|account\s+holder|whose\s+statement|opening\s+balance|closing\s+balance|branch\s*(?:code|name)?|ifsc|micr|customer\s*id|bank\s+name|which\s+bank)\bzá(?i)^\s*(reduce\s+(?:it|that|this|them)|cut\s+(?:it|that|this)|what\s+about\s+(?:this|that|the)\s+merchant|and\s+(?:that|this)\s+(?:one|merchant)|more\s+(?:tips?|advice|ideas?)|how\s+(?:else|otherwise)|be\s+more\s+specific)\b)ÚheaderÚsummaryÚtotalsÚstatement_period)r   ÚmerchantÚtransactionr   )r   r   r   r    r   r   )r   r   r   zdict[str, tuple[str, ...]]ÚCHUNK_KINDS_BY_INTENTT)Úfrozenc                  óL   — e Zd ZU ded<   ded<   ded<   ded<   ded	<   ded
<   dS )ÚAnalystRouteÚAnalystIntentÚintentÚstrÚreasonÚboolÚneeds_documentÚ	needs_llmztuple[str, ...]Úchunk_kindsÚfinance_intentN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© ó    ú3/var/www/html/CA-Chatbot/app/saas/analyst_intent.pyr$   r$   b   sT   € € € € € € àÐÐÑØ€K€K�KØÐÐÑØ€O€O�OØ Ð Ð Ñ ØÐÐÑÐÐr3   r$   Úquestionr'   Úreturnr)   c                óT   — t          t                               | pd¦  «        ¦  «        S ©NÚ )r)   Ú_FINANCIAL_ANALYSIS_REÚsearch©r5   s    r4   Úis_financial_analysis_questionr=   l   s#   € ÝÕ&×-Ò-¨h¨n¸"Ñ=Ô=Ñ>Ô>Ð>r3   c                óx   — t          t                               | pd                     ¦   «         ¦  «        ¦  «        S r8   )r)   Ú_ADVICE_FOLLOW_REr;   Ústripr<   s    r4   Úis_advice_follow_uprA   p   s/   € ÝÕ!×(Ò(¨(¨.°b×)?Ò)?Ñ)AÔ)AÑBÔBÑCÔCÐCr3   c                óî   — | pd                      ¦   «         }|sdS t          |¦  «        st          |¦  «        st          |¦  «        rdS t                               |¦  «        rt          |¦  «        sdS dS )Nr9   FT)r@   r   r   r   Ú_FACTUAL_LOOKUP_REr;   r=   )r5   Úqs     r4   Úis_factual_document_lookuprE   t   sŠ   € Ø	ˆ�R×ÒÑ Ô €AØð ØˆuÝ# AÑ&Ô&ð Õ*HÈÑ*KÔ*Kð ÕOjÐklÑOmÔOmð ØˆtÝ× Ò  Ñ#Ô#ð Õ,JÈ1Ñ,MÔ,Mð ØˆtØˆ5r3   F)r-   Úprior_was_analysisr-   ú
str | NonerF   c          	     ó6  — | pd                      ¦   «         }|pt          |¦  «        }t          |¦  «        st          |¦  «        rt	          ddddd|dk    r|nd¦  «        S t          |¦  «        r#t          |¦  «        st	          dd	dddd¦  «        S t          |¦  «        rt	          dd
dddd¦  «        S t          |¦  «        st          |¦  «        rLt          |¦  «        s=t          |¦  «        s.t          |¦  «        st	          ddddt          d         d¦  «        S t          |¦  «        s|r.t          |¦  «        rt	          ddddt          d         d¦  «        S t          |¦  «        r't	          ddddt          d         |dk    r|nd¦  «        S t!          |¦  «        rt	          dddddd¦  «        S |dvs<t#          |¦  «        s-t%          |¦  «        st'          |¦  «        st)          |¦  «        r't	          ddddt          d         |dk    r|nd¦  «        S t!          |¦  «        r|dk    rt	          dddddd¦  «        S t+          j        d|¦  «        s|                     d¦  «        rt	          dddddd¦  «        S t	          dddddd¦  «        S )zLPre-retrieval decision: chat / knowledge / lookup / analysis / mixed / calc.r9   r   u-   math / hypothetical â€” no document retrievalFTr2   Úgeneralr   z greeting / identity / capabilityzthird-party spend redirectr   zKB inventory / filenamesÚdocument_qar   u1   advice / habits â€” retrieve evidence then reasonÚfinancial_advicezheader/summary factual fieldr   u"   base LLM â€” no document retrieval>   rI   rJ   r   u4   statement analytics â€” evidence then natural answerz7(?i)^\s*(what|who|where|when|why|how|which|tell\s+me)\bÚ?zopen general questionzfallback clarify)r@   r   r   r   r$   r   r=   r   r   r   r   r   r   r!   rA   rE   r   r   r   r	   r
   Úrer;   Úendswith)r5   r-   rF   rD   Úfins        r4   Úclassify_analyst_intentrP      s�  € ð 
ˆ�R×ÒÑ Ô €AØ
Ð
6Õ3°AÑ6Ô6€Cå�A�„ð 
Õ1°!Ñ4Ô4ð 
ÝØØ;ØØØØ˜)Ò#Ð#ˆCˆC¨ñ
ô 
ð 	
õ " !Ñ$Ô$ð 
Õ-KÈAÑ-NÔ-Nð 
ÝØØ.ØØØØñ
ô 
ð 	
õ )¨Ñ+Ô+ð 
ÝØØ(ØØØØñ
ô 
ð 	
õ 	& aÑ(Ô(ð 
Õ,?ÀÑ,BÔ,Bð 
Ý& qÑ)Ô)ð
å'¨Ñ*Ô*ð
õ ' qÑ)Ô)ð
õ
 ØØ&ØØÝ!Ð"3Ô4Øñ
ô 
ð 	
õ & aÑ(Ô(ð 
Ð-?ð 
ÕDWÐXYÑDZÔDZð 
ÝØ Ø?ØØÝ!Ð"6Ô7Øñ
ô 
ð 	
õ " !Ñ$Ô$ð 
ÝØØ*ØØÝ!Ð"3Ô4Ø˜)Ò#Ð#ˆCˆC¨ñ
ô 
ð 	
õ % QÑ'Ô'ð 
ÝØØ0ØØØØñ
ô 
ð 	
ð 	Ð-Ð-Ð-Ý" 1Ñ%Ô%ð 	.å" 1Ñ%Ô%ð 	.õ $ AÑ&Ô&ð 	.õ ' qÑ)Ô)ð	 	.õ ØØBØØÝ! 'Ô*Ø˜)Ò#Ð#ˆCˆC¨ñ
ô 
ð 	
õ % QÑ'Ô'ð 
¨C°9Ò,<Ð,<ÝØØ0ØØØØñ
ô 
ð 	
õ 
„yÐKÈQÑOÔOð 
ÐST×S]ÒS]Ð^aÑSbÔSbð 
ÝØØ#ØØØØñ
ô 
ð 	
õ ØØØØØ
Øñô ð r3   )r5   r'   r6   r)   )r5   r'   r-   rG   rF   r)   r6   r$   )'Ú__doc__Ú
__future__r   rM   Údataclassesr   Útypingr   Úapp.rag.calculatorr   Úapp.saas.finance_intentr   r   r	   r
   r   r   r   r   r   Úapp.saas.intent_routerr   r   r   r   Úapp.saas.knowledge_stater   r%   Úcompiler:   rC   r?   r!   r1   r$   r=   rA   rE   rP   r2   r3   r4   ú<module>rZ      sl  ðð	ð 	ð 	ð #Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð à +Ð +Ð +Ð +Ð +Ð +ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ðð ð ð ð ð ð ð ð ð ð ð ð 9Ð 8Ð 8Ð 8Ð 8Ð 8àðô€ð $˜œðñô Ð ð$  �R”Zðñ	ô 	Ð ð �B”Jðñ
ô 
Ð ð KØJØ[ð5ð 5Ð ð ð ð ñ ð €�$ÐÑÔðð ð ð ð ñ ô ñ Ôðð?ð ?ð ?ð ?ðDð Dð Dð Dðð ð ð ð "&Ø$ð	Cð Cð Cð Cð Cð Cð Cð Cr3   