Files
assist/src/analytics/__pycache__/alert_system.cpython-310.pyc

133 lines
12 KiB
Plaintext
Raw Normal View History

o
<00><>5iG<00>@s<>dZddlZddlmZmZmZmZmZddlmZm Z ddl
m Z ddl m Z ddlZddlmZdd lmZmZmZmZe<01>e<17>ZGd
d <0B>d e <0A>ZGd d <0A>d e <0A>Ze Gdd<0F>d<0F><02>ZGdd<11>d<11>ZdS)uT
TSP助手智能预警系统
支持多种预警规则、实时监控和智能分析
<EFBFBD>N)<05>Dict<63>List<73>Any<6E>Optional<61>Callable)<02>datetime<6D> timedelta)<01> dataclass)<01>Enum<75>)<01>
db_manager)<04> WorkOrder<65> Conversation<6F> Analytics<63>Alertc@s eZdZdZdZdZdZdZdS)<07>
AlertLevelu 预警级别<E7BAA7>info<66>warning<6E>error<6F>criticalN)<08>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__doc__<5F>INFO<46>WARNING<4E>ERROR<4F>CRITICAL<41>rr<00>*/root/assist/src/analytics/alert_system.pyrs rc@s$eZdZdZdZdZdZdZdZdS)<08> AlertTypeu 预警类型<E7B1BB> performance<63>quality<74>volume<6D>system<65>businessN) rrrr<00> PERFORMANCE<43>QUALITY<54>VOLUME<4D>SYSTEM<45>BUSINESSrrrrr sr c@sveZdZUdZeed<eed<eed<eed<eed<eed<dZ e
ed <d
Z e ed <d Z eeed <dZe ed<d S)<10> AlertRuleu 预警规则<E8A784>name<6D> description<6F>
alert_type<EFBFBD>level<65> threshold<6C> conditionT<6E>enabled<65>,<00>check_intervalN<6C>
last_check<EFBFBD><00>cooldown)rrrr<00>str<74>__annotations__r r<00>floatr2<00>boolr4<00>intr5rrr7rrrrr+#s
  r+c@sVeZdZdZdd<03>Zdeeeffdd<06>Zde eee
ffdd<08>Z d edeee
ffd
d <0B>Z d ed eee
fde fdd<0F>Zd ed eee
fdeee
ffdd<11>Zd ed eee
fdefdd<13>Zdeee
fddfdd<17>Zde eee
ffdd<19>Zdede fdd<1C>Zdeee
ffdd<1E>Zd ede fdd <20>Zd ede fd!d"<22>Zd ede fd#d$<24>ZdS)%<25> AlertSystemu智能预警系统cCs|<00><00>|_g|_i|_dS)N)<04>_initialize_rules<65>rules<65> alert_history<72> active_alerts)<01>selfrrr<00>__init__4s

zAlertSystem.__init__<5F>returnc Cs<>i}tddtjtjdddd<06>|d<tdd tjtjd
d d d<06>|d <tddtjtjdddd<06>|d<tddtjtjdddd<06>|d<tddtjtj dddd<06>|d<tdd tjtjd!d"dd<06>|d#<td$d%tjtjd&d'dd<06>|d(<td)d*tjtjd+d,dd<06>|d-<|S).u初始化预警规则<E8A784>满意度预警u用户满意度低于阈值g333333<33>?<3F>satisfaction_avg < thresholdi)r,r-r.r/r0r1r4<00>low_satisfaction<6F>解决时间预警u平均解决时间过长<E8BF87><00>avg_resolution_time > thresholdr6<00>high_resolution_time<6D>知识库命中率预警u知识库命中率过低g<00>?<3F>knowledge_hit_rate < threshold<6C>low_knowledge_hit_rate<74>错误率预警u系统错误率过高g<E9AB98><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F>error_rate > thresholdr3<00>high_error_rate<74>工单量预警u工单量异常增长<E5A29E>2<00>hourly_orders > thresholdiX<00> high_volume<6D>响应时间预警u系统响应时间过长g@<40>avg_response_time > threshold<6C>low_response_time<6D>内存使用预警u系统内存使用率过高gT@<40>memory_usage > threshold<6C> memory_usage<67>对话中断预警u用户对话中断率过高g333333<33>?<3F>"conversation_drop_rate > threshold<6C>conversation_drop)
r+r r'rrr&r)rr(r)rBr?rrrr>9s<>
<EFBFBD>

<EFBFBD>

<EFBFBD>

<EFBFBD>

<EFBFBD>

<EFBFBD>

<EFBFBD>

<EFBFBD>
zAlertSystem._initialize_rulesc Cs<>g}|j<00><01>D]u\}}|jsq|jrt<04><05>|jj|jkrqz|<00>|<02>}|<00> ||<04>r:|<00>
||<04>}|<01> |<05>t<04><05>|_Wqt y|}z5t <0A>d|<02>d|<06><00><04>d|<02><00>tjjtjjd|<02>d|<06><00>dt|<06>it<04><05><00><15>dd<08>}|<00>|<07>WYd }~qd }~ww|S)
u检查所有预警规则u 检查规则 u 失败: u#系统预警 - 规则检查失败: u规则 'u' 检查失败: r<00>system_rule_check_failure<72><07> rule_namer.r/<00>message<67>data<74> timestamp<6D>rule_idN)r?<00>itemsr2r5r<00>now<6F>secondsr7<00>_get_rule_data<74>_evaluate_rule<6C> _create_alert<72>append<6E> Exception<6F>loggerrr r)<00>valuerrr8<00> isoformat<61> _save_alert)rB<00>triggered_alertsra<00>rulerc<00>alert<72>e<> system_alertrrr<00>check_all_rules<65>s6
  

<04>

<06> <08><02>zAlertSystem.check_all_rulesrac
CsNi}<02>z t<00><01><00><>}t<02><03>}|tdd<02>}|<03>t<06><01>tj|ktj|k<01><02> <09>}|<03>t
<EFBFBD><01>t
j |kt
j |k<01><02> <09>}t |<06>}t dd<04>|D<00><01>} dd<04>|D<00>}
|
rTt |
<EFBFBD>t |
<EFBFBD>nd|d<g} |D]} | jdkru| jru| j| j<00><10>d } | <0B>| <0A>q\| r<>t | <0B>t | <0B>nd|d
<t d d<04>|D<00><01>}|r<>|t |<07>nd|d <t d d<04>|D<00><01>}|r<>|t |<07>nd|d<|d|d<g}|D] }|jr<>|<10>|j<12>q<>|r<>t |<10>t |<10>nd|d<ddlm}|<12>}|<13>dd<06>d|d<t |<07>}t dd<04>|D<00><01>}|r<>||nd|d<Wd<00>W|S1<00>s wYW|St<16>y&}z t<17>d|<16><00><02><00>d}~ww)u获取规则相关数据rI)<01>hourscSsg|] }|jdkr|<01>qS)<01>resolved)<01>status<75><02>.0<EFBFBD>worrr<00>
<listcomp><3E>sz.AlertSystem._get_rule_data.<locals>.<listcomp>cSsg|]}|jr|j<00>qSr)<01>satisfaction_scorer{rrrr~<00>sr<00>satisfaction_avgryr6<00>avg_resolution_timecSsg|]}|jr|<01>qSr)<01>knowledge_used<65>r|<00>crrrr~<00>s<00>knowledge_hit_ratecSsg|] }d|j<00><01>vr|<01>qS)r)<02>assistant_response<73>lowerr<72>rrrr~<00>s<00>
error_rate<EFBFBD> hourly_orders<72>avg_response_timer )<01>get_memory_usage<67>percent<6E>dr[cSsg|]
}|jr|js|<01>qSr)<02> user_messager<65>r<>rrrr~<00>s<00>conversation_drop_rateNu获取规则数据失败: )r <00> get_sessionrrgr<00>queryr <00>filter<65>
created_at<EFBFBD>allrrd<00>len<65>sumrz<00>
updated_at<EFBFBD> total_secondsrl<00> response_time<6D> utils.helpersr<73><00>getrmrnr)rBrarc<00>session<6F>end_time<6D>
start_time<EFBFBD> work_orders<72> conversations<6E> total_orders<72>resolved_orders<72>satisfaction_scores<65>resolution_timesr}<00>resolution_time<6D>knowledge_hits<74>error_conversations<6E>response_timesr<73>r<><00> memory_info<66>total_conversations<6E>dropped_conversationsrurrrri<00>sl

<02><02>
<02><02>
<02>  <02>  <0C>B<14>B<10><08><02>zAlertSystem._get_rule_datarsrcc
Cs.z{|jdkr|<02>dd<03>|jkWS|jdkr|<02>dd<03>|jkWS|jdkr.|<02>dd<03>|jkWS|jdkr=|<02>d d<03>|jkWS|jd
krL|<02>d d<03>|jkWS|jd kr[|<02>d d<03>|jkWS|jdkrj|<02>dd<03>|jkWS|jdkry|<02>dd<03>|jkWSWdSty<>}zt<04>d|<03><00><02>WYd}~dSd}~ww)u评估规则条件rFr<>rrJr<>rMr<>rPr<>rTr<>rWr<>rZr[r]r<>Fu评估规则条件失败: N)r1r<>r0rmrnr)rBrsrcrurrrrjs.







<08><02>zAlertSystem._evaluate_rulecCsJ|j|jj|jj|<00>||<02>|t<05><06><00><07>|jd<01>}|<00>|<03>||j |j<|S)u 创建预警r`)
r,r.ror/<00>_generate_alert_messagerrgrprqrA)rBrsrcrtrrrrks

<06>
zAlertSystem._create_alertcCsL|jdkrd|<02>dd<04>d<05>d|j<02>d<07>S|jdkr(d |<02>d
d<04>d <0B>d |j<02>d <0A>S|jdkr<d|<02>dd<04>d<05>d|j<02>d<07>S|jdkrPd|<02>dd<04>d<05>d|j<02>d<07>S|jdkrdd|<02>dd<04>d <0B>d|j<02>d<18>S|jdkrxd|<02>dd<04>d<05>d|j<02>d<1D>S|jdkr<>d|<02>d d<04>d <0B>d!|j<02>d"<22>S|jd#kr<>d$|<02>d%d<04>d<05>d|j<02>d<07>Sd&|j<00><00>S)'u生成预警消息rEu用户满意度较低: r<>rz.2fu
(阈值: <20>)rHu平均解决时间过长: r<>z.1fu小时 (阈值: u小时)rLu知识库命中率较低: r<>rOu系统错误率过高: r<>rRu工单量异常增长: r<>u个/小时 (阈值: u 个/小时)rVu系统响应时间过长: r<>u 秒 (阈值: u秒)rYu系统内存使用率过高: r[u % (阈值: z%)r\u用户对话中断率过高: r<>u触发预警: )r,r<>r0)rBrsrcrrrr<>/s"







 z#AlertSystem._generate_alert_messagertNc
Cs<>z>t<00><01><00>/}t|d|d|d|dtj|ddd<07>dt<05><06>d <09>}|<02>|<03>|<02><08>Wd
<00>Wd
S1s7wYWd
St yY}zt
<EFBFBD> d |<04><00><02>WYd
}~d
Sd
}~ww) u保存预警到数据库rar.r/rbrcF)<01> ensure_asciiT)rar.r/rbrc<00> is_activer<65>Nu保存预警失败: ) r r<>r<00>json<6F>dumpsrrg<00>add<64>commitrmrnr)rBrtr<><00>db_alertrurrrrqDs$
<06>
&<26> <08><02>zAlertSystem._save_alertc
Cs<>z2t<00><01><00>#}|<01>t<03><01>tjdk<02><01>tj<07><08><00><01> <09>}dd<03>|D<00>Wd<00>WS1s+wYWdSt
yN}zt <0B> d|<03><00><02>gWYd}~Sd}~ww)u获取活跃预警Tc SsBg|]}|j|j|j|j|j|j<05><06>|jrt<08> |j<07>nid<00><07>qS))<07>idrar.r/rbr<>rc)
r<EFBFBD>rar.r/rbr<>rprcr<><00>loads)r|rtrrrr~_s<04>
<EFBFBD>z1AlertSystem.get_active_alerts.<locals>.<listcomp>Nu获取活跃预警失败: ) r r<>r<>rr<>r<><00>order_byr<79><00>descr<63>rmrnr)rBr<><00>alertsrurrr<00>get_active_alertsWs 

<02><02><04>(<28><08><02>zAlertSystem.get_active_alerts<74>alert_idc
Cs<>z>t<00><01><00>/}|<02>t<03><01>tj|k<02><01><06>}|r+d|_t<08> <09>|_
|<02> <0B> Wd<00>WdSWd<00>WdS1s7wYWdSt yY}zt <0A>d|<04><00><02>WYd}~dSd}~ww)u 解决预警FNTu解决预警失败: )r r<>r<>rr<>r<><00>firstr<74>rrg<00> resolved_atr<74>rmrnr)rBr<>r<>rtrurrr<00> resolve_alertms&

<12>
<EFBFBD><10><08><02>zAlertSystem.resolve_alertc
Cszgt<00><01><00>X}|<01>t<03><01><04>}|<01>t<03><01>tjdk<02><01><04>}i}tD]}|<01>t<03><01>tj|j k<02><01><04>}|||j <qi}t
D]}|<01>t<03><01>tj |j k<02><01><04>}|||j <q8||||d<02>Wd<00>WS1s`wYWdSt y<>} zt <0A>d| <09><00><02>iWYd} ~ Sd} ~ ww)u获取预警统计T)<04> total_alertsrA<00>level_distribution<6F>type_distributionNu获取预警统计失败: )r r<>r<>r<00>countr<74>r<>rr/ror r.rmrnr)
rBr<>r<>rA<00> level_statsr/r<><00>
type_statsr.rurrr<00>get_alert_statistics|s.
  <04>(<28><08><02>z AlertSystem.get_alert_statisticsc
Cs\z||j|j<t<02>d|j<01><00><02>WdSty-}zt<02>d|<02><00><02>WYd}~dSd}~ww)u添加自定义规则u添加自定义规则: Tu添加自定义规则失败: NF)r?r,rnrrmr)rBrsrurrr<00>add_custom_rule<6C>s <08><02>zAlertSystem.add_custom_rulec
Ks<>z,||jvr*|j|}|<02><01>D]\}}t||<04>rt|||<05>qt<04>d|<01><00><02>WdSWdStyG}zt<04>d|<06><00><02>WYd}~dSd}~ww)u 更新规则u更新规则: TFu更新规则失败: N)r?rf<00>hasattr<74>setattrrnrrmr)rBra<00>kwargsrs<00>keyrorurrr<00> update_rule<6C>s


 <02><08><02>zAlertSystem.update_rulec
Csfz||jvr|j|=t<01>d|<01><00><02>WdSWdSty2}zt<01>d|<02><00><02>WYd}~dSd}~ww)u 删除规则u删除规则: TFu删除规则失败: N)r?rnrrmr)rBrarurrr<00> delete_rule<6C>s
<08><02>zAlertSystem.delete_rule)rrrrrCrr8r+r>rrrwrir;rjrkr<>rqr<>r<r<>r<>r<>r<>r<>rrrrr=1s W(I&
r=)r<00>logging<6E>typingrrrrrrr<00> dataclassesr <00>enumr
r<><00> core.databaser <00> core.modelsr rrr<00> getLoggerrrnrr r+r=rrrr<00><module>s