o
    !\i                     @   sv   d Z ddlmZ ddlmZmZ ddlZddlmZ ddlm	Z	 ddl
mZ ddlmZ eeZG d	d
 d
eZdS )zData quality agent    )Session)datetime	timedeltaN)	BaseAgent)MatchRepository)MatchStatus)Featurec                       s4   e Zd ZdZdef fddZdefddZ  ZS )QualityAgentzAgent for data quality checksdbc                    s   t  |d t|| _d S )Nr	   )super__init__r   
match_repo)selfr
   	__class__ W/var/www/www-root/data/www/176.119.141.140/sports-predictor/app/agents/quality_agent.pyr      s   zQualityAgent.__init__returnc              
   C   s  |   }g }z| jjdd}dd |D }|r"|dt| d | jjdd}dd |D }t|tt| }|d	krG|d| d
 | jt	
ttjdt	jtjjkt	jt kt	jt tdd k }|d	kr}|d| d | jt	t	jtjjkt	jt tdd k  }	|	d	kr|d|	 d |rd|}
td|
  | jd|
d W dS d}
t|
 | jd|
d W dS  ty } zt|}tjd| dd | jd|d W Y d}~dS d}~ww )zRun quality checksi  )limitc                 S   s$   g | ]}|j d u s|jd u r|qS )N)
home_score
away_score.0mr   r   r   
<listcomp>   s
    z$QualityAgent.run.<locals>.<listcomp>zFound z  finished matches without scoresi'  c                 S   s   g | ]}|j r|j qS r   )	source_idr   r   r   r   r   &   s    r   z potential duplicate matchesN   )daysz" upcoming matches without features   z& old matches still marked as scheduled
zQuality issues found:
T)successlogszNo quality issues foundzQuality check failed: )exc_infoF)r    error) 	start_runr   get_finishedappendlenget_upcomingsetr
   queryMatch	outerjoinr   filteridis_statusr   	SCHEDULEDvalue
match_dater   nowr   countjoinloggerwarning
finish_runinfo	Exceptionstrr#   )r   run_idissuesfinished_matchesmissing_scoresall_matches
source_ids
duplicatesmatches_without_featuresold_scheduledr!   e	error_msgr   r   r   run   s`   


zQualityAgent.run)	__name__
__module____qualname____doc__r   r   boolrH   __classcell__r   r   r   r   r	      s    r	   )rL   sqlalchemy.ormr   r   r   loggingapp.agents.baser   )app.core.db.repositories.match_repositoryr   app.core.db.models.matchr   app.core.db.models.featurer   	getLoggerrI   r7   r	   r   r   r   r   <module>   s    
