o
    sg                     @   sH  d Z ddlZddlZddlZddlmZ ddlmZmZ ddl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 eddgdddiig dZejddddefddZG dd de	ZeddefddZeddefddZed defd!d"Zed#defd$d%Zed&kre ed' dS dS )(z*Fast API module for the recommender system    N)datetime)	APIRouterHTTPException)	BaseModelField)CompanyProfileMaker)CompanyInfo)
LLMResults)
url_parser)DynamoDBz/company_profilecompany_profilei  descriptionz	Not found)prefixtags	responsesdependencies/   )status_codeurlc                    sj   t | }t }||j|j}|du s|d du r0|j|jdd td|j t	dddS d	d
dS )!Get recommendations for a companyNscrappedF)r   z%s not in database  zCompany not in database)r   detailzCompany in databaser   )messager   )
r
   
parsed_urlr   get_itemcompany_list_tabler   create_or_update_company_listloggingwarningr   )r   company_url_parsed	dynamo_dbresponse r$   >/var/www/html/XCapMarket/controllers/company_profile_router.pycheck_company&   s   

r&   c                   @   s.   e Zd ZU eed< dZeed< dZeed< dS )CompanyProfileRequestr   Ncompany_stock_tickerF
is_pe_shop)__name__
__module____qualname__str__annotations__r(   r)   boolr$   r$   r$   r%   r'   ;   s   
 r'   z/make_profile/company_profile_requestc              
      s   zt | j| j| jd}| I dH  dd| jdW S  tyD } ztj|dd dd	| j d
t	| d W Y d}~dS d}~ww )r   )company_urlstock_tickerr)   Nr   zCompany profile for {} created)r   r   T)exc_infor   z#Error creating company profile for z: )
r   r   r(   r)   mainformat	Exceptionr   errorr-   )r0   company_profile_makerer$   r$   r%   make_profileA   s(   r:   z	/website/c                    s   t | }t }||j|j}|du r td|j ddiS tdi |}|j	du r:t
|j}|j|dI dH }t| S )r   Nz%s not in company info tabler   Not in database)supplied_company_infor$   )r
   r   r   r   company_info_tabler   r   r    r   logor   
load_brandjsonloadsmodel_dump_json)r   r!   r"   r#   company_infocir$   r$   r%   get_profile[   s   


rE   z/LLM/c                    s   t | }t }||j|j}|du r td|j ddiS tdi |}|	 }i }t
|d dd dD ]&}|d	 d
kr@q7|d	 |v rW||d	  d  d|d  7  < q7|||d	 < q7t| |_t| S )r   N%s not in LLM tabler   r;   LLM_resultsc                 S   s   | d S )NOrderr$   )xr$   r$   r%   <lambda>   s    zget_llm.<locals>.<lambda>)keyheader
Mangaementr#   
r$   )r
   r   r   r   	llm_tabler   r   r    r	   
model_dumpsortedlistvaluesrG   r@   rA   rB   )r   r!   r"   r#   llm_resultsnew_responsenew_llm_results
llm_resultr$   r$   r%   get_llms   s(   

rX   z/leadership/c                    s   t | }t }||j|j}|du r td|j ddiS d|v r.|d dkr.d|d< tdi |}|j	du r`t
|j}| d |_| I dH }|||_	|  ||j|  |j	du rgg S tt| d d S )	r   NrF   r   r;   
leadership rG   r$   )r
   r   r   r   rO   r   r   r    r	   rY   r   rP   rT   map_leadershipcreate_leadershipupdate_modifyupload_to_dynamodbr@   rA   dumps)r   r!   r"   r#   llm_results_dbr8   rY   r$   r$   r%   get_leadership   s.   



ra   __main__zhttps://www.neweracap.com)!__doc__asyncior@   r   r   fastapir   r   pydanticr   r   (services.company_profile.company_profiler   2services.company_profile.data_classes.company_infor   1services.company_profile.data_classes.llm_resultsr	   utilsr
   utils.dynamo_dbr   r   getr-   r&   r'   postr:   rE   rX   ra   r*   runr$   r$   r$   r%   <module>   s@    
	#%