
    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 ddlmZ  ej                  e      Zdd	d
ddddddd	d	dddddddg dddddddd
dddddddd d!dddddd"i d#dd$d%d&dd'd(d)d*d+d,d-d.d/d0d1dd2dd3dd4dd5g d6dd7d8d!d9d:d;dd7d<d=d>d:d?dd7d@dAdBd:dCdd7dDdEdFd:i dGdd7d@dAdHd:dIdd7dJddKd:dLdd7d8d7dMd:dNdd7d8d=dOd:dPdd7d8d=dQd:dRddDd8d=dSd:dTdd@d8d=dUd:dVddWd@d!dXd:dYdd8d7dAdZd:d[dd7d7dEd\d:d]dd@d7d^d_d:d`dd8d@dadbd:dcddWdDdAddd:dedd8d7dadfd:dgdd8d@dEdhd:diddWdjdAdkd:dldd8djdadmd:dd7dnd!dod:ddDd7dAdpd:dd@djdAdqd:ddDd7d^drd:ddWd8d!dsd:ddnd@d!dtd:dd8d7d=dud:dvi dwdxdydzd{d|d}d,d~ddddddddddddddddddddddddddddddddd	dddg dddZ ej$                  ddg      d        Z ej$                  ddg      defd       Z ej$                  ddg      defd       Z ej$                  ddg      d        Z ej$                  ddg      d        Zy)zO
Settings API Endpoints
Unified configuration management for the entire system
    N)jsonifyrequest)api_bp)SessionLocal)SystemConfig)	SystemLog	HyperShop SPsimplesg      )@BRLzAmerica/Sao_Pauloz
DD/MM/YYYYmondayTF)empresa_nomeempresa_cnpj
empresa_ufregime_tributarioaliquota_simplesmoedafuso_horarioformato_dataprimeiro_dia_semanaemail_alertaswhatsapp_alertasalerta_estoque_criticoalerta_resumo_diarioalerta_previsao_erro   iI i0u        g      @g      @   )margem_minimameta_faturamento_mensalmeta_lucro_mensalcustos_fixoscomissao_mlcomissao_amazoncomissao_shopeetaxa_fixa_mltaxa_fixa_amazontaxa_fixa_shopeecalcular_difal	uf_origemaliquota_interna   
      autog      ?)nivel_criticonivel_baixousar_dias_estoquedias_critico
dias_baixometodo_segurancamultiplicador_segurancalead_time_padraocalcular_ponto_pedidoalertar_ponto_pedidosugerir_qtd_compramulti_depositoreconciliacao_habilitadareconciliacao_horarioz03:00calibracao_habilitadacalibracao_frequenciaweeklycalibracao_diasundayajuste_maximo   min_amostras_calibrar   erro_max_toleravel   alertar_erro_altolimite_erro_alertareverter_se_piorarlimite_reversaoferiados_custommult_day_of_weekg      ?g      ?zDia da semana (seg-dom))enabledweightminmaxdescmult_hourly_patterng?g       @u   Padrão horário de vendasmult_period_of_monthgffffff?g?u   Início/meio/fim do mêsmult_payment_dayg?gffffff?u   Dia de pagamento (5º, 20º)mult_week_of_monthu   Semana do mês (1-4)
mult_eventg?zFeriados e datas especiaismult_post_feriadou   Ressaca pós-feriadomult_seasonalzSazonalidade por categoriamult_momentumu   Tendência 7 diasmult_visits_trendu   Tendência de visitas hojemult_velocity_scoreu   Aceleração vendas (7d vs 30d)mult_conversion_rateg333333?u   Taxa de conversão por produtomult_top_sellerszProdutos mais vendidosmult_promo_activeu   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 baixomult_shipping_advantagezFull vs envio normalmult_price_competitivenessu   Preço vs mercadomult_impulse_hoursg?u   Horário de impulso (22h-02h)mult_mobile_hoursu   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_search_positionmult_gold_medalmult_listing_typemult_free_shippingmult_weathermult_google_trendsmult_competitor_stockouttipo_anuncio_padraoclassicogarantia_padrao30_diascondicao_padraonovoprazo_envio_padraotitulo_max_chars<   titulo_sem_abreviacoestitulo_sem_emojisalertar_titulo_longoalertar_margem_baixamargem_minima_alertamargem_minima_bloqueioarredondar_precossugerir_precoimagem_dimensao	1200x1200imagem_formatowebpalertar_imagem_pequenacomprimir_imagemzVotorantim,BR)piscina	aquecedor
ventilador)ml_sync_estoqueml_sync_precosml_importar_pedidosml_intervalo_synctiny_importar_custostiny_sync_bidirecionaltiny_criar_produtos_autoopenweather_api_keyopenweather_cidadeopenweather_enabledgoogle_trends_enabledgoogle_trends_keywords)geral
financeiroestoquehyper_aicatalogointegracoesz	/settingsGET)methodsc                  Z   t               } 	 | j                  t              j                         }t        j                         D ci c]  \  }}|t        |       }}}|D ]  }|j                  xs d}|j                  }||v s%	 |||   v rt        ||   |         }|t        k(  r#|j                  j                         dv ||   |<   n|t        k(  r%t        t        |j                              ||   |<   n|t        k(  rt        |j                        ||   |<   nb|t        k(  r4|j                  rt!        j"                  |j                        ng ||   |<   n%|j                  ||   |<   n|j                  ||   |<   ! t%        d|d      | j'                          S c c}}w #  |j                  ||   |<   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 settings grouped by categoryr   true1yesTsuccessdatazError getting settings: Fr   error  N)r   queryr   allDEFAULT_SETTINGSitemsdictgroupkeytypeboolvaluelowerintfloatlistjsonloadsr   close	Exceptionloggerr   str)
dbconfigskvsettingsconfigr   r   expected_typees
             H/var/www/hypershopcomercio.com.br/hyper-ai/app/api/endpoints/settings.pyget_all_settingsr      s    
B$((<(,,. ,<+A+A+CD41aAtAwJDD  	8FLL+GE**C 8huo-(,Xe_S-A(B(D039<<3E3E3GK_3_HUOC0*c136uV\\7J3KHUOC0*e3383FHUOC0*d2OU||4::fll3KacHUOC039<<HUOC0/5||,'	8. 4:; 	
A E.8+1<<HUOC(  A/s3453q6:;S@@

	A 	
sZ   :G F!)G C9F' G !G 'F>;G 	H
0H:H;H HH H*z/settings/<group>r   c                    t               }	 | t        vr#t        dd|  d      df|j                          S |j	                  t
              j                  t
        j                  | k(        j                         }t        t        |          }|D ]y  }|j                  }||v r
t        ||         }	 |t        k(  r |j                  j                         dv ||<   n|t        k(  r"t        t!        |j                              ||<   n|t         k(  rt!        |j                        ||<   n|t"        k(  r1|j                  rt%        j&                  |j                        ng ||<   nI|t        k(  r1|j                  rt%        j&                  |j                        ni ||<   n|j                  ||<   |j                  r@|j                  j)                  d      r%	 t%        j&                  |j                        ||<   k|j                  ||<   | t        d|d      |j                          S #  |j                  ||<   Y xY w#  |j                  ||<   Y xY w# t*        $ rK}t,        j/                  d	|        t        dt1        |      d      d
fcY d}~|j                          S d}~ww xY w# |j                          w xY w)z$Get settings for a specific categoryFUnknown group: r     r   {Tr   zError getting settings group: r   N)r   r   r   r   r   r   filterr   r   r   r   r   r   r   r   r   r   r   r   r   
startswithr   r   r   r   )r   r   r   r   r   r   r   r   s           r   get_settings_groupr      sD    
B*((u7PQRTWWP 	
M ((<(//0B0Be0KLPPR(/0 	1F**Ch $Xc] 31$,(.(:(:(<@T(T&#-(+E&,,,?(@&%/(-fll(;&$.DJLL

6<<(@VX&$.DJLL

6<<(@VX(.
 <<FLL$;$;C$@5(,

6<<(@ %+LLHSM7	1: 4:; 	
%1$*LLHSM5(.  A5aS9:53q6:;S@@

	A 	
sf   I A:I 2C9H)+)I "I 7!I )H=:I  II 	J+ 0J&J+J. &J++J. .K PUTc           
          t               }	 | t        vr#t        dd|  d      df|j                          S t	        j
                         }|j                         D ]  \  }}|dk(  rddlm} ddl	m	} |j                  |      j                  d	
      j                         }|s6 |d	dt        |      d|j                               }|j                  |       n%t        |      |_        |j                         |_        t        |      }nNt%        |t&              r|rdnd}n7t%        |t(        t*        f      rt-        j.                  |      }nt        |      }|j                  t0              j3                  t0        j4                  |k(  t0        j6                  | k(        j                         }	|	r	||	_        ^t1        ||| d|  d|       }
|j                  |
        |j;                          t        dd|  dd      |j                          S # t<        $ r[}t>        jA                  d|        |jC                          t        dt        |      d      dfcY d}~|j                          S d}~ww xY w# |j                          w xY w)z'Update settings for a specific categoryFr   r   r   tiny_api_tokenr   )
OAuthToken)datetimetiny)providerr   r
   )r   user_idaccess_tokenrefresh_token
updated_atr   falsez	Setting: .)r   r   r   descriptionTzSettings for 'z	' updated)r   messagezError updating settings: r   N)"r   r   r   r   r   get_jsonr   app.models.oauth_tokenr   r   r   	filter_byfirstr   nowaddr   r   
isinstancer   r   r   r   dumpsr   r   r   r   r   commitr   r   r   rollback)r   r   r   r   r   r   r   
tiny_token	str_valueexisting
new_configr   s               r   update_settings_groupr     sI    
B4((u7PQRTWWd 	
a !**, $	#JC&&=-XXj1;;V;LRRT
!!+VSWZ[`Waqs  AI  AM  AM  AO  "PJFF:&.1%jJ+,4LLNJ)J	E4(&+F	ED$<0 JJu-	J	xx-44  C'""e+ eg 
 !*)#"+E7!C5 9	
 z"I$	#L 			4nUG94UVW 	
  A045
53q6:;S@@

A
 	
s6   H GH 	I8A I3I8I; 3I88I; ;Jz/settings/defaultsc                  &    t        dt        d      S )zGet default settings structureTr   )r   r        r   get_default_settingsr   >  s     t-=>??r   z/history/hyper_aic            	         t        d       t               } 	 ddlm}m} t        j
                  j                  d      }t        j
                  j                  d      }| j                  t              j                  t        j                  dk(        }|rn|rl	 |j                  |d      }|j                  |d      j                  dd	d	
      }|j                  t        j                  |k\  t        j                  |k        }n|j                  d      }t        d       |j!                  t        j                  j#                               j%                         }t        dt'        |       d       g }	|D ]}  }
i }	 |
j(                  rt+        j,                  |
j(                        }|	j1                  |
j2                  |
j                  j5                         |
j6                  |
j8                  |d        t        d       t;        d|	d      | j=                          S # t        $ r |j                  d      }Y (w xY w# t.        $ r}t        d|        Y d}~d}~ww xY w# t.        $ rm}ddl}|jA                          tB        jE                  d|        t        d|        t;        dtG        |      d      dfcY d}~| j=                          S d}~ww xY w# | j=                          w xY w)z<Get history of AI activities (Reconciliations, Calibrations)z%DEBUG: Hit /settings/hyper_ai/historyr   )r   	timedelta
start_dateend_dater   z%Y-%m-%d   ;   )hourminutesecond2   z&DEBUG: DB Session created. Querying...zDEBUG: Found z logs.zDEBUG: JSON error: N)id	timestampr   leveldetailszDEBUG: Returning JSON successTr   zError getting AI history: zDEBUG: CRITICAL ERROR: Fr   r   )$printr   r   r   r   argsgetr   r   r   modulestrptimereplacer   
ValueErrorlimitorder_byrU   r   lenr   r   r   r   appendr   	isoformatr   r   r   r   	traceback	print_excr   r   r   )r   r   r   start_param	end_paramr   r   r   logshistorylogr   r   r  s                 r   get_hyper_ai_historyr  B  ss    

12	B40 ll&&|4LL$$Z0	#**9+;+;z+IJ9(%..{JG
#,,Y
CKKQS\^giKjY%8%8J%F	H[H[_gHgh [[_U67~~i116689==?c$i[/0 	CG;;"jj5G
 NNff ]]446;;" 	" 	-.49: 	
M  (B("  +A3/0  A1!56's+,53q6:;S@@

A 	
s   A?I# A*H A9I# ;+H?&A'I# H<8I# ;H<<I# ?	I II# I  I# #	K,AK>K?K KK K.)__doc__r   loggingflaskr   r   app.apir   app.core.databaser   app.models.system_configr   app.models.system_logr   	getLogger__name__r   r   router   r   r   r   r   r  r   r   r   <module>r     s
     "  * 1 +			8	$
 $& +$'"& $ %" #)"  !"#&!% $"B"DB 	 B 	 	B
 	 B 	(B 	B 	 B 	bB 	TB 	bB 	dB 	2B  	2!B, 	CPS]vw-B. 	43sSV`|}/B0 	DCTWa{ |1B2 	CPS]{|3B4 	$#cRU_uv5B: 	$#c#Wst;B< 	SQT^tu=B> 	TSSZvw?BD 	TSSZmnEBF 	SQT^z{GBH 	43sSV  aB   CIBN 	DCTW  bB  !COBP 	CPS]uvQBR 	SQT^uvSBT 	$#cRV`yzUBV 	43sSV`tuWB\ 	43sSV`{|]B^ 	"ts3WZdz#{_Bd 	%%3s[^h{&|eBj 	$#cRU_~kBl 	SQT^wxmBr -1CTW  bR  !S'+s3s\xy)-SQT  _J  K*.#cRV`uv %)CCY|}*/3sSV`op05SY\  gA  %BCBFz9 	6 	a	
 	B 	!$ 	T 	 	 	 	!" 	U 	 	; 	&  	!$!" 	D#(  # $"&$)!-$!&"HIT n kE7+' ,'T !E73-c - 4-` !E737 7 47t "UG4@ 5@ !E738 48r   