
    !+i                        d Z ddlZddlZddlmZmZ ddlmZ ddlm	Z	 ddl
mZ  ej                  e      Zi ddd	d
dddddd	ddddddd	dd	ddddd	dd	ddddd	dd	ddddd	d
dddddd	dd	ddddd	ddddddd	ddddd dd!ddd"dd#dd$ddd%dd&dd'd$d(d)dd*ddd	d+d,dd-dd	d	d.d/dd0dd$d	d1d2dd3ddd$d4d5dd6dd'd!d+d7dddd	d4d8dd9dd$d.d:ddd'd;d+d<dddd;d4d=ddd	d>d(d?ddd!d	d+d@ddd$d;d+dAddd!d	d1dBddd'dd(dCdd9d>d$d(dDdd9dd	ddEddFZ ej                   dGdHgI      dJ        Z ej                   dKdLgI      dMefdN       Z ej                   dOdPgI      dMefdQ       Zy)Rz?
Factors API - Simple endpoints for forecast factor management
    N)jsonifyrequest)api_bp)SessionLocal)SystemConfigmult_day_of_weekT      ?g?g      @zDia da semana)enabledweightminmaxdescmult_hourly_patterng      ?g       @u   Padrão horáriomult_period_of_monthu   Período do mêsmult_payment_dayzDia de pagamentomult_week_of_monthu   Semana do mês
mult_eventzFeriados e datas especiaismult_post_feriadou   Ressaca pós-feriadomult_seasonalzSazonalidade por categoriamult_momentumu   Tendência 7 diasmult_visits_trendg?u   Tendência de visitas hojemult_velocity_scoregffffff?u   Aceleração vendas (7d vs 30d)mult_conversion_rateg333333?g      ?u   Taxa de conversão por produtomult_top_sellersg?zProdutos mais vendidosmult_promo_activegffffff?u   Produto em promoçãomult_catalog_boostg      ?u   Produtos Full/Catálogomult_listing_healthg333333?u   Saúde do anúnciomult_stock_pressureu   Pressão de estoque baixozFull vs envio normalFu   Preço vs mercadog?u   Horário de impulso (22h-02h)u   Horário mobile (noite)g333333?u.   Posição na busca (1ª página = mais vendas)u   Medalha Gold (reputação)u)   Tipo de anúncio (gold_pro, gold_special)u   Frete grátis ativou!   Clima por região dos compradoreszGoogle TrendszConcorrentes sem estoque)mult_shipping_advantagemult_price_competitivenessmult_impulse_hoursmult_mobile_hoursmult_search_positionmult_gold_medalmult_listing_typemult_free_shippingmult_weathermult_google_trendsmult_competitor_stockoutz/factorsGET)methodsc                     t               } 	 t        j                         D ci c]  \  }}|t        |       }}}| j	                  t
              j                  t
        j                  j                  t        j                                     j                         }|D ]  }|j                  |v s	 t        j                  |j                        }|j                  d||j                     d         ||j                     d<   |j                  d||j                     d         ||j                     d<    t        d|d      | j!                          S c c}}w #  Y xY w# t"        $ rK}t$        j'                  d|        t        dt)        |      d      dfcY d	}~| j!                          S d	}~ww xY w# | j!                          w xY w)
z)Get all factors with their enabled statusr
   r   T)successdatazError getting factors: Fr-   error  N)r   DEFAULT_FACTORSitemsdictqueryr   filterkeyin_keysalljsonloadsvaluegetr   close	Exceptionloggerr0   str)dbkvfactorsconfigsconfigsavedes           G/var/www/hypershopcomercio.com.br/hyper-ai/app/api/endpoints/factors.pyget_factorsrL   .   s    
B*9*?*?*AB$!Q1d1g:BB ((<(//  !5!5!78

#% 	  	FzzW$ JJv||4E5:YYy'RXR\R\J]^gJh5iGFJJ'	249IIhPVPZPZH[\dHe4fGFJJ'1	 49: 	
/ C  A.qc2353q6:;S@@

	A 	
sY   E" EA7E" 2BE5E" E" EE" "	F6+0F1F6F9 1F66F9 9Gz/factors/<key>/togglePOSTr7   c                 d   t               }	 | t        vr#t        dd|  d      df|j                          S |j	                  t
              j                  t
        j                  | k(        j                         }|rg	 t        j                  |j                        }|j                  dd       |d<   t        j                  |      |_        |j                  dk7  r`d|_        nXt        t        |          }|d    |d<   t        | t        j                  |      dt        |    d   	      }|j!                  |       |j#                          |rd   nd   }t        d|d
      |j                          S #  t        t        |          }Y xY w# t$        $ r}ddl}|j)                          t+        d|  d|        t,        j/                  d|  d|        |j1                          t        dt3        |      d      dfcY d}~|j                          S d}~ww xY w# |j                          w xY w)zToggle a specific factor on/offFUnknown factor: r/     r
   TrF   r   r7   r=   groupdescription)r-   r
   r   NzERROR TOGGLING : zError toggling factor r1   )r   r2   r   r?   r5   r   r6   r7   firstr;   r<   r=   r4   r>   dumpsrR   addcommitr@   	traceback	print_excprintrA   r0   rollbackrB   )	r7   rC   existingcurrent	new_value
new_configfinal_enabledrJ   rY   s	            rK   toggle_factorrb   N   s    
B0o%u9I#7OPQSVV\ 	
W 88L)00#

%' 	 5**X^^4
 &-[[D%A!AGI!ZZ0HN~~*!* _S12I'0';#;Ii %jj++C08	J FF:
		 /7	*Ii<P4MBC 	
I5s346  AuBqc*+-cU"QC89
53q6:;S@@

A 	
sO   F AF =E5 CF 5F	F 	HA(H?H H HH H/z/factors/<key>/weightPUTc                 
   t               }	 | t        vr#t        dd|  d      df|j                          S t	        j
                         }t        |j                  dd            }|j                  t              j                  t        j                  | k(        j                         }|r@	 t        j                  |j                        }||d<   t        j"                  |      |_        nTt!        t        |          }||d<   t        | t        j"                  |      dt        |    d   	      }|j%                  |       |j'                          t        d
|d      |j                          S #  t!        t        |          }Y xY w# t(        $ r^}t*        j-                  d|  d|        |j/                          t        dt1        |      d      dfcY d}~|j                          S d}~ww xY w# |j                          w xY w)zUpdate factor weightFrO   r/   rP   r   r	   rF   r   rQ   T)r-   r   zError updating weight for rT   r1   N)r   r2   r   r?   r   get_jsonfloatr>   r5   r   r6   r7   rU   r;   r<   r=   r4   rV   rW   rX   r@   rA   r0   r\   rB   )	r7   rC   r.   r   r]   r^   r_   r`   rJ   s	            rK   update_factor_weightrg      s    
B%o%u9I#7OPQSVVF 	
C !txx#./88L)00#

%' 	 5**X^^4 !'GH!ZZ0HN_S12I"(Ih%jj++C08	J FF:
		46:; 	
/5s34"  A1#b<=
53q6:;S@@

A
 	
sO   F A4F ,E- BF -FF 	G-AG(G-G0 (G--G0 0H)__doc__r;   loggingflaskr   r   app.apir   app.core.databaser   app.models.system_configr   	getLogger__name__rA   r2   routerL   rB   rb   rg        rK   <module>rs      s     "  * 1			8	$DCCYhits3s\no CPS]op DCCYkl	
 dc#c[kl dc#cSop TSSZpq SVrs SVij TSSZvw ts3s\}~ CPS]}~ DCCYqr TSSZqr dc#d\uv  ts3s\pq!" ts3s\wx#$ ,03sSV`vw.3s3WZdw"x&*c#c[z{%)SSZst(,CPS  ^N  O#'3s3Xtu%)SS  [F  G&*c#d\qr $CUxy&+s3s\kl,1SUXb| }9@ j5'* +> %x83s 3 93l %w7(c ( 8(rr   