
    j                         d dl m 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m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 d dlmZ d dlmZ d dlmZ d dlmZ d dl m!Z!m"Z"m#Z# d dl$m%Z%  e#              e"e&          Z' edddej(        rene          Z) ee)            ee)ej*                   e)+                    e!            e%e)d           ej,        dk    rd dl-m.Z. e)+                    e.           e)+                    ed           d dl/m0Z0 e)+                    e0           d dl1m2Z2 e)+                    e2           ej3        re)+                    eej4                   e'5                    dej6                    e)+                    e	ej6        d ej7        ej8        !           e)9                    e          d"ed#efd$            Z:e)9                    e          d"ed#efd%            Z;e)9                    e<          d"ed#e<fd&            Z=e)9                    e          d"ed#efd'            Z>e)?                    d(          d)             Z@e)A                    d*          d+             ZBe)A                    d,          d-             ZCd d.lDmEZE e)F                    eEejG        /           d d0lHmIZJ e)F                    eJd1d2g3           e&d4k    rd d5lKZK eKjL        e)d6d78           d5S d5S )9    )datetime)FastAPIRequest)jsonable_encoder)RequestValidationError)CORSMiddleware)JSONResponseORJSONResponse)IntegrityErrorSQLAlchemyError)GZipMiddlewaresettings)AppException)LanguageMiddleware)init_db) setup_network_traffic_monitoring)setup_rate_limiting)RBACBootstrapService)LoggingMiddleware
get_loggersetup_logging)setup_metricsBase Platform API2.0.0z8Multi-tenant AI Platform with RAG and Agent capabilities)titleversiondescriptiondefault_response_class)enabledzbase-platform
production)CSRFMiddlewarezh_CN)default_locale)TenantContextMiddleware)ServiceGuardMiddleware)minimum_sizezCORS Origins: T)allow_originsallow_credentialsallow_methodsallow_headersrequestexcc                 @  K   t          | j        dd           }t                              d| d|j         d|j         d| j         d| j         
           t          |j	        |j        |j        d|t          j                                                    d	          S )
N
request_id[z] z:  -  codemessageerrorr/   	timestampstatus_codecontent)getattrstateloggerr7   r4   r5   methodurlr	   r:   r   utcnow	isoformatr,   r-   r/   s      0/lsinfo/ai/hellotax_ai/base_platform/app/main.pyapp_exception_handlerrE   8   s      d;;J
LL]Z]]38]]s{]]w~]]PWP[]]^^^O!h3;??$!**4466
 
       c           
      f  K   t          | j        dd           }t                              d| dt	          |           d| j         d| j                    t          |t                    rd}d}d}nd	}d
}d}t          |||d|t          j                                                    d          S )Nr/   r0   z] Database error: r1   r2   i  CONSTRAINT_VIOLATIONu   数据库约束冲突  DATABASE_ERRORu   数据库操作失败r3   r6   r9   )r<   r=   r>   r7   strr?   r@   
isinstancer   r	   r   rA   rB   )r,   r-   r/   r:   r4   r5   s         rD   sqlalchemy_exception_handlerrM   F   s      d;;J
LL^Z^^3s88^^^^QXQ\^^___#~&& *%))"w77$!**4466
 
   rF   c           
      "  K   t          | j        dd           }t                              d| dt	          |           d| j         d| j                    t          dddd	|t          j	                    
                                d
          S )Nr/   r0   z] Unhandled exception: r1   r2   rI   INTERNAL_SERVER_ERRORu   服务器内部错误r3   r6   r9   )r<   r=   r>   	exceptionrK   r?   r@   r	   r   rA   rB   rC   s      rD   generic_exception_handlerrQ   \   s      d;;J
ZJZZs3xxZZGNZZW[ZZ   5BYZZ$!**4466
 
   rF   c                 d  K   t                               d| j         d| j                    t                               d|                                            ddlm} |j        dk    rt          ddd	i
          S t          ddt          |                                          i
          S )NzValidation error for r2   zValidation errors: r   r   r!   i  detailzInvalid request parametersr9   )
r>   r7   r?   r@   errors
app.configr   ENVIRONMENTr	   r   )r,   r-   r   s      rD   validation_exception_handlerrW   l   s      
LLGGG'+GGHHH
LL5szz||55666######|++h@\5]^^^^h@PQTQ[Q[Q]Q]@^@^5_````rF   startupc                    K   ddl m} m} 	  |              |              n0# t          $ r#}t                              d|             d }~ww xY wt                       t          j                     t          	                    d           d S )Nr   )print_environment_infovalidate_environmentu#   ❌ Environment validation failed: u   ✅ Base Platform API started)
app.core.env_validatorrZ   r[   	Exceptionr>   r7   r   r   bootstrap_legacy_rbac_stateinfo)rZ   r[   es      rD   startup_eventra   x   s      SSSSSSSS       >1>>??? III4666
KK/00000s   ! 
AA		A/c                     K   ddddS )Nr   r   running)r5   r   status rf   rF   rD   rootrg      s      *wSSSrF   z/healthc                     K   dddS )NhealthyzBase Platform API is running)re   r5   rf   rf   rF   rD   health_checkrj      s      ,JKKKrF   )
api_router)prefix)routerz	/internalinternal)rl   tags__main__Nz0.0.0.0i@  )hostport)Mr   fastapir   r   fastapi.encodersr   fastapi.exceptionsr   fastapi.middleware.corsr   fastapi.responsesr	   r
   sqlalchemy.excr   r   starlette.middleware.gzipr   rU   r   app.core.exceptionsr   app.core.i18n.middlewarer   app.db.init_dbr   app.middleware.network_trafficr   app.middleware.rate_limitr   *app.services.access.rbac_bootstrap_servicer   common_loggingr   r   r   common_metricsr   __name__r>   
USE_ORJSONappTRAFFIC_MONITORING_ENABLEDadd_middlewarerV   app.core.security_utilsr"   app.core.tenant_contextr%   app.middleware.service_guardr&   GZIP_COMPRESSION_ENABLEDGZIP_MINIMUM_SIZEr_   CORS_ORIGINSCORS_METHODSCORS_HEADERSexception_handlerrE   rM   r]   rQ   rW   on_eventra   getrg   rj   
app.api.v1rk   include_router
API_V1_STRapp.api.internal.switch_moderm   internal_switch_routeruvicornrunrf   rF   rD   <module>r      s         $ $ $ $ $ $ $ $ - - - - - - 5 5 5 5 5 5 2 2 2 2 2 2 : : : : : : : : : : : : : : : : 4 4 4 4 4 4       , , , , , , 7 7 7 7 7 7 " " " " " " K K K K K K 9 9 9 9 9 9 K K K K K K G G G G G G G G G G ( ( ( ( ( ( 	H		g
J-5-@R>>l	    C       h.Q R R R R   $ % % % c? # # #<''666666~&&&   %g  > > > ; ; ; ; ; ;   * + + + ? ? ? ? ? ?   ) * * *$ P~H4NOOO 4X244 5 5 5   '''     |$$
 
| 
 
 
 %$
 '' o    ('* y!!W 9    "! -..a a>T a a a /.a i1 1 1 T T T L L L " ! ! ! ! !   :h&9  : : : I I I I I I   )+ZL  Q Q QzNNNGK)$////// rF   