o
    Ղi                  
   @   s   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	m
Z
 ee Zeejdeejedeejd	  Zeejd
eed d ZG dd de	ZedefddZe ZdS )u   应用配置管理    N)	lru_cache)Path)Optional)BaseSettingsSettingsConfigDictPROJECT_ROOT      	DATA_ROOTdata_centerdatac                   @   s  e Zd ZU dZedddddZdZeed< d	Z	eed
< dZ
eed< dZeed< eed< dZeed< dZeed< dZeed< dZeed< dZeed< dZeed< dZee ed< dZee ed< dZeed< dZeed< ed eeef fd!d"ZdZeed#< d$Zeed%< d$Zeed&< d'Zeed(< d)Z eed*< d+Z!eed,< d-Z"eed.< ee#Z$eed/< ed e%fd0d1Z&ed e%fd2d3Z'ed e%fd4d5Z(dZ)ee ed6< dZ*ee ed7< ed efd8d9Z+dS ):Settingsu   应用配置z.envzutf-8Fignore)env_fileenv_file_encodingcase_sensitiveextrazTax Data Centerapp_namez1.0.0app_versiondebugINFO	log_leveldatabase_urlr   database_schemazredis://localhost:6379/0	redis_urlcelery_broker_urlcelery_result_backenddata_center_queuecelery_task_queuezhttp://localhost:8000base_platform_urlNbase_platform_api_keyinternal_api_tokenr	   base_platform_kb_id base_platform_category_mapreturnc              	   C   sx   | j  si S i }| j dD ]*}| }d|v r9|dd\}}zt| |t| < W q ty8   Y qw q|S )uB   返回 {data_center_category_id: base_platform_category_id} 映射,:r	   )r$   stripsplitint
ValueError)selfresultpairleftright r1   :/lsinfo/ai/hellotax_ai/data_center/backend/./app/config.pykb_category_id_map7   s   
zSettings.kb_category_id_mapcrawler_delay_min   crawler_delay_maxcrawler_max_concurrent   crawler_request_timeoutr   crawler_max_retrieszknowledge-documentsminio_bucketztax-data-centerminio_prefix	data_rootc                 C   s   t S )u3   monorepo 根目录（附件相对路径的基准）)_PROJECT_ROOTr,   r1   r1   r2   project_rootU   s   zSettings.project_rootc                 C      t | jd d S )u   原始抓取物存储根目录chinatax_policyrawr   r=   r?   r1   r1   r2   raw_data_dirZ      zSettings.raw_data_dirc                 C   rA   )u"   清洗/转换产物存储根目录rB   	processedrD   r?   r1   r1   r2   processed_data_dir_   rF   zSettings.processed_data_dir
http_proxyhttps_proxyc                 C   s   | j  d| j dS )u!   获取带 schema 的数据库 URLz?options=-c%20search_path=z,public)r   r   r?   r1   r1   r2   database_url_with_schemah   s   z!Settings.database_url_with_schema),__name__
__module____qualname____doc__r   model_configr   str__annotations__r   r   boolr   r   r   r   r   r   r   r    r   r!   r"   r*   r$   propertydictr3   r4   r6   r7   r9   r:   r;   r<   
_DATA_ROOTr=   r   r@   rE   rH   rI   rJ   rK   r1   r1   r1   r2   r      sV   
 r   r%   c                   C   s   t  S )u   获取配置单例)r   r1   r1   r1   r2   get_settingsn   s   rW   )rO   os	functoolsr   pathlibr   typingr   pydantic_settingsr   r   __file__resolve_thisenvirongetrQ   parentsminlenr>   rV   r   rW   settingsr1   r1   r1   r2   <module>   s    ,^
