o
    d6i                     @   s  d dl Z d dlZd dlmZmZmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ ee jdd e eZeddZejedgddgdgd e  e  G dd de	ZeddefddZeddefddZdS )    N)FastAPIHTTPExceptionRequest)CORSMiddleware)	BaseModel)load_dotenv)setup_logging)tracing)init_db)chat_with_karishye)clean_indian_phone_numberT)level
use_colorszKarishye AI Chat API)title*)allow_originsallow_credentialsallow_methodsallow_headersc                   @   s&   e Zd ZU eed< eed< eed< dS )ChatRequestuser_idmessage
session_idN)__name__
__module____qualname__str__annotations__ r   r   ,/var/www/html/karishye-ai-python/app/main.pyr   *   s   
 r   z/chatpayloadc              
      s   z4ddl }|  }t| j| j| jI dH }|  }|| }td|dd | j| j| j|dd}|W S  tyR } ztdt	|j
  td	d
dd}~ww )z
    Chat endpoint using karishye_agent with RAG and Puja tools.
    Handles conversation flow, puja bookings, and intent tracking.
    r   Nz[/chat] Response completed in .2fsT)r   r   user_messagekarishye_agent_responsesuccessz[/chat] Error: i  z3Something went wrong. Please try again in a moment.)status_codedetail)timer   r   r   r   loggerinfo	Exceptionerrortyper   r   )r    r(   
start_timeresponseend_time
total_timeresulter   r   r   chat2   s6   
r4   z/webhook/watirequestc              
      s
  z|   I dH }|std dddW S |dd}|dd}|d	d}|d
d}|dp7|d}|s>|r>|}|rF|dkrF|ndt jdd  }|r]|dkr]d| ndt j }|rkt|nd}	d}
|r}|dkr}| r}| }
|r|dkrtd dddW S z.ddl	}|	 }t
||||	|
ddI dH }|	 }|| }td|dd d|dW W S  ty } ztdt|j  d}d|dW  Y d}~W S d}~ww  ty } ztdt|j  dddW  Y d}~S d}~ww )zz
    WATI webhook endpoint to receive WhatsApp messages.
    Integrates with karishye_agent for AI-powered responses.
    Nz[WATI Webhook] Empty payloadFzEmpty payload received)r%   
ai_messageName PhoneEmailMessagewaIdwa_idz@phone	whatsapp_   wati_z@namez@messagez[WATI Webhook] No message textzNo message text receivedr   T)phone_number	user_nameformat_for_whatsappz%[WATI Webhook] Response completed in r!   r"   z[WATI Webhook] AI error: zKSomething went wrong. Please visit https://www.karishye.co/ for assistance.z[WATI Webhook] Error: )jsonr)   warninggetuuiduuid4hexr   stripr(   r   r*   r+   r,   r-   r   )r5   r    namephoneemailmessage_textr=   r   r   clean_phone
clean_namer(   r.   ai_responser0   response_timeai_errorfallback_responser3   r   r   r   wati_webhook[   st   
(&
	

rU   ) loggingrG   fastapir   r   r   fastapi.middleware.corsr   pydanticr   dotenvr   app.logging_configr   	app.utilsr	   app.dbr
   app.llmr   app.utils.puja_session_utilsr   INFO	getLoggerr   r)   appadd_middlewarer   postr4   rU   r   r   r   r   <module>   s8    

(