Files
assist/src/config/__pycache__/unified_config.cpython-311.pyc

85 lines
16 KiB
Plaintext
Raw Normal View History

<EFBFBD>
+<2B><>h#'<00><00><><00>dZddlZddlZddlZddlmZmZmZddlm Z m
Z
ddl m Z ej e<0E><00>Ze Gd<06>d<07><00><00><00>Ze Gd<08>d <09><00><00><00>Ze Gd
<EFBFBD>d <0B><00><00><00>Ze Gd <0C>d <0A><00><00><00>Ze Gd<0E>d<0F><00><00><00>Ze Gd<10>d<11><00><00><00>ZGd<12>d<13><00>Zdadefd<15>Zd<16>ZdS)uK
统一配置管理模块
整合所有配置,提供统一的配置接口
<EFBFBD>N)<03>Dict<63>Any<6E>Optional)<02> dataclass<73>asdict)<01>Pathc<00>Z<00>eZdZUdZdZeed<dZeed<dZ eed<dZ
eed <d
Z eed <d S) <0A>DatabaseConfigu数据库配置zRmysql+pymysql://tsp_assistant:password@43.134.68.207/tsp_assistant?charset=utf8mb4<62>url<72>
<00> pool_size<7A><00> max_overflow<6F><00> pool_timeout<75><00> pool_recycleN) <0C>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__doc__r <00>str<74>__annotations__r <00>intrrr<00><00><00>2d:\code\tsp-assistant\src\config\unified_config.pyr
r
sh<00><00><00><00><00><00><00><19><19>c<>C<EFBFBD><13>c<>c<>c<><17>I<EFBFBD>s<EFBFBD><17><17><17><1A>L<EFBFBD>#<23><1A><1A><1A><1A>L<EFBFBD>#<23><1A><1A><1A><1C>L<EFBFBD>#<23><1C><1C><1C><1C>rr
c<00>v<00>eZdZUdZdZeed<dZeed<dZeed<dZ eed <d
Z
e ed <d Z e ed <dZe ed<dS)<11> LLMConfigu LLM配置<E9858D>openai<61>provider<65><00>api_keyz1https://dashscope.aliyuncs.com/compatible-mode/v1<76>base_urlz
qwen-turbo<62>modelgffffff<66>?<3F> temperaturei<65><00>
max_tokensr<00>timeoutN)rrrrr!rrr#r$r%r&<00>floatr'rr(rrrrrs<><00><00><00><00><00><00><00><13>O<EFBFBD><1C>H<EFBFBD>c<EFBFBD><1C><1C><1C><15>G<EFBFBD>S<EFBFBD><15><15><15>G<>H<EFBFBD>c<EFBFBD>G<>G<>G<><1D>E<EFBFBD>3<EFBFBD><1D><1D><1D><1C>K<EFBFBD><15><1C><1C><1C><1A>J<EFBFBD><03><1A><1A><1A><15>G<EFBFBD>S<EFBFBD><15><15><15><15>rrc<00>Z<00>eZdZUdZdZeed<dZeed<dZ eed<dZ
e ed <d
Z eed <d S) <0A> ServerConfigu服务器配置z0.0.0.0<EFBFBD>hosti<74><00>porti="<00>websocket_portF<74>debug<75>INFO<46> log_levelN) rrrrr,rrr-rr.r/<00>boolr1rrrr+r+&sh<00><00><00><00><00><00><00><19><19><19>D<EFBFBD>#<23><19><19><19><14>D<EFBFBD>#<23><14><14><14><1E>N<EFBFBD>C<EFBFBD><1E><1E><1E><17>E<EFBFBD>4<EFBFBD><17><17><17><1B>I<EFBFBD>s<EFBFBD><1B><1B><1B><1B>rr+c<00>v<00>eZdZUdZdZeed<dZeed<dZeed<dZ eed<dZ
eed<d Z e ed
<d Z e ed <d S)<0E> FeishuConfigu 飞书配置r"<00>app_id<69>
app_secret<EFBFBD> app_token<65>table_id<69>active<76>statusr <00>
sync_limitr<00>auto_sync_intervalN)rrrrr5rrr6r7r8r:r;rr<rrrr4r4/s<><00><00><00><00><00><00><00><16><16><14>F<EFBFBD>C<EFBFBD><14><14><14><18>J<EFBFBD><03><18><18><18><17>I<EFBFBD>s<EFBFBD><17><17><17><16>H<EFBFBD>c<EFBFBD><16><16><16><1A>F<EFBFBD>C<EFBFBD><1A><1A><1A><18>J<EFBFBD><03><18><18><18><1F><16><03><1F><1F><1F><1F>rr4c<00><><00>eZdZUdZdZeed<dZeed<dZeed<dZ eed<dZ
eed <d
Z e ed <d
Z e ed <d
Ze ed <dS)<0F>AIAccuracyConfiguAI准确率配置gffffff<66>?<3F>auto_approve_thresholdg<64><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F>use_human_resolution_thresholdg<64><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F>manual_review_threshold<6C>ai_suggestion_confidence<63>human_resolution_confidenceT<65>prefer_human_when_low_accuracy<63>enable_auto_approval<61>enable_human_fallbackN)rrrrr?r)rr@rArBrCrDr2rErFrrrr>r>:s<><00><00><00><00><00><00><00><1B><1B>$(<28><1A>E<EFBFBD>(<28>(<28>(<28>,0<>"<22>E<EFBFBD>0<>0<>0<>%)<29><1B>U<EFBFBD>)<29>)<29>)<29>&*<2A><1C>e<EFBFBD>*<2A>*<2A>*<2A>)-<2D><1F><15>-<2D>-<2D>-<2D>+/<2F>"<22>D<EFBFBD>/<2F>/<2F>/<2F>!%<25><18>$<24>%<25>%<25>%<25>"&<26><19>4<EFBFBD>&<26>&<26>&<26>&<26>&rr>c<00>h<00>eZdZUdZdZeed<dZeed<dZ eed<dZ
eed<d Z eed
<dZ eed <d S) <0A> SystemConfigu 系统配置T<E7BDAE>backup_enabled<65><00>backup_interval<61><00>max_backup_files<65> cache_enabledr<00> cache_ttl<74>monitoring_enabledN) rrrrrIr2rrKrrMrNrOrPrrrrHrHFsz<00><00><00><00><00><00><00><16><16><1F>N<EFBFBD>D<EFBFBD><1F><1F><1F><1D>O<EFBFBD>S<EFBFBD><1D><1D><1D><1D><14>c<EFBFBD><1D><1D><1D><1E>M<EFBFBD>4<EFBFBD><1E><1E><1E><19>I<EFBFBD>s<EFBFBD><19><19><19>#<23><16><04>#<23>#<23>#<23>#<23>#rrHc<00><00>eZdZdZddefd<04>Zdefd<06>Zd<07>Zd<08>Z d <09>Z
defd
<EFBFBD>Z de ee ffd <0B>Zde ee ffd <0C>Zde ee ffd <0A>Zde ee ffd<0E>Zde ee ffd<0F>Zdede ee ffd<12>Zdefd<13>Zde ee ffd<14>ZdS)<17> UnifiedConfigu统一配置管理器<E79086>config<69>
config_dirc<00>d<00>t|<01><00>|_|jdz |_t<00><00>|_|<00><00><00>|_t<00><00>|_t<00><00>|_
t<00><00>|_ t<00><00>|_|<00><00><00>dS)Nzunified_config.json)rrT<00> config_filer
<00>database<73>_load_default_llm_config<69>llmr+<00>serverr4<00>feishur><00> ai_accuracyrH<00>system<65> load_config)<02>selfrTs r<00>__init__zUnifiedConfig.__init__Ss<><00><00><1E>z<EFBFBD>*<2A>*<2A><04><0F><1F>?<3F>-B<>B<><04><18>'<27>(<28>(<28><04> <0A><17>0<>0<>2<>2<><04><08>"<22>n<EFBFBD>n<EFBFBD><04> <0B>"<22>n<EFBFBD>n<EFBFBD><04> <0B>+<2B>-<2D>-<2D><04><18>"<22>n<EFBFBD>n<EFBFBD><04> <0B> <0A><18><18><1A><1A><1A><1A>r<00>returnc<00><><00> ddlm}t|j|j|j|j|j|j<00><03><00>S#t$r5}t<00> d|<02><00><02><00>t<00><00>cYd}~Sd}~wwxYw)u加载默认LLM配置r)<01>DEFAULT_CONFIG)r!r#r$r%r&r'u5无法加载默认LLM配置使用内置默认值: N) <0C>config.llm_configrcrr!r#r$r%r&r'<00> Exception<6F>logger<65>warning)r_rc<00>es rrXz&UnifiedConfig._load_default_llm_configbs<><00><00> <1F> 8<> 8<> 8<> 8<> 8<> 8<><1C>'<27>0<>&<26>.<2E>'<27>0<>$<24>*<2A>*<2A>6<>)<29>4<> <0E><0E><0E> <0E><><19> <1F> <1F> <1F> <12>N<EFBFBD>N<EFBFBD>V<>ST<53>V<>V<> W<> W<> W<><1C>;<3B>;<3B> <1E> <1E> <1E> <1E> <1E> <1E><><EFBFBD><EFBFBD><EFBFBD> <1F><><EFBFBD>s<00>8;<00>
A:<03>*A5<03>/A:<03>5A:c<00><00> |j<00><00><00><00>rt|jdd<02><03><00>5}tj|<01><00>}ddd<04><00>n #1swxYwYd|vrt di|d<00><01>|_d|vrtdi|d<00><01>|_d|vrtdi|d<00><01>|_
d|vrtdi|d<00><01>|_ d |vrtdi|d <00><01>|_d
|vrtdi|d
<00><01>|_t"<00>d <0B><00>dSt"<00>d <0C><00>|<00><00><00>dS#t($r(}t"<00>d |<03><00><02><00>Yd}~dSd}~wwxYw)u加载配置文件<E69687>r<>utf-8<><01>encodingNrWrYrZr[r\r]u配置文件加载成功u*配置文件不存在使用默认配置u加载配置文件失败: r)rV<00>exists<74>open<65>json<6F>loadr
rWrrYr+rZr4r[r>r\rHr]rf<00>info<66> save_configre<00>error)r_<00>f<> config_datarhs rr^zUnifiedConfig.load_configss<00><00> ;<3B><13><1F>&<26>&<26>(<28>(<28> #<23><19>$<24>*<2A>C<EFBFBD>'<27>B<>B<>B<>/<2F>a<EFBFBD>"&<26>)<29>A<EFBFBD>,<2C>,<2C>K<EFBFBD>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F><><EFBFBD><EFBFBD>/<2F>/<2F>/<2F>/<2F><1E><1B>,<2C>,<2C>$2<>$M<>$M<>[<5B><1A>5L<35>$M<>$M<>D<EFBFBD>M<EFBFBD><18>K<EFBFBD>'<27>'<27>(<28>><3E>><3E>;<3B>u<EFBFBD>+=<3D>><3E>><3E>D<EFBFBD>H<EFBFBD><1B>{<7B>*<2A>*<2A>".<2E>"G<>"G<><1B>X<EFBFBD>1F<31>"G<>"G<>D<EFBFBD>K<EFBFBD><1B>{<7B>*<2A>*<2A>".<2E>"G<>"G<><1B>X<EFBFBD>1F<31>"G<>"G<>D<EFBFBD>K<EFBFBD> <20>K<EFBFBD>/<2F>/<2F>'7<>'U<>'U<>+<2B>m<EFBFBD>:T<>'U<>'U<>D<EFBFBD>$<24><1B>{<7B>*<2A>*<2A>".<2E>"G<>"G<><1B>X<EFBFBD>1F<31>"G<>"G<>D<EFBFBD>K<EFBFBD><16> <0B> <0B>6<>7<>7<>7<>7<>7<><16> <0B> <0B>H<>I<>I<>I<><14> <20> <20>"<22>"<22>"<22>"<22>"<22><><18> ;<3B> ;<3B> ;<3B> <12>L<EFBFBD>L<EFBFBD>9<>a<EFBFBD>9<>9<> :<3A> :<3A> :<3A> :<3A> :<3A> :<3A> :<3A> :<3A> :<3A><><EFBFBD><EFBFBD><EFBFBD> ;<3B><><EFBFBD>sA<00>1E <00>A<03> E <00>A<07>E <00>A<07>B?E <00>.E <00>
E?<03>E:<03>:E?c<00>T<00> |j<00>d<01><02><00>t|j<00><00>t|j<00><00>t|j<00><00>t|j<00><00>t|j<00><00>t|j<00><00>d<03>}t|j
dd<05><06><00>5}tj ||dd<08> <09><00>d
d
d
<EFBFBD><00>n #1swxYwYt<00>d <0B><00>d
S#t$r(}t<00>d |<03><00><02><00>Yd
}~d
Sd
}~wwxYw) u保存配置文件T)<01>exist_ok<6F>rWrYrZr[r\r]<00>wrkrl<00>F)<02>indent<6E> ensure_asciiNu配置文件保存成功u保存配置文件失败: )rT<00>mkdirrrWrYrZr[r\r]rorVrp<00>dumprfrrrert)r_rvrurhs rrszUnifiedConfig.save_config<69>sy<00><00> ;<3B> <10>O<EFBFBD> !<21> !<21>4<EFBFBD> !<21> 0<> 0<> 0<>#<23>4<EFBFBD>=<3D>1<>1<><1D>d<EFBFBD>h<EFBFBD>'<27>'<27> <20><14><1B>-<2D>-<2D> <20><14><1B>-<2D>-<2D>%<25>d<EFBFBD>&6<>7<>7<> <20><14><1B>-<2D>-<2D> <0E><0E>K<EFBFBD><16>d<EFBFBD>&<26><03>g<EFBFBD>><3E>><3E>><3E> H<01>!<21><14> <09>+<2B>q<EFBFBD><11><15>G<>G<>G<>G<> H<01> H<01> H<01> H<01> H<01> H<01> H<01> H<01> H<01> H<01> H<01><><EFBFBD><EFBFBD> H<01> H<01> H<01> H<01> <13>K<EFBFBD>K<EFBFBD>2<> 3<> 3<> 3<> 3<> 3<><33><18> ;<3B> ;<3B> ;<3B> <12>L<EFBFBD>L<EFBFBD>9<>a<EFBFBD>9<>9<> :<3A> :<3A> :<3A> :<3A> :<3A> :<3A> :<3A> :<3A> :<3A><><EFBFBD><EFBFBD><EFBFBD> ;<3B><><EFBFBD>s<<00>B'C5<00>)C<03> C5<00>C<07>C5<00>C<07>C5<00>5
D'<03>?D"<03>"D'c<00> <00>tjd<01><00>rtjd<01><00>|j_tjd<02><00>rtjd<02><00>|j_tjd<03><00>rtjd<03><00>|j_tjd<04><00>rtjd<04><00>|j_tjd<05><00>r+ttjd<05><00><00><00>|j _
tjd<06><00>rtjd<06><00>|j _ tjd<07><00>rtjd<07><00>|j _ tjd<08><00>rtjd<08><00>|j _tjd <09><00>rtjd <09><00>|j _tjd
<EFBFBD><00>r tjd
<EFBFBD><00>|j _d Sd S) u从环境变量加载配置<E9858D> DATABASE_URL<52> LLM_PROVIDER<45> LLM_API_KEY<45> LLM_MODEL<45> SERVER_PORT<52> LOG_LEVEL<45> FEISHU_APP_ID<49>FEISHU_APP_SECRET<45>FEISHU_APP_TOKEN<45>FEISHU_TABLE_IDN)<11>os<6F>getenvrWr rYr!r#r%rrZr-r1r[r5r6r7r8<00>r_s r<00> load_from_envzUnifiedConfig.load_from_env<6E>s<><00><00> <0E>9<EFBFBD>^<5E> $<24> $<24> :<3A> "<22> <09>.<2E> 9<> 9<>D<EFBFBD>M<EFBFBD> <1D> <0E>9<EFBFBD>^<5E> $<24> $<24> :<3A> "<22> <09>.<2E> 9<> 9<>D<EFBFBD>H<EFBFBD> <1D> <0A>9<EFBFBD>]<5D> #<23> #<23> 8<>!<21>y<EFBFBD><1D>7<>7<>D<EFBFBD>H<EFBFBD> <1C> <0A>9<EFBFBD>[<5B> !<21> !<21> 4<><1F>Y<EFBFBD>{<7B>3<>3<>D<EFBFBD>H<EFBFBD>N<EFBFBD> <0E>9<EFBFBD>]<5D> #<23> #<23> =<3D>"<22>2<EFBFBD>9<EFBFBD>]<5D>#;<3B>#;<3B><<3C><<3C>D<EFBFBD>K<EFBFBD> <1C> <0A>9<EFBFBD>[<5B> !<21> !<21> ;<3B>$&<26>I<EFBFBD>k<EFBFBD>$:<3A>$:<3A>D<EFBFBD>K<EFBFBD> !<21> <0E>9<EFBFBD>_<EFBFBD> %<25> %<25> <<3C>!#<23><19>?<3F>!;<3B>!;<3B>D<EFBFBD>K<EFBFBD> <1E> <0A>9<EFBFBD>(<28> )<29> )<29> D<01>%'<27>Y<EFBFBD>/B<>%C<>%C<>D<EFBFBD>K<EFBFBD> "<22> <0A>9<EFBFBD>'<27> (<28> (<28> B<01>$&<26>I<EFBFBD>.@<40>$A<>$A<>D<EFBFBD>K<EFBFBD> !<21> <0A>9<EFBFBD>&<26> '<27> '<27> @<01>#%<25>9<EFBFBD>-><3E>#?<3F>#?<3F>D<EFBFBD>K<EFBFBD> <20> <20> <20> @<01> @rc<00><00>|jjS)u获取数据库连接URL)rWr r<>s r<00>get_database_urlzUnifiedConfig.get_database_url<72>s <00><00><13>}<7D> <20> rc<00>*<00>t|j<00><00>S)u获取LLM配置)rrYr<>s r<00>get_llm_configzUnifiedConfig.get_llm_config<69>s<00><00><15>d<EFBFBD>h<EFBFBD><1F><1F>rc<00>*<00>t|j<00><00>S)u获取服务器配置)rrZr<>s r<00>get_server_configzUnifiedConfig.get_server_config<69><00><00><00><15>d<EFBFBD>k<EFBFBD>"<22>"<22>"rc<00>*<00>t|j<00><00>S)u获取飞书配置)rr[r<>s r<00>get_feishu_configzUnifiedConfig.get_feishu_config<69>r<>rc<00>*<00>t|j<00><00>S)u获取AI准确率配置)rr\r<>s r<00>get_ai_accuracy_configz$UnifiedConfig.get_ai_accuracy_config<69>s<00><00><15>d<EFBFBD>&<26>'<27>'<27>'rc<00>*<00>t|j<00><00>S)u获取系统配置)rr]r<>s r<00>get_system_configzUnifiedConfig.get_system_config<69>r<>r<00>sectionrvc<00><00> |dkrtd i|<02><01>|_n<>|dkrtd i|<02><01>|_nr|dkrt d i|<02><01>|_nZ|dkrt d i|<02><01>|_nB|dkrtd i|<02><01>|_ n*|dkrtd i|<02><01>|_ ntd|<01><00><02><00><00>|<00> <00><00>t<00>d|<01>d <09><03><00>d S#t $r#}t<00>d
|<03><00><02><00><00>d }~wwxYw) u 更新配置rWrYrZr[r\r]u未知的配置节: u
配置节 u 更新成功u更新配置失败: Nr)r
rWrrYr+rZr4r[r>r\rHr]<00>
ValueErrorrsrfrrrert)r_r<>rvrhs r<00> update_configzUnifiedConfig.update_config<69>s_<00><00> <12><16>*<2A>$<24>$<24> .<2E> =<3D> =<3D><1B> =<3D> =<3D><04> <0A> <0A><18>E<EFBFBD>!<21>!<21>$<24>3<>3<>{<7B>3<>3<><04><08><08><18>H<EFBFBD>$<24>$<24>*<2A>9<>9<>[<5B>9<>9<><04> <0B> <0B><18>H<EFBFBD>$<24>$<24>*<2A>9<>9<>[<5B>9<>9<><04> <0B> <0B><18>M<EFBFBD>)<29>)<29>#3<>#B<>#B<>k<EFBFBD>#B<>#B<><04> <20> <20><18>H<EFBFBD>$<24>$<24>*<2A>9<>9<>[<5B>9<>9<><04> <0B> <0B> <20>!A<><07>!A<>!A<>B<>B<>B<> <10> <1C> <1C> <1E> <1E> <1E> <12>K<EFBFBD>K<EFBFBD>;<3B>W<EFBFBD>;<3B>;<3B>;<3B> <<3C> <<3C> <<3C> <<3C> <<3C><><18> <12> <12> <12> <12>L<EFBFBD>L<EFBFBD>3<><01>3<>3<> 4<> 4<> 4<> <11><><EFBFBD><EFBFBD><EFBFBD> <12><><EFBFBD>s<00>CC<00>
D<03>"D<03>Dc<00> <00> |jjst<00>d<01><00>dS|jjst<00>d<03><00>|jjdkrUt|jj
|jj |jj |jj g<04><00>st<00>d<05><00>t<00>d<06><00>dS#t$r(}t<00>d|<01><00><02><00>Yd }~dSd }~wwxYw)
u验证配置有效性u数据库URL未配置FuLLM API密钥未配置r9u飞书配置不完整u配置验证通过Tu配置验证失败: N)rWr rfrtrYr#rgr[r:<00>allr5r6r7r8rrre)r_rhs r<00>validate_configzUnifiedConfig.validate_config<69>s <00><00> <19><17>=<3D>$<24> <1D><16> <0C> <0C>4<>5<>5<>5<><1C>u<EFBFBD><18>8<EFBFBD>#<23> 9<><16><0E><0E>7<>8<>8<>8<><14>{<7B>!<21>X<EFBFBD>-<2D>-<2D><1A>D<EFBFBD>K<EFBFBD>.<2E><04> <0B>0F<30><1F>;<3B>0<>$<24>+<2B>2F<32>H<01>I<01>I<01><<3C><1A>N<EFBFBD>N<EFBFBD>#:<3A>;<3B>;<3B>;<3B> <12>K<EFBFBD>K<EFBFBD>,<2C> -<2D> -<2D> -<2D><17>4<EFBFBD><34><18> <19> <19> <19> <12>L<EFBFBD>L<EFBFBD>3<><01>3<>3<> 4<> 4<> 4<><18>5<EFBFBD>5<EFBFBD>5<EFBFBD>5<EFBFBD>5<EFBFBD><35><EFBFBD><EFBFBD><EFBFBD> <19><><EFBFBD>s<00>&C<00>B%C<00>
D<03>C><03>>Dc<00><><00>t|j<00><00>t|j<00><00>t|j<00><00>t|j<00><00>t|j<00><00>t|j<00><00>d<01>S)u获取所有配置ry)rrWrYrZr[r\r]r<>s r<00>get_all_configzUnifiedConfig.get_all_configsb<00><00><1F>t<EFBFBD>}<7D>-<2D>-<2D><19>$<24>(<28>#<23>#<23><1C>T<EFBFBD>[<5B>)<29>)<29><1C>T<EFBFBD>[<5B>)<29>)<29>!<21>$<24>"2<>3<>3<><1C>T<EFBFBD>[<5B>)<29>)<29> 
<EFBFBD>
<EFBFBD>
rN)rS)rrrrrr`rrXr^rsr<>r<>rrr<>r<>r<>r<>r<>r<>r2r<>r<>rrrrRrRPs<><00><00><00><00><00><00><1F><1F> <1B> <1B>3<EFBFBD> <1B> <1B> <1B> <1B><1F>)<29><1F><1F><1F><1F>";<3B>;<3B>;<3B>:;<3B>;<3B>;<3B>,@<01>@<01>@<01><!<21>#<23>!<21>!<21>!<21>!<21> <20><04>S<EFBFBD>#<23>X<EFBFBD><0E> <20> <20> <20> <20>#<23>4<EFBFBD><03>S<EFBFBD><08>><3E>#<23>#<23>#<23>#<23>#<23>4<EFBFBD><03>S<EFBFBD><08>><3E>#<23>#<23>#<23>#<23>(<28><04>S<EFBFBD>#<23>X<EFBFBD><0E>(<28>(<28>(<28>(<28>#<23>4<EFBFBD><03>S<EFBFBD><08>><3E>#<23>#<23>#<23>#<23><12>S<EFBFBD><12>t<EFBFBD>C<EFBFBD><13>H<EFBFBD>~<7E><12><12><12><12>2<19><14><19><19><19><19>2 
<EFBFBD><04>S<EFBFBD>#<23>X<EFBFBD><0E> 
<EFBFBD> 
<EFBFBD> 
<EFBFBD> 
<EFBFBD> 
<EFBFBD> 
rrRrac<00>l<00>t<00>'t<00><00>at<00><00><00>tS)u获取全局配置实例)<03>_config_instancerRr<>rrr<00>
get_configr<EFBFBD>s,<00><00><18><1F>(<28>?<3F>?<3F><18><18>&<26>&<26>(<28>(<28>(<28> <1B>rc<00>"<00>dat<00><00>S)u重新加载配置N)r<>r<>rrr<00> reload_configr<67>$s<00><00><1C><14> <15><<3C><<3C>r)rr<>rp<00>logging<6E>typingrrr<00> dataclassesrr<00>pathlibr<00> getLoggerrrfr
rr+r4r>rHrRr<>r<>r<>rrr<00><module>r<>s)<00><01><04><04>

<EFBFBD> <09> <09> <09> <0B> <0B> <0B> <0B><0E><0E><0E><0E>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29><18><18><18><18><18><18> <1A><17> <1A>8<EFBFBD> $<24> $<24><06>
<EFBFBD><1D><1D><1D><1D><1D><1D><1D> <0B><19><1D> <0B><16><16><16><16><16><16><16> <0B><19><16> <0B><1C><1C><1C><1C><1C><1C><1C> <0B><19><1C> <0B> <20> <20> <20> <20> <20> <20> <20> <0B><19> <20> <0B> '<27> '<27> '<27> '<27> '<27> '<27> '<27> <0B><19> '<27> <0B>$<24>$<24>$<24>$<24>$<24>$<24>$<24> <0B><19>$<24>G
<EFBFBD>G
<EFBFBD>G
<EFBFBD>G
<EFBFBD>G
<EFBFBD>G
<EFBFBD>G
<EFBFBD>G
<EFBFBD>T<18><10><1C>M<EFBFBD><1C><1C><1C><1C><18><18><18><18>r