
    `i                     z   d Z ddlmZ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mZmZ  e            Z G d	 d
e          Z G d de          Ze                    de           ee          fdedefd            Ze                    d           ee          fdedefd            ZdS )z
API Router for Predictions
    )	APIRouterDependsHTTPException)Sessionselect)List)date)	BaseModel)get_session)RaceRunner
Predictionc                       e Zd ZU dZeed<   dZeed<   dZeed<   e	ed<   e	ed<   dZ
eed	<   dZeed
<   dZe	ed<   g Zee         ed<   dS )PredictionResponsezPrediction response	runner_idr   horse_number 
horse_namewin_probabilityplace_probabilitywin_rank
place_rank        
confidenceexplanationN)__name__
__module____qualname____doc__str__annotations__r   intr   floatr   r   r   r   r   dict     X/home/node/.openclaw/workspace-simple/hk-racing-analytics/backend/app/api/predictions.pyr   r      s         NNNL#JHcJJ Kd     r&   r   c                   R    e Zd ZU dZeed<   eed<   eed<   eed<   ee	         ed<   dS )RacePredictionszAll predictions for a racerace_id	race_datevenuerace_numberpredictionsN)
r   r   r   r   r    r!   r	   r"   r   r   r%   r&   r'   r)   r)      sQ         $$LLLOOOJJJ())))))r&   r)   z/race/{race_id})response_modelr*   sessionc                   K   |                     t          |           }|st          dd          t          t                                        t          j        | k              }|                    t          j        	                                          }|
                    |                                          }|st          dd          g }|D ]^}|                    t          t          |j                  dd|j        |j        |j        pd|j        pd|j        pdg 	  	                   _t)          | |j        |j        |j        |	          S )
zGet all predictions for a race  Race not foundstatus_codedetailzNo predictions availabler   r   r   )	r   r   r   r   r   r   r   r   r   )r*   r+   r,   r-   r.   )getr   r   r   r   wherer*   order_byr   descexecallappendr   r    r   r   r   r   confidence_scorer)   r+   r,   r-   )r*   r0   racequeryr.   pred_responsespreds          r'   get_race_predictionsrC   &   sj      ;;tW%%D F4DEEEE :$$Z%77%BCCENN:5::<<==E,,u%%))++K P4NOOOON  0$.)) 0"4]'a+!,3

 

 

 
	 
	 
	 
	 .j$"   r&   z/generate/{race_id}c                 h  K   |                     t          |           }|st          dd          t          t                                        t          j        | k              }|                    |                                          }|st          dd          d| t          |          ddS )zGenerate predictions for a racer2   r3   r4   zNo runners foundzPrediction generation triggeredpending)messager*   runners_countstatus)
r7   r   r   r   r   r8   r*   r;   r<   len)r*   r0   r?   r@   runnerss        r'   generate_predictionsrK   P   s       ;;tW%%D F4DEEEE 6NN  7!:;;Ell5!!%%''G H4FGGGG 5W	  r&   N)r   fastapir   r   r   sqlmodelr   r   typingr   datetimer	   pydanticr
   app.db.databaser   app.models.racingr   r   r   routerr   r)   r7   r    rC   postrK   r%   r&   r'   <module>rU      s    6 5 5 5 5 5 5 5 5 5 $ $ $ $ $ $ $ $                   ' ' ' ' ' ' 6 6 6 6 6 6 6 6 6 6	
! 
! 
! 
! 
! 
! 
! 
!* * * * *i * * * o>> w{++& &&& & & ?>&R "## w{++    $#  r&   