
    Xj                     `   d dl Z d dlmZ d dlmZ  ee          Z G d d          ZddZddZ	ed	k    rw	  e              e	             e
                    d
            e j        d            dS # e$ r3Ze                    de             e j        d           Y dZ[dS dZ[ww xY wdS )    N)settings)
get_loggerc                   p    e Zd Zd Zd
dZd
dZd
dZd
dZd
dZde	e
e         e
e         f         fd	ZdS )EnvironmentValidatorc                 "    g | _         g | _        d S N)errorswarningsselfs    >/lsinfo/ai/hellotax_ai/base_platform/app/core/env_validator.py__init__zEnvironmentValidator.__init__   s    !##%    returnNc                     t           j        t           j        d}|                                D ]A\  }}|r|d|                                 dk    r| j                            d| d           Bd S )N)
SECRET_KEYDATABASE_URLzyour-z-change-this-in-productionu   ❌ z" is not set or using default value)r   r   r   itemslowerr	   append)r   required_varsvar_name	var_values       r   validate_required_varsz+EnvironmentValidator.validate_required_vars   s    '/':HLabb#0#6#6#8#8 	X 	XHi X	-aX^^5E5E-a-a-a a a""#V(#V#V#VWWW	X 	Xr   c                 b   t           j        dk    rdt           j                                        v r| j                            d           t           j        r| j                            d           dt           j                                        v r| j                            d           d S d S d S )N
productionzchange-thisu,   ❌ SECRET_KEY must be changed in productionu1   ⚠️  DEV_MODE should be disabled in productionsqliteu+   ❌ SQLite should not be used in production)	r   ENVIRONMENTr   r   r	   r   DEV_MODEr
   r   r   s    r   validate_production_settingsz1EnvironmentValidator.validate_production_settings   s    <// 3 9 9 ; ;;;""#QRRR  Z$$%XYYY80668888""#PQQQQQ 0/
 98r   c                     t           j        s| j                            d           d S dt           j                                        vr| j                            d           d S d S )Nu"   ❌ DATABASE_URL is not configured
postgresqlu%   ⚠️  Using non-PostgreSQL database)r   r   r	   r   r   r
   r   s    r   validate_database_connectionz1EnvironmentValidator.validate_database_connection   sj    $ 	JKCDDDDD!6!<!<!>!>>>M  !HIIIII ?>r   c                 V    t           j        s| j                            d           d S d S )Nu!   ⚠️  OPENAI_API_KEY is not set)r   OPENAI_API_KEYr
   r   r   s    r   validate_api_keysz&EnvironmentValidator.validate_api_keys$   s7    & 	FM  !DEEEEE	F 	Fr   c                     t           j        rVt           j        dk    r| j                            d           t           j        dk    r| j                            d           d S d S d S )Nr   u*   ❌ RATE_LIMIT_PER_MINUTE must be positiveu(   ❌ RATE_LIMIT_PER_HOUR must be positive)r   RATE_LIMIT_ENABLEDRATE_LIMIT_PER_MINUTEr	   r   RATE_LIMIT_PER_HOURr   s    r   validate_rate_limitingz+EnvironmentValidator.validate_rate_limiting(   sr    & 	O-22""#OPPP+q00""#MNNNNN		O 	O 10r   c                     |                                   |                                  |                                  |                                  |                                  | j        | j        fS r   )r   r    r#   r&   r+   r	   r
   r   s    r   run_all_validationsz(EnvironmentValidator.run_all_validations/   sk    ##%%%))+++))+++   ##%%%T]++r   r   N)__name__
__module____qualname__r   r   r    r#   r&   r+   tupleliststrr-    r   r   r   r   	   s        & & &X X X XR R R RJ J J JF F F FO O O O,U49d3i+?%@ , , , , , ,r   r   r   c                  V   t                      } |                                 \  }}|D ]}t                              |           |rH|D ]}t                              |           t                              d           t          d          t                              d           d S )NzEnvironment validation failedz:Environment validation failed. Please check configuration.zEnvironment validation passed)r   r-   loggerwarningerrorRuntimeErrorinfo)	validatorr	   r
   r8   r9   s        r   validate_environmentr=   8   s    $&&I 4466FH    w Y 	  	 ELL4555WXXX
KK/00000r   c                     t                               d           t                               d           t                               d           t                               dt          j                    t                               dt          j                    t                               dt          j                    t                               ddt          j        v r%t          j                            d          d         nd	            t                               d
t          j        rdnd            t          j        rNt                               dt          j	                    t                               dt          j
                    t                               dt          j                    t                               dt          j                    t                               d           d S )Nz2==================================================zEnvironment ConfigurationzEnvironment: zProject Name: zAPI Version: z
Database: @zNot configuredzRate Limiting: EnabledDisabledz  - Per Minute: z  - Per Hour: z
Dev Mode: zFrontend URL: )r7   r;   r   r   PROJECT_NAME
API_V1_STRr   splitr(   r)   r*   r   FRONTEND_URLr5   r   r   print_environment_inforG   E   s   
KK
KK+,,,
KK
KK6 466777
KK8!688999
KK5 355666
KKscXEZ>Z>Zh+11#66r::`pss   KK^0K#[99Q[^^___" EGx'EGGHHHCX%ACCDDD
KK0X.00111
KK8!688999
KKr   __main__u!   ✅ Environment validation passedu#   ❌ Environment validation failed:    r.   )sys
app.configr   common_loggingr   r/   r7   r   r=   rG   r;   exit	Exceptioner9   r5   r   r   <module>rP      sE   



       % % % % % %	H		,, ,, ,, ,, ,, ,, ,, ,,^
1 
1 
1 
1   & z   7888   >1>>??? s   9A3 3B+8(B&&B+