U
    1i                     @  s   d Z ddlmZ ddlmZmZ ddlmZ eG dd dZeG dd dZ	eG d	d
 d
Z
eG dd dZeG dd dZeG dd dZeG dd dZeG dd dZeG dd dZeG dd dZdS )z7Data models for SEO metrics, index status, and reports.    )annotations)	dataclassfield)datec                   @  s>   e Zd ZU dZded< dZded< dZded< dZded< d	S )
SearchMetricsr   intclicksimpressions        floatctrpositionN)__name__
__module____qualname__r   __annotations__r	   r   r    r   r   2/opt/web_system/seo_auto/src/models/data_models.pyr   	   s   
r   c                   @  sJ   e Zd ZU dZded< dZded< dZded< dZd	ed
< dZd	ed< dS )QueryMetrics strqueryr   r   r   r	   r
   r   r   r   N)	r   r   r   r   r   r   r	   r   r   r   r   r   r   r      s
   
r   c                   @  sJ   e Zd ZU dZded< dZded< dZded< dZd	ed
< dZd	ed< dS )PageMetricsr   r   pager   r   r   r	   r
   r   r   r   N)	r   r   r   r   r   r   r	   r   r   r   r   r   r   r      s
   
r   c                   @  sn   e Zd ZU dZded< dZded< dZded< dZded< dZded< dZ	ded< dZ
ded	< d
Zded< dS )IndexStatusr   r   urlverdictcoverage_stateindexing_statepage_fetch_staterobots_txt_statelast_crawl_timeFbool
is_indexedN)r   r   r   r   r   r   r   r   r   r    r!   r#   r   r   r   r   r   #   s   
r   c                   @  st   e Zd ZU dZded< dZded< dZded< dZded< dZded	< d
Z	ded< d
Z
ded< eedZded< dS )SitemapStatusr   r   pathlast_submittedlast_downloadedFr"   
is_pendingis_sitemaps_indexr   r   warningserrorsdefault_factoryz
list[dict]contentsN)r   r   r   r%   r   r&   r'   r(   r)   r*   r+   r   listr.   r   r   r   r   r$   /   s   
r$   c                   @  sb   e Zd ZU dZded< dZded< dZded< dZded< d	Zd
ed< d	Z	d
ed< dZ
ded< dS )KeywordPositionr   r   keywordr
   r   current_positionprevious_positionchanger   r   r   r	   Fr"   is_alertN)r   r   r   r1   r   r2   r3   r4   r   r	   r5   r   r   r   r   r0   ;   s   
r0   c                   @  sn   e Zd ZU dZded< eedZded< eedZded< dZ	d	ed
< dZ
d	ed< dZd	ed< dZd	ed< dS )TrendComparisonr   r   period_labelr,   r   currentpreviousr
   r   clicks_change_pctimpressions_change_pctctr_change_pctposition_changeN)r   r   r   r7   r   r   r   r8   r9   r:   r;   r<   r=   r   r   r   r   r6   F   s   
r6   c                   @  s>   e Zd ZU dZded< dZded< dZded< dZded< d	S )
KPIAlertr   r   metric_namer
   r   current_valuethreshold_valuemessageN)r   r   r   r?   r   r@   rA   rB   r   r   r   r   r>   Q   s   
r>   c                   @  s   e Zd ZU dZded< dZded< eejdZ	ded< ee
dZded	< eedZd
ed< eedZded< eedZded< eedZded< eedZded< eedZded< eedZded< dZded< dZded< eedZded< dS )
SiteReportr   r   	site_nameproperty_urlr,   r   report_dater   total_metricszlist[QueryMetrics]top_querieszlist[PageMetrics]	top_pageszlist[TrendComparison]trendszlist[KeywordPosition]keyword_positionszlist[KPIAlert]
kpi_alertszlist[SitemapStatus]sitemap_statuseszlist[IndexStatus]unindexed_pagesr   r   index_checked_countindex_ok_countz	list[str]r+   N)r   r   r   rD   r   rE   r   r   todayrF   r   rG   r/   rH   rI   rJ   rK   rL   rM   rN   rO   rP   r+   r   r   r   r   rC   Y   s   
rC   c                   @  sL   e Zd ZU eejdZded< eedZ	ded< dZ
ded< d	Zd
ed< dS )DailyReportr,   r   rF   zlist[SiteReport]site_reportsFr"   
has_alertsr
   r   execution_time_secondsN)r   r   r   r   r   rQ   rF   r   r/   rS   rT   rU   r   r   r   r   rR   k   s   
rR   N)__doc__
__future__r   dataclassesr   r   datetimer   r   r   r   r   r$   r0   r6   r>   rC   rR   r   r   r   r   <module>   s.   

