
    "\i                        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Z  G d de	      Z!ejE                  d       ee       ee       fde!dedefd       Z#ejE                  d       ee       ee       fdedefd       Z$y)zAdmin API endpoints    )	APIRouterDependsHTTPExceptionHeader)Session)	BaseModel)Optional)get_db)settings)DataIngestAgent)FeatureAgent)TrainingAgent)PredictionAgent)BacktestAgent)QualityAgent)LLMAnalysisAgentN	x_api_keyc                 J    | r| t         j                  k7  rt        dd      | S )zVerify API keyi  zInvalid API keystatus_codedetail)r   api_keyr   )r   s    /app/app/api/admin.pyverify_api_keyr      s&    	X%5%554EFF    c                       e Zd ZU eed<   y)AgentRunRequest
agent_nameN)__name__
__module____qualname__str__annotations__ r   r   r   r      s    Or   r   z
/run-agentrequestdbr   c           
      R  K   t         t        t        t        t        t
        d}| j                  |vr4t        dd| j                   dt        |j                                      || j                     } ||      }|j                         }| j                  ||j                  dS w)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)   s          r   	run_agentr1      s      +$&*&$I *$W%7%7$8d9>>K[F\E]^
 	

 G../KOEiikG #### s   B%B'z	/pipelinec                   K   i }t        |       }|j                         |d<   t        |       }|j                         |d<   t        j                  rt        |       }|j                         |d<   t        |       }|j                         |d<   t        j                  r.t        j                  rt        |       }|j                         |d<   t        |j                               |dS w)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   r8   ingest_agentfeature_agenttraining_agentprediction_agent	llm_agents           r   run_pipelinerC   @   s      G #2&L$((*GH !$M'++-GJ   &r*,002
 'r*)--/GI $$)@)@$R(	"+--/ w~~'( s   C%C')%__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   postr1   rC   r$   r   r   <module>rT      s     = = "   ' $ 8 1 3 7 3 1 :	 /5Tl hsm i  \ &/>*  B [&/>*     r   