o
    "\i                     @   s8  d Z ddlmZ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 ddlmZ ddlmZ ddlmZ ddlmZ e Zedfdee fddZ G dd de	Z!e"deeee fde!dedefddZ#e"deeee fdedefddZ$dS )zAdmin API endpoints    )	APIRouterDependsHTTPExceptionHeader)Session)	BaseModel)Optional)get_db)settings)DataIngestAgent)FeatureAgent)TrainingAgent)PredictionAgent)BacktestAgent)QualityAgent)LLMAnalysisAgentN	x_api_keyc                 C   s   | r| t jkrtddd| S )zVerify API keyi  zInvalid API keystatus_codedetail)r
   api_keyr   )r    r   L/var/www/www-root/data/www/176.119.141.140/sports-predictor/app/api/admin.pyverify_api_key   s   r   c                   @   s   e Zd ZU eed< dS )AgentRunRequest
agent_nameN)__name__
__module____qualname__str__annotations__r   r   r   r   r      s   
 r   z
/run-agentrequestdbr   c                    sj   t tttttd}| j|vr tdd| j dt|	  d|| j }||}|
 }| j||jdS )zRun an agent manually)r   r   r   r   r   r   i  zUnknown agent: z. Available: r   )agentsuccessrun_id)r   r   r   r   r   r   r   r   listkeysruncurrent_run)r!   r"   r   	agent_mapagent_classr#   r$   r   r   r   	run_agent   s(   
	
r,   z	/pipelinec                    s   i }t | }| |d< t| }| |d< tjr$t| }| |d< t| }| |d< tjr>tjr>t	| }| |d< t
| |dS )z9Run full pipeline: ingest -> features -> train -> predictingestfeaturestrainingpredictllm_analysis)r$   results)r   r(   r   r
   training_enabledr   r   llm_analysis_enabledopenai_api_keyr   allvalues)r"   r   r2   ingest_agentfeature_agenttraining_agentprediction_agent	llm_agentr   r   r   run_pipeline@   s"   
r=   )%__doc__fastapir   r   r   r   sqlalchemy.ormr   pydanticr   typingr   app.core.db.databaser	   app.core.configr
   app.agents.data_ingest_agentr   app.agents.feature_agentr   app.agents.training_agentr   app.agents.prediction_agentr   app.agents.backtest_agentr   app.agents.quality_agentr   app.agents.llm_analysis_agentr   routerr   r   r   postr,   r=   r   r   r   r   <module>   sF    !