
    !+iE                     v    d 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j                  e      Zd Zd Zd	 Zy)
uA   
Jobs automáticos para sistema de intelligence de concorrentes.
    N)SessionLocal)CompetitorMetricsScraper)ImpactAnalyzer)Adc                  @   t         j                  d       t               } 	 t        |       }ddlm} | j                  |      j                  |j                  dk(        j                         }t         j                  dt        |       d       d}d}|D ]6  }	 |j                  |j                  |j                        }|r|dz  }n|dz  }8 t         j                  d| d|        d||d| j!                          S # t        $ r4}t         j                  d|j                   d	|        |dz  }Y d
}~d
}~ww xY w# t        $ r@}	t         j                  d|	        dt#        |	      dcY d
}	~	| j!                          S d
}	~	ww xY w# | j!                          w xY w)u   
    Job horário: Coleta métricas de todos os concorrentes monitorados.
    
    Executado a cada hora para manter dados atualizados.
    uA   [COMPETITOR-JOB] Iniciando coleta de métricas de concorrentes...r   CompetitorAdactivez[COMPETITOR-JOB] Encontrados z concorrentes ativos.   z$[COMPETITOR-JOB] Falha ao processar : Nu-   [COMPETITOR-JOB] Coleta concluída. Sucesso: 	, Erros: success)status	processederrorsu.   [COMPETITOR-JOB] Erro na coleta de métricas: errorr   message)loggerinfor   r   app.models.competitor_adr	   queryfilterr   alllencollect_and_save_metricscompetitor_idad_id	Exceptionr   closestr)
dbscraperr	   competitorstotal_successtotal_errorscompr   e_compes
             F/var/www/hypershopcomercio.com.br/hyper-ai/app/jobs/competitor_jobs.py!run_competitor_metrics_collectionr+      s    KKST	B!*2. 	: hh|,33L4G4G84STXXZ3C4D3EEZ[\ 		#D#";;D<N<NPTPZPZ["a']!Q&\		# 	CM?R[\h[ijk#-<X 	
  # DTEWEWDXXZ[aZbcd"#  6EaSIJ!c!f55

	6 	
sZ   A7D? 3C?"D? ?	D<*D72D? 7D<<D? ?	F%F-F.F FF Fc                     t         j                  d       t               } 	 t        |       }ddlm} | j                  |      j                  |j                  dk(        j                         }d}d}|D ].  }	 |j                  |j                  |j                         |dz  }0 t         j                  d	| d
|        d|d| j                          S # t        $ r4}t         j                  d|j                   d|        |dz  }Y d}~d}~ww xY w# t        $ r@}t         j                  d|        dt!        |      dcY d}~| j                          S d}~ww xY w# | j                          w xY w)u   
    Job horário: Analisa eventos de impacto competitivo.
    
    Executado após a coleta de métricas para detectar mudanças e impactos.
    u9   [IMPACT-JOB] Iniciando análise de impacto competitivo...r   r   r
   r   z[IMPACT-JOB] Falha ao analisar r   Nu/   [IMPACT-JOB] Análise concluída. Processados: r   r   )r   r   u*   [IMPACT-JOB] Erro na análise de impacto: r   r   )r   r   r   r   r   r	   r   r   r   r   run_full_analysisr   r   r   r   r    r!   )	r"   analyzerr	   r$   total_analyzedr&   r'   e_anr)   s	            r*   run_impact_analysisr1   ;   sW    KKKL	B!"% 	:hh|,33L4G4G84STXXZ 	"D"**4+=+=tzzJ!#	" 	EnEUU^_k^lmn#.A 	
  ">t?Q?Q>RRTUYTZ[\!"  6A!EF!c!f55

	6 	
sZ   AD 7+C"!D 	D*DD DD 	E%EEE  EE   E2c                  V   t         j                  d       t               } 	 t         j                  d       ddi| j                          S # t        $ r@}t         j                  d|        dt        |      dcY d}~| j                          S d}~ww xY w# | j                          w xY w)	uF   
    Job diário: Calcula score de ameaça para cada concorrente.
    u,   [THREAT-JOB] Calculando scores de ameaça...u1   [THREAT-JOB] Cálculo de threat scores concluídor   r   u0   [THREAT-JOB] Erro no cálculo de threat scores: r   r   N)r   r   r   r    r   r   r!   )r"   r)   s     r*   run_threat_score_calculationr3   d   s     KK>?	B 	GH)$ 	
	  6GsKL!c!f55

	6 	
s/   A
 
	B%B8B9B BB B()__doc__loggingapp.core.databaser   'app.services.competitor_metrics_scraperr   app.services.impact_analyzerr   app.models.adr   	getLogger__name__r   r+   r1   r3        r*   <module>r>      s>     * L 7 			8	$+\&Rr=   