2dep-7DeneGBx9 z$Vy3IEy%MMOIGU+@t?&i{;Vnq3Y|7bv9-WXOF7N?*bQZ{f9Y~enf#r4|$d#ntPdf+FalJMBwdgNgYQkOrxX zywLH28(&zYAA~}XICdQ}B)ND&9hd_3Lq$Lf$ty>dnTx4TsAp!Bq04If1Vjyy=w*^N z%fH?@k6>=K=OiQyy2LC1nPPW3KKgiP{eF*J@WUOaCY{uyS0Q}~`{NgrHzw%U)n-!> zOv@4stecoWsSL$5{Y|JNq`%Ew2B{NbkQ)$i$>~X&@BGwk^OQpPtTxZ2g+b3U>N>0? zLf$C-U5U9XM!iSOWG`tye`;;(aa@;^lNg;i2jdI!)o@Ept0LY&g`ozFSi%$EUtOSN>XI& z2HOAMxaGf5{Qv*j@&$e{|Ck7v2$%?%2$%?%2$%?%2$%?%2$%?%2$%?%2z-AKczQ!_ zHtlB?Zq$D&*r5O95b^(YHSis>{eLHG%Rg-SA6x$8mOI~{0h&EE5ik)j5ik)j5ik)j z5ik)j5ik)j5ik)j5%_^4@RJSOvX|p-|K|PH!yD5tQ7G;P!zC>c?uozHunqN=jBzZK z{~tyF%s(aqCITh`CITh`CITh`CITh`CITh`CITh`CIUZT1Wfz?2Rymv&`bnO1WW`> z1WW`>1WW`>1WW`>1WW`>1WW`p1WfziBn1-z69E$e69E$e69E$e69E$e69E$e69E%} zA3g%6{r|(CV{?Qi0ww|`0ww|`0ww|`0ww|`0ww|`0ww|`0%ZR`ne~UPXa8|? 0(?BR+G$(hTE`A!tz;&-(gW}oyK>rzlzo6LG#Ii&|tEv^Zb8=_%PeZAjH1(_l( zP0dk%D43IzvsxJq)PA5cZN}OsRHtNMK2`fj8NGliXWR+#FbYO+k(A{4)x;!5aatL? z#syQVJgt5)Hk2!)0xC+!UAjGY3P01x=LXSlNxd6OwvC_wOP<4mf^zR1#48R|b)kDG z!r`*+r-BtjeLx^F(uMj%d0fXs>FZD?ub}3N(t{#UJtzpXG XZGzIqz)K&LYJ`_c*?9oK*n b; zsDKimZ9_FC)Zn1U*D7aXDB$+pDP)pPrH~H)YP?}1Sm|WLb^mvUmA+AJyY#A!>vP`M zE|B j0^Fq$2yeGJ2`fXq{Jps z>oI=67o~br#b;3mcj?-sR$XtbTOB6VS?zv^QjuH-7f&v=kEjm@QKB!$VUg5J_feQq ztAIIp0;PVJ&fHa}@33Y~r7BTLv||ddv2vZf@~P5!OFexbx>ZgAdU5%vdSOf}Ln+iJ zDly8R71cDkfUj0O^yIZTB+y@UZq9xtE32Ygh5&kTlNvjL=2;kP^+`poQe|jH>A9*? zc{@tAK~Asr7>!FPofxmCR-$5FM@;>+4HXVG%c1KMMvY03B&y)X`X$#aL@7?HjmNc% zXHOYdhGhGx#KH-^s%H#^;;7=WRv8i6 ^{wT zZ#T*>;tC#J8bMLN9%X1ine0kT-&D?bky6}oYiZ;<^jxUyOQ%psls 6pLRqG-(>#lkj7wepXbp{{bSQpC8B?wa$!(H7BEgD4 zF-NMI+@p#r%otvLzMm(Sr<8gliZX*v6Sw9Q^B1`)DN8Cet#uK#QLm0G=SS4xj-_*B zsfkr?EGUbgQGx1*ZQ7UzV(R&0>R7+hGmg5n;1p3Rn#wZMwA|@M&z8$5&fGU5MU*Wn zKY#h4-B4E3TC&4gw8K$ov6hseX!pPQ&kphDSHF2FLKVJ4LAT%c(he#0TMMd|yRBB6 z+g4QQbXp4voz|D$lwOJ+X_k$THF?4x$>Ep&{a^p$#!DZ(|F>7ZB>O-6NBgtzpZUi` zz(l}Az(l}Az(l}Az(l}Az(l}Az(l}A;A =n3JvO7M=%G$iSv~(kOTN9u4D*dFkgayNeyfrB4Tz&i+o@nLT%$N1_hjfb)!TgNwo7KCsz#*sMDWtd^2uN3pGN?K@`t z|JNpM^92(D69E$e69E$e69E$e69E$e69E$e69E%}?;QfqZTY9H&6|p_|G(uwZJBub zAAj_-=l-yH*QTN;|7GLvH&kUm#BKA>cNT$T&po>-x1=Py!x{A)49JH<;g8&*un(ai zk(P!AIYI{sBCB70uB^sYTIZ7LN_XyZNvl62y`J;5-zQa6)w$kr)ksy ?TJd|7-C&TrAxfl>|5>f?wX3q(wYyY z_gx=Kuls%5=+U>UYg`rYRMEB9(?+^Ys&T#Ts&Q47xoQodMZ}vq+m3pk*_8X*YuO#y zVm@%3qg4(^JYpKset9+x{j^(O7jzAgu)7I?L7oO#AeuH;9s~?UqMl%saBl`htny6M zkJqD~rsg!r(6M^IPY!xzcf=bC%ggifQ808UAp06*H)g|^nnnEsZfbA&>2DR|cXKx7 zzVJf!@s9+?o`4*VM)>b%(op4V>%bXq3CQlC2OZs4T2uCJY0c|4t94sCbkw?=qNq~O zI5Qpz$gOf9b=RJ8H-fu@qV-Q?KCtGjfml5$T>TNZ#~byx%0@m|gU$tWfn_r3KXVd5 zu0>C8%6;+0?Bj1SltEA6NYw9*c=R7~(gD>kuY)PESc-(wpp1s1o&Zayh%Qoyc2nII zf-CKor?tT#Dl%w_*eX&_s2~^)PcBp2GHo{cLG#q3lsxg`w}w#oh}#F22>TDF3!ya- zT?M(HY~Gan$}8E&8U%8!a--i1Vxl=S{`_ R$SPe2G5Gy>tOV8 z3omY~2s =LYr9e7D;z^sNU@jgrGzil`CB$r7e~E03fDF zxl1*tbq%^5;Aje=P4Hec910LKP;hhVNxg-}Ca8ypR$OlOgdtlrOjq1(^hDe`Ge)q? zLp(3Dlh%h&vy24-?82*yE^zhlYIEXqXTX>St~+!n2$7TdE>@UkPt@DE&Mp3^5y!CH zU>v{polF*{iQQXOv1hMKdR^x^G28mZOk&%Xv(5R`Q@Ir{XJ`3?KKXFu =PPdUhNnO(F8SC!p53uVaRfF}}l z2SN>4nvD~?-W2MiOq)W{Wz5^Q4Nv91mAlrw2>{)8@z2I>Pdxrnn|O2sOxn$4){680 zn?K0<(ceDzn`d)#y6~g<$3(zHz(l}Az(l}Az(nAWLEw1abDMHYOS8M=3=7i@cdi$v zg}V{{7x-b8b;is)KT1;+*M4pt?a}bk8cu4hH?W&m=z{5LCifc8rKyLSdcNGs>gu~b zX0mc%udFm}H7{10@w7tI4a=?mP)o#}VZ>^E2+D`nxbqkrM(>>P*y v7J%FQ@)Bg5RtNOwejMUkDejTZO0(Zt*$jzAbw-{m+h z66dw!1RBU`fXoIscEFi5)b1-tae#vnN(a*DolMU3AQuSohr}1BmC1h20+LgRv<*lB zhjSbvr=Bu+6bBaQ7zPrtb=>2WBzQ-?brlCL;&Z)A a8A|*r;@5JZkloMx= zZegkIVq&Nh**`eT2B*WI56<=?vl>2#?%?PJGM&ua Wq-S{jObQ^-At1R3aBDr-n${-iP#TP^2bjIs<-dJu8SrEX{S{``t}_j0ljP6R?H zSNQnI{0U|HoFO|%X0ADcKi0`PRtOlL8Ik4%>FbpKuEg9G&I!X=OqSEoQOc4x-r(+X zE|}!Z@%V!qZ@ht|8(O!K3S_!ZjSV5gOk%uk>Ey%Yy&0gDoIx6q7 gA(}fv)&MKZuLZ(cpDD@1v#dm|5!R$0?q~z)Z3SnR5D)ZGB7U zFC@l4$2lN8rVXj>91^f_LJ&-S4rN|>;|=5jQO7QFx)J2mLHZex9aEb?=h0Y)#Bge7 zoVt54)WostNC$)LAjz3w91YT5#I5N&kJ?V*KO`wxI(I5@d7ko-EG)>tCO^42lpLB; zhCAaAuasBSf+3Kg2Y9|)SGT(sILGf_MhD~b^8g>0OLte`2oc~+T<_K?jWVh{I(O;I z*+D73(5a4H ?)~{_?>^?f6pH9MTsqojRMGnE|6Ap(JjB zN 9qq*H9)z<>m#-H**T9WyaO^nZ$!R zyol>0WyT>Th`(|u`^+0}Fb``oYTy%`B4bF=QBF$3M2&U@<|GIDx|hc1ki?Ru6(`~0 zS)xzh$H6N)#>K wc*1^^b@1(L}S K z&Y7vV=QV`H;jk~-`qYsrWpRX)ResUdPd&hQ)Lx|F>?3aKxQa7${1AP4=ra~NmDtR0 zki(z_O&Hb6;a0y_#)T?5N)}RODCmbN#<_0rQ8W&C_ 0g{xMNY6fmbVl4L(zxRJ(um)aU)$&j zHZ*$tc$8>pW=6R;{pEuT4(_mWqmxhn88}P5G!ALTq>V8my%DW?0vs?JQ5@yi(sD8x z2I`=J&UQe6X-kAiu*&R`K1%I?pMj=C>x6Oa^orGlXn>A89=$5y;7@R~(sqe|O*}Y> zN5p;3o&;J!bC?{k2jyIv8v^^;Xi6dL_>tAdP=GP8D5s$=UO>tu2svtLtgW f+_SfqvZXRRDkm1=^OMp6kME!qX_Ny2shM`I^SqKn z@-+J`ANw0aA&WQEbO0aWj7f~1E>7l^ix-t4&?*U%WG^y4O+eiMPRY9+m~31mDY7`q z`T;Qxlo7Ggr35EhHhe!A34}r)wKT8zJXiu!2wA8g>MtK%HQ5+{ic}<#ge)cY={W27 zbm}h6cJCA~k~n*sT)e?z2Hb=sRjH**kSnn}WzZVzhx`SjK|)CfT>0s2yhC~$J6nhz zh=!zk8M}?rAx-C?FpoDSqF$-M>c}s!+VY)N`vD06Ne4d2PiOueQr)gv2@K(jG lf< zc8`w6PIp6GDP7mmpnw+2<{NLYipi=Z_}r*UVxA!Qk%(EB-YnzuB%>+`Y?(}u(HYB( z*3kU5ePtDSyKAb^MytbOw-j#h~|Cr_l98?}#e0ci{?WTH9TQA4#B&B31HTbXe&; z%b!6Dd)|2)`+JR2tKH%>aEZ3`W0}3$i*C>Y+ji{HiAz{uDXp^BgXGLS 0-LlduP5`Hq3f
$ zkiab3x5TIQ@n|9hP$n1VvFwr3DpXgZ0Wo9hSQ`i}arG9|;Y4>VHJ|95I&d}FKZJ`| zbMZWGx%brIgml3kySsL`-Cbj|6kF^LjJLAfsfm0#XnxL9RPQ)g;(gS1IlY^oN}Aq0 zG=P^B=rA!&wcxb~->j QZd@{O^DIzl=6dafp~T!t25L{*8M zSFZFbeW&rJL0oy7BsfD5{KyNslov$)@FuNYO$y{&w7V7!{JkPLNt=NKg85*kLAx>- zVM2K2NyyJlI;l`Qh$7gO6G!sZ7$xm9uG&~^0hQ9#NxJah5X`a^M&MFrB4#M$&FdM* z*>@bwkIyfFJCFlFUkYKdQIc)-)ZOIBpfY)%nDRE@xW{S!^dyL>71oGS{NefJozs+T z`{6yL8dpXi)|S67wU&V8tzdatAvhVI61$;}T*3U~K1T7c@rc!8 jUtahpZfVka&chk9CWk0T2{;0HS`X$5>FaW z=393-tUH_~mcrt~q7vI Fo|;_h`~>2J#WtDSJ)_CKW6CIUrn8waOKH_p(vgiz zfXF&bLa0nE6=|j*&eYzEyLMG7C;KsfJER=W_OICwBI6>~31yn}1ZZxY6O~N_Hk8!C zK`hVE7d24`qJ9Wnf|5Ft-@}lq9c;NGxBotl2$g6Rmi!SZ7>Y_-ERuxC5J)^|8O_pL zKc^?KeAkCVO;R-?_zue9H!T*6nX^^%G%3j0`sePTf@#h~$dpOqN2rzL>S?QE cj8+R!ZdOiiHpaQ_imwis6}eqJXB1W&C5%u zcncDOC5+mK^=6WrVqu>lf>N3%6dZocD1})3FPx;juY&hUi<*Nb5Tk+|Xpr+E!-WTT z03?DkdP$4~p2xY%iSy%$u}kPZEZ54iy~ 3{#Rs83fw=ZA_Yap*_AZ zK#618Mp!qawFJ41Zw<3ZGmeUG4R>f)#4||qD{NshB1nKPb}Wt0vxd#x7vmwjgxoA0 zB+-N)CY78SLlD+F{1?W&z3c=c>v8O&g0 *2$h%Rm6s(KK3DrE zl(Scp4^Lt-;nrF0L&vBwNNvLP{1g~OyaG7Lv4;hIV2UhLJ@s(LH$>v* F2g1L9sGBi>A>YuGw)7M}}BC=Sxr_&%IMsj&`|Qnh|yO9KK3Cv3MRSed4p{ z-*(_-kWndKWB=sNvdYBhCrW1r-c59#0%-`kxPq@?sPEgH%L`qOHmUH;kIysHXpXK+ zU8Iinoo2cwA0Qbgs7P`iNrTu@qTxyVU=?jw?%zUcBwiiCaaef;99pVs*uBD|%L>#R zZ!mFu(bo2;Z9=ngGK?;K2y9xque@SAf2w+Cd0s_@(m$A-o`xzZ%uv4LFZX*Iq}}0= z)atYpLRIT#mjT`YAZ#=N5a SgnxJ9S9tF5uhZ%v*QapX z<`W&v4JB^QvjbPRYlyD2vA_cgbArC34t}Cc-iC6cTpuFX2Y?+-FjD{~tQ)@U>MCT{ zhI%3LRa+=yb)QZX8l7}6oj li;^us9iR_M@{Od2k5p1DWr_BbI?UyDi|Y1NlKvf*+}u?Bi1gKgE|T{oZgW zkNtV*g~t65#sfsMOwa5A6fOX{tfmfP$!2rn%!hhwBGG*xn=$On-Wdu-5ic#hD%IeC z4V@drZ!|cAdj#`97K$)XB-deoRJgq`Az*Uc!}{;8*)P@M gg_~CBYU(W1K}T$yw+Kkl?f)_EGYF zm}I0NtXN=K78Q_?(YEj=Pt&Zx6*ADv5>WJ=hEB~Ukb~~}1kX6uMW!KkA8EFjNTSC! zJkxLAQv0IP(a#g-!Es~M2~e+N!$NP9IAHJu9F_)orF*PsT}aH`2NA&84*A@Ko(kuZ z(e&=05O1=6gpn8-ro0UItaf;knX0j0m7J#C0{C+@1$l+G1IAj`j^NZ7j?vE9tzp0o z<1hZ;3`#Y?8wSy*Oi#ceQBbSQjqqxRSD6x7AZv0@IF^L+4gW4}5wgYze1(?Kw={7) zIX%t*Zr5Cyu>Xf+iMh-09ik{2<{Mwnu>Wm4>`sf-QD7~xenb1;S+c(U|6dpWPjIAv zH`)K7Dp9Whmaf>p9li~RGbRrshwBLrYK$Cv7n-X^6ji`(iBQ*Opdu5={;AFFy>NdB z8=H>7lP??&MO^U*@naJmi3>|!z7&-GVoSa$bP#@Xskt!}G|lbXuqSCPx!i7=+o+Z} zKge=jk7}4w`iDuMxH$|dqp^XovUr8#5-wDgC3ZSK*9ZFznkBiv5SViMKD_Fzi^O3R zo;X80I*U-xuzPrl40+*JGOjn+xg|g1@a?7U+f-FV= 20esCDT_L0Vi $l@fdeDnCWQ^ zWn-Z23X5A_v#w93Ok*0O9 ;M0}FW<%ooL##CU?55|~4WqGDixZVN@`=m^6+s+%_WLlTsu1!S@Fo^k zEVOQ%n0K8R1-Uf2gpP=1K-38@UaZ5tS4&Il<)dOZsfdlbJvEqe4#rSA9w^iI5y`N0 z78+h30f7QQa|5))khjNys1IHaV0g!8+eITK7#3gTl^K2F{n9iKd;4J81~qj;q^EuF zgF0=OLRUIrgFp=@hmY_nkYk37a|(9AMg)ID823!eaIs^_gE>=HQ;Dz=Ew)M&)#Q;T zCq9El2^!?xbLC+NXb@YktR+CN0; AQ>yiE@?@<2ZAJdr}@4<2Bj3WB@PYop?Mz#H<(2bAk0RFg{31RDki z3SeQ{X=|D{D99_JM{NKNy6v!u+d_Nd{R^e@_law~mo_SDHeH%UABnj27$n_Qe*M75 zVLn9Y_Id(=gC6fk2M{3#Jwxk+*d#( l_C2g(qqcBHhqS!|j(u> a`Y5gsi54JSy3N^eH4Y$Y#AWbj}?4CLBt35S;Ek)3n6lw9&Ie<5%X3vp8 z$m81~9X@;*fYII#1^j5+Fe2h&B{L9RiueJ@2g8;a`O>+KK1FAj5)rM^e+xrpyALeD zjZ-7{;Qb;)%+N@rg@O=XipWtq7aWnATcT1!AaoFQda-XOHd;v8h&J0SkSIr5g0zYE z5`9((Ld*!+(u+5kj+ug&D^N|J6NWX#Ca}V(`EP_z5e;a+iv2P5JR-U7vItD|R5S8c z+2am}XhdR{4MqUAsBPqzgk*=AmRH7`H0TsA2t}_u`Durkbzz~`g+c+TwZKxyGLgd) z=+lzqK`5vphyw;RFK7soLa(4bvVRf*BDjT%ypZs~`63&72Uruc(2?jP7B83%F-syw zP{i19&>wLW0u1IS8$*%kTN!V_Mr;m+qi+=yz_%tSMUoDJ^@a2hQwVOxKC<*%sUeIF ztvtW<5;wux->-igBA);CZ$AzTwx?M`JP#?m%p3SL#shO3W)>tnw}vjU7agb;5;dj1 z?bXH30X7bWg-DyQJVgF H?v*^!^0G5UNQ)$pOmF_>vl C=d475hqZ(hO=FvMVpXwP(hf=yt)!V@LF#wIIw6Yj0}Y&R7V6ataz$&D_? z=RZ{jE|OoT`!nqQVN5A|5;dTeg_~F+m|Y+xC5TD5XW{SSCg{`W;b hTe7C2s7 z7{NT0>RLVIU~FFjHl^W2hIw_CJ@XtuknFl8Zh^QdfX}Fx;Cm^}0q#>B*Oc+fETAo& z?BNj$C@Zq`smn+0Y;~gFw2#0m@}>LOsG!@T6m~&z>Jb>QFjaXNbYG8_WQCPh*TEhd z*ah}v#r9ReHQJ34@Vd-3?Gp3Hv8JOb4hl_EHx@rjbX);(tgwI!iY+BYMFk~~FM7BB z4tTM1eGB-%{M)}n1-$=F7Vw| 9I(r4lPGpB _n2PvR#^0Kf%C2xT++%zDCe0cCRl>vF;qpRmDUjW0huZSoe=&3TOWEA z+ry+C-5lokupWr$f8IFOjbgTNq0qyQ0t>NR#45wf6T~V-(2GzgtOQk_R=-%t`W&>) zDn{n8*zE7@)HS9)&9K*(H7sb#eS|2%IvP!kbU{l;_g&WgyvZlHm3P2UL^uAhmtv;o zumRMDS|_~nR902P5Y&v3g(0l++yN1;PjNVy5SH^$MIhd>8LZ(hDx|RSN1Lo7x{FQ< za4A+{uL^}gJAjbdZYH4;`%G62QucoGtf((57AICBF+nM(0pi3E%!O?l)NsLd-W}&4 z<+|G4`Pj$Lhq8@Dn#~`0F4)l0jC*0>>Hz_~a+AR%D%9{f6l2&K);l_Z!O@a{DTOC{ z0O%fVV%Ec}$dt(Y*;@RC*a?7PNs6=pT>!fLQK7-IUqw6NB1}R)|G~RrG&MwU %BNoWu}ODKZV2K|9GdW6~<4RdrB zge(pK@mVbGgQD6q8sQe`yh;ZO^rGf7;&XW}B?;?7%3RP3I!veEOC26&?R9m zdWG3Qzyd30AZ8E{_G&>anwo@R(UBFdbgc0rIoFs++2_Ycc#Ou;2mZXb!L5Dl8ANvy zr*2})UQ>#&pF4(1Lv+xoVmDk6WGIgJiSk3^eL6R%ZG6#=jQBVPmvTXnH96M(bEozF zo%z^6W)kB)Za@$I!VtBSNy0wEY*N5wyS`;8PV2?z;Tt%O(EU` h&2k=d9iGd(a6y%(u0Ld8T?`vslhH)VU }%ttBYyd2fNk6 zz85}nGlwfy%VF@pdgdVx1A@@Ys%vWY?yeKGPIC;4Uc@fYms6`J9EQoZV|8#$VI9qb z4d}?T7Q^?Xk&lQ}U{@Am``I@x1_2gevZtuW+TCP_OTwDwzUppwIQGcxuEo-Kj>H$v z!YNI`Rl*U !PMbq!Ehrf-KQ9ZLa17nw#8^)V?GTPt_wL(!uzUz{UurNak( z9JWQeAjO3gS?sjn-2t8J455sUf?h~`fbj;05KRqgKotM=N!CiSn5lO~JP#jf?Z2p; z7haB$OPVjJf1)mLXNcx9K0A+o>71+`1Yi~Jd>1wfz^IrL4$l@*YS?n3^WnT>j?jSQ zZ5)4O?S^KIgZ$g3@FAu`f?#llbr~$Nc!2zdmnnpkp^ ;W6L-OzyhhhKEuJFQ0&71U1u40XHD2@A=%ExTO->8x7mI?}P!*Q*pL>v0B@PAC z{zzMUK9X3|1{&>6AK8Z*2lx#|AR-}ua-tpQ&RzRmu5xMLe&pT9`d#TLtb?AitEy^e zdAaMC`)kV!3Q8Q#;+_|tcr`2c=!Zu?+)iA1G!JZfG_R|A>( FQUepz1Aem{WY32+w4F3<1oBHjoJ>#oC%ss%^A; z?6pPTwccssZmm;YWZ6)(b=S4!Q&ivPK`wTp!B#L2Z{jQp)}3$t@FodLn!+^6sKm}F zSG$%To_(*>RaRXsy$2gIR%dg)XAq6WwdIZiXJLU;ipkl~SSl-DCdqiL6q4~+X=l^c z7k~QGto$^|=yaCU;V|hTkzr~%`9nyK1Ye7a5=GME?js=qlJB=bzd! wq zR_hM&pT#QvtSSi#oi;}?rK$p?v{3-7ZLojoa*PjY!~d~#>?*=pz}BE Yx;(=Fs$dX(o8${#-}c7@ngcaT;C~6;zu0qNOgjJbE=lwh&IQ` zJWl<3<2)rZLB htq96Shr(i7m1 ?c8Er$bk}_SKb_+Y5FU*Sur3mDrpPiR}OEXRc=9Kl6`? zfQf*KfQf*KfQf*KfQf*KfQi6&1cBJzjqnG!T-%?28UBE`$W!X=a&3M7wb!z?X6#@T zt`{n~-aQK6tw&@f{G2Gcj1v-vN~z*2a_+CSqflZiE?V6!DDDWyo6$@slX_r2<)-7v zJ+|g@*yparLLwCqf(hdDr *L+nB-A} zr1Z`~nEn(sN%uGgl58tvV>ox510(Zz*EkiUfk1U^6To+|G l+eS2yf&XlnUDEQMO|9J9kDHM{UI^2Wawu%U;y z@&-S)WHQ59F;~WDRrr%B;~Vzm3RjC$MWo1@p}MOF>Heub0_*YKTHXM51$>pLd-4MS f`!t_p+Anpk+PeL&56jDK1v?$JrIc^9u;Bjz%32Dt delta 50 zcmZoTz}nEjGC`V^i-CbbV4{LOBiF`+1@?;y1Q@wCGZy^k2UE-rn^_9}+HYoj@LwJP DW~~q9 diff --git a/logs/dashboard.log b/logs/dashboard.log index aabaf24..3e3ccfd 100644 --- a/logs/dashboard.log +++ b/logs/dashboard.log @@ -1228,3 +1228,4765 @@ TypeError: WebSocketServer.start_server. .handle_client_with_cors() missi 2025-12-08 00:33:14,420 - werkzeug - INFO - 127.0.0.1 - - [08/Dec/2025 00:33:14] "GET /api/alerts HTTP/1.1" 200 - 2025-12-08 00:33:27,392 - werkzeug - INFO - 127.0.0.1 - - [08/Dec/2025 00:33:27] "GET /api/monitor/status HTTP/1.1" 200 - 2025-12-08 00:33:29,903 - werkzeug - INFO - 127.0.0.1 - - [08/Dec/2025 00:33:29] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 00:56:18,014 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-08 00:56:18,825 - src.core.database - INFO - 数据库初始化成功 +2025-12-08 00:56:18,831 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-08 00:56:27,849 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-08 00:56:27,869 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-08 00:56:28,009 - werkzeug - INFO - [31m[1mWARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.[0m + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.3.12.3:5000 +2025-12-08 00:56:28,009 - werkzeug - INFO - [33mPress CTRL+C to quit[0m +2025-12-08 00:56:45,294 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:56:45] "GET / HTTP/1.1" 200 - +2025-12-08 00:56:45,731 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:56:45] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-08 00:56:46,149 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:56:46] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-08 00:56:46,209 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:56:46] "GET /static/js/services/api.js HTTP/1.1" 200 - +2025-12-08 00:56:46,354 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:56:46] "GET /static/js/app-new.js HTTP/1.1" 200 - +2025-12-08 00:56:46,543 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:56:46] "GET /static/js/components/AlertManager.js HTTP/1.1" 200 - +2025-12-08 00:56:46,546 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:56:46] "GET /static/js/components/NotificationManager.js HTTP/1.1" 200 - +2025-12-08 00:56:46,985 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:56:46] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 200 - +2025-12-08 00:56:53,110 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:56:53] "GET /api/workorders HTTP/1.1" 200 - +2025-12-08 00:56:53,240 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 00:56:53,248 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 00:56:53,251 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-08 00:56:53,434 - src.agent_assistant - INFO - TSP Agent助手初始化完成 +2025-12-08 00:56:53,434 - src.web.service_manager - INFO - 服务 agent_assistant 已初始化 +2025-12-08 00:56:53,435 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:56:53] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-08 00:56:53,487 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 00:56:53,491 - src.web.service_manager - INFO - 服务 chat_manager 已初始化 +2025-12-08 00:56:53,492 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:56:53] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-08 00:56:54,333 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:56:54] "GET /api/system/info HTTP/1.1" 200 - +2025-12-08 00:56:54,421 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:56:54] "GET /api/feishu-sync/config HTTP/1.1" 200 - +2025-12-08 00:56:54,425 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 00:56:54,429 - src.config.unified_config - WARNING - 无法加载默认LLM配置,使用内置默认值: No module named 'config.llm_config' +2025-12-08 00:56:54,429 - src.config.unified_config - INFO - 配置文件加载成功 +2025-12-08 00:56:54,429 - src.integrations.ai_suggestion_service - INFO - 使用LLM配置: qwen - qwen-plus-latest +2025-12-08 00:56:54,430 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Number -> order_id +2025-12-08 00:56:54,431 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Description -> description +2025-12-08 00:56:54,432 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Type of problem -> category +2025-12-08 00:56:54,433 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Level -> priority +2025-12-08 00:56:54,434 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Status -> status +2025-12-08 00:56:54,435 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Source -> source +2025-12-08 00:56:54,436 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Date creation -> created_at +2025-12-08 00:56:54,438 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: 处理过程 -> resolution +2025-12-08 00:56:54,439 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR tracking -> resolution +2025-12-08 00:56:54,440 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Created by -> created_by +2025-12-08 00:56:54,441 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Module(模块) -> module +2025-12-08 00:56:54,442 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Wilfulness(责任人) -> wilfulness +2025-12-08 00:56:54,443 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Date of close TR -> date_of_close +2025-12-08 00:56:54,444 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Vehicle Type01 -> vehicle_type +2025-12-08 00:56:54,445 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: VIN|sim -> vin_sim +2025-12-08 00:56:54,446 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: App remote control version -> app_remote_control_version +2025-12-08 00:56:54,447 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: HMI SW -> hmi_sw +2025-12-08 00:56:54,448 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: 父记录 -> parent_record +2025-12-08 00:56:54,449 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Has it been updated on the same day -> has_updated_same_day +2025-12-08 00:56:54,450 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Operating time -> operating_time +2025-12-08 00:56:54,451 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: AI建议 -> ai_suggestion +2025-12-08 00:56:54,452 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Issue Start Time -> updated_at +2025-12-08 00:56:54,464 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:56:54] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-08 00:56:58,379 - werkzeug - ERROR - 36.231.97.35 - - [08/Dec/2025 00:56:58] code 400, message Bad request version ("n,(Rǯ^\x03XÆ,\x13\x13±ÄvÐ×&RR]ÃX\x14#k'sà\x1bâ\x00") +2025-12-08 00:56:58,397 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:56:58] "[35m[1m\x16\x03\x01\x06ö\x01\x00\x06ò\x03\x03\x80\x8e\x18:\x9e\x8b\x90\x1d¾\x9côX\x9a0ð¹¯@S\x8d\x1bR8`\x1cF}x) \x06U n,(Rǯ^\x03XÆ,\x13\x13±ÄvÐ×&RR]ÃX\x14#k'sà\x1bâ\x00 [0m" HTTPStatus.BAD_REQUEST - +2025-12-08 00:56:58,400 - werkzeug - ERROR - 36.231.97.35 - - [08/Dec/2025 00:56:58] code 400, message Bad HTTP/0.9 request type ('\x16\x03\x01\x06Ö\x01\x00\x06Ò\x03\x03qºÝX\x91hD#B\x01ÉΧ\x0f=\x0eËdALÛÂ\x968KåHî±U\x84é') +2025-12-08 00:56:58,400 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:56:58] "[35m[1m\x16\x03\x01\x06Ö\x01\x00\x06Ò\x03\x03qºÝX\x91hD#B\x01ÉΧ\x0f=\x0eËdALÛÂ\x968KåHî±U\x84é \x8f½¦\x16ò\x83å´\x8b^®¢K?ÖË\x96ìH\x88m)¥3(8ïz3Zªc\x00 [0m" HTTPStatus.BAD_REQUEST - +2025-12-08 00:56:58,652 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:56:58] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 00:56:58,972 - werkzeug - ERROR - 36.231.97.35 - - [08/Dec/2025 00:56:58] code 400, message Bad request version ("8\x8f|\x05t\\Ê>/\x813Ú\x92_\x81\x07\x9bcÖ?TSÅÏÑXm%%\x94\x94\x90\x84ô'ðÃ") +2025-12-08 00:56:58,978 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:56:58] "[35m[1m\x16\x03\x01\x06ö\x01\x00\x06ò\x03\x03¹:\x8f\x00\x92VoÏ$!;\x9dIXkCL{câãKî\x9fñÕ\x1e\\B\x9c\x8c °âg\x0f\x95ÌY|ÕHs\x13øsßøD\x13\x86M&ú^j\x81_uÊÐ^ù%\x00 êê\x13\x01\x13\x02\x13\x03À+À/À,À0̨̩À\x13À\x14\x00\x9c\x00\x9d\x00/\x005\x01\x00\x06\x89\x1a\x1a\x00\x00\x00\x0d\x00\x12\x00\x10\x04\x03\x08\x04\x04\x01\x05\x03\x08\x05\x05\x01\x08\x06\x06\x01\x003\x04ï\x04íªª\x00\x01\x00\x11ì\x04Àõ&l\x82\x92¼ÝìBnCeÅSNnûÌÓHs4±\x03ÒÑ2\x92¼O£@\x84\x89( \x09\x07\x81,Û:¯õrÂ\\R 8\x8f|\x05t\\Ê>/\x813Ú\x92_\x81\x07\x9bcÖ?TSÅÏÑXm%%\x94\x94\x90\x84ô'ðÃ[0m" HTTPStatus.BAD_REQUEST - +2025-12-08 00:56:59,019 - werkzeug - ERROR - 36.231.97.35 - - [08/Dec/2025 00:56:59] code 400, message Bad request version ('\x1aAa\xad') +2025-12-08 00:56:59,019 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:56:59] "[35m[1m\x16\x03\x01\x06ö\x01\x00\x06ò\x03\x03û\x16jë,Û0e5|zO\x8dwUBÛDÝ=\x1c ËêÖ[îo_Ê÷\x1f Ñ\x1e26\x83¨q6\x99\x8c\x9a\\¤\x13¹n*Ïø\x91úoá*ÄÊufVìEð\x00 \x9a\x9a\x13\x01\x13\x02\x13\x03À+À/À,À0̨̩À\x13À\x14\x00\x9c\x00\x9d\x00/\x005\x01\x00\x06\x89ÚÚ\x00\x00\x003\x04ï\x04íÚÚ\x00\x01\x00\x11ì\x04À]\x98\x8a!b\x14ϤT\x90\x158\x89º{,ç(ÉÜ\x96.c¢´\x90ů\x90\x8d¼\x89\x05 \x11f\x92%`4#!\x92A\x9a\x0c«Z¢¼\x87&\x12Áj5½\x9b\x19WÄ\x8ciw¨µî\x1ah^\x02\x0f\x91\x024\x1aõÍܨ\x0dC-\x18\x05\x18\x1er\x0bR\x04\x95\x88j\x7f´öÈ\x93õ(\x98ª=ÈõF0ð\x9böÙjü\x87¸¯\x13}á\x15%\x8b¶\x96UÅ\x13¹¸t\x08×\x1d=\x85RÆz8éC¸â\x1c\x1aAa[0m" HTTPStatus.BAD_REQUEST - +2025-12-08 00:57:03,185 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:03] "GET / HTTP/1.1" 200 - +2025-12-08 00:57:04,270 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:04] "GET /static/js/core/store.js HTTP/1.1" 200 - +2025-12-08 00:57:04,803 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:04] "GET /api/analytics HTTP/1.1" 200 - +2025-12-08 00:57:13,846 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:13] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 00:57:13,929 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:13] "[33mGET /favicon.ico HTTP/1.1[0m" 404 - +2025-12-08 00:57:14,056 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:14] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-08 00:57:14,711 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:14] "GET /api/rules HTTP/1.1" 200 - +2025-12-08 00:57:19,212 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:19] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-08 00:57:22,436 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:22] "GET /api/alerts?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-08 00:57:24,357 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:24] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 00:57:25,435 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:25] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 00:57:30,329 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:30] "POST /api/batch-delete/alerts HTTP/1.1" 200 - +2025-12-08 00:57:32,130 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:32] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 00:57:33,842 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:33] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-08 00:57:34,014 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:34] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 00:57:35,041 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:35] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 00:57:36,262 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:36] "GET /api/alerts?page=1&per_page=50 HTTP/1.1" 200 - +2025-12-08 00:57:38,099 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:38] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 00:57:38,281 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:38] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 00:57:39,235 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:39] "GET /api/analytics HTTP/1.1" 200 - +2025-12-08 00:57:40,355 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:40] "POST /api/batch-delete/alerts HTTP/1.1" 200 - +2025-12-08 00:57:56,581 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:56] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 00:58:12,902 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:58:12] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 00:58:14,287 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:58:14] "GET /api/analytics HTTP/1.1" 200 - +2025-12-08 00:58:14,381 - src.web.error_handlers - ERROR - 错误响应: 预警不存在: [111616, 111617, 111618, 111619, 111620, 111621, 111622, 111623, 111624, 111625, 111626, 111627, 111628, 111629, 111630, 111631, 111632, 111633, 111634, 111635, 111636, 111637, 111638, 111639, 111640, 111641, 111642, 111643, 111644, 111645, 111646, 111647, 111648, 111649, 111650, 111651, 111652, 111653, 111654, 111655, 111656, 111657, 111658, 111659, 111660, 111661, 111612, 111613, 111614, 111615] - None +2025-12-08 00:58:14,409 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:58:14] "[33mPOST /api/batch-delete/alerts HTTP/1.1[0m" 404 - +2025-12-08 00:58:15,728 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:58:15] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-08 00:58:20,658 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:58:20] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 00:58:25,226 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:58:25] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 00:58:26,834 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:58:26] "GET /api/workorders?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-08 00:58:49,660 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:58:49] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 00:58:58,072 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:58:58] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 00:59:05,172 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:59:05] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 00:59:06,477 - src.integrations.workorder_sync - INFO - 开始从飞书同步工单数据... +2025-12-08 00:59:06,480 - src.integrations.feishu_client - INFO - 正在获取飞书tenant_access_token,应用ID: cli_a8b50ec0eed1500d +2025-12-08 00:59:06,970 - src.integrations.feishu_client - INFO - 飞书API响应: {'code': 0, 'expire': 3056, 'msg': 'ok', 'tenant_access_token': 't-g104c7nOSPYB6V6UE63G2DXX5T3ACJFDSQZ3AJ3B'} +2025-12-08 00:59:06,974 - src.integrations.feishu_client - INFO - tenant_access_token获取成功: t-g104c7nOSPYB6V6UE6... +2025-12-08 00:59:06,974 - src.integrations.feishu_client - INFO - 令牌有效期: 3056秒,过期时间: 2025-12-08 01:50:02 +2025-12-08 00:59:06,975 - src.integrations.feishu_client - INFO - 发送飞书API请求: GET https://open.feishu.cn/open-apis/bitable/v1/apps/XXnEbiCmEaMblSs6FDJcFCqsnIg/tables/tblnl3vJPpgMTSiP/records +2025-12-08 00:59:06,977 - src.integrations.feishu_client - INFO - 请求头: Authorization: Bearer t-g104c7nOSPYB6V6UE6... +2025-12-08 00:59:09,328 - src.integrations.feishu_client - INFO - 飞书API响应状态码: 200 +2025-12-08 00:59:09,332 - src.integrations.feishu_client - INFO - 飞书API响应内容: {'code': 0, 'data': {'has_more': False, 'items': [{'fields': {'AI建议': "模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:The widget weather doesn't work \n\n相关背景信息:\n无相关背景信息\n\n请提供:\n1. 问题...", 'Created by': 'Evgeniy', 'Date creation': 1745769600000, 'Module(模块)': 'local O&M', 'Source': 'Mail', 'TR Description': "The widget weather doesn't work ", 'TR Level': 'Low', 'TR Number': 'TR559', 'TR Status': 'Processing', 'TR tracking': '28/04:Local feedback weather widget does not work, query TBOX and IHU login record is normal, traffic binding is normal, we suggest users to use mobile phone hotspot to connect to the car, observe whether the widget is restored, if not, try to capture the IHU logs.', 'Type of problem': 'HU troubles', 'VIN|sim': 'LVTDD24B8RG019153 ', 'Vehicle Type01': 'EXEED RX(T22)', 'Wilfulness(责任人)': 'Evgeniy', '处理过程': '0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志', '当前问题状态': '1027:天气小部件无法使用,已确认TBOX及IHU登录正常、流量绑定正常,建议已完成手机热点连接测试并尝试抓取IHU日志,若问题仍存在,建议进站进行系统诊断或软件版本升级排查。\n0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志'}, 'id': 'rec253kqBfXae4', 'record_id': 'rec253kqBfXae4'}, {'fields': {'AI建议': '模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Vehicle data is not updated in the app => dated from October,...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': 'TBOX', 'Source': 'Mail', 'TR Description': 'Vehicle data is not updated in the app => dated from October, 19 - thus, they are old one. No TBOX log in since October, 19. TBOX is in deep sleep since October, 19.\n', 'TR Level': 'Low', 'TR Number': 'TR863', 'TR Status': 'Processing', 'TR tracking': '24/10:The vehicle is in deep sleep, and T-box logs cannot be remotely obtained. The problem is a bit complex and difficult to locate, so the customer needs to visit the station to retrieve T-box logs and DMC logs. @Vsevolod Tsoi', 'Type of problem': 'Remote control ', 'VIN|sim': 'LNNBDDEZ8SD345645 ', 'Vehicle Type01': 'JAECOO J7(T1EJ)', 'Wilfulness(责任人)': '刘娇龙', '处理过程': '1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志', '当前问题状态': '1027:车辆自10月19日进入深度睡眠,TBOX无远程连接,建议客户尽快进站提取TBOX及DMC日志,进行本地诊断分析,排查电源管理或通信模块异常原因,确认硬件状态及软件配置是否正常。\n1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志'}, 'id': 'recv0NLSh2a2S7', 'record_id': 'recv0NLSh2a2S7'}, {'fields': {'AI建议': '模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:User not able to enter into member center neither mobile phon...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': '生态/ecologically', 'Source': 'Mail', 'TR Description': 'User not able to enter into member center neither mobile phone nor QR code.', 'TR Level': 'Low', 'TR Number': 'TR864', 'TR Status': 'Processing', 'TR tracking': '23/10: DMC logs attached as well as vieos of the issue.', 'Type of problem': 'Problem with auth in member center', 'VIN|sim': 'LNNBDDEZXSD449358', 'Vehicle Type01': 'EXEED VX FL(M36T)', 'Wilfulness(责任人)': '袁清', '处理过程': '1024: DMC logs attached as well as vieos of the issue.', '当前问题状态': '1027:确认手机网络及APP版本正常,尝试清除APP缓存并重新登录,检查QR码扫描权限是否开启,重启手机和车机,若仍无法进入会员中心,建议联系售后进行远程诊断或进站排查系统故障。\n1024: DMC logs attached as well as vieos of the issue.'}, 'id': 'recv0NLZoKLlRJ', 'record_id': 'recv0NLZoKLlRJ'}, {'fields': {'AI建议': '模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Abnormal traffic consumption\n\n相关背景信息:\n相关知识库信息:\n- TR866 - Traf...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761235200000, 'Module(模块)': 'DMC', 'Source': 'Mail', 'TR Description': 'Abnormal traffic consumption', 'TR Level': 'Low', 'TR Number': 'TR866', 'TR Status': 'Analysising', 'TR tracking': '24/10: It is recommended that users grab the DMC log back for analysis.@Vsevolod Tsoi \n24/10: user states he use Navi only and no other apps. Consumption volume - 3.12 Gb for 3 days. Same symptom as E0X - traffic package size is plus mines the same - see pdf from MNO attached', 'Type of problem': 'Traffic is over', 'VIN|sim': 'XEYDD14B3SA012164', 'Vehicle Type01': 'TEST', 'Wilfulness(责任人)': 'Vsevolod Tsoi', '处理过程': '1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf', '当前问题状态': '1027:流量异常可能与导航应用后台持续联网有关,建议关闭Navi自动更新地图功能并限制后台数据使用,检查车机系统是否存在异常进程,如问题依旧,建议进站检测DMC模块日志及SIM卡通信状态,必要时升级系统或更换模块。\n1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf'}, 'id': 'recv0NLZoKjKvx', 'record_id': 'recv0NLZoKjKvx'}], 'total': 4}, 'msg': 'success'} +2025-12-08 00:59:09,337 - src.integrations.workorder_sync - INFO - 从飞书获取 4 条记录 +2025-12-08 00:59:09,337 - src.integrations.workorder_sync - INFO - 开始生成AI建议... +2025-12-08 00:59:09,339 - src.integrations.workorder_sync - INFO - 第一条记录结构示例: record_id=rec253kqBfXae4, 有fields字段=True +2025-12-08 00:59:09,341 - src.integrations.workorder_sync - INFO - 第一条记录的fields示例: ['AI建议', 'Created by', 'Date creation', 'Module(模块)', 'Source'] +2025-12-08 00:59:09,341 - src.integrations.workorder_sync - INFO - 第一条记录的AI建议字段内容: 模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:Th +2025-12-08 00:59:09,348 - src.integrations.ai_suggestion_service - INFO - 记录 rec253kqBfXae4 - 现有AI建议长度: 112 +2025-12-08 00:59:09,349 - src.integrations.ai_suggestion_service - INFO - 记录 rec253kqBfXae4 - 现有AI建议前100字符: 模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:The widget weather doesn't work + +相关背景信息: +无相关背景信息 + +请 +2025-12-08 00:59:09,480 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 00:59:09,496 - src.dialogue.realtime_chat - INFO - 创建新会话: session_ai_suggestion_service_1765126749 +2025-12-08 00:59:09,528 - src.knowledge_base.knowledge_manager - INFO - 搜索查询 '请作为专业的汽车技术支持工程师,为以下工单问题提供详细的技术分析和处理建议。 + +问题描述: +The widget weather doesn't work + + +当前处理进度: +0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志 + + +历史AI建议记录: +模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:The widget weather doesn't work + +相关背景信息: +无相关背景信息 + +请提供: +1. 问题... + + +要求: +1. 基于已有处理记录和当前进度,分析问题进展情况 +2. 判断之前的处理步骤是否有效,找出可能的遗漏点 +3. 根据问题发展阶段提供更深入的技术解决方案 +4. 如果远程处理无效,明确说明需要哪些线下技术支持 +5. 详细说明进站后需要执行的具体诊断和修复步骤 +6. 包含技术参数、工具要求和注意事项 +7. 便于技术人员快速理解问题状态和下一步行动 + +请提供针对性的深入分析和处理建议:' 返回 3 个结果 +2025-12-08 00:59:22,469 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:59:22] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 00:59:23,084 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:59:23] "GET /api/conversations?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-08 00:59:29,120 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:59:29] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 00:59:30,610 - src.core.llm_client - INFO - API请求成功 +2025-12-08 00:59:30,824 - src.knowledge_base.knowledge_manager - INFO - 成功更新 3 个知识库条目的使用次数 +2025-12-08 00:59:30,825 - src.integrations.ai_suggestion_service - INFO - AI生成原始内容: 您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业分析与升级处理建议如下: + +1. **问题进展分析**: + 前期已排除基... +2025-12-08 00:59:30,825 - src.integrations.ai_suggestion_service - INFO - 未找到需要替换的内容: 您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业分析与升级处理建议如下: + +1. **问题进展分析**: + 前期已排除基 +2025-12-08 00:59:30,836 - src.integrations.ai_suggestion_service - INFO - 未找到需要替换的内容: 您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业分析与升级处理建议如下: +2025-12-08 00:59:30,843 - src.integrations.ai_suggestion_service - INFO - AI建议清理后: 您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业分析与升级处理建议如下:... +2025-12-08 00:59:30,843 - src.integrations.ai_suggestion_service - INFO - _format_ai_suggestion_with_numbering 调用 - time_str=1208, existing长度=112 +2025-12-08 00:59:30,843 - src.integrations.ai_suggestion_service - INFO - 为记录 rec253kqBfXae4 生成AI建议,新建议长度: 190 +2025-12-08 00:59:30,850 - src.integrations.ai_suggestion_service - INFO - 记录 recv0NLSh2a2S7 - 现有AI建议长度: 112 +2025-12-08 00:59:30,879 - src.integrations.ai_suggestion_service - INFO - 记录 recv0NLSh2a2S7 - 现有AI建议前100字符: 模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:Vehicle data is not updated in the app => dated from +2025-12-08 00:59:30,920 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 00:59:30,943 - src.dialogue.realtime_chat - INFO - 创建新会话: session_ai_suggestion_service_1765126770 +2025-12-08 00:59:30,965 - src.knowledge_base.knowledge_manager - INFO - 搜索查询 '请作为专业的汽车技术支持工程师,为以下工单问题提供详细的技术分析和处理建议。 + +问题描述: +Vehicle data is not updated in the app => dated from October, 19 - thus, they are old one. No TBOX log in since October, 19. TBOX is in deep sleep since October, 19. + + + +当前处理进度: +1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志 + + +历史AI建议记录: +模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:Vehicle data is not updated in the app => dated from October,... + + +要求: +1. 基于已有处理记录和当前进度,分析问题进展情况 +2. 判断之前的处理步骤是否有效,找出可能的遗漏点 +3. 根据问题发展阶段提供更深入的技术解决方案 +4. 如果远程处理无效,明确说明需要哪些线下技术支持 +5. 详细说明进站后需要执行的具体诊断和修复步骤 +6. 包含技术参数、工具要求和注意事项 +7. 便于技术人员快速理解问题状态和下一步行动 + +请提供针对性的深入分析和处理建议:' 返回 3 个结果 +2025-12-08 00:59:37,986 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:59:37] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 00:59:44,965 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:59:44] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 00:59:49,625 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:59:49] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 00:59:51,821 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:59:51] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-08 00:59:53,910 - src.core.llm_client - INFO - API请求成功 +2025-12-08 00:59:54,067 - src.knowledge_base.knowledge_manager - INFO - 成功更新 3 个知识库条目的使用次数 +2025-12-08 00:59:54,067 - src.integrations.ai_suggestion_service - INFO - AI生成原始内容: 该工单问题已明确为TBOX自10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止更新、APP端数据滞留、且无任何TBOX日志上传——这已超出远程唤醒与诊断能力范围,属典型TBO... +2025-12-08 00:59:54,068 - src.integrations.ai_suggestion_service - INFO - 未找到需要替换的内容: 该工单问题已明确为TBOX自10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止更新、APP端数据滞留、且无任何TBOX日志上传——这已超出远程唤醒与诊断能力范围,属典型TBO +2025-12-08 00:59:54,068 - src.integrations.ai_suggestion_service - INFO - 未找到需要替换的内容: 该工单问题已明确为TBOX自10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止更新、APP端数据滞留、且无任何TBOX日志上传——这已超出远程唤醒与诊断能力范围,属典型TBO +2025-12-08 00:59:54,070 - src.integrations.ai_suggestion_service - INFO - AI建议清理后: 该工单问题已明确为TBOX自10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止更新、APP端数据滞留、且无任何TBOX日志上传——这已超出远程唤醒与诊断能力范围,属典型TBO... +2025-12-08 00:59:54,073 - src.integrations.ai_suggestion_service - INFO - _format_ai_suggestion_with_numbering 调用 - time_str=1208, existing长度=112 +2025-12-08 00:59:54,075 - src.integrations.ai_suggestion_service - INFO - 为记录 recv0NLSh2a2S7 生成AI建议,新建议长度: 231 +2025-12-08 00:59:54,075 - src.integrations.ai_suggestion_service - INFO - 记录 recv0NLZoKLlRJ - 现有AI建议长度: 112 +2025-12-08 00:59:54,077 - src.integrations.ai_suggestion_service - INFO - 记录 recv0NLZoKLlRJ - 现有AI建议前100字符: 模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:User not able to enter into member center neither mo +2025-12-08 00:59:54,096 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 00:59:54,105 - src.dialogue.realtime_chat - INFO - 创建新会话: session_ai_suggestion_service_1765126794 +2025-12-08 00:59:54,119 - src.knowledge_base.knowledge_manager - INFO - 搜索查询 '请作为专业的汽车技术支持工程师,为以下工单问题提供详细的技术分析和处理建议。 + +问题描述: +User not able to enter into member center neither mobile phone nor QR code. + + +当前处理进度: +1024: DMC logs attached as well as vieos of the issue. + + +历史AI建议记录: +模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:User not able to enter into member center neither mobile phon... + + +要求: +1. 基于已有处理记录和当前进度,分析问题进展情况 +2. 判断之前的处理步骤是否有效,找出可能的遗漏点 +3. 根据问题发展阶段提供更深入的技术解决方案 +4. 如果远程处理无效,明确说明需要哪些线下技术支持 +5. 详细说明进站后需要执行的具体诊断和修复步骤 +6. 包含技术参数、工具要求和注意事项 +7. 便于技术人员快速理解问题状态和下一步行动 + +请提供针对性的深入分析和处理建议:' 返回 3 个结果 +2025-12-08 01:00:01,162 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:00:01] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 01:00:02,087 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:00:02] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 01:00:04,293 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:00:04] "GET /api/analytics HTTP/1.1" 200 - +2025-12-08 01:00:04,915 - src.integrations.feishu_client - INFO - 发送飞书API请求: GET https://open.feishu.cn/open-apis/bitable/v1/apps/XXnEbiCmEaMblSs6FDJcFCqsnIg/tables/tblnl3vJPpgMTSiP/records +2025-12-08 01:00:04,935 - src.integrations.feishu_client - INFO - 请求头: Authorization: Bearer t-g104c7nOSPYB6V6UE6... +2025-12-08 01:00:06,700 - src.integrations.feishu_client - INFO - 飞书API响应状态码: 200 +2025-12-08 01:00:06,703 - src.integrations.feishu_client - INFO - 飞书API响应内容: {'code': 0, 'data': {'has_more': False, 'items': [{'fields': {'AI建议': "模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:The widget weather doesn't work \n\n相关背景信息:\n无相关背景信息\n\n请提供:\n1. 问题...", 'Created by': 'Evgeniy', 'Date creation': 1745769600000, 'Module(模块)': 'local O&M', 'Source': 'Mail', 'TR Description': "The widget weather doesn't work ", 'TR Level': 'Low', 'TR Number': 'TR559', 'TR Status': 'Processing', 'TR tracking': '28/04:Local feedback weather widget does not work, query TBOX and IHU login record is normal, traffic binding is normal, we suggest users to use mobile phone hotspot to connect to the car, observe whether the widget is restored, if not, try to capture the IHU logs.', 'Type of problem': 'HU troubles', 'VIN|sim': 'LVTDD24B8RG019153 ', 'Vehicle Type01': 'EXEED RX(T22)', 'Wilfulness(责任人)': 'Evgeniy', '处理过程': '0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志', '当前问题状态': '1027:天气小部件无法使用,已确认TBOX及IHU登录正常、流量绑定正常,建议已完成手机热点连接测试并尝试抓取IHU日志,若问题仍存在,建议进站进行系统诊断或软件版本升级排查。\n0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志'}, 'id': 'rec253kqBfXae4', 'record_id': 'rec253kqBfXae4'}, {'fields': {'AI建议': '模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Vehicle data is not updated in the app => dated from October,...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': 'TBOX', 'Source': 'Mail', 'TR Description': 'Vehicle data is not updated in the app => dated from October, 19 - thus, they are old one. No TBOX log in since October, 19. TBOX is in deep sleep since October, 19.\n', 'TR Level': 'Low', 'TR Number': 'TR863', 'TR Status': 'Processing', 'TR tracking': '24/10:The vehicle is in deep sleep, and T-box logs cannot be remotely obtained. The problem is a bit complex and difficult to locate, so the customer needs to visit the station to retrieve T-box logs and DMC logs. @Vsevolod Tsoi', 'Type of problem': 'Remote control ', 'VIN|sim': 'LNNBDDEZ8SD345645 ', 'Vehicle Type01': 'JAECOO J7(T1EJ)', 'Wilfulness(责任人)': '刘娇龙', '处理过程': '1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志', '当前问题状态': '1027:车辆自10月19日进入深度睡眠,TBOX无远程连接,建议客户尽快进站提取TBOX及DMC日志,进行本地诊断分析,排查电源管理或通信模块异常原因,确认硬件状态及软件配置是否正常。\n1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志'}, 'id': 'recv0NLSh2a2S7', 'record_id': 'recv0NLSh2a2S7'}, {'fields': {'AI建议': '模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:User not able to enter into member center neither mobile phon...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': '生态/ecologically', 'Source': 'Mail', 'TR Description': 'User not able to enter into member center neither mobile phone nor QR code.', 'TR Level': 'Low', 'TR Number': 'TR864', 'TR Status': 'Processing', 'TR tracking': '23/10: DMC logs attached as well as vieos of the issue.', 'Type of problem': 'Problem with auth in member center', 'VIN|sim': 'LNNBDDEZXSD449358', 'Vehicle Type01': 'EXEED VX FL(M36T)', 'Wilfulness(责任人)': '袁清', '处理过程': '1024: DMC logs attached as well as vieos of the issue.', '当前问题状态': '1027:确认手机网络及APP版本正常,尝试清除APP缓存并重新登录,检查QR码扫描权限是否开启,重启手机和车机,若仍无法进入会员中心,建议联系售后进行远程诊断或进站排查系统故障。\n1024: DMC logs attached as well as vieos of the issue.'}, 'id': 'recv0NLZoKLlRJ', 'record_id': 'recv0NLZoKLlRJ'}, {'fields': {'AI建议': '模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Abnormal traffic consumption\n\n相关背景信息:\n相关知识库信息:\n- TR866 - Traf...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761235200000, 'Module(模块)': 'DMC', 'Source': 'Mail', 'TR Description': 'Abnormal traffic consumption', 'TR Level': 'Low', 'TR Number': 'TR866', 'TR Status': 'Analysising', 'TR tracking': '24/10: It is recommended that users grab the DMC log back for analysis.@Vsevolod Tsoi \n24/10: user states he use Navi only and no other apps. Consumption volume - 3.12 Gb for 3 days. Same symptom as E0X - traffic package size is plus mines the same - see pdf from MNO attached', 'Type of problem': 'Traffic is over', 'VIN|sim': 'XEYDD14B3SA012164', 'Vehicle Type01': 'TEST', 'Wilfulness(责任人)': 'Vsevolod Tsoi', '处理过程': '1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf', '当前问题状态': '1027:流量异常可能与导航应用后台持续联网有关,建议关闭Navi自动更新地图功能并限制后台数据使用,检查车机系统是否存在异常进程,如问题依旧,建议进站检测DMC模块日志及SIM卡通信状态,必要时升级系统或更换模块。\n1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf'}, 'id': 'recv0NLZoKjKvx', 'record_id': 'recv0NLZoKjKvx'}], 'total': 4}, 'msg': 'success'} +2025-12-08 01:00:06,708 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:00:06] "GET /api/feishu-sync/preview-feishu-data HTTP/1.1" 200 - +2025-12-08 01:00:13,560 - src.core.llm_client - INFO - API请求成功 +2025-12-08 01:00:13,804 - src.knowledge_base.knowledge_manager - INFO - 成功更新 3 个知识库条目的使用次数 +2025-12-08 01:00:13,810 - src.integrations.ai_suggestion_service - INFO - AI生成原始内容: 经分析当前工单进展:用户无法通过手机号或二维码登录会员中心,且已上传DMC日志及问题视频(时间戳1024),说明远程行为已完整复现,初步排除用户操作误触可能。 + +当前处理有效性评估: +✅ 已完成关... +2025-12-08 01:00:13,828 - src.integrations.ai_suggestion_service - INFO - 未找到需要替换的内容: 经分析当前工单进展:用户无法通过手机号或二维码登录会员中心,且已上传DMC日志及问题视频(时间戳1024),说明远程行为已完整复现,初步排除用户操作误触可能。 + +当前处理有效性评估: +✅ 已完成关 +2025-12-08 01:00:13,838 - src.integrations.ai_suggestion_service - INFO - 未找到需要替换的内容: 经分析当前工单进展:用户无法通过手机号或二维码登录会员中心,且已上传DMC日志及问题视频(时间戳1024),说明远程行为已完整复现,初步排除用户操作误触可能。 +2025-12-08 01:00:14,071 - src.integrations.ai_suggestion_service - INFO - AI建议清理后: 经分析当前工单进展:用户无法通过手机号或二维码登录会员中心,且已上传DMC日志及问题视频(时间戳1024),说明远程行为已完整复现,初步排除用户操作误触可能。... +2025-12-08 01:00:14,080 - src.integrations.ai_suggestion_service - INFO - _format_ai_suggestion_with_numbering 调用 - time_str=1208, existing长度=112 +2025-12-08 01:00:14,086 - src.integrations.ai_suggestion_service - INFO - 为记录 recv0NLZoKLlRJ 生成AI建议,新建议长度: 197 +2025-12-08 01:00:14,092 - src.integrations.ai_suggestion_service - INFO - 记录 recv0NLZoKjKvx - 现有AI建议长度: 112 +2025-12-08 01:00:14,099 - src.integrations.ai_suggestion_service - INFO - 记录 recv0NLZoKjKvx - 现有AI建议前100字符: 模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:Abnormal traffic consumption + +相关背景信息: +相关知识库信息: +- TR8 +2025-12-08 01:00:14,153 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 01:00:14,177 - src.dialogue.realtime_chat - INFO - 创建新会话: session_ai_suggestion_service_1765126814 +2025-12-08 01:00:14,236 - src.knowledge_base.knowledge_manager - INFO - 搜索查询 '请作为专业的汽车技术支持工程师,为以下工单问题提供详细的技术分析和处理建议。 + +问题描述: +Abnormal traffic consumption + + +当前处理进度: +1024:建议用户抓去DMC日志回传分析 +1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf + + +历史AI建议记录: +模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:Abnormal traffic consumption + +相关背景信息: +相关知识库信息: +- TR866 - Traf... + + +要求: +1. 基于已有处理记录和当前进度,分析问题进展情况 +2. 判断之前的处理步骤是否有效,找出可能的遗漏点 +3. 根据问题发展阶段提供更深入的技术解决方案 +4. 如果远程处理无效,明确说明需要哪些线下技术支持 +5. 详细说明进站后需要执行的具体诊断和修复步骤 +6. 包含技术参数、工具要求和注意事项 +7. 便于技术人员快速理解问题状态和下一步行动 + +请提供针对性的深入分析和处理建议:' 返回 3 个结果 +2025-12-08 01:00:18,434 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:00:18] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 01:00:23,257 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:00:23] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 01:00:24,752 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:00:24] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 01:00:25,794 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:00:25] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 01:00:35,439 - src.core.llm_client - INFO - API请求成功 +2025-12-08 01:00:36,167 - src.knowledge_base.knowledge_manager - INFO - 成功更新 3 个知识库条目的使用次数 +2025-12-08 01:00:36,195 - src.integrations.ai_suggestion_service - INFO - AI生成原始内容: 您好,感谢您反馈异常流量消耗问题。结合当前工单进展(已建议抓取DMC日志、用户确认仅使用导航且3天消耗3.12GB,症状与E0X车型TR866案例高度一致),现提供专业分析与处理建议如下: + +一、问题... +2025-12-08 01:00:36,200 - src.integrations.ai_suggestion_service - INFO - 未找到需要替换的内容: 您好,感谢您反馈异常流量消耗问题。结合当前工单进展(已建议抓取DMC日志、用户确认仅使用导航且3天消耗3.12GB,症状与E0X车型TR866案例高度一致),现提供专业分析与处理建议如下: + +一、问题 +2025-12-08 01:00:36,201 - src.integrations.ai_suggestion_service - INFO - 未找到需要替换的内容: 您好,感谢您反馈异常流量消耗问题。结合当前工单进展(已建议抓取DMC日志、用户确认仅使用导航且3天消耗3.12GB,症状与E0X车型TR866案例高度一致),现提供专业分析与处理建议如下: +2025-12-08 01:00:36,201 - src.integrations.ai_suggestion_service - INFO - AI建议清理后: 您好,感谢您反馈异常流量消耗问题。结合当前工单进展(已建议抓取DMC日志、用户确认仅使用导航且3天消耗3.12GB,症状与E0X车型TR866案例高度一致),现提供专业分析与处理建议如下:... +2025-12-08 01:00:36,204 - src.integrations.ai_suggestion_service - INFO - _format_ai_suggestion_with_numbering 调用 - time_str=1208, existing长度=112 +2025-12-08 01:00:36,231 - src.integrations.ai_suggestion_service - INFO - 为记录 recv0NLZoKjKvx 生成AI建议,新建议长度: 212 +2025-12-08 01:00:36,250 - src.integrations.feishu_client - INFO - 发送飞书API请求: PUT https://open.feishu.cn/open-apis/bitable/v1/apps/XXnEbiCmEaMblSs6FDJcFCqsnIg/tables/tblnl3vJPpgMTSiP/records/rec253kqBfXae4 +2025-12-08 01:00:36,250 - src.integrations.feishu_client - INFO - 请求头: Authorization: Bearer t-g104c7nOSPYB6V6UE6... +2025-12-08 01:00:38,160 - src.integrations.feishu_client - INFO - 飞书API响应状态码: 200 +2025-12-08 01:00:38,175 - src.integrations.feishu_client - INFO - 飞书API响应内容: {'code': 0, 'data': {'record': {'fields': {'AI建议': "1208:您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业分析与升级处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:The widget weather doesn't work \n\n相关背景信息:\n无相关背景信息\n\n请提供:\n1. 问题..."}, 'id': 'rec253kqBfXae4', 'record_id': 'rec253kqBfXae4'}}, 'msg': 'success'} +2025-12-08 01:00:38,194 - src.integrations.workorder_sync - INFO - 更新飞书记录 rec253kqBfXae4 的AI建议 +2025-12-08 01:00:38,205 - src.integrations.feishu_client - INFO - 发送飞书API请求: PUT https://open.feishu.cn/open-apis/bitable/v1/apps/XXnEbiCmEaMblSs6FDJcFCqsnIg/tables/tblnl3vJPpgMTSiP/records/recv0NLSh2a2S7 +2025-12-08 01:00:38,225 - src.integrations.feishu_client - INFO - 请求头: Authorization: Bearer t-g104c7nOSPYB6V6UE6... +2025-12-08 01:00:39,921 - src.integrations.feishu_client - INFO - 飞书API响应状态码: 200 +2025-12-08 01:00:39,921 - src.integrations.feishu_client - INFO - 飞书API响应内容: {'code': 0, 'data': {'record': {'fields': {'AI建议': '1208:该工单问题已明确为TBOX自10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止更新、APP端数据滞留、且无任何TBOX日志上传——这已超出远程唤醒与诊断能力范围,属典型TBOX通信链路或电源管理异常。\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Vehicle data is not updated in the app => dated from October,...'}, 'id': 'recv0NLSh2a2S7', 'record_id': 'recv0NLSh2a2S7'}}, 'msg': 'success'} +2025-12-08 01:00:39,923 - src.integrations.workorder_sync - INFO - 更新飞书记录 recv0NLSh2a2S7 的AI建议 +2025-12-08 01:00:39,923 - src.integrations.feishu_client - INFO - 发送飞书API请求: PUT https://open.feishu.cn/open-apis/bitable/v1/apps/XXnEbiCmEaMblSs6FDJcFCqsnIg/tables/tblnl3vJPpgMTSiP/records/recv0NLZoKLlRJ +2025-12-08 01:00:39,923 - src.integrations.feishu_client - INFO - 请求头: Authorization: Bearer t-g104c7nOSPYB6V6UE6... +2025-12-08 01:00:41,718 - src.integrations.feishu_client - INFO - 飞书API响应状态码: 200 +2025-12-08 01:00:41,719 - src.integrations.feishu_client - INFO - 飞书API响应内容: {'code': 0, 'data': {'record': {'fields': {'AI建议': '1208:经分析当前工单进展:用户无法通过手机号或二维码登录会员中心,且已上传DMC日志及问题视频(时间戳1024),说明远程行为已完整复现,初步排除用户操作误触可能。\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:User not able to enter into member center neither mobile phon...'}, 'id': 'recv0NLZoKLlRJ', 'record_id': 'recv0NLZoKLlRJ'}}, 'msg': 'success'} +2025-12-08 01:00:41,720 - src.integrations.workorder_sync - INFO - 更新飞书记录 recv0NLZoKLlRJ 的AI建议 +2025-12-08 01:00:41,720 - src.integrations.feishu_client - INFO - 发送飞书API请求: PUT https://open.feishu.cn/open-apis/bitable/v1/apps/XXnEbiCmEaMblSs6FDJcFCqsnIg/tables/tblnl3vJPpgMTSiP/records/recv0NLZoKjKvx +2025-12-08 01:00:41,721 - src.integrations.feishu_client - INFO - 请求头: Authorization: Bearer t-g104c7nOSPYB6V6UE6... +2025-12-08 01:00:43,739 - src.integrations.feishu_client - INFO - 飞书API响应状态码: 200 +2025-12-08 01:00:43,741 - src.integrations.feishu_client - INFO - 飞书API响应内容: {'code': 0, 'data': {'record': {'fields': {'AI建议': '1208:您好,感谢您反馈异常流量消耗问题。结合当前工单进展(已建议抓取DMC日志、用户确认仅使用导航且3天消耗3.12GB,症状与E0X车型TR866案例高度一致),现提供专业分析与处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Abnormal traffic consumption\n\n相关背景信息:\n相关知识库信息:\n- TR866 - Traf...'}, 'id': 'recv0NLZoKjKvx', 'record_id': 'recv0NLZoKjKvx'}}, 'msg': 'success'} +2025-12-08 01:00:43,741 - src.integrations.workorder_sync - INFO - 更新飞书记录 recv0NLZoKjKvx 的AI建议 +2025-12-08 01:00:43,834 - src.integrations.workorder_sync - INFO - 开始转换飞书字段: {'AI建议': "模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:The widget weather doesn't work \n\n相关背景信息:\n无相关背景信息\n\n请提供:\n1. 问题...", 'Created by': 'Evgeniy', 'Date creation': 1745769600000, 'Module(模块)': 'local O&M', 'Source': 'Mail', 'TR Description': "The widget weather doesn't work ", 'TR Level': 'Low', 'TR Number': 'TR559', 'TR Status': 'Processing', 'TR tracking': '28/04:Local feedback weather widget does not work, query TBOX and IHU login record is normal, traffic binding is normal, we suggest users to use mobile phone hotspot to connect to the car, observe whether the widget is restored, if not, try to capture the IHU logs.', 'Type of problem': 'HU troubles', 'VIN|sim': 'LVTDD24B8RG019153 ', 'Vehicle Type01': 'EXEED RX(T22)', 'Wilfulness(责任人)': 'Evgeniy', '处理过程': '0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志', '当前问题状态': '1027:天气小部件无法使用,已确认TBOX及IHU登录正常、流量绑定正常,建议已完成手机热点连接测试并尝试抓取IHU日志,若问题仍存在,建议进站进行系统诊断或软件版本升级排查。\n0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志'} +2025-12-08 01:00:43,836 - src.integrations.flexible_field_mapper - INFO - 开始转换字段: ['AI建议', 'Created by', 'Date creation', 'Module(模块)', 'Source', 'TR Description', 'TR Level', 'TR Number', 'TR Status', 'TR tracking', 'Type of problem', 'VIN|sim', 'Vehicle Type01', 'Wilfulness(责任人)', '处理过程', '当前问题状态'] +2025-12-08 01:00:43,837 - src.integrations.flexible_field_mapper - INFO - 映射字段 AI建议 -> ai_suggestion: 模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:The widget weather doesn't work + +相关背景信息: +无相关背景信息 + +请提供: +1. 问题... +2025-12-08 01:00:43,837 - src.integrations.flexible_field_mapper - INFO - 映射字段 Created by -> created_by: Evgeniy +2025-12-08 01:00:43,838 - src.integrations.flexible_field_mapper - INFO - 映射字段 Date creation -> created_at: 1745769600000 +2025-12-08 01:00:43,838 - src.integrations.flexible_field_mapper - INFO - 映射字段 Module(模块) -> module: local O&M +2025-12-08 01:00:43,838 - src.integrations.flexible_field_mapper - INFO - 映射字段 Source -> source: Mail +2025-12-08 01:00:43,838 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Description -> description: The widget weather doesn't work +2025-12-08 01:00:43,838 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Level -> priority: Low +2025-12-08 01:00:43,838 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Number -> order_id: TR559 +2025-12-08 01:00:43,840 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Status -> status: Processing +2025-12-08 01:00:43,840 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR tracking -> resolution: 28/04:Local feedback weather widget does not work, query TBOX and IHU login record is normal, traffic binding is normal, we suggest users to use mobile phone hotspot to connect to the car, observe whether the widget is restored, if not, try to capture the IHU logs. +2025-12-08 01:00:43,840 - src.integrations.flexible_field_mapper - INFO - 映射字段 Type of problem -> category: HU troubles +2025-12-08 01:00:43,840 - src.integrations.flexible_field_mapper - INFO - 映射字段 VIN|sim -> vin_sim: LVTDD24B8RG019153 +2025-12-08 01:00:43,856 - src.integrations.flexible_field_mapper - INFO - 映射字段 Vehicle Type01 -> vehicle_type: EXEED RX(T22) +2025-12-08 01:00:43,863 - src.integrations.flexible_field_mapper - INFO - 映射字段 Wilfulness(责任人) -> wilfulness: Evgeniy +2025-12-08 01:00:43,863 - src.integrations.flexible_field_mapper - INFO - 映射字段 处理过程 -> resolution: 0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志 +2025-12-08 01:00:43,956 - src.integrations.flexible_field_mapper - INFO - 飞书字段 当前问题状态 不存在于数据中 +2025-12-08 01:00:43,960 - src.integrations.flexible_field_mapper - INFO - 字段转换完成: 已映射 15, 未映射 1 +2025-12-08 01:00:43,961 - src.integrations.workorder_sync - INFO - 字段转换统计: 总字段 16, 已映射 15, 未映射 1 +2025-12-08 01:00:43,961 - src.integrations.workorder_sync - WARNING - 未映射字段: ['当前问题状态'] +2025-12-08 01:00:43,961 - src.integrations.workorder_sync - INFO - 字段 '当前问题状态' 的建议映射: {'local_field': 'status', 'similarity': 0.7, 'matched_pattern': '.*状态.*', 'confidence': 'medium', 'reason': "匹配模式 '.*状态.*'"} +2025-12-08 01:00:44,146 - src.integrations.workorder_sync - INFO - 开始转换飞书字段: {'AI建议': '模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Vehicle data is not updated in the app => dated from October,...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': 'TBOX', 'Source': 'Mail', 'TR Description': 'Vehicle data is not updated in the app => dated from October, 19 - thus, they are old one. No TBOX log in since October, 19. TBOX is in deep sleep since October, 19.\n', 'TR Level': 'Low', 'TR Number': 'TR863', 'TR Status': 'Processing', 'TR tracking': '24/10:The vehicle is in deep sleep, and T-box logs cannot be remotely obtained. The problem is a bit complex and difficult to locate, so the customer needs to visit the station to retrieve T-box logs and DMC logs. @Vsevolod Tsoi', 'Type of problem': 'Remote control ', 'VIN|sim': 'LNNBDDEZ8SD345645 ', 'Vehicle Type01': 'JAECOO J7(T1EJ)', 'Wilfulness(责任人)': '刘娇龙', '处理过程': '1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志', '当前问题状态': '1027:车辆自10月19日进入深度睡眠,TBOX无远程连接,建议客户尽快进站提取TBOX及DMC日志,进行本地诊断分析,排查电源管理或通信模块异常原因,确认硬件状态及软件配置是否正常。\n1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志'} +2025-12-08 01:00:44,160 - src.integrations.flexible_field_mapper - INFO - 开始转换字段: ['AI建议', 'Created by', 'Date creation', 'Module(模块)', 'Source', 'TR Description', 'TR Level', 'TR Number', 'TR Status', 'TR tracking', 'Type of problem', 'VIN|sim', 'Vehicle Type01', 'Wilfulness(责任人)', '处理过程', '当前问题状态'] +2025-12-08 01:00:44,160 - src.integrations.flexible_field_mapper - INFO - 映射字段 AI建议 -> ai_suggestion: 模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:Vehicle data is not updated in the app => dated from October,... +2025-12-08 01:00:44,160 - src.integrations.flexible_field_mapper - INFO - 映射字段 Created by -> created_by: Vsevolod Tsoi +2025-12-08 01:00:44,163 - src.integrations.flexible_field_mapper - INFO - 映射字段 Date creation -> created_at: 1761148800000 +2025-12-08 01:00:44,171 - src.integrations.flexible_field_mapper - INFO - 映射字段 Module(模块) -> module: TBOX +2025-12-08 01:00:44,171 - src.integrations.flexible_field_mapper - INFO - 映射字段 Source -> source: Mail +2025-12-08 01:00:44,171 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Description -> description: Vehicle data is not updated in the app => dated from October, 19 - thus, they are old one. No TBOX log in since October, 19. TBOX is in deep sleep since October, 19. + +2025-12-08 01:00:44,171 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Level -> priority: Low +2025-12-08 01:00:44,171 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Number -> order_id: TR863 +2025-12-08 01:00:44,171 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Status -> status: Processing +2025-12-08 01:00:44,171 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR tracking -> resolution: 24/10:The vehicle is in deep sleep, and T-box logs cannot be remotely obtained. The problem is a bit complex and difficult to locate, so the customer needs to visit the station to retrieve T-box logs and DMC logs. @Vsevolod Tsoi +2025-12-08 01:00:44,172 - src.integrations.flexible_field_mapper - INFO - 映射字段 Type of problem -> category: Remote control +2025-12-08 01:00:44,172 - src.integrations.flexible_field_mapper - INFO - 映射字段 VIN|sim -> vin_sim: LNNBDDEZ8SD345645 +2025-12-08 01:00:44,172 - src.integrations.flexible_field_mapper - INFO - 映射字段 Vehicle Type01 -> vehicle_type: JAECOO J7(T1EJ) +2025-12-08 01:00:44,172 - src.integrations.flexible_field_mapper - INFO - 映射字段 Wilfulness(责任人) -> wilfulness: 刘娇龙 +2025-12-08 01:00:44,172 - src.integrations.flexible_field_mapper - INFO - 映射字段 处理过程 -> resolution: 1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志 +2025-12-08 01:00:44,174 - src.integrations.flexible_field_mapper - INFO - 飞书字段 当前问题状态 不存在于数据中 +2025-12-08 01:00:44,174 - src.integrations.flexible_field_mapper - INFO - 字段转换完成: 已映射 15, 未映射 1 +2025-12-08 01:00:44,174 - src.integrations.workorder_sync - INFO - 字段转换统计: 总字段 16, 已映射 15, 未映射 1 +2025-12-08 01:00:44,174 - src.integrations.workorder_sync - WARNING - 未映射字段: ['当前问题状态'] +2025-12-08 01:00:44,174 - src.integrations.workorder_sync - INFO - 字段 '当前问题状态' 的建议映射: {'local_field': 'status', 'similarity': 0.7, 'matched_pattern': '.*状态.*', 'confidence': 'medium', 'reason': "匹配模式 '.*状态.*'"} +2025-12-08 01:00:44,197 - src.integrations.workorder_sync - INFO - 开始转换飞书字段: {'AI建议': '模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:User not able to enter into member center neither mobile phon...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': '生态/ecologically', 'Source': 'Mail', 'TR Description': 'User not able to enter into member center neither mobile phone nor QR code.', 'TR Level': 'Low', 'TR Number': 'TR864', 'TR Status': 'Processing', 'TR tracking': '23/10: DMC logs attached as well as vieos of the issue.', 'Type of problem': 'Problem with auth in member center', 'VIN|sim': 'LNNBDDEZXSD449358', 'Vehicle Type01': 'EXEED VX FL(M36T)', 'Wilfulness(责任人)': '袁清', '处理过程': '1024: DMC logs attached as well as vieos of the issue.', '当前问题状态': '1027:确认手机网络及APP版本正常,尝试清除APP缓存并重新登录,检查QR码扫描权限是否开启,重启手机和车机,若仍无法进入会员中心,建议联系售后进行远程诊断或进站排查系统故障。\n1024: DMC logs attached as well as vieos of the issue.'} +2025-12-08 01:00:44,198 - src.integrations.flexible_field_mapper - INFO - 开始转换字段: ['AI建议', 'Created by', 'Date creation', 'Module(模块)', 'Source', 'TR Description', 'TR Level', 'TR Number', 'TR Status', 'TR tracking', 'Type of problem', 'VIN|sim', 'Vehicle Type01', 'Wilfulness(责任人)', '处理过程', '当前问题状态'] +2025-12-08 01:00:44,198 - src.integrations.flexible_field_mapper - INFO - 映射字段 AI建议 -> ai_suggestion: 模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:User not able to enter into member center neither mobile phon... +2025-12-08 01:00:44,198 - src.integrations.flexible_field_mapper - INFO - 映射字段 Created by -> created_by: Vsevolod Tsoi +2025-12-08 01:00:44,198 - src.integrations.flexible_field_mapper - INFO - 映射字段 Date creation -> created_at: 1761148800000 +2025-12-08 01:00:44,198 - src.integrations.flexible_field_mapper - INFO - 映射字段 Module(模块) -> module: 生态/ecologically +2025-12-08 01:00:44,199 - src.integrations.flexible_field_mapper - INFO - 映射字段 Source -> source: Mail +2025-12-08 01:00:44,199 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Description -> description: User not able to enter into member center neither mobile phone nor QR code. +2025-12-08 01:00:44,199 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Level -> priority: Low +2025-12-08 01:00:44,199 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Number -> order_id: TR864 +2025-12-08 01:00:44,199 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Status -> status: Processing +2025-12-08 01:00:44,199 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR tracking -> resolution: 23/10: DMC logs attached as well as vieos of the issue. +2025-12-08 01:00:44,199 - src.integrations.flexible_field_mapper - INFO - 映射字段 Type of problem -> category: Problem with auth in member center +2025-12-08 01:00:44,199 - src.integrations.flexible_field_mapper - INFO - 映射字段 VIN|sim -> vin_sim: LNNBDDEZXSD449358 +2025-12-08 01:00:44,199 - src.integrations.flexible_field_mapper - INFO - 映射字段 Vehicle Type01 -> vehicle_type: EXEED VX FL(M36T) +2025-12-08 01:00:44,199 - src.integrations.flexible_field_mapper - INFO - 映射字段 Wilfulness(责任人) -> wilfulness: 袁清 +2025-12-08 01:00:44,199 - src.integrations.flexible_field_mapper - INFO - 映射字段 处理过程 -> resolution: 1024: DMC logs attached as well as vieos of the issue. +2025-12-08 01:00:44,202 - src.integrations.flexible_field_mapper - INFO - 飞书字段 当前问题状态 不存在于数据中 +2025-12-08 01:00:44,202 - src.integrations.flexible_field_mapper - INFO - 字段转换完成: 已映射 15, 未映射 1 +2025-12-08 01:00:44,208 - src.integrations.workorder_sync - INFO - 字段转换统计: 总字段 16, 已映射 15, 未映射 1 +2025-12-08 01:00:44,222 - src.integrations.workorder_sync - WARNING - 未映射字段: ['当前问题状态'] +2025-12-08 01:00:44,228 - src.integrations.workorder_sync - INFO - 字段 '当前问题状态' 的建议映射: {'local_field': 'status', 'similarity': 0.7, 'matched_pattern': '.*状态.*', 'confidence': 'medium', 'reason': "匹配模式 '.*状态.*'"} +2025-12-08 01:00:44,283 - src.integrations.workorder_sync - INFO - 开始转换飞书字段: {'AI建议': '模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Abnormal traffic consumption\n\n相关背景信息:\n相关知识库信息:\n- TR866 - Traf...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761235200000, 'Module(模块)': 'DMC', 'Source': 'Mail', 'TR Description': 'Abnormal traffic consumption', 'TR Level': 'Low', 'TR Number': 'TR866', 'TR Status': 'Analysising', 'TR tracking': '24/10: It is recommended that users grab the DMC log back for analysis.@Vsevolod Tsoi \n24/10: user states he use Navi only and no other apps. Consumption volume - 3.12 Gb for 3 days. Same symptom as E0X - traffic package size is plus mines the same - see pdf from MNO attached', 'Type of problem': 'Traffic is over', 'VIN|sim': 'XEYDD14B3SA012164', 'Vehicle Type01': 'TEST', 'Wilfulness(责任人)': 'Vsevolod Tsoi', '处理过程': '1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf', '当前问题状态': '1027:流量异常可能与导航应用后台持续联网有关,建议关闭Navi自动更新地图功能并限制后台数据使用,检查车机系统是否存在异常进程,如问题依旧,建议进站检测DMC模块日志及SIM卡通信状态,必要时升级系统或更换模块。\n1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf'} +2025-12-08 01:00:44,294 - src.integrations.flexible_field_mapper - INFO - 开始转换字段: ['AI建议', 'Created by', 'Date creation', 'Module(模块)', 'Source', 'TR Description', 'TR Level', 'TR Number', 'TR Status', 'TR tracking', 'Type of problem', 'VIN|sim', 'Vehicle Type01', 'Wilfulness(责任人)', '处理过程', '当前问题状态'] +2025-12-08 01:00:44,296 - src.integrations.flexible_field_mapper - INFO - 映射字段 AI建议 -> ai_suggestion: 模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:Abnormal traffic consumption + +相关背景信息: +相关知识库信息: +- TR866 - Traf... +2025-12-08 01:00:44,483 - src.integrations.flexible_field_mapper - INFO - 映射字段 Created by -> created_by: Vsevolod Tsoi +2025-12-08 01:00:44,485 - src.integrations.flexible_field_mapper - INFO - 映射字段 Date creation -> created_at: 1761235200000 +2025-12-08 01:00:44,485 - src.integrations.flexible_field_mapper - INFO - 映射字段 Module(模块) -> module: DMC +2025-12-08 01:00:44,498 - src.integrations.flexible_field_mapper - INFO - 映射字段 Source -> source: Mail +2025-12-08 01:00:44,498 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Description -> description: Abnormal traffic consumption +2025-12-08 01:00:44,505 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Level -> priority: Low +2025-12-08 01:00:44,508 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Number -> order_id: TR866 +2025-12-08 01:00:44,514 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Status -> status: Analysising +2025-12-08 01:00:44,515 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR tracking -> resolution: 24/10: It is recommended that users grab the DMC log back for analysis.@Vsevolod Tsoi +24/10: user states he use Navi only and no other apps. Consumption volume - 3.12 Gb for 3 days. Same symptom as E0X - traffic package size is plus mines the same - see pdf from MNO attached +2025-12-08 01:00:44,536 - src.integrations.flexible_field_mapper - INFO - 映射字段 Type of problem -> category: Traffic is over +2025-12-08 01:00:44,543 - src.integrations.flexible_field_mapper - INFO - 映射字段 VIN|sim -> vin_sim: XEYDD14B3SA012164 +2025-12-08 01:00:44,543 - src.integrations.flexible_field_mapper - INFO - 映射字段 Vehicle Type01 -> vehicle_type: TEST +2025-12-08 01:00:44,543 - src.integrations.flexible_field_mapper - INFO - 映射字段 Wilfulness(责任人) -> wilfulness: Vsevolod Tsoi +2025-12-08 01:00:44,543 - src.integrations.flexible_field_mapper - INFO - 映射字段 处理过程 -> resolution: 1024:建议用户抓去DMC日志回传分析 +1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf +2025-12-08 01:00:44,547 - src.integrations.flexible_field_mapper - INFO - 飞书字段 当前问题状态 不存在于数据中 +2025-12-08 01:00:44,547 - src.integrations.flexible_field_mapper - INFO - 字段转换完成: 已映射 15, 未映射 1 +2025-12-08 01:00:44,548 - src.integrations.workorder_sync - INFO - 字段转换统计: 总字段 16, 已映射 15, 未映射 1 +2025-12-08 01:00:44,548 - src.integrations.workorder_sync - WARNING - 未映射字段: ['当前问题状态'] +2025-12-08 01:00:44,548 - src.integrations.workorder_sync - INFO - 字段 '当前问题状态' 的建议映射: {'local_field': 'status', 'similarity': 0.7, 'matched_pattern': '.*状态.*', 'confidence': 'medium', 'reason': "匹配模式 '.*状态.*'"} +2025-12-08 01:00:44,738 - src.integrations.workorder_sync - INFO - 飞书同步完成: {'success': True, 'total_records': 4, 'synced_count': 4, 'created_count': 0, 'updated_count': 4, 'ai_suggestions_generated': True, 'errors': []} +2025-12-08 01:00:44,739 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:00:44] "POST /api/feishu-sync/sync-from-feishu HTTP/1.1" 200 - +2025-12-08 01:00:48,369 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:00:48] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 01:00:54,363 - src.integrations.feishu_client - INFO - 发送飞书API请求: GET https://open.feishu.cn/open-apis/bitable/v1/apps/XXnEbiCmEaMblSs6FDJcFCqsnIg/tables/tblnl3vJPpgMTSiP/records +2025-12-08 01:00:54,398 - src.integrations.feishu_client - INFO - 请求头: Authorization: Bearer t-g104c7nOSPYB6V6UE6... +2025-12-08 01:00:55,328 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:00:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 01:00:56,310 - src.integrations.feishu_client - INFO - 飞书API响应状态码: 200 +2025-12-08 01:00:56,310 - src.integrations.feishu_client - INFO - 飞书API响应内容: {'code': 0, 'data': {'has_more': False, 'items': [{'fields': {'AI建议': "1208:您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业分析与升级处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:The widget weather doesn't work \n\n相关背景信息:\n无相关背景信息\n\n请提供:\n1. 问题...", 'Created by': 'Evgeniy', 'Date creation': 1745769600000, 'Module(模块)': 'local O&M', 'Source': 'Mail', 'TR Description': "The widget weather doesn't work ", 'TR Level': 'Low', 'TR Number': 'TR559', 'TR Status': 'Processing', 'TR tracking': '28/04:Local feedback weather widget does not work, query TBOX and IHU login record is normal, traffic binding is normal, we suggest users to use mobile phone hotspot to connect to the car, observe whether the widget is restored, if not, try to capture the IHU logs.', 'Type of problem': 'HU troubles', 'VIN|sim': 'LVTDD24B8RG019153 ', 'Vehicle Type01': 'EXEED RX(T22)', 'Wilfulness(责任人)': 'Evgeniy', '处理过程': '0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志', '当前问题状态': '1027:天气小部件无法使用,已确认TBOX及IHU登录正常、流量绑定正常,建议已完成手机热点连接测试并尝试抓取IHU日志,若问题仍存在,建议进站进行系统诊断或软件版本升级排查。\n0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志'}, 'id': 'rec253kqBfXae4', 'record_id': 'rec253kqBfXae4'}, {'fields': {'AI建议': '1208:该工单问题已明确为TBOX自10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止更新、APP端数据滞留、且无任何TBOX日志上传——这已超出远程唤醒与诊断能力范围,属典型TBOX通信链路或电源管理异常。\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Vehicle data is not updated in the app => dated from October,...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': 'TBOX', 'Source': 'Mail', 'TR Description': 'Vehicle data is not updated in the app => dated from October, 19 - thus, they are old one. No TBOX log in since October, 19. TBOX is in deep sleep since October, 19.\n', 'TR Level': 'Low', 'TR Number': 'TR863', 'TR Status': 'Processing', 'TR tracking': '24/10:The vehicle is in deep sleep, and T-box logs cannot be remotely obtained. The problem is a bit complex and difficult to locate, so the customer needs to visit the station to retrieve T-box logs and DMC logs. @Vsevolod Tsoi', 'Type of problem': 'Remote control ', 'VIN|sim': 'LNNBDDEZ8SD345645 ', 'Vehicle Type01': 'JAECOO J7(T1EJ)', 'Wilfulness(责任人)': '刘娇龙', '处理过程': '1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志', '当前问题状态': '1027:车辆自10月19日进入深度睡眠,TBOX无远程连接,建议客户尽快进站提取TBOX及DMC日志,进行本地诊断分析,排查电源管理或通信模块异常原因,确认硬件状态及软件配置是否正常。\n1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志'}, 'id': 'recv0NLSh2a2S7', 'record_id': 'recv0NLSh2a2S7'}, {'fields': {'AI建议': '1208:经分析当前工单进展:用户无法通过手机号或二维码登录会员中心,且已上传DMC日志及问题视频(时间戳1024),说明远程行为已完整复现,初步排除用户操作误触可能。\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:User not able to enter into member center neither mobile phon...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': '生态/ecologically', 'Source': 'Mail', 'TR Description': 'User not able to enter into member center neither mobile phone nor QR code.', 'TR Level': 'Low', 'TR Number': 'TR864', 'TR Status': 'Processing', 'TR tracking': '23/10: DMC logs attached as well as vieos of the issue.', 'Type of problem': 'Problem with auth in member center', 'VIN|sim': 'LNNBDDEZXSD449358', 'Vehicle Type01': 'EXEED VX FL(M36T)', 'Wilfulness(责任人)': '袁清', '处理过程': '1024: DMC logs attached as well as vieos of the issue.', '当前问题状态': '1027:确认手机网络及APP版本正常,尝试清除APP缓存并重新登录,检查QR码扫描权限是否开启,重启手机和车机,若仍无法进入会员中心,建议联系售后进行远程诊断或进站排查系统故障。\n1024: DMC logs attached as well as vieos of the issue.'}, 'id': 'recv0NLZoKLlRJ', 'record_id': 'recv0NLZoKLlRJ'}, {'fields': {'AI建议': '1208:您好,感谢您反馈异常流量消耗问题。结合当前工单进展(已建议抓取DMC日志、用户确认仅使用导航且3天消耗3.12GB,症状与E0X车型TR866案例高度一致),现提供专业分析与处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Abnormal traffic consumption\n\n相关背景信息:\n相关知识库信息:\n- TR866 - Traf...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761235200000, 'Module(模块)': 'DMC', 'Source': 'Mail', 'TR Description': 'Abnormal traffic consumption', 'TR Level': 'Low', 'TR Number': 'TR866', 'TR Status': 'Analysising', 'TR tracking': '24/10: It is recommended that users grab the DMC log back for analysis.@Vsevolod Tsoi \n24/10: user states he use Navi only and no other apps. Consumption volume - 3.12 Gb for 3 days. Same symptom as E0X - traffic package size is plus mines the same - see pdf from MNO attached', 'Type of problem': 'Traffic is over', 'VIN|sim': 'XEYDD14B3SA012164', 'Vehicle Type01': 'TEST', 'Wilfulness(责任人)': 'Vsevolod Tsoi', '处理过程': '1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf', '当前问题状态': '1027:流量异常可能与导航应用后台持续联网有关,建议关闭Navi自动更新地图功能并限制后台数据使用,检查车机系统是否存在异常进程,如问题依旧,建议进站检测DMC模块日志及SIM卡通信状态,必要时升级系统或更换模块。\n1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf'}, 'id': 'recv0NLZoKjKvx', 'record_id': 'recv0NLZoKjKvx'}], 'total': 4}, 'msg': 'success'} +2025-12-08 01:00:56,317 - src.integrations.flexible_field_mapper - INFO - 开始发现字段: ['AI建议', 'Created by', 'Date creation', 'Module(模块)', 'Source', 'TR Description', 'TR Level', 'TR Number', 'TR Status', 'TR tracking', 'Type of problem', 'VIN|sim', 'Vehicle Type01', 'Wilfulness(责任人)', '处理过程', '当前问题状态'] +2025-12-08 01:00:56,374 - src.integrations.flexible_field_mapper - INFO - 字段发现完成: 已映射 15, 未映射 1, 建议映射 1 +2025-12-08 01:00:56,405 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:00:56] "POST /api/feishu-sync/field-mapping/discover HTTP/1.1" 200 - +2025-12-08 01:00:57,846 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:00:57] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 01:01:04,117 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 87.2% +2025-12-08 01:01:04,940 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 87.1% +2025-12-08 01:01:18,776 - src.integrations.workorder_sync - INFO - 开始从飞书同步工单数据... +2025-12-08 01:01:18,782 - src.integrations.feishu_client - INFO - 发送飞书API请求: GET https://open.feishu.cn/open-apis/bitable/v1/apps/XXnEbiCmEaMblSs6FDJcFCqsnIg/tables/tblnl3vJPpgMTSiP/records +2025-12-08 01:01:18,783 - src.integrations.feishu_client - INFO - 请求头: Authorization: Bearer t-g104c7nOSPYB6V6UE6... +2025-12-08 01:01:20,324 - src.integrations.feishu_client - INFO - 飞书API响应状态码: 200 +2025-12-08 01:01:20,329 - src.integrations.feishu_client - INFO - 飞书API响应内容: {'code': 0, 'data': {'has_more': False, 'items': [{'fields': {'AI建议': "1208:您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业分析与升级处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:The widget weather doesn't work \n\n相关背景信息:\n无相关背景信息\n\n请提供:\n1. 问题...", 'Created by': 'Evgeniy', 'Date creation': 1745769600000, 'Module(模块)': 'local O&M', 'Source': 'Mail', 'TR Description': "The widget weather doesn't work ", 'TR Level': 'Low', 'TR Number': 'TR559', 'TR Status': 'Processing', 'TR tracking': '28/04:Local feedback weather widget does not work, query TBOX and IHU login record is normal, traffic binding is normal, we suggest users to use mobile phone hotspot to connect to the car, observe whether the widget is restored, if not, try to capture the IHU logs.', 'Type of problem': 'HU troubles', 'VIN|sim': 'LVTDD24B8RG019153 ', 'Vehicle Type01': 'EXEED RX(T22)', 'Wilfulness(责任人)': 'Evgeniy', '处理过程': '0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志', '当前问题状态': '1027:天气小部件无法使用,已确认TBOX及IHU登录正常、流量绑定正常,建议已完成手机热点连接测试并尝试抓取IHU日志,若问题仍存在,建议进站进行系统诊断或软件版本升级排查。\n0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志'}, 'id': 'rec253kqBfXae4', 'record_id': 'rec253kqBfXae4'}, {'fields': {'AI建议': '1208:该工单问题已明确为TBOX自10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止更新、APP端数据滞留、且无任何TBOX日志上传——这已超出远程唤醒与诊断能力范围,属典型TBOX通信链路或电源管理异常。\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Vehicle data is not updated in the app => dated from October,...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': 'TBOX', 'Source': 'Mail', 'TR Description': 'Vehicle data is not updated in the app => dated from October, 19 - thus, they are old one. No TBOX log in since October, 19. TBOX is in deep sleep since October, 19.\n', 'TR Level': 'Low', 'TR Number': 'TR863', 'TR Status': 'Processing', 'TR tracking': '24/10:The vehicle is in deep sleep, and T-box logs cannot be remotely obtained. The problem is a bit complex and difficult to locate, so the customer needs to visit the station to retrieve T-box logs and DMC logs. @Vsevolod Tsoi', 'Type of problem': 'Remote control ', 'VIN|sim': 'LNNBDDEZ8SD345645 ', 'Vehicle Type01': 'JAECOO J7(T1EJ)', 'Wilfulness(责任人)': '刘娇龙', '处理过程': '1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志', '当前问题状态': '1027:车辆自10月19日进入深度睡眠,TBOX无远程连接,建议客户尽快进站提取TBOX及DMC日志,进行本地诊断分析,排查电源管理或通信模块异常原因,确认硬件状态及软件配置是否正常。\n1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志'}, 'id': 'recv0NLSh2a2S7', 'record_id': 'recv0NLSh2a2S7'}, {'fields': {'AI建议': '1208:经分析当前工单进展:用户无法通过手机号或二维码登录会员中心,且已上传DMC日志及问题视频(时间戳1024),说明远程行为已完整复现,初步排除用户操作误触可能。\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:User not able to enter into member center neither mobile phon...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': '生态/ecologically', 'Source': 'Mail', 'TR Description': 'User not able to enter into member center neither mobile phone nor QR code.', 'TR Level': 'Low', 'TR Number': 'TR864', 'TR Status': 'Processing', 'TR tracking': '23/10: DMC logs attached as well as vieos of the issue.', 'Type of problem': 'Problem with auth in member center', 'VIN|sim': 'LNNBDDEZXSD449358', 'Vehicle Type01': 'EXEED VX FL(M36T)', 'Wilfulness(责任人)': '袁清', '处理过程': '1024: DMC logs attached as well as vieos of the issue.', '当前问题状态': '1027:确认手机网络及APP版本正常,尝试清除APP缓存并重新登录,检查QR码扫描权限是否开启,重启手机和车机,若仍无法进入会员中心,建议联系售后进行远程诊断或进站排查系统故障。\n1024: DMC logs attached as well as vieos of the issue.'}, 'id': 'recv0NLZoKLlRJ', 'record_id': 'recv0NLZoKLlRJ'}, {'fields': {'AI建议': '1208:您好,感谢您反馈异常流量消耗问题。结合当前工单进展(已建议抓取DMC日志、用户确认仅使用导航且3天消耗3.12GB,症状与E0X车型TR866案例高度一致),现提供专业分析与处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Abnormal traffic consumption\n\n相关背景信息:\n相关知识库信息:\n- TR866 - Traf...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761235200000, 'Module(模块)': 'DMC', 'Source': 'Mail', 'TR Description': 'Abnormal traffic consumption', 'TR Level': 'Low', 'TR Number': 'TR866', 'TR Status': 'Analysising', 'TR tracking': '24/10: It is recommended that users grab the DMC log back for analysis.@Vsevolod Tsoi \n24/10: user states he use Navi only and no other apps. Consumption volume - 3.12 Gb for 3 days. Same symptom as E0X - traffic package size is plus mines the same - see pdf from MNO attached', 'Type of problem': 'Traffic is over', 'VIN|sim': 'XEYDD14B3SA012164', 'Vehicle Type01': 'TEST', 'Wilfulness(责任人)': 'Vsevolod Tsoi', '处理过程': '1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf', '当前问题状态': '1027:流量异常可能与导航应用后台持续联网有关,建议关闭Navi自动更新地图功能并限制后台数据使用,检查车机系统是否存在异常进程,如问题依旧,建议进站检测DMC模块日志及SIM卡通信状态,必要时升级系统或更换模块。\n1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf'}, 'id': 'recv0NLZoKjKvx', 'record_id': 'recv0NLZoKjKvx'}], 'total': 4}, 'msg': 'success'} +2025-12-08 01:01:20,331 - src.integrations.workorder_sync - INFO - 从飞书获取 4 条记录 +2025-12-08 01:01:20,396 - src.integrations.workorder_sync - INFO - 开始转换飞书字段: {'AI建议': "1208:您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业分析与升级处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:The widget weather doesn't work \n\n相关背景信息:\n无相关背景信息\n\n请提供:\n1. 问题...", 'Created by': 'Evgeniy', 'Date creation': 1745769600000, 'Module(模块)': 'local O&M', 'Source': 'Mail', 'TR Description': "The widget weather doesn't work ", 'TR Level': 'Low', 'TR Number': 'TR559', 'TR Status': 'Processing', 'TR tracking': '28/04:Local feedback weather widget does not work, query TBOX and IHU login record is normal, traffic binding is normal, we suggest users to use mobile phone hotspot to connect to the car, observe whether the widget is restored, if not, try to capture the IHU logs.', 'Type of problem': 'HU troubles', 'VIN|sim': 'LVTDD24B8RG019153 ', 'Vehicle Type01': 'EXEED RX(T22)', 'Wilfulness(责任人)': 'Evgeniy', '处理过程': '0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志', '当前问题状态': '1027:天气小部件无法使用,已确认TBOX及IHU登录正常、流量绑定正常,建议已完成手机热点连接测试并尝试抓取IHU日志,若问题仍存在,建议进站进行系统诊断或软件版本升级排查。\n0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志'} +2025-12-08 01:01:20,680 - src.integrations.flexible_field_mapper - INFO - 开始转换字段: ['AI建议', 'Created by', 'Date creation', 'Module(模块)', 'Source', 'TR Description', 'TR Level', 'TR Number', 'TR Status', 'TR tracking', 'Type of problem', 'VIN|sim', 'Vehicle Type01', 'Wilfulness(责任人)', '处理过程', '当前问题状态'] +2025-12-08 01:01:20,681 - src.integrations.flexible_field_mapper - INFO - 映射字段 AI建议 -> ai_suggestion: 1208:您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业分析与升级处理建议如下: +模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:The widget weather doesn't work + +相关背景信息: +无相关背景信息 + +请提供: +1. 问题... +2025-12-08 01:01:20,681 - src.integrations.flexible_field_mapper - INFO - 映射字段 Created by -> created_by: Evgeniy +2025-12-08 01:01:20,681 - src.integrations.flexible_field_mapper - INFO - 映射字段 Date creation -> created_at: 1745769600000 +2025-12-08 01:01:20,681 - src.integrations.flexible_field_mapper - INFO - 映射字段 Module(模块) -> module: local O&M +2025-12-08 01:01:20,681 - src.integrations.flexible_field_mapper - INFO - 映射字段 Source -> source: Mail +2025-12-08 01:01:20,681 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Description -> description: The widget weather doesn't work +2025-12-08 01:01:20,681 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Level -> priority: Low +2025-12-08 01:01:20,681 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Number -> order_id: TR559 +2025-12-08 01:01:20,681 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Status -> status: Processing +2025-12-08 01:01:20,681 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR tracking -> resolution: 28/04:Local feedback weather widget does not work, query TBOX and IHU login record is normal, traffic binding is normal, we suggest users to use mobile phone hotspot to connect to the car, observe whether the widget is restored, if not, try to capture the IHU logs. +2025-12-08 01:01:20,699 - src.integrations.flexible_field_mapper - INFO - 映射字段 Type of problem -> category: HU troubles +2025-12-08 01:01:20,699 - src.integrations.flexible_field_mapper - INFO - 映射字段 VIN|sim -> vin_sim: LVTDD24B8RG019153 +2025-12-08 01:01:20,699 - src.integrations.flexible_field_mapper - INFO - 映射字段 Vehicle Type01 -> vehicle_type: EXEED RX(T22) +2025-12-08 01:01:20,699 - src.integrations.flexible_field_mapper - INFO - 映射字段 Wilfulness(责任人) -> wilfulness: Evgeniy +2025-12-08 01:01:20,699 - src.integrations.flexible_field_mapper - INFO - 映射字段 处理过程 -> resolution: 0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志 +2025-12-08 01:01:20,702 - src.integrations.flexible_field_mapper - INFO - 飞书字段 当前问题状态 不存在于数据中 +2025-12-08 01:01:20,702 - src.integrations.flexible_field_mapper - INFO - 字段转换完成: 已映射 15, 未映射 1 +2025-12-08 01:01:20,702 - src.integrations.workorder_sync - INFO - 字段转换统计: 总字段 16, 已映射 15, 未映射 1 +2025-12-08 01:01:20,702 - src.integrations.workorder_sync - WARNING - 未映射字段: ['当前问题状态'] +2025-12-08 01:01:20,702 - src.integrations.workorder_sync - INFO - 字段 '当前问题状态' 的建议映射: {'local_field': 'status', 'similarity': 0.7, 'matched_pattern': '.*状态.*', 'confidence': 'medium', 'reason': "匹配模式 '.*状态.*'"} +2025-12-08 01:01:20,714 - src.integrations.workorder_sync - INFO - 开始转换飞书字段: {'AI建议': '1208:该工单问题已明确为TBOX自10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止更新、APP端数据滞留、且无任何TBOX日志上传——这已超出远程唤醒与诊断能力范围,属典型TBOX通信链路或电源管理异常。\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Vehicle data is not updated in the app => dated from October,...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': 'TBOX', 'Source': 'Mail', 'TR Description': 'Vehicle data is not updated in the app => dated from October, 19 - thus, they are old one. No TBOX log in since October, 19. TBOX is in deep sleep since October, 19.\n', 'TR Level': 'Low', 'TR Number': 'TR863', 'TR Status': 'Processing', 'TR tracking': '24/10:The vehicle is in deep sleep, and T-box logs cannot be remotely obtained. The problem is a bit complex and difficult to locate, so the customer needs to visit the station to retrieve T-box logs and DMC logs. @Vsevolod Tsoi', 'Type of problem': 'Remote control ', 'VIN|sim': 'LNNBDDEZ8SD345645 ', 'Vehicle Type01': 'JAECOO J7(T1EJ)', 'Wilfulness(责任人)': '刘娇龙', '处理过程': '1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志', '当前问题状态': '1027:车辆自10月19日进入深度睡眠,TBOX无远程连接,建议客户尽快进站提取TBOX及DMC日志,进行本地诊断分析,排查电源管理或通信模块异常原因,确认硬件状态及软件配置是否正常。\n1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志'} +2025-12-08 01:01:20,720 - src.integrations.flexible_field_mapper - INFO - 开始转换字段: ['AI建议', 'Created by', 'Date creation', 'Module(模块)', 'Source', 'TR Description', 'TR Level', 'TR Number', 'TR Status', 'TR tracking', 'Type of problem', 'VIN|sim', 'Vehicle Type01', 'Wilfulness(责任人)', '处理过程', '当前问题状态'] +2025-12-08 01:01:20,720 - src.integrations.flexible_field_mapper - INFO - 映射字段 AI建议 -> ai_suggestion: 1208:该工单问题已明确为TBOX自10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止更新、APP端数据滞留、且无任何TBOX日志上传——这已超出远程唤醒与诊断能力范围,属典型TBOX通信链路或电源管理异常。 +模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:Vehicle data is not updated in the app => dated from October,... +2025-12-08 01:01:20,720 - src.integrations.flexible_field_mapper - INFO - 映射字段 Created by -> created_by: Vsevolod Tsoi +2025-12-08 01:01:20,726 - src.integrations.flexible_field_mapper - INFO - 映射字段 Date creation -> created_at: 1761148800000 +2025-12-08 01:01:20,726 - src.integrations.flexible_field_mapper - INFO - 映射字段 Module(模块) -> module: TBOX +2025-12-08 01:01:20,726 - src.integrations.flexible_field_mapper - INFO - 映射字段 Source -> source: Mail +2025-12-08 01:01:20,733 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Description -> description: Vehicle data is not updated in the app => dated from October, 19 - thus, they are old one. No TBOX log in since October, 19. TBOX is in deep sleep since October, 19. + +2025-12-08 01:01:20,738 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Level -> priority: Low +2025-12-08 01:01:20,748 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Number -> order_id: TR863 +2025-12-08 01:01:20,748 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Status -> status: Processing +2025-12-08 01:01:20,787 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR tracking -> resolution: 24/10:The vehicle is in deep sleep, and T-box logs cannot be remotely obtained. The problem is a bit complex and difficult to locate, so the customer needs to visit the station to retrieve T-box logs and DMC logs. @Vsevolod Tsoi +2025-12-08 01:01:20,787 - src.integrations.flexible_field_mapper - INFO - 映射字段 Type of problem -> category: Remote control +2025-12-08 01:01:20,787 - src.integrations.flexible_field_mapper - INFO - 映射字段 VIN|sim -> vin_sim: LNNBDDEZ8SD345645 +2025-12-08 01:01:20,788 - src.integrations.flexible_field_mapper - INFO - 映射字段 Vehicle Type01 -> vehicle_type: JAECOO J7(T1EJ) +2025-12-08 01:01:20,788 - src.integrations.flexible_field_mapper - INFO - 映射字段 Wilfulness(责任人) -> wilfulness: 刘娇龙 +2025-12-08 01:01:20,789 - src.integrations.flexible_field_mapper - INFO - 映射字段 处理过程 -> resolution: 1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志 +2025-12-08 01:01:20,802 - src.integrations.flexible_field_mapper - INFO - 飞书字段 当前问题状态 不存在于数据中 +2025-12-08 01:01:20,815 - src.integrations.flexible_field_mapper - INFO - 字段转换完成: 已映射 15, 未映射 1 +2025-12-08 01:01:20,822 - src.integrations.workorder_sync - INFO - 字段转换统计: 总字段 16, 已映射 15, 未映射 1 +2025-12-08 01:01:20,823 - src.integrations.workorder_sync - WARNING - 未映射字段: ['当前问题状态'] +2025-12-08 01:01:20,849 - src.integrations.workorder_sync - INFO - 字段 '当前问题状态' 的建议映射: {'local_field': 'status', 'similarity': 0.7, 'matched_pattern': '.*状态.*', 'confidence': 'medium', 'reason': "匹配模式 '.*状态.*'"} +2025-12-08 01:01:20,906 - src.integrations.workorder_sync - INFO - 开始转换飞书字段: {'AI建议': '1208:经分析当前工单进展:用户无法通过手机号或二维码登录会员中心,且已上传DMC日志及问题视频(时间戳1024),说明远程行为已完整复现,初步排除用户操作误触可能。\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:User not able to enter into member center neither mobile phon...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': '生态/ecologically', 'Source': 'Mail', 'TR Description': 'User not able to enter into member center neither mobile phone nor QR code.', 'TR Level': 'Low', 'TR Number': 'TR864', 'TR Status': 'Processing', 'TR tracking': '23/10: DMC logs attached as well as vieos of the issue.', 'Type of problem': 'Problem with auth in member center', 'VIN|sim': 'LNNBDDEZXSD449358', 'Vehicle Type01': 'EXEED VX FL(M36T)', 'Wilfulness(责任人)': '袁清', '处理过程': '1024: DMC logs attached as well as vieos of the issue.', '当前问题状态': '1027:确认手机网络及APP版本正常,尝试清除APP缓存并重新登录,检查QR码扫描权限是否开启,重启手机和车机,若仍无法进入会员中心,建议联系售后进行远程诊断或进站排查系统故障。\n1024: DMC logs attached as well as vieos of the issue.'} +2025-12-08 01:01:20,941 - src.integrations.flexible_field_mapper - INFO - 开始转换字段: ['AI建议', 'Created by', 'Date creation', 'Module(模块)', 'Source', 'TR Description', 'TR Level', 'TR Number', 'TR Status', 'TR tracking', 'Type of problem', 'VIN|sim', 'Vehicle Type01', 'Wilfulness(责任人)', '处理过程', '当前问题状态'] +2025-12-08 01:01:20,941 - src.integrations.flexible_field_mapper - INFO - 映射字段 AI建议 -> ai_suggestion: 1208:经分析当前工单进展:用户无法通过手机号或二维码登录会员中心,且已上传DMC日志及问题视频(时间戳1024),说明远程行为已完整复现,初步排除用户操作误触可能。 +模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:User not able to enter into member center neither mobile phon... +2025-12-08 01:01:20,941 - src.integrations.flexible_field_mapper - INFO - 映射字段 Created by -> created_by: Vsevolod Tsoi +2025-12-08 01:01:20,941 - src.integrations.flexible_field_mapper - INFO - 映射字段 Date creation -> created_at: 1761148800000 +2025-12-08 01:01:20,941 - src.integrations.flexible_field_mapper - INFO - 映射字段 Module(模块) -> module: 生态/ecologically +2025-12-08 01:01:20,941 - src.integrations.flexible_field_mapper - INFO - 映射字段 Source -> source: Mail +2025-12-08 01:01:20,942 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Description -> description: User not able to enter into member center neither mobile phone nor QR code. +2025-12-08 01:01:20,942 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Level -> priority: Low +2025-12-08 01:01:20,942 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Number -> order_id: TR864 +2025-12-08 01:01:20,942 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Status -> status: Processing +2025-12-08 01:01:20,942 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR tracking -> resolution: 23/10: DMC logs attached as well as vieos of the issue. +2025-12-08 01:01:20,942 - src.integrations.flexible_field_mapper - INFO - 映射字段 Type of problem -> category: Problem with auth in member center +2025-12-08 01:01:20,942 - src.integrations.flexible_field_mapper - INFO - 映射字段 VIN|sim -> vin_sim: LNNBDDEZXSD449358 +2025-12-08 01:01:20,942 - src.integrations.flexible_field_mapper - INFO - 映射字段 Vehicle Type01 -> vehicle_type: EXEED VX FL(M36T) +2025-12-08 01:01:20,942 - src.integrations.flexible_field_mapper - INFO - 映射字段 Wilfulness(责任人) -> wilfulness: 袁清 +2025-12-08 01:01:20,943 - src.integrations.flexible_field_mapper - INFO - 映射字段 处理过程 -> resolution: 1024: DMC logs attached as well as vieos of the issue. +2025-12-08 01:01:20,946 - src.integrations.flexible_field_mapper - INFO - 飞书字段 当前问题状态 不存在于数据中 +2025-12-08 01:01:20,946 - src.integrations.flexible_field_mapper - INFO - 字段转换完成: 已映射 15, 未映射 1 +2025-12-08 01:01:20,946 - src.integrations.workorder_sync - INFO - 字段转换统计: 总字段 16, 已映射 15, 未映射 1 +2025-12-08 01:01:20,946 - src.integrations.workorder_sync - WARNING - 未映射字段: ['当前问题状态'] +2025-12-08 01:01:20,953 - src.integrations.workorder_sync - INFO - 字段 '当前问题状态' 的建议映射: {'local_field': 'status', 'similarity': 0.7, 'matched_pattern': '.*状态.*', 'confidence': 'medium', 'reason': "匹配模式 '.*状态.*'"} +2025-12-08 01:01:21,010 - src.integrations.workorder_sync - INFO - 开始转换飞书字段: {'AI建议': '1208:您好,感谢您反馈异常流量消耗问题。结合当前工单进展(已建议抓取DMC日志、用户确认仅使用导航且3天消耗3.12GB,症状与E0X车型TR866案例高度一致),现提供专业分析与处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Abnormal traffic consumption\n\n相关背景信息:\n相关知识库信息:\n- TR866 - Traf...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761235200000, 'Module(模块)': 'DMC', 'Source': 'Mail', 'TR Description': 'Abnormal traffic consumption', 'TR Level': 'Low', 'TR Number': 'TR866', 'TR Status': 'Analysising', 'TR tracking': '24/10: It is recommended that users grab the DMC log back for analysis.@Vsevolod Tsoi \n24/10: user states he use Navi only and no other apps. Consumption volume - 3.12 Gb for 3 days. Same symptom as E0X - traffic package size is plus mines the same - see pdf from MNO attached', 'Type of problem': 'Traffic is over', 'VIN|sim': 'XEYDD14B3SA012164', 'Vehicle Type01': 'TEST', 'Wilfulness(责任人)': 'Vsevolod Tsoi', '处理过程': '1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf', '当前问题状态': '1027:流量异常可能与导航应用后台持续联网有关,建议关闭Navi自动更新地图功能并限制后台数据使用,检查车机系统是否存在异常进程,如问题依旧,建议进站检测DMC模块日志及SIM卡通信状态,必要时升级系统或更换模块。\n1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf'} +2025-12-08 01:01:21,021 - src.integrations.flexible_field_mapper - INFO - 开始转换字段: ['AI建议', 'Created by', 'Date creation', 'Module(模块)', 'Source', 'TR Description', 'TR Level', 'TR Number', 'TR Status', 'TR tracking', 'Type of problem', 'VIN|sim', 'Vehicle Type01', 'Wilfulness(责任人)', '处理过程', '当前问题状态'] +2025-12-08 01:01:21,022 - src.integrations.flexible_field_mapper - INFO - 映射字段 AI建议 -> ai_suggestion: 1208:您好,感谢您反馈异常流量消耗问题。结合当前工单进展(已建议抓取DMC日志、用户确认仅使用导航且3天消耗3.12GB,症状与E0X车型TR866案例高度一致),现提供专业分析与处理建议如下: +模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:Abnormal traffic consumption + +相关背景信息: +相关知识库信息: +- TR866 - Traf... +2025-12-08 01:01:21,030 - src.integrations.flexible_field_mapper - INFO - 映射字段 Created by -> created_by: Vsevolod Tsoi +2025-12-08 01:01:21,031 - src.integrations.flexible_field_mapper - INFO - 映射字段 Date creation -> created_at: 1761235200000 +2025-12-08 01:01:21,039 - src.integrations.flexible_field_mapper - INFO - 映射字段 Module(模块) -> module: DMC +2025-12-08 01:01:21,039 - src.integrations.flexible_field_mapper - INFO - 映射字段 Source -> source: Mail +2025-12-08 01:01:21,040 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Description -> description: Abnormal traffic consumption +2025-12-08 01:01:21,040 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Level -> priority: Low +2025-12-08 01:01:21,047 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Number -> order_id: TR866 +2025-12-08 01:01:21,047 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Status -> status: Analysising +2025-12-08 01:01:21,047 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR tracking -> resolution: 24/10: It is recommended that users grab the DMC log back for analysis.@Vsevolod Tsoi +24/10: user states he use Navi only and no other apps. Consumption volume - 3.12 Gb for 3 days. Same symptom as E0X - traffic package size is plus mines the same - see pdf from MNO attached +2025-12-08 01:01:21,047 - src.integrations.flexible_field_mapper - INFO - 映射字段 Type of problem -> category: Traffic is over +2025-12-08 01:01:21,047 - src.integrations.flexible_field_mapper - INFO - 映射字段 VIN|sim -> vin_sim: XEYDD14B3SA012164 +2025-12-08 01:01:21,047 - src.integrations.flexible_field_mapper - INFO - 映射字段 Vehicle Type01 -> vehicle_type: TEST +2025-12-08 01:01:21,047 - src.integrations.flexible_field_mapper - INFO - 映射字段 Wilfulness(责任人) -> wilfulness: Vsevolod Tsoi +2025-12-08 01:01:21,047 - src.integrations.flexible_field_mapper - INFO - 映射字段 处理过程 -> resolution: 1024:建议用户抓去DMC日志回传分析 +1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf +2025-12-08 01:01:21,050 - src.integrations.flexible_field_mapper - INFO - 飞书字段 当前问题状态 不存在于数据中 +2025-12-08 01:01:21,050 - src.integrations.flexible_field_mapper - INFO - 字段转换完成: 已映射 15, 未映射 1 +2025-12-08 01:01:21,050 - src.integrations.workorder_sync - INFO - 字段转换统计: 总字段 16, 已映射 15, 未映射 1 +2025-12-08 01:01:21,050 - src.integrations.workorder_sync - WARNING - 未映射字段: ['当前问题状态'] +2025-12-08 01:01:21,050 - src.integrations.workorder_sync - INFO - 字段 '当前问题状态' 的建议映射: {'local_field': 'status', 'similarity': 0.7, 'matched_pattern': '.*状态.*', 'confidence': 'medium', 'reason': "匹配模式 '.*状态.*'"} +2025-12-08 01:01:21,131 - src.integrations.workorder_sync - INFO - 飞书同步完成: {'success': True, 'total_records': 4, 'synced_count': 4, 'created_count': 0, 'updated_count': 4, 'ai_suggestions_generated': False, 'errors': []} +2025-12-08 01:01:21,132 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:01:21] "POST /api/feishu-sync/sync-from-feishu HTTP/1.1" 200 - +2025-12-08 01:01:22,302 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:01:22] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 01:01:29,904 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:01:29] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 01:01:33,628 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:01:33] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 01:01:43,409 - werkzeug - INFO - 203.175.14.32 - - [08/Dec/2025 01:01:43] "GET /api/feishu-sync/field-mapping/status HTTP/1.1" 200 - +2025-12-08 01:01:47,237 - werkzeug - INFO - 23.247.138.217 - - [08/Dec/2025 01:01:47] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 01:01:51,719 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:01:51] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 01:02:05,782 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 90.7% +2025-12-08 01:02:06,308 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 90.9% +2025-12-08 01:02:12,892 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-08 01:02:13,693 - src.core.database - INFO - 数据库初始化成功 +2025-12-08 01:02:13,698 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-08 01:02:16,181 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-08 01:02:16,191 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-08 01:02:16,250 - werkzeug - INFO - [31m[1mWARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.[0m + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.3.12.3:5000 +2025-12-08 01:02:16,250 - werkzeug - INFO - [33mPress CTRL+C to quit[0m +2025-12-08 01:02:16,561 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 01:02:16,562 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 01:02:16,572 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 01:02:16,576 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 01:02:16,578 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-08 01:02:16,586 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-08 01:02:16,615 - werkzeug - INFO - 23.247.138.217 - - [08/Dec/2025 01:02:16] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 01:02:38,059 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:02:38] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 01:02:38,625 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:02:38] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 01:02:38,627 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:02:38] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 13:22:24,082 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-08 13:22:24,658 - src.core.database - INFO - 数据库初始化成功 +2025-12-08 13:22:24,663 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-08 13:22:27,263 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-08 13:22:27,273 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-08 13:22:27,332 - werkzeug - INFO - [31m[1mWARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.[0m + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.3.12.3:5000 +2025-12-08 13:22:27,332 - werkzeug - INFO - [33mPress CTRL+C to quit[0m +2025-12-08 13:22:48,185 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:48] "GET / HTTP/1.1" 200 - +2025-12-08 13:22:48,305 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:48] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-08 13:22:48,425 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:48] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-08 13:22:48,642 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:48] "GET /static/css/design-system.css HTTP/1.1" 200 - +2025-12-08 13:22:48,669 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:48] "GET /static/js/core/store.js HTTP/1.1" 200 - +2025-12-08 13:22:48,675 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:48] "GET /static/js/services/api.js HTTP/1.1" 200 - +2025-12-08 13:22:48,676 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:48] "GET /static/js/components/NotificationManager.js HTTP/1.1" 200 - +2025-12-08 13:22:48,871 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:48] "GET /static/js/components/AlertManager.js HTTP/1.1" 200 - +2025-12-08 13:22:48,999 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:48] "GET /static/js/app-new.js HTTP/1.1" 200 - +2025-12-08 13:22:49,125 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:49] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 200 - +2025-12-08 13:22:50,310 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 13:22:50,311 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 13:22:50,316 - src.agent_assistant - INFO - TSP Agent助手初始化完成 +2025-12-08 13:22:50,316 - src.web.service_manager - INFO - 服务 agent_assistant 已初始化 +2025-12-08 13:22:50,317 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:50] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-08 13:22:50,326 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 13:22:50,328 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 13:22:50,329 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 13:22:50,332 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-08 13:22:50,332 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-08 13:22:50,333 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:50] "GET /api/rules HTTP/1.1" 200 - +2025-12-08 13:22:50,338 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 13:22:50,341 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-08 13:22:50,569 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 13:22:50,571 - src.web.service_manager - INFO - 服务 chat_manager 已初始化 +2025-12-08 13:22:50,572 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:50] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-08 13:22:50,931 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:50] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-08 13:22:50,972 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:50] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 13:22:50,984 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:50] "GET /api/workorders HTTP/1.1" 200 - +2025-12-08 13:22:51,176 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:51] "GET /api/system/info HTTP/1.1" 200 - +2025-12-08 13:22:51,192 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:51] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 13:22:51,203 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:51] "GET /api/feishu-sync/config HTTP/1.1" 200 - +2025-12-08 13:22:51,383 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:51] "[33mGET /favicon.ico HTTP/1.1[0m" 404 - +2025-12-08 13:22:51,453 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 13:22:51,489 - src.config.unified_config - WARNING - 无法加载默认LLM配置,使用内置默认值: No module named 'config.llm_config' +2025-12-08 13:22:51,495 - src.config.unified_config - INFO - 配置文件加载成功 +2025-12-08 13:22:51,495 - src.integrations.ai_suggestion_service - INFO - 使用LLM配置: qwen - qwen-plus-latest +2025-12-08 13:22:51,503 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Number -> order_id +2025-12-08 13:22:51,506 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Description -> description +2025-12-08 13:22:51,506 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Type of problem -> category +2025-12-08 13:22:51,515 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Level -> priority +2025-12-08 13:22:51,519 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Status -> status +2025-12-08 13:22:51,524 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Source -> source +2025-12-08 13:22:51,525 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Date creation -> created_at +2025-12-08 13:22:51,532 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: 处理过程 -> resolution +2025-12-08 13:22:51,534 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR tracking -> resolution +2025-12-08 13:22:51,535 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Created by -> created_by +2025-12-08 13:22:51,542 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Module(模块) -> module +2025-12-08 13:22:51,548 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Wilfulness(责任人) -> wilfulness +2025-12-08 13:22:51,553 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Date of close TR -> date_of_close +2025-12-08 13:22:51,557 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Vehicle Type01 -> vehicle_type +2025-12-08 13:22:51,566 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: VIN|sim -> vin_sim +2025-12-08 13:22:51,568 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: App remote control version -> app_remote_control_version +2025-12-08 13:22:51,571 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: HMI SW -> hmi_sw +2025-12-08 13:22:51,572 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: 父记录 -> parent_record +2025-12-08 13:22:51,576 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Has it been updated on the same day -> has_updated_same_day +2025-12-08 13:22:51,581 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Operating time -> operating_time +2025-12-08 13:22:51,582 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: AI建议 -> ai_suggestion +2025-12-08 13:22:51,587 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Issue Start Time -> updated_at +2025-12-08 13:22:51,635 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:51] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-08 13:22:55,597 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:55] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 13:23:00,728 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:23:00] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 13:23:08,875 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:23:08] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-08 13:23:08,888 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:23:08] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-08 13:23:09,246 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:23:09] "GET /api/agent/tools/stats HTTP/1.1" 200 - +2025-12-08 13:23:09,302 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:23:09] "GET /api/settings HTTP/1.1" 200 - +2025-12-08 13:23:10,525 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:23:10] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 13:23:10,865 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:23:10] "GET /api/alerts?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-08 13:23:11,751 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:23:11] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 13:23:12,403 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:23:12] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 13:23:15,711 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:23:15] "POST /api/batch-delete/alerts HTTP/1.1" 200 - +2025-12-08 13:23:16,658 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:23:16] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 13:23:17,555 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:23:17] "GET /api/analytics HTTP/1.1" 200 - +2025-12-08 13:23:17,980 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:23:17] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 13:23:42,384 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:23:42] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 13:24:00,231 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:24:00] "GET /api/analytics HTTP/1.1" 200 - +2025-12-08 13:24:01,376 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:24:01] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 13:24:01,737 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:24:01] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-08 13:24:02,538 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:24:02] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 13:24:08,797 - src.web.error_handlers - ERROR - 错误响应: 预警不存在: [111610, 111608, 111611, 111606, 111607, 111672, 111673, 111674, 111675, 111609] - None +2025-12-08 13:24:08,802 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:24:08] "[33mPOST /api/batch-delete/alerts HTTP/1.1[0m" 404 - +2025-12-08 13:24:09,306 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:24:09] "GET /api/alerts?page=1&per_page=50 HTTP/1.1" 200 - +2025-12-08 13:24:17,892 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:24:17] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 13:24:33,642 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:24:33] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 13:24:44,176 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:24:44] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 13:24:51,434 - werkzeug - INFO - 220.205.252.43 - - [08/Dec/2025 13:24:51] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 13:24:51,470 - werkzeug - INFO - 220.205.252.43 - - [08/Dec/2025 13:24:51] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 13:24:55,480 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:24:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 13:25:11,583 - werkzeug - INFO - 220.205.252.43 - - [08/Dec/2025 13:25:11] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 13:25:16,365 - werkzeug - INFO - 220.205.252.43 - - [08/Dec/2025 13:25:16] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 13:25:35,401 - werkzeug - INFO - 220.205.252.43 - - [08/Dec/2025 13:25:35] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 13:25:58,762 - werkzeug - INFO - 220.205.252.43 - - [08/Dec/2025 13:25:58] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 13:25:59,367 - werkzeug - INFO - 220.205.252.43 - - [08/Dec/2025 13:25:59] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 13:26:10,513 - werkzeug - INFO - 220.196.160.125 - - [08/Dec/2025 13:26:10] "GET / HTTP/1.1" 200 - +2025-12-08 13:26:11,746 - werkzeug - INFO - 159.75.199.224 - - [08/Dec/2025 13:26:11] "GET /static/js/core/store.js HTTP/1.1" 200 - +2025-12-08 13:26:11,953 - werkzeug - INFO - 159.75.199.224 - - [08/Dec/2025 13:26:11] "GET /static/js/services/api.js HTTP/1.1" 200 - +2025-12-08 13:26:12,169 - werkzeug - INFO - 43.144.106.82 - - [08/Dec/2025 13:26:12] "GET /static/js/components/NotificationManager.js HTTP/1.1" 200 - +2025-12-08 13:26:12,765 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:12] "GET / HTTP/1.1" 200 - +2025-12-08 13:26:13,198 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:13] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-08 13:26:13,226 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:13] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-08 13:26:13,641 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:13] "GET /static/js/core/store.js HTTP/1.1" 200 - +2025-12-08 13:26:13,653 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:13] "GET /static/js/components/NotificationManager.js HTTP/1.1" 200 - +2025-12-08 13:26:13,660 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:13] "GET /static/js/components/AlertManager.js HTTP/1.1" 200 - +2025-12-08 13:26:13,664 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:13] "GET /static/js/services/api.js HTTP/1.1" 200 - +2025-12-08 13:26:13,669 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:13] "GET /static/js/app-new.js HTTP/1.1" 200 - +2025-12-08 13:26:13,683 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:13] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 200 - +2025-12-08 13:26:13,904 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:13] "GET /static/css/design-system.css HTTP/1.1" 200 - +2025-12-08 13:26:15,947 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:15] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-08 13:26:15,949 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:15] "GET /api/rules HTTP/1.1" 200 - +2025-12-08 13:26:16,071 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:16] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-08 13:26:16,270 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:16] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 13:26:16,524 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:16] "GET /api/workorders HTTP/1.1" 200 - +2025-12-08 13:26:16,791 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:16] "GET /api/system/info HTTP/1.1" 200 - +2025-12-08 13:26:17,023 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:17] "GET /api/feishu-sync/config HTTP/1.1" 200 - +2025-12-08 13:26:17,130 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:17] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-08 13:26:17,808 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:17] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-08 13:26:17,918 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:17] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 13:26:22,605 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:22] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 13:26:26,034 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:26] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 13:26:27,225 - werkzeug - INFO - 220.205.252.43 - - [08/Dec/2025 13:26:27] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 13:26:30,789 - werkzeug - INFO - 220.205.252.43 - - [08/Dec/2025 13:26:30] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 13:26:36,011 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:36] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 13:26:44,098 - werkzeug - INFO - 220.205.252.43 - - [08/Dec/2025 13:26:44] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 13:26:47,862 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:47] "GET /api/settings HTTP/1.1" 200 - +2025-12-08 13:27:02,616 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 88.2% +2025-12-08 13:27:02,627 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 88.2% +2025-12-08 13:27:02,628 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 88.2% +2025-12-08 13:27:02,631 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 88.2% +2025-12-08 13:27:02,632 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 88.2% +2025-12-08 13:27:02,817 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 88.2% +2025-12-08 13:27:31,856 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:27:31] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 13:27:40,039 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:27:40] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-08 13:27:43,368 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:27:43] "GET /api/analytics HTTP/1.1" 200 - +2025-12-08 13:27:54,941 - werkzeug - INFO - 220.205.252.43 - - [08/Dec/2025 13:27:54] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 13:28:04,121 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 94.0% +2025-12-08 13:28:04,135 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 94.1% +2025-12-08 13:28:04,143 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 94.0% +2025-12-08 13:28:04,148 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 94.0% +2025-12-08 13:28:04,148 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 94.1% +2025-12-08 13:28:04,153 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 94.0% +2025-12-08 13:28:26,089 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:28:26] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 13:31:34,853 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 94.1% +2025-12-08 13:31:34,850 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 94.1% +2025-12-08 13:31:34,864 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 94.1% +2025-12-08 13:31:34,873 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 94.1% +2025-12-08 13:31:34,879 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 94.1% +2025-12-08 13:31:34,932 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 94.0% +2025-12-08 13:31:44,979 - src.core.database - ERROR - 数据库操作失败: (pymysql.err.OperationalError) (2013, 'Lost connection to MySQL server during query') +[SQL: SELECT alerts.id AS alerts_id, alerts.rule_name AS alerts_rule_name, alerts.alert_type AS alerts_alert_type, alerts.level AS alerts_level, alerts.severity AS alerts_severity, alerts.message AS alerts_message, alerts.data AS alerts_data, alerts.is_active AS alerts_is_active, alerts.created_at AS alerts_created_at, alerts.resolved_at AS alerts_resolved_at +FROM alerts +WHERE alerts.is_active = true ORDER BY alerts.created_at DESC] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-08 13:31:45,046 - src.analytics.alert_system - ERROR - 获取活跃预警失败: (pymysql.err.OperationalError) (2013, 'Lost connection to MySQL server during query') +[SQL: SELECT alerts.id AS alerts_id, alerts.rule_name AS alerts_rule_name, alerts.alert_type AS alerts_alert_type, alerts.level AS alerts_level, alerts.severity AS alerts_severity, alerts.message AS alerts_message, alerts.data AS alerts_data, alerts.is_active AS alerts_is_active, alerts.created_at AS alerts_created_at, alerts.resolved_at AS alerts_resolved_at +FROM alerts +WHERE alerts.is_active = true ORDER BY alerts.created_at DESC] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-08 13:31:56,702 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:31:56] "GET /api/analytics HTTP/1.1" 200 - +2025-12-08 13:32:16,444 - werkzeug - INFO - 220.205.252.43 - - [08/Dec/2025 13:32:16] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 13:32:22,328 - werkzeug - INFO - 220.205.252.43 - - [08/Dec/2025 13:32:22] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 13:32:36,038 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 88.2% +2025-12-08 13:32:36,044 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 88.2% +2025-12-08 13:32:36,045 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 88.2% +2025-12-08 13:32:36,045 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 88.2% +2025-12-08 13:32:36,069 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 88.2% +2025-12-08 13:32:36,088 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 88.1% +2025-12-10 16:03:04,292 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-10 16:03:08,151 - src.core.database - INFO - 数据库初始化成功 +2025-12-10 16:03:08,620 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-10 16:03:10,589 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-10 16:03:10,622 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-10 16:03:10,712 - werkzeug - INFO - [31m[1mWARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.[0m + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://172.23.31.194:5000 +2025-12-10 16:03:10,712 - werkzeug - INFO - [33mPress CTRL+C to quit[0m +2025-12-10 16:03:11,311 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-10 16:03:11,538 - src.web.websocket_server - INFO - 启动WebSocket服务器: ws://localhost:8765 +2025-12-10 16:03:11,543 - websockets.server - INFO - server listening on [::1]:8765 +2025-12-10 16:03:11,544 - websockets.server - INFO - server listening on 127.0.0.1:8765 +2025-12-10 16:03:13,917 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:13] "GET / HTTP/1.1" 200 - +2025-12-10 16:03:14,894 - src.agent_assistant - INFO - TSP Agent助手初始化完成 +2025-12-10 16:03:14,894 - src.web.service_manager - INFO - 服务 agent_assistant 已初始化 +2025-12-10 16:03:14,895 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:14] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-10 16:03:14,935 - websockets.server - INFO - connection open +2025-12-10 16:03:14,936 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + path = websocket.path + ^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-10 16:03:15,753 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-10 16:03:16,183 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:16] "GET /api/alerts HTTP/1.1" 200 - +2025-12-10 16:03:16,262 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-10 16:03:16,308 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-10 16:03:16,463 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-10 16:03:16,504 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-10 16:03:16,756 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-10 16:03:16,819 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:16] "GET /api/workorders HTTP/1.1" 200 - +2025-12-10 16:03:16,904 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-10 16:03:16,986 - src.web.service_manager - INFO - 服务 chat_manager 已初始化 +2025-12-10 16:03:16,987 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:16] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-10 16:03:16,993 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:16] "GET /api/system/info HTTP/1.1" 200 - +2025-12-10 16:03:16,997 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:16] "GET /api/feishu-sync/config HTTP/1.1" 200 - +2025-12-10 16:03:17,148 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-10 16:03:17,149 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:17] "GET /api/rules HTTP/1.1" 200 - +2025-12-10 16:03:17,155 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:17] "[33mGET /favicon.ico HTTP/1.1[0m" 404 - +2025-12-10 16:03:17,234 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-10 16:03:17,386 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-10 16:03:17,479 - src.config.unified_config - WARNING - 无法加载默认LLM配置,使用内置默认值: No module named 'config.llm_config' +2025-12-10 16:03:17,480 - src.config.unified_config - INFO - 配置文件加载成功 +2025-12-10 16:03:17,480 - src.integrations.ai_suggestion_service - INFO - 使用LLM配置: qwen - qwen-plus-latest +2025-12-10 16:03:17,481 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Number -> order_id +2025-12-10 16:03:17,482 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Description -> description +2025-12-10 16:03:17,484 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Type of problem -> category +2025-12-10 16:03:17,485 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Level -> priority +2025-12-10 16:03:17,486 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Status -> status +2025-12-10 16:03:17,487 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Source -> source +2025-12-10 16:03:17,489 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Date creation -> created_at +2025-12-10 16:03:17,489 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: 处理过程 -> resolution +2025-12-10 16:03:17,490 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR tracking -> resolution +2025-12-10 16:03:17,492 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Created by -> created_by +2025-12-10 16:03:17,492 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Module(模块) -> module +2025-12-10 16:03:17,494 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Wilfulness(责任人) -> wilfulness +2025-12-10 16:03:17,495 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Date of close TR -> date_of_close +2025-12-10 16:03:17,496 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Vehicle Type01 -> vehicle_type +2025-12-10 16:03:17,497 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: VIN|sim -> vin_sim +2025-12-10 16:03:17,498 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: App remote control version -> app_remote_control_version +2025-12-10 16:03:17,499 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: HMI SW -> hmi_sw +2025-12-10 16:03:17,500 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: 父记录 -> parent_record +2025-12-10 16:03:17,503 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Has it been updated on the same day -> has_updated_same_day +2025-12-10 16:03:17,505 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Operating time -> operating_time +2025-12-10 16:03:17,506 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: AI建议 -> ai_suggestion +2025-12-10 16:03:17,507 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Issue Start Time -> updated_at +2025-12-10 16:03:17,629 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-10 16:03:17,741 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:17] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-10 16:03:17,746 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:17] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-10 16:03:17,750 - src.dialogue.realtime_chat - INFO - 创建新会话: session_user_001_1765353797 +2025-12-10 16:03:17,751 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:17] "POST /api/chat/session HTTP/1.1" 200 - +2025-12-10 16:03:18,141 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:18] "GET /api/workorders HTTP/1.1" 200 - +2025-12-10 16:03:18,352 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:18] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-10 16:03:18,469 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:18] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-10 16:03:19,067 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:19] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-10 16:03:19,984 - websockets.server - INFO - connection open +2025-12-10 16:03:19,985 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + path = websocket.path + ^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-10 16:03:20,026 - src.knowledge_base.knowledge_manager - INFO - 搜索查询 'APP显示车辆信息错误' 返回 1 个结果 +2025-12-10 16:03:21,987 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:21] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-10 16:03:22,618 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:22] "GET /api/workorders?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-10 16:03:23,274 - src.core.llm_client - INFO - API请求成功 +2025-12-10 16:03:24,420 - src.knowledge_base.knowledge_manager - INFO - 成功更新 1 个知识库条目的使用次数 +2025-12-10 16:03:24,421 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:24] "POST /api/chat/message HTTP/1.1" 200 - +2025-12-10 16:03:24,992 - websockets.server - INFO - connection open +2025-12-10 16:03:24,993 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + path = websocket.path + ^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-10 16:03:25,021 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:25] "GET /api/knowledge?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-10 16:03:25,110 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:25] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-10 16:03:25,749 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:25] "GET /api/alerts HTTP/1.1" 200 - +2025-12-10 16:03:29,707 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:29] "POST /api/batch-delete/workorders HTTP/1.1" 200 - +2025-12-10 16:03:30,005 - websockets.server - INFO - connection open +2025-12-10 16:03:30,005 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + path = websocket.path + ^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-10 16:03:31,279 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:31] "GET /api/workorders?page=true&per_page=10 HTTP/1.1" 200 - +2025-12-10 16:03:35,011 - websockets.server - INFO - connection open +2025-12-10 16:03:35,011 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + path = websocket.path + ^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-10 16:03:35,546 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:35] "GET /api/alerts HTTP/1.1" 200 - +2025-12-10 16:03:40,022 - websockets.server - INFO - connection open +2025-12-10 16:03:40,022 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + path = websocket.path + ^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-10 16:03:45,038 - websockets.server - INFO - connection open +2025-12-10 16:03:45,038 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + path = websocket.path + ^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 09:56:08,705 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 09:56:22,795 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 09:56:44,222 - src.core.database - ERROR - 数据库初始化失败: (pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on 'jeason.online' ([WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。)") +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 09:56:44,223 - __main__ - ERROR - 数据库连接失败,退出启动 +2025-12-12 09:57:09,661 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 09:57:09,974 - src.core.database - INFO - 数据库初始化成功 +2025-12-12 09:57:09,975 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-12 09:57:11,908 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-12 09:57:11,917 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-12 09:57:12,030 - werkzeug - INFO - [31m[1mWARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.[0m + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.105.212.207:5000 +2025-12-12 09:57:12,031 - werkzeug - INFO - [33mPress CTRL+C to quit[0m +2025-12-12 09:57:12,056 - src.web.websocket_server - INFO - 启动WebSocket服务器: ws://localhost:8765 +2025-12-12 09:57:12,062 - websockets.server - INFO - server listening on [::1]:8765 +2025-12-12 09:57:12,063 - websockets.server - INFO - server listening on 127.0.0.1:8765 +2025-12-12 09:57:21,982 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:21] "GET / HTTP/1.1" 200 - +2025-12-12 09:57:22,283 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:22] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 09:57:22,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:22] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 09:57:22,302 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:22] "GET /static/js/core/store.js HTTP/1.1" 200 - +2025-12-12 09:57:22,309 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:22] "GET /static/js/services/api.js HTTP/1.1" 200 - +2025-12-12 09:57:22,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:22] "GET /static/js/components/NotificationManager.js HTTP/1.1" 200 - +2025-12-12 09:57:22,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:22] "GET /static/js/components/AlertManager.js HTTP/1.1" 200 - +2025-12-12 09:57:22,591 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:22] "GET /static/css/design-system.css HTTP/1.1" 200 - +2025-12-12 09:57:22,621 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:22] "GET /static/js/app-new.js HTTP/1.1" 200 - +2025-12-12 09:57:22,622 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:22] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 200 - +2025-12-12 09:57:23,100 - websockets.server - INFO - connection open +2025-12-12 09:57:23,100 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + path = websocket.path + ^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 09:57:23,343 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:23] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 09:57:23,344 - src.agent_assistant - INFO - TSP Agent助手初始化完成 +2025-12-12 09:57:23,347 - src.web.service_manager - INFO - 服务 agent_assistant 已初始化 +2025-12-12 09:57:23,348 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-12 09:57:23,350 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:23] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-12 09:57:23,351 - src.web.service_manager - INFO - 服务 chat_manager 已初始化 +2025-12-12 09:57:23,351 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:23] "GET /api/rules HTTP/1.1" 200 - +2025-12-12 09:57:23,351 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-12 09:57:23,354 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:23] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-12 09:57:23,357 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-12 09:57:23,381 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:23] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:57:23,654 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:23] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 09:57:23,666 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:23] "GET /api/workorders HTTP/1.1" 200 - +2025-12-12 09:57:23,672 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:23] "GET /api/system/info HTTP/1.1" 200 - +2025-12-12 09:57:23,677 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:23] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-12 09:57:23,692 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:23] "GET /api/feishu-sync/config HTTP/1.1" 200 - +2025-12-12 09:57:23,715 - src.config.unified_config - WARNING - 无法加载默认LLM配置,使用内置默认值: No module named 'config.llm_config' +2025-12-12 09:57:23,716 - src.config.unified_config - INFO - 配置文件加载成功 +2025-12-12 09:57:23,717 - src.integrations.ai_suggestion_service - INFO - 使用LLM配置: qwen - qwen-plus-latest +2025-12-12 09:57:23,718 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Number -> order_id +2025-12-12 09:57:23,720 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Description -> description +2025-12-12 09:57:23,721 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Type of problem -> category +2025-12-12 09:57:23,722 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Level -> priority +2025-12-12 09:57:23,723 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Status -> status +2025-12-12 09:57:23,723 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Source -> source +2025-12-12 09:57:23,725 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Date creation -> created_at +2025-12-12 09:57:23,727 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: 处理过程 -> resolution +2025-12-12 09:57:23,728 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR tracking -> resolution +2025-12-12 09:57:23,730 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Created by -> created_by +2025-12-12 09:57:23,731 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Module(模块) -> module +2025-12-12 09:57:23,732 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Wilfulness(责任人) -> wilfulness +2025-12-12 09:57:23,733 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Date of close TR -> date_of_close +2025-12-12 09:57:23,735 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Vehicle Type01 -> vehicle_type +2025-12-12 09:57:23,736 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: VIN|sim -> vin_sim +2025-12-12 09:57:23,737 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: App remote control version -> app_remote_control_version +2025-12-12 09:57:23,738 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: HMI SW -> hmi_sw +2025-12-12 09:57:23,739 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: 父记录 -> parent_record +2025-12-12 09:57:23,741 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Has it been updated on the same day -> has_updated_same_day +2025-12-12 09:57:23,743 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Operating time -> operating_time +2025-12-12 09:57:23,744 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: AI建议 -> ai_suggestion +2025-12-12 09:57:23,746 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Issue Start Time -> updated_at +2025-12-12 09:57:23,752 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:23] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-12 09:57:23,991 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:23] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-12 09:57:24,315 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:24] "[33mGET /favicon.ico HTTP/1.1[0m" 404 - +2025-12-12 09:57:24,321 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:24] "GET /api/settings HTTP/1.1" 200 - +2025-12-12 09:57:24,580 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:24] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 09:57:24,639 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:24] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 09:57:26,075 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET / HTTP/1.1" 200 - +2025-12-12 09:57:26,169 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 09:57:26,175 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 09:57:26,178 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /static/js/core/store.js HTTP/1.1" 200 - +2025-12-12 09:57:26,189 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /static/js/services/api.js HTTP/1.1" 200 - +2025-12-12 09:57:26,190 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /static/js/components/NotificationManager.js HTTP/1.1" 200 - +2025-12-12 09:57:26,195 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /static/js/components/AlertManager.js HTTP/1.1" 200 - +2025-12-12 09:57:26,211 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 200 - +2025-12-12 09:57:26,213 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /static/js/app-new.js HTTP/1.1" 200 - +2025-12-12 09:57:26,227 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /static/css/design-system.css HTTP/1.1" 200 - +2025-12-12 09:57:26,830 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 09:57:26,835 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /api/rules HTTP/1.1" 200 - +2025-12-12 09:57:26,843 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-12 09:57:26,852 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-12 09:57:26,871 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 09:57:26,875 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /api/workorders HTTP/1.1" 200 - +2025-12-12 09:57:26,881 - websockets.server - INFO - connection open +2025-12-12 09:57:26,883 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:57:26,885 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + path = websocket.path + ^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 09:57:26,886 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /api/system/info HTTP/1.1" 200 - +2025-12-12 09:57:26,899 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /api/feishu-sync/config HTTP/1.1" 200 - +2025-12-12 09:57:26,904 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-12 09:57:26,914 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-12 09:57:26,963 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "[33mGET /favicon.ico HTTP/1.1[0m" 404 - +2025-12-12 09:57:26,965 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-12 09:57:26,994 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /api/settings HTTP/1.1" 200 - +2025-12-12 09:57:27,006 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:27] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 09:57:27,021 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:27] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 09:57:28,128 - websockets.server - INFO - connection open +2025-12-12 09:57:28,129 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + path = websocket.path + ^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 09:57:28,350 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:28] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:57:28,429 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:28] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 09:57:28,431 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:28] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 09:57:28,749 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:28] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 09:57:30,520 - src.dialogue.realtime_chat - INFO - 创建新会话: session_user_001_1765504650 +2025-12-12 09:57:30,521 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:30] "POST /api/chat/session HTTP/1.1" 200 - +2025-12-12 09:57:31,835 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:31] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:57:31,867 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:31] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 09:57:31,870 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:31] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 09:57:31,882 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:31] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 09:57:31,945 - websockets.server - INFO - connection open +2025-12-12 09:57:31,946 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + path = websocket.path + ^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 09:57:31,971 - src.knowledge_base.knowledge_manager - WARNING - 知识库中没有活跃条目 +2025-12-12 09:57:33,140 - websockets.server - INFO - connection open +2025-12-12 09:57:33,141 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + path = websocket.path + ^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 09:57:33,345 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:33] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 09:57:33,378 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:33] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:57:36,097 - src.core.llm_client - INFO - API请求成功 +2025-12-12 09:57:36,109 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:36] "POST /api/chat/message HTTP/1.1" 200 - +2025-12-12 09:57:37,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:37] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 09:57:37,318 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:37] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:57:41,846 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:41] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:57:44,614 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:44] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-12 09:57:44,616 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:44] "GET /api/agent/tools/stats HTTP/1.1" 200 - +2025-12-12 09:57:45,837 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:45] "GET /api/knowledge?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-12 09:57:46,824 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:46] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 09:57:46,839 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:46] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:57:48,447 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:48] "GET /api/knowledge?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-12 09:57:48,671 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:48] "GET /api/knowledge?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-12 09:57:48,865 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:48] "GET /api/knowledge?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-12 09:57:52,293 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:52] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:57:57,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:57] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 09:57:57,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:57] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:58:02,305 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:02] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:58:05,580 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:05] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 09:58:06,830 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:06] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 09:58:06,845 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:06] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:58:07,039 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:07] "GET /api/workorders?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-12 09:58:08,543 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:08] "GET /api/conversations?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-12 09:58:11,755 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:11] "GET /api/conversations/1 HTTP/1.1" 200 - +2025-12-12 09:58:11,845 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:11] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:58:15,046 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:15] "GET /api/token-monitor/stats HTTP/1.1" 200 - +2025-12-12 09:58:15,065 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:15] "GET /api/token-monitor/records HTTP/1.1" 200 - +2025-12-12 09:58:15,067 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:15] "GET /api/token-monitor/chart HTTP/1.1" 200 - +2025-12-12 09:58:16,833 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:16] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 09:58:16,859 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:16] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:58:18,279 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:18] "GET /api/ai-monitor/stats HTTP/1.1" 200 - +2025-12-12 09:58:18,290 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:18] "GET /api/ai-monitor/model-comparison HTTP/1.1" 200 - +2025-12-12 09:58:18,292 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:18] "GET /api/ai-monitor/error-distribution HTTP/1.1" 200 - +2025-12-12 09:58:18,296 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:18] "GET /api/ai-monitor/error-log HTTP/1.1" 200 - +2025-12-12 09:58:21,836 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:21] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:58:21,917 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:21] "GET /api/system-optimizer/status HTTP/1.1" 200 - +2025-12-12 09:58:21,928 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:21] "GET /api/system-optimizer/security-settings HTTP/1.1" 200 - +2025-12-12 09:58:21,929 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:21] "GET /api/system-optimizer/traffic-settings HTTP/1.1" 200 - +2025-12-12 09:58:21,931 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:21] "GET /api/system-optimizer/cost-settings HTTP/1.1" 200 - +2025-12-12 09:58:24,855 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:24] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 09:58:24,878 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:24] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 09:58:24,964 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:24] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 09:58:26,824 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:26] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 09:58:26,840 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:26] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:58:32,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:32] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:58:37,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:37] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 09:58:37,315 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:37] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:58:42,291 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:42] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:58:45,244 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:45] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 09:58:45,252 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:45] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 09:58:45,267 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:45] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 09:58:46,828 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:46] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 09:58:46,845 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:46] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:58:49,207 - src.integrations.feishu_client - INFO - 正在获取飞书tenant_access_token,应用ID: cli_a8b50ec0eed1500d +2025-12-12 09:58:49,381 - src.integrations.feishu_client - INFO - 飞书API响应: {'code': 0, 'expire': 3072, 'msg': 'ok', 'tenant_access_token': 't-g104cc8O2CZW3GLGNUZ3LZWBEO5TTEGCCVWP2HHG'} +2025-12-12 09:58:49,382 - src.integrations.feishu_client - INFO - tenant_access_token获取成功: t-g104cc8O2CZW3GLGNU... +2025-12-12 09:58:49,382 - src.integrations.feishu_client - INFO - 令牌有效期: 3072秒,过期时间: 2025-12-12 10:50:01 +2025-12-12 09:58:49,383 - src.integrations.feishu_client - INFO - 发送飞书API请求: GET https://open.feishu.cn/open-apis/bitable/v1/apps/XXnEbiCmEaMblSs6FDJcFCqsnIg/tables/tblnl3vJPpgMTSiP/records +2025-12-12 09:58:49,383 - src.integrations.feishu_client - INFO - 请求头: Authorization: Bearer t-g104cc8O2CZW3GLGNU... +2025-12-12 09:58:52,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:52] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:58:53,022 - src.integrations.feishu_client - INFO - 飞书API响应状态码: 200 +2025-12-12 09:58:53,023 - src.integrations.feishu_client - INFO - 飞书API响应内容: {'code': 0, 'data': {'has_more': False, 'items': [{'fields': {'AI建议': "1208:您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业分析与升级处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:The widget weather doesn't work \n\n相关背景信息:\n无相关背景信息\n\n请提供:\n1. 问题...", 'Created by': 'Evgeniy', 'Date creation': 1745769600000, 'Module(模块)': 'local O&M', 'Source': 'Mail', 'TR Description': "The widget weather doesn't work ", 'TR Level': 'Low', 'TR Number': 'TR559', 'TR Status': 'Processing', 'TR tracking': '28/04:Local feedback weather widget does not work, query TBOX and IHU login record is normal, traffic binding is normal, we suggest users to use mobile phone hotspot to connect to the car, observe whether the widget is restored, if not, try to capture the IHU logs.', 'Type of problem': 'HU troubles', 'VIN|sim': 'LVTDD24B8RG019153 ', 'Vehicle Type01': 'EXEED RX(T22)', 'Wilfulness(责任人)': 'Evgeniy', '处理过程': '0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志', '当前问题状态': '1027:天气小部件无法使用,已确认TBOX及IHU登录正常、流量绑定正常,建议已完成手机热点连接测试并尝试抓取IHU日志,若问题仍存在,建议进站进行系统诊断或软件版本升级排查。\n0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志'}, 'id': 'rec253kqBfXae4', 'record_id': 'rec253kqBfXae4'}, {'fields': {'AI建议': '1208:该工单问题已明确为TBOX自10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止更新、APP端数据滞留、且无任何TBOX日志上传——这已超出远程唤醒与诊断能力范围,属典型TBOX通信链路或电源管理异常。\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Vehicle data is not updated in the app => dated from October,...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': 'TBOX', 'Source': 'Mail', 'TR Description': 'Vehicle data is not updated in the app => dated from October, 19 - thus, they are old one. No TBOX log in since October, 19. TBOX is in deep sleep since October, 19.\n', 'TR Level': 'Low', 'TR Number': 'TR863', 'TR Status': 'Processing', 'TR tracking': '24/10:The vehicle is in deep sleep, and T-box logs cannot be remotely obtained. The problem is a bit complex and difficult to locate, so the customer needs to visit the station to retrieve T-box logs and DMC logs. @Vsevolod Tsoi', 'Type of problem': 'Remote control ', 'VIN|sim': 'LNNBDDEZ8SD345645 ', 'Vehicle Type01': 'JAECOO J7(T1EJ)', 'Wilfulness(责任人)': '刘娇龙', '处理过程': '1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志', '当前问题状态': '1027:车辆自10月19日进入深度睡眠,TBOX无远程连接,建议客户尽快进站提取TBOX及DMC日志,进行本地诊断分析,排查电源管理或通信模块异常原因,确认硬件状态及软件配置是否正常。\n1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志'}, 'id': 'recv0NLSh2a2S7', 'record_id': 'recv0NLSh2a2S7'}, {'fields': {'AI建议': '1208:经分析当前工单进展:用户无法通过手机号或二维码登录会员中心,且已上传DMC日志及问题视频(时间戳1024),说明远程行为已完整复现,初步排除用户操作误触可能。\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:User not able to enter into member center neither mobile phon...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': '生态/ecologically', 'Source': 'Mail', 'TR Description': 'User not able to enter into member center neither mobile phone nor QR code.', 'TR Level': 'Low', 'TR Number': 'TR864', 'TR Status': 'Processing', 'TR tracking': '23/10: DMC logs attached as well as vieos of the issue.', 'Type of problem': 'Problem with auth in member center', 'VIN|sim': 'LNNBDDEZXSD449358', 'Vehicle Type01': 'EXEED VX FL(M36T)', 'Wilfulness(责任人)': '袁清', '处理过程': '1024: DMC logs attached as well as vieos of the issue.', '当前问题状态': '1027:确认手机网络及APP版本正常,尝试清除APP缓存并重新登录,检查QR码扫描权限是否开启,重启手机和车机,若仍无法进入会员中心,建议联系售后进行远程诊断或进站排查系统故障。\n1024: DMC logs attached as well as vieos of the issue.'}, 'id': 'recv0NLZoKLlRJ', 'record_id': 'recv0NLZoKLlRJ'}, {'fields': {'AI建议': '1208:您好,感谢您反馈异常流量消耗问题。结合当前工单进展(已建议抓取DMC日志、用户确认仅使用导航且3天消耗3.12GB,症状与E0X车型TR866案例高度一致),现提供专业分析与处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Abnormal traffic consumption\n\n相关背景信息:\n相关知识库信息:\n- TR866 - Traf...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761235200000, 'Module(模块)': 'DMC', 'Source': 'Mail', 'TR Description': 'Abnormal traffic consumption', 'TR Level': 'Low', 'TR Number': 'TR866', 'TR Status': 'Analysising', 'TR tracking': '24/10: It is recommended that users grab the DMC log back for analysis.@Vsevolod Tsoi \n24/10: user states he use Navi only and no other apps. Consumption volume - 3.12 Gb for 3 days. Same symptom as E0X - traffic package size is plus mines the same - see pdf from MNO attached', 'Type of problem': 'Traffic is over', 'VIN|sim': 'XEYDD14B3SA012164', 'Vehicle Type01': 'TEST', 'Wilfulness(责任人)': 'Vsevolod Tsoi', '处理过程': '1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf', '当前问题状态': '1027:流量异常可能与导航应用后台持续联网有关,建议关闭Navi自动更新地图功能并限制后台数据使用,检查车机系统是否存在异常进程,如问题依旧,建议进站检测DMC模块日志及SIM卡通信状态,必要时升级系统或更换模块。\n1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf'}, 'id': 'recv0NLZoKjKvx', 'record_id': 'recv0NLZoKjKvx'}], 'total': 4}, 'msg': 'success'} +2025-12-12 09:58:53,027 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:53] "GET /api/feishu-sync/preview-feishu-data HTTP/1.1" 200 - +2025-12-12 09:58:57,305 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:57] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 09:58:57,320 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:57] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:59:02,778 - src.integrations.workorder_sync - INFO - 从飞书记录 rec253kqBfXae4 创建工单 +2025-12-12 09:59:02,778 - src.integrations.feishu_client - INFO - 发送飞书API请求: GET https://open.feishu.cn/open-apis/bitable/v1/apps/XXnEbiCmEaMblSs6FDJcFCqsnIg/tables/tblnl3vJPpgMTSiP/records/rec253kqBfXae4 +2025-12-12 09:59:02,779 - src.integrations.feishu_client - INFO - 请求头: Authorization: Bearer t-g104cc8O2CZW3GLGNU... +2025-12-12 09:59:02,793 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:02] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:59:04,679 - src.integrations.feishu_client - INFO - 飞书API响应状态码: 200 +2025-12-12 09:59:04,679 - src.integrations.feishu_client - INFO - 飞书API响应内容: {'code': 0, 'data': {'record': {'fields': {'AI建议': "1208:您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业分析与升级处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:The widget weather doesn't work \n\n相关背景信息:\n无相关背景信息\n\n请提供:\n1. 问题...", 'Created by': 'Evgeniy', 'Date creation': 1745769600000, 'Module(模块)': 'local O&M', 'Source': 'Mail', 'TR Description': "The widget weather doesn't work ", 'TR Level': 'Low', 'TR Number': 'TR559', 'TR Status': 'Processing', 'TR tracking': '28/04:Local feedback weather widget does not work, query TBOX and IHU login record is normal, traffic binding is normal, we suggest users to use mobile phone hotspot to connect to the car, observe whether the widget is restored, if not, try to capture the IHU logs.', 'Type of problem': 'HU troubles', 'VIN|sim': 'LVTDD24B8RG019153 ', 'Vehicle Type01': 'EXEED RX(T22)', 'Wilfulness(责任人)': 'Evgeniy', '处理过程': '0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志', '当前问题状态': '1027:天气小部件无法使用,已确认TBOX及IHU登录正常、流量绑定正常,建议已完成手机热点连接测试并尝试抓取IHU日志,若问题仍存在,建议进站进行系统诊断或软件版本升级排查。\n0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志'}, 'id': 'rec253kqBfXae4', 'record_id': 'rec253kqBfXae4'}}, 'msg': 'success'} +2025-12-12 09:59:04,681 - src.integrations.workorder_sync - INFO - 开始转换飞书字段: {'AI建议': "1208:您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业分析与升级处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:The widget weather doesn't work \n\n相关背景信息:\n无相关背景信息\n\n请提供:\n1. 问题...", 'Created by': 'Evgeniy', 'Date creation': 1745769600000, 'Module(模块)': 'local O&M', 'Source': 'Mail', 'TR Description': "The widget weather doesn't work ", 'TR Level': 'Low', 'TR Number': 'TR559', 'TR Status': 'Processing', 'TR tracking': '28/04:Local feedback weather widget does not work, query TBOX and IHU login record is normal, traffic binding is normal, we suggest users to use mobile phone hotspot to connect to the car, observe whether the widget is restored, if not, try to capture the IHU logs.', 'Type of problem': 'HU troubles', 'VIN|sim': 'LVTDD24B8RG019153 ', 'Vehicle Type01': 'EXEED RX(T22)', 'Wilfulness(责任人)': 'Evgeniy', '处理过程': '0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志', '当前问题状态': '1027:天气小部件无法使用,已确认TBOX及IHU登录正常、流量绑定正常,建议已完成手机热点连接测试并尝试抓取IHU日志,若问题仍存在,建议进站进行系统诊断或软件版本升级排查。\n0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志'} +2025-12-12 09:59:04,682 - src.integrations.flexible_field_mapper - INFO - 开始转换字段: ['AI建议', 'Created by', 'Date creation', 'Module(模块)', 'Source', 'TR Description', 'TR Level', 'TR Number', 'TR Status', 'TR tracking', 'Type of problem', 'VIN|sim', 'Vehicle Type01', 'Wilfulness(责任人)', '处理过程', '当前问题状态'] +2025-12-12 09:59:04,682 - src.integrations.flexible_field_mapper - INFO - 映射字段 AI建议 -> ai_suggestion: 1208:您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业分析与升级处理建议如下: +模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:The widget weather doesn't work + +相关背景信息: +无相关背景信息 + +请提供: +1. 问题... +2025-12-12 09:59:04,683 - src.integrations.flexible_field_mapper - INFO - 映射字段 Created by -> created_by: Evgeniy +2025-12-12 09:59:04,683 - src.integrations.flexible_field_mapper - INFO - 映射字段 Date creation -> created_at: 1745769600000 +2025-12-12 09:59:04,684 - src.integrations.flexible_field_mapper - INFO - 映射字段 Module(模块) -> module: local O&M +2025-12-12 09:59:04,684 - src.integrations.flexible_field_mapper - INFO - 映射字段 Source -> source: Mail +2025-12-12 09:59:04,684 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Description -> description: The widget weather doesn't work +2025-12-12 09:59:04,684 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Level -> priority: Low +2025-12-12 09:59:04,685 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Number -> order_id: TR559 +2025-12-12 09:59:04,685 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Status -> status: Processing +2025-12-12 09:59:04,685 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR tracking -> resolution: 28/04:Local feedback weather widget does not work, query TBOX and IHU login record is normal, traffic binding is normal, we suggest users to use mobile phone hotspot to connect to the car, observe whether the widget is restored, if not, try to capture the IHU logs. +2025-12-12 09:59:04,685 - src.integrations.flexible_field_mapper - INFO - 映射字段 Type of problem -> category: HU troubles +2025-12-12 09:59:04,686 - src.integrations.flexible_field_mapper - INFO - 映射字段 VIN|sim -> vin_sim: LVTDD24B8RG019153 +2025-12-12 09:59:04,686 - src.integrations.flexible_field_mapper - INFO - 映射字段 Vehicle Type01 -> vehicle_type: EXEED RX(T22) +2025-12-12 09:59:04,686 - src.integrations.flexible_field_mapper - INFO - 映射字段 Wilfulness(责任人) -> wilfulness: Evgeniy +2025-12-12 09:59:04,686 - src.integrations.flexible_field_mapper - INFO - 映射字段 处理过程 -> resolution: 0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志 +2025-12-12 09:59:04,691 - src.integrations.flexible_field_mapper - INFO - 飞书字段 当前问题状态 不存在于数据中 +2025-12-12 09:59:04,691 - src.integrations.flexible_field_mapper - INFO - 字段转换完成: 已映射 15, 未映射 1 +2025-12-12 09:59:04,691 - src.integrations.workorder_sync - INFO - 字段转换统计: 总字段 16, 已映射 15, 未映射 1 +2025-12-12 09:59:04,692 - src.integrations.workorder_sync - WARNING - 未映射字段: ['当前问题状态'] +2025-12-12 09:59:04,692 - src.integrations.workorder_sync - INFO - 字段 '当前问题状态' 的建议映射: {'local_field': 'status', 'similarity': 0.7, 'matched_pattern': '.*状态.*', 'confidence': 'medium', 'reason': "匹配模式 '.*状态.*'"} +2025-12-12 09:59:04,704 - src.integrations.workorder_sync - INFO - 创建工单成功: TR559 +2025-12-12 09:59:04,704 - src.integrations.workorder_sync - ERROR - 从飞书记录创建工单失败: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3) +2025-12-12 09:59:04,705 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:04] "[31m[1mPOST /api/feishu-sync/create-workorder HTTP/1.1[0m" 400 - +2025-12-12 09:59:07,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:07] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 09:59:07,313 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:07] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:59:12,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:12] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:59:17,291 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:17] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 09:59:17,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:17] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:59:22,296 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:22] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:59:23,519 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:23] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 09:59:26,833 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:26] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 09:59:26,851 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:26] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:59:31,840 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:31] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:59:37,285 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:37] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 09:59:37,302 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:37] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:59:42,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:42] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:59:47,293 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:47] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 09:59:47,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:47] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:59:52,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:52] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:59:57,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:57] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 09:59:57,315 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:57] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:00:02,293 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:02] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:00:07,074 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 10:00:07,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:07] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:00:07,318 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:07] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:00:07,386 - src.core.database - INFO - 数据库初始化成功 +2025-12-12 10:00:07,387 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-12 10:00:09,273 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-12 10:00:09,284 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-12 10:00:09,394 - werkzeug - INFO - [31m[1mWARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.[0m + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.105.212.207:5000 +2025-12-12 10:00:09,394 - werkzeug - INFO - [33mPress CTRL+C to quit[0m +2025-12-12 10:00:09,418 - src.web.websocket_server - INFO - 启动WebSocket服务器: ws://localhost:8765 +2025-12-12 10:00:12,296 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:12] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:00:17,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:17] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:00:17,341 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:17] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:00:18,114 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:18] "GET / HTTP/1.1" 200 - +2025-12-12 10:00:18,358 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:18] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 10:00:18,453 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:18] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 10:00:18,453 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:18] "GET /static/js/core/store.js HTTP/1.1" 200 - +2025-12-12 10:00:18,458 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:18] "GET /static/js/services/api.js HTTP/1.1" 200 - +2025-12-12 10:00:18,460 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:18] "GET /static/js/components/NotificationManager.js HTTP/1.1" 200 - +2025-12-12 10:00:18,462 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:18] "GET /static/js/components/AlertManager.js HTTP/1.1" 200 - +2025-12-12 10:00:18,666 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:18] "GET /static/css/design-system.css HTTP/1.1" 200 - +2025-12-12 10:00:18,776 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:18] "GET /static/js/app-new.js HTTP/1.1" 200 - +2025-12-12 10:00:18,776 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:18] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 200 - +2025-12-12 10:00:19,586 - websockets.server - INFO - connection open +2025-12-12 10:00:19,586 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + path = websocket.path + ^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:00:19,840 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:19] "GET /api/rules HTTP/1.1" 200 - +2025-12-12 10:00:19,843 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:19] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-12 10:00:19,846 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:19] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:00:19,854 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:19] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-12 10:00:19,859 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:19] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:00:20,152 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:20] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:00:20,157 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:20] "GET /api/workorders HTTP/1.1" 200 - +2025-12-12 10:00:20,162 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:20] "GET /api/system/info HTTP/1.1" 200 - +2025-12-12 10:00:20,166 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:20] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-12 10:00:20,168 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:20] "GET /api/feishu-sync/config HTTP/1.1" 200 - +2025-12-12 10:00:20,175 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:20] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-12 10:00:20,489 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:20] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-12 10:00:20,821 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:20] "GET /api/settings HTTP/1.1" 200 - +2025-12-12 10:00:21,063 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:21] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:00:21,140 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:21] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:00:22,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:22] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:00:23,011 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:23] "[33mGET /favicon.ico HTTP/1.1[0m" 404 - +2025-12-12 10:00:24,607 - websockets.server - INFO - connection open +2025-12-12 10:00:24,607 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + path = websocket.path + ^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:00:24,837 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:24] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:00:24,906 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:24] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:00:24,910 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:24] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:00:25,149 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:25] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:00:27,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:27] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:00:27,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:27] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:00:29,526 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:29] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:00:29,624 - websockets.server - INFO - connection open +2025-12-12 10:00:29,624 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + path = websocket.path + ^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:00:29,848 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:29] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:00:32,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:32] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:00:55,294 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:00:55,309 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:01:55,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:01:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:01:55,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:01:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:02:55,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:02:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:02:55,316 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:02:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:03:12,136 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 10:03:12,432 - src.core.database - INFO - 数据库初始化成功 +2025-12-12 10:03:12,433 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-12 10:03:14,224 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-12 10:03:14,233 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-12 10:03:14,339 - werkzeug - INFO - [31m[1mWARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.[0m + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.105.212.207:5000 +2025-12-12 10:03:14,340 - werkzeug - INFO - [33mPress CTRL+C to quit[0m +2025-12-12 10:03:14,363 - src.web.websocket_server - INFO - 启动WebSocket服务器: ws://localhost:8765 +2025-12-12 10:03:24,337 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:24] "GET /dashboard HTTP/1.1" 200 - +2025-12-12 10:03:24,525 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:24] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 10:03:24,525 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:24] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 10:03:24,530 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:24] "GET /static/js/core/store.js HTTP/1.1" 200 - +2025-12-12 10:03:24,544 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:24] "GET /static/js/services/api.js HTTP/1.1" 200 - +2025-12-12 10:03:24,547 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:24] "GET /static/js/components/NotificationManager.js HTTP/1.1" 200 - +2025-12-12 10:03:24,549 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:24] "GET /static/js/components/AlertManager.js HTTP/1.1" 200 - +2025-12-12 10:03:24,556 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:24] "GET /static/js/app-new.js HTTP/1.1" 200 - +2025-12-12 10:03:24,557 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:24] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 200 - +2025-12-12 10:03:24,558 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:24] "GET /static/css/design-system.css HTTP/1.1" 200 - +2025-12-12 10:03:25,705 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:25] "GET /api/rules HTTP/1.1" 200 - +2025-12-12 10:03:25,705 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:25] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:03:25,710 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:25] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-12 10:03:25,721 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:25] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-12 10:03:25,727 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:25] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:03:25,736 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:25] "GET /api/workorders HTTP/1.1" 200 - +2025-12-12 10:03:25,742 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:25] "GET /api/system/info HTTP/1.1" 200 - +2025-12-12 10:03:25,742 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:25] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:03:25,751 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:25] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-12 10:03:25,771 - websockets.server - INFO - connection open +2025-12-12 10:03:25,771 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + if websocket.request_headers.get("Origin"): + ^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:03:25,773 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:25] "GET /api/feishu-sync/config HTTP/1.1" 200 - +2025-12-12 10:03:25,776 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:25] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-12 10:03:25,794 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:25] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-12 10:03:25,811 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:25] "GET /api/settings HTTP/1.1" 200 - +2025-12-12 10:03:25,823 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:25] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:03:25,833 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:25] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:03:26,677 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:26] "[33mGET /favicon.ico HTTP/1.1[0m" 404 - +2025-12-12 10:03:30,714 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:30] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:03:30,796 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:30] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:03:30,799 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:30] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:03:30,802 - websockets.server - INFO - connection open +2025-12-12 10:03:30,804 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + if websocket.request_headers.get("Origin"): + ^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:03:30,811 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:30] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:03:35,708 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:35] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:03:35,723 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:35] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:03:35,814 - websockets.server - INFO - connection open +2025-12-12 10:03:35,815 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + if websocket.request_headers.get("Origin"): + ^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:03:40,711 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:40] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:03:40,821 - websockets.server - INFO - connection open +2025-12-12 10:03:40,821 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + if websocket.request_headers.get("Origin"): + ^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:03:55,294 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:03:55,313 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:04:55,295 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:04:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:04:55,307 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:04:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:05:55,295 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:05:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:05:55,310 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:05:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:06:55,310 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:06:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:06:55,326 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:06:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:07:26,517 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 10:07:26,814 - src.core.database - INFO - 数据库初始化成功 +2025-12-12 10:07:26,816 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-12 10:07:28,608 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-12 10:07:28,617 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-12 10:07:28,722 - werkzeug - INFO - [31m[1mWARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.[0m + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.105.212.207:5000 +2025-12-12 10:07:28,723 - werkzeug - INFO - [33mPress CTRL+C to quit[0m +2025-12-12 10:07:28,746 - src.web.websocket_server - INFO - 启动WebSocket服务器: ws://localhost:8765 +2025-12-12 10:07:55,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:07:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:07:55,332 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:07:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:08:55,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:08:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:08:55,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:08:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:09:36,651 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 10:09:36,944 - src.core.database - INFO - 数据库初始化成功 +2025-12-12 10:09:36,945 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-12 10:09:38,754 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-12 10:09:38,764 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-12 10:09:38,877 - werkzeug - INFO - [31m[1mWARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.[0m + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.105.212.207:5000 +2025-12-12 10:09:38,878 - werkzeug - INFO - [33mPress CTRL+C to quit[0m +2025-12-12 10:09:38,902 - src.web.websocket_server - INFO - 启动WebSocket服务器: ws://localhost:8765 +2025-12-12 10:09:55,295 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:09:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:09:55,309 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:09:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:10:55,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:10:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:10:55,324 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:10:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:11:06,581 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 10:11:06,877 - src.core.database - INFO - 数据库初始化成功 +2025-12-12 10:11:06,878 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-12 10:11:08,730 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-12 10:11:08,740 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-12 10:11:08,843 - werkzeug - INFO - [31m[1mWARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.[0m + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.105.212.207:5000 +2025-12-12 10:11:08,844 - werkzeug - INFO - [33mPress CTRL+C to quit[0m +2025-12-12 10:11:08,867 - src.web.websocket_server - INFO - 启动WebSocket服务器: ws://localhost:8765 +2025-12-12 10:11:44,560 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:44] "GET / HTTP/1.1" 200 - +2025-12-12 10:11:44,628 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:44] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 10:11:44,632 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:44] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 10:11:44,636 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:44] "GET /static/js/core/store.js HTTP/1.1" 200 - +2025-12-12 10:11:44,640 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:44] "GET /static/js/services/api.js HTTP/1.1" 200 - +2025-12-12 10:11:44,646 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:44] "GET /static/js/components/NotificationManager.js HTTP/1.1" 200 - +2025-12-12 10:11:44,648 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:44] "GET /static/js/components/AlertManager.js HTTP/1.1" 200 - +2025-12-12 10:11:44,652 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:44] "GET /static/js/app-new.js HTTP/1.1" 200 - +2025-12-12 10:11:44,655 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:44] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 200 - +2025-12-12 10:11:44,657 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:44] "GET /static/css/design-system.css HTTP/1.1" 200 - +2025-12-12 10:11:45,640 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:45] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:11:45,641 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:45] "GET /api/rules HTTP/1.1" 200 - +2025-12-12 10:11:45,645 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:45] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-12 10:11:45,655 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:45] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-12 10:11:45,663 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:45] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:11:45,672 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:45] "GET /api/system/info HTTP/1.1" 200 - +2025-12-12 10:11:45,673 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:45] "GET /api/workorders HTTP/1.1" 200 - +2025-12-12 10:11:45,680 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:45] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-12 10:11:45,681 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:45] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:11:45,703 - websockets.server - INFO - connection open +2025-12-12 10:11:45,704 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:11:45,706 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:45] "GET /api/feishu-sync/config HTTP/1.1" 200 - +2025-12-12 10:11:45,708 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:45] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-12 10:11:45,729 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:45] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-12 10:11:45,745 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:45] "GET /api/settings HTTP/1.1" 200 - +2025-12-12 10:11:45,752 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:45] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:11:45,767 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:45] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:11:46,642 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:46] "[33mGET /favicon.ico HTTP/1.1[0m" 404 - +2025-12-12 10:11:50,657 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:50] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:11:50,717 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:50] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:11:50,718 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:50] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:11:50,730 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:50] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:11:50,734 - websockets.server - INFO - connection open +2025-12-12 10:11:50,736 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:11:55,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:11:55,324 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:11:55,647 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:11:55,663 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:11:55,757 - websockets.server - INFO - connection open +2025-12-12 10:11:55,758 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:12:00,667 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:12:00] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:12:00,770 - websockets.server - INFO - connection open +2025-12-12 10:12:00,771 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:12:05,656 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:12:05] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:12:05,665 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:12:05] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:12:05,777 - websockets.server - INFO - connection open +2025-12-12 10:12:05,778 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:12:10,662 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:12:10] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:12:10,787 - websockets.server - INFO - connection open +2025-12-12 10:12:10,788 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:12:15,644 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:12:15] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:12:15,653 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:12:15] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-12 10:12:15,661 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:12:15] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:12:15,664 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:12:15] "GET /api/workorders HTTP/1.1" 200 - +2025-12-12 10:12:15,674 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:12:15] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:12:15,675 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:12:15] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-12 10:12:15,685 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:12:15] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-12 10:12:15,703 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:12:15] "GET /api/settings HTTP/1.1" 200 - +2025-12-12 10:12:15,712 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:12:15] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:12:15,718 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:12:15] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:12:15,796 - websockets.server - INFO - connection open +2025-12-12 10:12:15,796 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:12:20,656 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:12:20] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:12:20,802 - websockets.server - INFO - connection open +2025-12-12 10:12:20,803 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:12:55,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:12:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:12:55,330 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:12:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:13:55,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:13:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:13:55,327 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:13:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:14:01,488 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:01] "GET / HTTP/1.1" 200 - +2025-12-12 10:14:01,567 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:01] "[36mGET /static/css/design-system.css?v=1.0.0 HTTP/1.1[0m" 304 - +2025-12-12 10:14:01,568 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:01] "[36mGET /static/css/style.css?v=1.0.0 HTTP/1.1[0m" 304 - +2025-12-12 10:14:01,587 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:01] "[36mGET /static/css/design-system.css HTTP/1.1[0m" 304 - +2025-12-12 10:14:01,591 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:01] "[36mGET /static/js/core/store.js HTTP/1.1[0m" 304 - +2025-12-12 10:14:01,596 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:01] "[36mGET /static/js/services/api.js HTTP/1.1[0m" 304 - +2025-12-12 10:14:01,604 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:01] "[36mGET /static/js/components/NotificationManager.js HTTP/1.1[0m" 304 - +2025-12-12 10:14:01,606 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:01] "[36mGET /static/js/components/AlertManager.js HTTP/1.1[0m" 304 - +2025-12-12 10:14:01,612 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:01] "[36mGET /static/js/app-new.js HTTP/1.1[0m" 304 - +2025-12-12 10:14:01,614 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:01] "[36mGET /static/js/dashboard.js?v=1.0.9 HTTP/1.1[0m" 304 - +2025-12-12 10:14:02,265 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:02] "GET /api/rules HTTP/1.1" 200 - +2025-12-12 10:14:02,266 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:02] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:14:02,271 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:02] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-12 10:14:02,280 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:02] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-12 10:14:02,285 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:02] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:14:02,295 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:02] "GET /api/system/info HTTP/1.1" 200 - +2025-12-12 10:14:02,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:02] "GET /api/workorders HTTP/1.1" 200 - +2025-12-12 10:14:02,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:02] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:14:02,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:02] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-12 10:14:02,355 - websockets.server - INFO - connection open +2025-12-12 10:14:02,356 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:14:02,358 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:02] "GET /api/feishu-sync/config HTTP/1.1" 200 - +2025-12-12 10:14:02,362 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:02] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-12 10:14:02,423 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:02] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-12 10:14:02,444 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:02] "GET /api/settings HTTP/1.1" 200 - +2025-12-12 10:14:02,453 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:02] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:14:02,461 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:02] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:14:07,294 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:07] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:14:08,284 - websockets.server - INFO - connection open +2025-12-12 10:14:08,285 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:14:08,288 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:08] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:14:08,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:08] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:14:08,307 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:08] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:14:12,290 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:12] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:14:12,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:12] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:14:14,293 - websockets.server - INFO - connection open +2025-12-12 10:14:14,294 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:14:17,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:17] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:14:20,279 - websockets.server - INFO - connection open +2025-12-12 10:14:20,280 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:14:22,287 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:22] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:14:22,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:22] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:14:26,291 - websockets.server - INFO - connection open +2025-12-12 10:14:26,292 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:14:27,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:27] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:14:32,288 - websockets.server - INFO - connection open +2025-12-12 10:14:32,289 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:14:32,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:32] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:14:32,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:32] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:14:37,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:37] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:14:37,998 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 10:14:38,286 - websockets.server - INFO - connection open +2025-12-12 10:14:38,286 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:14:38,292 - src.core.database - INFO - 数据库初始化成功 +2025-12-12 10:14:38,293 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-12 10:14:40,095 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-12 10:14:40,104 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-12 10:14:40,207 - werkzeug - INFO - [31m[1mWARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.[0m + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.105.212.207:5000 +2025-12-12 10:14:40,208 - werkzeug - INFO - [33mPress CTRL+C to quit[0m +2025-12-12 10:14:40,231 - src.web.websocket_server - INFO - 启动WebSocket服务器: ws://localhost:8765 +2025-12-12 10:14:42,286 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:42] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:14:42,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:42] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:14:44,291 - websockets.server - INFO - connection open +2025-12-12 10:14:44,292 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:14:47,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:47] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:14:48,291 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:48] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:14:49,835 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:49] "GET / HTTP/1.1" 200 - +2025-12-12 10:14:50,099 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:50] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 10:14:50,161 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:50] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 10:14:50,161 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:50] "GET /static/js/core/store.js HTTP/1.1" 200 - +2025-12-12 10:14:50,162 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:50] "GET /static/js/services/api.js HTTP/1.1" 200 - +2025-12-12 10:14:50,165 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:50] "GET /static/js/components/NotificationManager.js HTTP/1.1" 200 - +2025-12-12 10:14:50,167 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:50] "GET /static/js/components/AlertManager.js HTTP/1.1" 200 - +2025-12-12 10:14:50,283 - websockets.server - INFO - connection open +2025-12-12 10:14:50,284 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:14:50,406 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:50] "GET /static/css/design-system.css HTTP/1.1" 200 - +2025-12-12 10:14:50,468 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:50] "GET /static/js/app-new.js HTTP/1.1" 200 - +2025-12-12 10:14:50,475 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:50] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 200 - +2025-12-12 10:14:50,930 - websockets.server - INFO - connection open +2025-12-12 10:14:50,931 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:14:51,177 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:51] "GET /api/rules HTTP/1.1" 200 - +2025-12-12 10:14:51,180 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:51] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:14:51,182 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:51] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-12 10:14:51,191 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:51] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-12 10:14:51,198 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:51] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:14:51,486 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:51] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:14:51,494 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:51] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-12 10:14:51,496 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:51] "GET /api/workorders HTTP/1.1" 200 - +2025-12-12 10:14:51,498 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:51] "GET /api/system/info HTTP/1.1" 200 - +2025-12-12 10:14:51,502 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:51] "GET /api/feishu-sync/config HTTP/1.1" 200 - +2025-12-12 10:14:51,509 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:51] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-12 10:14:51,809 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:51] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-12 10:14:52,132 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:52] "GET /api/settings HTTP/1.1" 200 - +2025-12-12 10:14:52,205 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:52] "[33mGET /favicon.ico HTTP/1.1[0m" 404 - +2025-12-12 10:14:52,289 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:52] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:14:52,307 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:52] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:14:52,391 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:52] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:14:52,455 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:52] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:14:55,294 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:14:55,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:14:55,965 - websockets.server - INFO - connection open +2025-12-12 10:14:55,966 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:14:56,186 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:56] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:14:56,256 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:56] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:14:56,260 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:56] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:14:56,294 - websockets.server - INFO - connection open +2025-12-12 10:14:56,296 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:14:56,583 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:56] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:14:57,313 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:57] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:15:00,887 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:15:00] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:15:00,974 - websockets.server - INFO - connection open +2025-12-12 10:15:00,975 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:15:01,198 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:15:01] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:15:02,290 - websockets.server - INFO - connection open +2025-12-12 10:15:02,291 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:15:02,296 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:15:02] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:15:05,979 - websockets.server - INFO - connection open +2025-12-12 10:15:05,980 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:15:06,197 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:15:06] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:15:08,293 - websockets.server - INFO - connection open +2025-12-12 10:15:08,294 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:15:14,288 - websockets.server - INFO - connection open +2025-12-12 10:15:14,288 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:15:20,288 - websockets.server - INFO - connection open +2025-12-12 10:15:20,289 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:15:26,287 - websockets.server - INFO - connection open +2025-12-12 10:15:26,288 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:15:32,280 - websockets.server - INFO - connection open +2025-12-12 10:15:32,281 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:15:38,280 - websockets.server - INFO - connection open +2025-12-12 10:15:38,281 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:15:44,283 - websockets.server - INFO - connection open +2025-12-12 10:15:44,284 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:15:50,288 - websockets.server - INFO - connection open +2025-12-12 10:15:50,289 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:15:55,302 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:15:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:15:55,309 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:15:55] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:15:55,317 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:15:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:15:55,321 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:15:55] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:15:55,330 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:15:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:15:55,332 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:15:55] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:15:55,350 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:15:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:15:56,283 - websockets.server - INFO - connection open +2025-12-12 10:15:56,284 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:16:02,283 - websockets.server - INFO - connection open +2025-12-12 10:16:02,283 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:16:08,294 - websockets.server - INFO - connection open +2025-12-12 10:16:08,295 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:16:14,285 - websockets.server - INFO - connection open +2025-12-12 10:16:14,285 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:16:20,280 - websockets.server - INFO - connection open +2025-12-12 10:16:20,281 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:16:26,287 - websockets.server - INFO - connection open +2025-12-12 10:16:26,287 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:16:32,292 - websockets.server - INFO - connection open +2025-12-12 10:16:32,293 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:16:38,282 - websockets.server - INFO - connection open +2025-12-12 10:16:38,282 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:16:44,293 - websockets.server - INFO - connection open +2025-12-12 10:16:44,294 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:16:50,289 - websockets.server - INFO - connection open +2025-12-12 10:16:50,290 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:16:55,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:16:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:16:55,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:16:55] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:16:55,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:16:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:16:55,318 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:16:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:16:55,334 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:16:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:16:56,285 - websockets.server - INFO - connection open +2025-12-12 10:16:56,285 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:17:02,285 - websockets.server - INFO - connection open +2025-12-12 10:17:02,285 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:17:08,288 - websockets.server - INFO - connection open +2025-12-12 10:17:08,288 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:17:14,292 - websockets.server - INFO - connection open +2025-12-12 10:17:14,293 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:17:20,294 - websockets.server - INFO - connection open +2025-12-12 10:17:20,295 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:17:24,458 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 10:17:24,751 - src.core.database - INFO - 数据库初始化成功 +2025-12-12 10:17:24,752 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-12 10:17:26,291 - websockets.server - INFO - connection open +2025-12-12 10:17:26,292 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:17:26,569 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-12 10:17:26,579 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-12 10:17:26,687 - werkzeug - INFO - [31m[1mWARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.[0m + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.105.212.207:5000 +2025-12-12 10:17:26,688 - werkzeug - INFO - [33mPress CTRL+C to quit[0m +2025-12-12 10:17:26,711 - src.web.websocket_server - INFO - 启动WebSocket服务器: ws://localhost:8765 +2025-12-12 10:17:32,291 - websockets.server - INFO - connection open +2025-12-12 10:17:32,292 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:17:36,014 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:36] "GET / HTTP/1.1" 200 - +2025-12-12 10:17:36,275 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:36] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 10:17:36,339 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:36] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 10:17:36,339 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:36] "GET /static/js/core/store.js HTTP/1.1" 200 - +2025-12-12 10:17:36,341 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:36] "GET /static/js/services/api.js HTTP/1.1" 200 - +2025-12-12 10:17:36,342 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:36] "GET /static/js/components/NotificationManager.js HTTP/1.1" 200 - +2025-12-12 10:17:36,344 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:36] "GET /static/js/components/AlertManager.js HTTP/1.1" 200 - +2025-12-12 10:17:36,584 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:36] "GET /static/css/design-system.css HTTP/1.1" 200 - +2025-12-12 10:17:36,648 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:36] "GET /static/js/app-new.js HTTP/1.1" 200 - +2025-12-12 10:17:36,653 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:36] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 200 - +2025-12-12 10:17:37,080 - websockets.server - INFO - connection open +2025-12-12 10:17:37,081 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:17:37,333 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:37] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-12 10:17:37,334 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:37] "GET /api/rules HTTP/1.1" 200 - +2025-12-12 10:17:37,337 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:37] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:17:37,341 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:37] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-12 10:17:37,352 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:37] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:17:37,648 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:37] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:17:37,651 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:37] "GET /api/workorders HTTP/1.1" 200 - +2025-12-12 10:17:37,654 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:37] "GET /api/system/info HTTP/1.1" 200 - +2025-12-12 10:17:37,658 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:37] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-12 10:17:37,659 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:37] "GET /api/feishu-sync/config HTTP/1.1" 200 - +2025-12-12 10:17:37,665 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:37] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-12 10:17:37,984 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:37] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-12 10:17:38,200 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:38] "[33mGET /favicon.ico HTTP/1.1[0m" 404 - +2025-12-12 10:17:38,293 - websockets.server - INFO - connection open +2025-12-12 10:17:38,293 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:17:38,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:38] "GET /api/settings HTTP/1.1" 200 - +2025-12-12 10:17:38,631 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:38] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:17:38,890 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:38] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:17:42,098 - websockets.server - INFO - connection open +2025-12-12 10:17:42,099 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:17:42,336 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:42] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:17:42,410 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:42] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:17:42,417 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:42] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:17:42,730 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:42] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:17:44,292 - websockets.server - INFO - connection open +2025-12-12 10:17:44,292 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:17:47,108 - websockets.server - INFO - connection open +2025-12-12 10:17:47,108 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:17:47,336 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:47] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:17:47,344 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:47] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:17:50,289 - websockets.server - INFO - connection open +2025-12-12 10:17:50,290 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:17:55,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:55] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:17:55,305 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:55] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:17:55,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:17:55,328 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:55] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:17:55,330 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:17:56,286 - websockets.server - INFO - connection open +2025-12-12 10:17:56,286 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:18:02,287 - websockets.server - INFO - connection open +2025-12-12 10:18:02,287 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:18:08,282 - websockets.server - INFO - connection open +2025-12-12 10:18:08,283 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:18:14,290 - websockets.server - INFO - connection open +2025-12-12 10:18:14,290 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:18:20,282 - websockets.server - INFO - connection open +2025-12-12 10:18:20,283 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:18:26,285 - websockets.server - INFO - connection open +2025-12-12 10:18:26,285 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:18:32,285 - websockets.server - INFO - connection open +2025-12-12 10:18:32,286 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:18:38,282 - websockets.server - INFO - connection open +2025-12-12 10:18:38,282 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:18:44,291 - websockets.server - INFO - connection open +2025-12-12 10:18:44,292 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:18:50,280 - websockets.server - INFO - connection open +2025-12-12 10:18:50,281 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:18:55,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:18:55] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:18:55,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:18:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:18:55,318 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:18:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:18:56,283 - websockets.server - INFO - connection open +2025-12-12 10:18:56,284 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:19:02,291 - websockets.server - INFO - connection open +2025-12-12 10:19:02,291 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:19:08,282 - websockets.server - INFO - connection open +2025-12-12 10:19:08,283 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:19:14,296 - websockets.server - INFO - connection open +2025-12-12 10:19:14,296 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:19:20,295 - websockets.server - INFO - connection open +2025-12-12 10:19:20,296 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:19:26,282 - websockets.server - INFO - connection open +2025-12-12 10:19:26,282 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:19:32,284 - websockets.server - INFO - connection open +2025-12-12 10:19:32,285 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:19:38,290 - websockets.server - INFO - connection open +2025-12-12 10:19:38,290 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:19:44,289 - websockets.server - INFO - connection open +2025-12-12 10:19:44,289 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:19:50,293 - websockets.server - INFO - connection open +2025-12-12 10:19:50,293 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:19:55,325 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:19:55] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:19:55,331 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:19:55] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:19:55,335 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:19:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:19:55,352 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:19:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:19:55,359 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:19:55] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:19:56,329 - websockets.server - INFO - connection open +2025-12-12 10:19:56,329 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:20:02,292 - websockets.server - INFO - connection open +2025-12-12 10:20:02,293 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:20:08,289 - websockets.server - INFO - connection open +2025-12-12 10:20:08,289 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:20:14,295 - websockets.server - INFO - connection open +2025-12-12 10:20:14,295 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:20:18,194 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:18] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:20:18,225 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:18] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:20:22,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:22] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:20:22,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:22] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:20:27,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:27] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:20:32,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:32] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:20:32,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:32] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:20:37,296 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:37] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:20:42,290 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:42] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:20:42,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:42] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:20:43,051 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 10:20:43,444 - src.core.database - INFO - 数据库初始化成功 +2025-12-12 10:20:43,445 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-12 10:20:45,490 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-12 10:20:45,500 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-12 10:20:45,614 - werkzeug - INFO - [31m[1mWARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.[0m + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.105.212.207:5000 +2025-12-12 10:20:45,615 - werkzeug - INFO - [33mPress CTRL+C to quit[0m +2025-12-12 10:20:45,640 - src.web.websocket_server - INFO - 启动WebSocket服务器: ws://localhost:8765 +2025-12-12 10:20:45,646 - websockets.server - INFO - server listening on [::1]:8765 +2025-12-12 10:20:45,646 - websockets.server - INFO - server listening on 127.0.0.1:8765 +2025-12-12 10:20:47,293 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-12 10:20:47,304 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-12 10:20:47,333 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:47] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:20:48,813 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:48] "GET / HTTP/1.1" 200 - +2025-12-12 10:20:49,080 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "[36mGET /static/css/style.css?v=1.0.0 HTTP/1.1[0m" 304 - +2025-12-12 10:20:49,086 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "[36mGET /static/js/app-new.js HTTP/1.1[0m" 304 - +2025-12-12 10:20:49,091 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "[36mGET /static/js/dashboard.js?v=1.0.9 HTTP/1.1[0m" 304 - +2025-12-12 10:20:49,137 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "[36mGET /static/css/design-system.css HTTP/1.1[0m" 304 - +2025-12-12 10:20:49,140 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "[36mGET /static/js/components/NotificationManager.js HTTP/1.1[0m" 304 - +2025-12-12 10:20:49,143 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "[36mGET /static/css/design-system.css?v=1.0.0 HTTP/1.1[0m" 304 - +2025-12-12 10:20:49,151 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "[36mGET /static/js/core/store.js HTTP/1.1[0m" 304 - +2025-12-12 10:20:49,164 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "[36mGET /static/js/services/api.js HTTP/1.1[0m" 304 - +2025-12-12 10:20:49,171 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "[36mGET /static/js/components/AlertManager.js HTTP/1.1[0m" 304 - +2025-12-12 10:20:49,488 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /api/rules HTTP/1.1" 200 - +2025-12-12 10:20:49,489 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:20:49,494 - src.agent_assistant - INFO - TSP Agent助手初始化完成 +2025-12-12 10:20:49,497 - src.web.service_manager - INFO - 服务 agent_assistant 已初始化 +2025-12-12 10:20:49,502 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-12 10:20:49,506 - src.web.service_manager - INFO - 服务 chat_manager 已初始化 +2025-12-12 10:20:49,508 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-12 10:20:49,514 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:20:49,526 - websockets.server - INFO - connection open +2025-12-12 10:20:49,532 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + ^^^^^^^^^^^^^^^^^^^^^^^^ +TypeError: WebSocketServer.handle_client() missing 1 required positional argument: 'path' +2025-12-12 10:20:49,534 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:20:49,539 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /api/system/info HTTP/1.1" 200 - +2025-12-12 10:20:49,543 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /api/workorders HTTP/1.1" 200 - +2025-12-12 10:20:49,545 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /api/feishu-sync/config HTTP/1.1" 200 - +2025-12-12 10:20:49,554 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-12 10:20:49,577 - src.config.unified_config - WARNING - 无法加载默认LLM配置,使用内置默认值: No module named 'config.llm_config' +2025-12-12 10:20:49,577 - src.config.unified_config - INFO - 配置文件加载成功 +2025-12-12 10:20:49,578 - src.integrations.ai_suggestion_service - INFO - 使用LLM配置: qwen - qwen-plus-latest +2025-12-12 10:20:49,581 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Number -> order_id +2025-12-12 10:20:49,585 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Description -> description +2025-12-12 10:20:49,588 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Type of problem -> category +2025-12-12 10:20:49,591 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Level -> priority +2025-12-12 10:20:49,593 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Status -> status +2025-12-12 10:20:49,595 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Source -> source +2025-12-12 10:20:49,597 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Date creation -> created_at +2025-12-12 10:20:49,600 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: 处理过程 -> resolution +2025-12-12 10:20:49,602 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR tracking -> resolution +2025-12-12 10:20:49,604 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Created by -> created_by +2025-12-12 10:20:49,606 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Module(模块) -> module +2025-12-12 10:20:49,608 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Wilfulness(责任人) -> wilfulness +2025-12-12 10:20:49,611 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Date of close TR -> date_of_close +2025-12-12 10:20:49,613 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Vehicle Type01 -> vehicle_type +2025-12-12 10:20:49,616 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: VIN|sim -> vin_sim +2025-12-12 10:20:49,624 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: App remote control version -> app_remote_control_version +2025-12-12 10:20:49,628 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-12 10:20:49,629 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: HMI SW -> hmi_sw +2025-12-12 10:20:49,630 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: 父记录 -> parent_record +2025-12-12 10:20:49,634 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Has it been updated on the same day -> has_updated_same_day +2025-12-12 10:20:49,637 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Operating time -> operating_time +2025-12-12 10:20:49,639 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: AI建议 -> ai_suggestion +2025-12-12 10:20:49,641 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Issue Start Time -> updated_at +2025-12-12 10:20:49,653 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-12 10:20:49,662 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /api/settings HTTP/1.1" 200 - +2025-12-12 10:20:49,675 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:20:49,686 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:20:52,021 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:52] "GET /api/workorders?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-12 10:20:52,294 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:52] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:20:52,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:52] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:20:54,286 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:54] "GET /api/workorders/1 HTTP/1.1" 200 - +2025-12-12 10:20:54,528 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:54] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:20:54,537 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:54] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:20:54,546 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:54] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:20:54,575 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:54] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:20:54,634 - websockets.server - INFO - connection open +2025-12-12 10:20:54,637 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + ^^^^^^^^^^^^^^^^^^^^^^^^ +TypeError: WebSocketServer.handle_client() missing 1 required positional argument: 'path' +2025-12-12 10:20:55,141 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:55] "GET / HTTP/1.1" 200 - +2025-12-12 10:20:55,401 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:55] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 10:20:55,462 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:55] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 10:20:55,465 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:55] "GET /static/js/core/store.js HTTP/1.1" 200 - +2025-12-12 10:20:55,468 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:55] "GET /static/js/services/api.js HTTP/1.1" 200 - +2025-12-12 10:20:55,470 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:55] "GET /static/js/components/NotificationManager.js HTTP/1.1" 200 - +2025-12-12 10:20:55,472 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:55] "GET /static/js/components/AlertManager.js HTTP/1.1" 200 - +2025-12-12 10:20:55,712 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:55] "GET /static/css/design-system.css HTTP/1.1" 200 - +2025-12-12 10:20:55,774 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:55] "GET /static/js/app-new.js HTTP/1.1" 200 - +2025-12-12 10:20:55,775 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:55] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 200 - +2025-12-12 10:20:56,227 - websockets.server - INFO - connection open +2025-12-12 10:20:56,228 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + ^^^^^^^^^^^^^^^^^^^^^^^^ +TypeError: WebSocketServer.handle_client() missing 1 required positional argument: 'path' +2025-12-12 10:20:56,474 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:56] "GET /api/rules HTTP/1.1" 200 - +2025-12-12 10:20:56,479 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:56] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:20:56,483 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:56] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-12 10:20:56,493 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:56] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-12 10:20:56,505 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:56] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:20:56,785 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:56] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:20:56,792 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:56] "GET /api/workorders HTTP/1.1" 200 - +2025-12-12 10:20:56,794 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:56] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-12 10:20:56,801 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:56] "GET /api/system/info HTTP/1.1" 200 - +2025-12-12 10:20:56,815 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:56] "GET /api/feishu-sync/config HTTP/1.1" 200 - +2025-12-12 10:20:56,820 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:56] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-12 10:20:57,107 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:57] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-12 10:20:57,307 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:57] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:20:57,435 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:57] "GET /api/settings HTTP/1.1" 200 - +2025-12-12 10:20:57,460 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:57] "[33mGET /favicon.ico HTTP/1.1[0m" 404 - +2025-12-12 10:20:57,692 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:57] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:20:57,754 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:57] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:20:59,481 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:59] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:20:59,496 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:59] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:20:59,661 - websockets.server - INFO - connection open +2025-12-12 10:20:59,662 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + ^^^^^^^^^^^^^^^^^^^^^^^^ +TypeError: WebSocketServer.handle_client() missing 1 required positional argument: 'path' +2025-12-12 10:21:01,250 - websockets.server - INFO - connection open +2025-12-12 10:21:01,251 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + ^^^^^^^^^^^^^^^^^^^^^^^^ +TypeError: WebSocketServer.handle_client() missing 1 required positional argument: 'path' +2025-12-12 10:21:01,491 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:01] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:21:01,550 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:01] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:21:01,556 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:01] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:21:01,875 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:01] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:21:02,292 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:02] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:21:02,310 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:02] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:21:04,487 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:04] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:21:04,669 - websockets.server - INFO - connection open +2025-12-12 10:21:04,669 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + ^^^^^^^^^^^^^^^^^^^^^^^^ +TypeError: WebSocketServer.handle_client() missing 1 required positional argument: 'path' +2025-12-12 10:21:06,268 - websockets.server - INFO - connection open +2025-12-12 10:21:06,268 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + ^^^^^^^^^^^^^^^^^^^^^^^^ +TypeError: WebSocketServer.handle_client() missing 1 required positional argument: 'path' +2025-12-12 10:21:06,486 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:06] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:21:06,504 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:06] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:21:07,310 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:07] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:21:09,492 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:09] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:21:09,546 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:09] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:21:09,685 - websockets.server - INFO - connection open +2025-12-12 10:21:09,686 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + ^^^^^^^^^^^^^^^^^^^^^^^^ +TypeError: WebSocketServer.handle_client() missing 1 required positional argument: 'path' +2025-12-12 10:21:12,296 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:12] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:21:12,322 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:12] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:21:15,302 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:15] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:21:17,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:17] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:21:20,290 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:20] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:21:20,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:20] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:21:22,291 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:22] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:21:22,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:22] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:21:25,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:25] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:21:30,294 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:30] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:21:30,309 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:30] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:21:35,310 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:35] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:21:40,291 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:40] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:21:40,307 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:40] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:21:45,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:45] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:21:50,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:50] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:21:50,316 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:50] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:21:55,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:21:55,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:21:55,326 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:22:00,286 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:22:00] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:22:00,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:22:00] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:22:05,302 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:22:05] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:22:10,296 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:22:10] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:22:10,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:22:10] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:22:55,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:22:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:22:55,317 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:22:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:22:55,318 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:22:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:22:55,349 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:22:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:23:24,018 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:24] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:23:24,036 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:24] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:23:24,037 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:24] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:23:24,043 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:24] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:23:24,057 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:24] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:23:24,062 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:24] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:23:24,068 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:24] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:23:24,074 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:24] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:23:24,083 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:24] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:23:24,102 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:24] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:23:24,490 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:24] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:23:27,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:27] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:23:27,360 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:27] "GET /api/knowledge?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-12 10:23:28,191 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:28] "GET /api/alerts?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-12 10:23:28,972 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:28] "GET /api/knowledge?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-12 10:23:29,488 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:29] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:23:29,504 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:29] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:23:29,756 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:29] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-12 10:23:29,757 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:29] "GET /api/agent/tools/stats HTTP/1.1" 200 - +2025-12-12 10:23:30,188 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 10:23:30,493 - src.core.database - INFO - 数据库初始化成功 +2025-12-12 10:23:30,495 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-12 10:23:32,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:32] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:23:32,317 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:32] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:23:32,372 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-12 10:23:32,382 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-12 10:23:32,489 - werkzeug - INFO - [31m[1mWARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.[0m + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.105.212.207:5000 +2025-12-12 10:23:32,490 - werkzeug - INFO - [33mPress CTRL+C to quit[0m +2025-12-12 10:23:32,515 - src.web.websocket_server - INFO - 启动WebSocket服务器: ws://localhost:8765 +2025-12-12 10:23:33,519 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:33] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-12 10:23:33,520 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:33] "GET /api/agent/tools/stats HTTP/1.1" 200 - +2025-12-12 10:23:34,498 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:34] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:23:34,873 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:34] "GET /api/knowledge?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-12 10:23:37,313 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:37] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:23:39,391 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:39] "GET /api/conversations?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-12 10:23:39,486 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:39] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:23:39,502 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:39] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:23:41,279 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:41] "GET /api/token-monitor/stats HTTP/1.1" 200 - +2025-12-12 10:23:41,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:41] "GET /api/token-monitor/records HTTP/1.1" 200 - +2025-12-12 10:23:41,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:41] "GET /api/token-monitor/chart HTTP/1.1" 200 - +2025-12-12 10:23:41,826 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:41] "GET /api/ai-monitor/stats HTTP/1.1" 200 - +2025-12-12 10:23:41,837 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:41] "GET /api/ai-monitor/model-comparison HTTP/1.1" 200 - +2025-12-12 10:23:41,839 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:41] "GET /api/ai-monitor/error-distribution HTTP/1.1" 200 - +2025-12-12 10:23:41,841 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:41] "GET /api/ai-monitor/error-log HTTP/1.1" 200 - +2025-12-12 10:23:42,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:42] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:23:42,351 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:42] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:23:43,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:43] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:23:43,366 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:43] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:23:43,405 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:43] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:23:43,753 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:43] "GET /api/system-optimizer/status HTTP/1.1" 200 - +2025-12-12 10:23:43,762 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:43] "GET /api/system-optimizer/security-settings HTTP/1.1" 200 - +2025-12-12 10:23:43,764 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:43] "GET /api/system-optimizer/traffic-settings HTTP/1.1" 200 - +2025-12-12 10:23:43,766 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:43] "GET /api/system-optimizer/cost-settings HTTP/1.1" 200 - +2025-12-12 10:23:44,487 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:44] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:23:47,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:47] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:23:50,286 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:50] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:23:50,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:50] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:23:52,292 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:52] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:23:52,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:52] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:23:55,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:23:57,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:57] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:24:00,288 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:00] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:24:00,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:00] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:24:02,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:02] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:24:02,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:02] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:24:05,293 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-12 10:24:05,293 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-12 10:24:05,317 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:05] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:24:07,305 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:07] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:24:10,305 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:10] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:24:10,321 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:10] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:24:21,790 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 10:24:22,087 - src.core.database - INFO - 数据库初始化成功 +2025-12-12 10:24:22,089 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-12 10:24:23,943 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-12 10:24:23,953 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-12 10:24:24,058 - werkzeug - INFO - [31m[1mWARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.[0m + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.105.212.207:5000 +2025-12-12 10:24:24,059 - werkzeug - INFO - [33mPress CTRL+C to quit[0m +2025-12-12 10:24:24,082 - src.web.websocket_server - INFO - 启动WebSocket服务器: ws://localhost:8765 +2025-12-12 10:24:24,088 - websockets.server - INFO - server listening on [::1]:8765 +2025-12-12 10:24:24,088 - websockets.server - INFO - server listening on 127.0.0.1:8765 +2025-12-12 10:24:24,377 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-12 10:24:24,379 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-12 10:24:24,399 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:24] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:24:25,309 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:25] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:24:30,290 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:30] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:24:30,305 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:30] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:24:35,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:35] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:24:37,895 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:37] "GET / HTTP/1.1" 200 - +2025-12-12 10:24:38,194 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:38] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 10:24:38,219 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:38] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 10:24:38,219 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:38] "GET /static/js/core/store.js HTTP/1.1" 200 - +2025-12-12 10:24:38,220 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:38] "GET /static/js/services/api.js HTTP/1.1" 200 - +2025-12-12 10:24:38,221 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:38] "GET /static/js/components/NotificationManager.js HTTP/1.1" 200 - +2025-12-12 10:24:38,223 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:38] "GET /static/js/components/AlertManager.js HTTP/1.1" 200 - +2025-12-12 10:24:38,513 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:38] "GET /static/css/design-system.css HTTP/1.1" 200 - +2025-12-12 10:24:38,527 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:38] "GET /static/js/app-new.js HTTP/1.1" 200 - +2025-12-12 10:24:38,531 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:38] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 200 - +2025-12-12 10:24:38,926 - websockets.server - INFO - connection open +2025-12-12 10:24:38,927 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 216, in handle_client + headers = websocket.request_headers + ^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'request_headers' +2025-12-12 10:24:39,177 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:39] "GET /api/rules HTTP/1.1" 200 - +2025-12-12 10:24:39,178 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:39] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:24:39,186 - src.agent_assistant - INFO - TSP Agent助手初始化完成 +2025-12-12 10:24:39,187 - src.web.service_manager - INFO - 服务 agent_assistant 已初始化 +2025-12-12 10:24:39,189 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:39] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-12 10:24:39,193 - src.web.service_manager - INFO - 服务 chat_manager 已初始化 +2025-12-12 10:24:39,195 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:39] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-12 10:24:39,202 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:39] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:24:39,485 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:39] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:24:39,495 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:39] "GET /api/workorders HTTP/1.1" 200 - +2025-12-12 10:24:39,503 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:39] "GET /api/system/info HTTP/1.1" 200 - +2025-12-12 10:24:39,508 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:39] "GET /api/feishu-sync/config HTTP/1.1" 200 - +2025-12-12 10:24:39,509 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:39] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-12 10:24:39,519 - src.config.unified_config - WARNING - 无法加载默认LLM配置,使用内置默认值: No module named 'config.llm_config' +2025-12-12 10:24:39,521 - src.config.unified_config - INFO - 配置文件加载成功 +2025-12-12 10:24:39,521 - src.integrations.ai_suggestion_service - INFO - 使用LLM配置: qwen - qwen-plus-latest +2025-12-12 10:24:39,523 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Number -> order_id +2025-12-12 10:24:39,524 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Description -> description +2025-12-12 10:24:39,525 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Type of problem -> category +2025-12-12 10:24:39,526 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Level -> priority +2025-12-12 10:24:39,527 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Status -> status +2025-12-12 10:24:39,529 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Source -> source +2025-12-12 10:24:39,531 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Date creation -> created_at +2025-12-12 10:24:39,532 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: 处理过程 -> resolution +2025-12-12 10:24:39,533 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR tracking -> resolution +2025-12-12 10:24:39,535 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Created by -> created_by +2025-12-12 10:24:39,536 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Module(模块) -> module +2025-12-12 10:24:39,537 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Wilfulness(责任人) -> wilfulness +2025-12-12 10:24:39,538 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Date of close TR -> date_of_close +2025-12-12 10:24:39,539 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Vehicle Type01 -> vehicle_type +2025-12-12 10:24:39,540 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: VIN|sim -> vin_sim +2025-12-12 10:24:39,541 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: App remote control version -> app_remote_control_version +2025-12-12 10:24:39,542 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: HMI SW -> hmi_sw +2025-12-12 10:24:39,543 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: 父记录 -> parent_record +2025-12-12 10:24:39,544 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Has it been updated on the same day -> has_updated_same_day +2025-12-12 10:24:39,547 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Operating time -> operating_time +2025-12-12 10:24:39,548 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: AI建议 -> ai_suggestion +2025-12-12 10:24:39,549 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Issue Start Time -> updated_at +2025-12-12 10:24:39,555 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:39] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-12 10:24:39,824 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:39] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-12 10:24:40,152 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:40] "GET /api/settings HTTP/1.1" 200 - +2025-12-12 10:24:40,290 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:40] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:24:40,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:40] "[33mGET /favicon.ico HTTP/1.1[0m" 404 - +2025-12-12 10:24:40,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:40] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:24:40,412 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:40] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:24:40,475 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:40] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:24:43,941 - websockets.server - INFO - connection open +2025-12-12 10:24:43,942 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 216, in handle_client + headers = websocket.request_headers + ^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'request_headers' +2025-12-12 10:24:44,198 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:44] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:24:44,242 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:44] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:24:44,247 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:44] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:24:44,563 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:44] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:24:45,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:45] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:24:48,952 - websockets.server - INFO - connection open +2025-12-12 10:24:48,953 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 216, in handle_client + headers = websocket.request_headers + ^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'request_headers' +2025-12-12 10:24:49,188 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:49] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:24:49,206 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:49] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:24:53,964 - websockets.server - INFO - connection open +2025-12-12 10:24:53,965 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 216, in handle_client + headers = websocket.request_headers + ^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'request_headers' +2025-12-12 10:24:54,187 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:54] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:24:55,292 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:24:55,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:24:55,316 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:24:55,330 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:25:55,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:25:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:25:55,318 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:25:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:25:55,320 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:25:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:25:55,338 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:25:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:26:38,737 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 10:26:39,032 - src.core.database - INFO - 数据库初始化成功 +2025-12-12 10:26:39,034 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-12 10:26:40,853 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-12 10:26:40,862 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-12 10:26:40,967 - werkzeug - INFO - [31m[1mWARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.[0m + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.105.212.207:5000 +2025-12-12 10:26:40,967 - werkzeug - INFO - [33mPress CTRL+C to quit[0m +2025-12-12 10:26:40,989 - src.web.websocket_server - INFO - 启动WebSocket服务器: ws://localhost:8765 +2025-12-12 10:26:55,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:26:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:26:55,318 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:26:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:26:55,329 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:26:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:26:55,355 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:26:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:27:31,394 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:31] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:27:31,409 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:31] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:27:31,424 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:31] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:27:31,436 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:31] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:27:31,450 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:31] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:27:31,453 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:31] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:27:31,463 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:31] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:27:31,468 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:31] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:27:31,501 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:31] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:27:31,526 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:31] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:27:32,265 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:32] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:27:32,283 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:32] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:27:35,302 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:35] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:27:37,295 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:37] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:27:40,296 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:40] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:27:40,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:40] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:27:42,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:42] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:27:42,313 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:42] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:27:45,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:45] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:27:47,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:47] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:27:49,389 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 10:27:49,691 - src.core.database - INFO - 数据库初始化成功 +2025-12-12 10:27:49,693 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-12 10:27:50,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:50] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:27:50,316 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:50] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:27:51,544 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-12 10:27:51,553 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-12 10:27:51,667 - werkzeug - INFO - [31m[1mWARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.[0m + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.105.212.207:5000 +2025-12-12 10:27:51,667 - werkzeug - INFO - [33mPress CTRL+C to quit[0m +2025-12-12 10:27:51,693 - src.web.websocket_server - INFO - 启动WebSocket服务器: ws://localhost:8765 +2025-12-12 10:27:52,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:52] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:27:52,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:52] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:27:55,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:27:57,295 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-12 10:27:57,302 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-12 10:27:57,326 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:57] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:28:00,302 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:00] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:28:00,316 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:00] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:28:02,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:02] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:28:02,346 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:02] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:28:02,606 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:02] "GET / HTTP/1.1" 200 - +2025-12-12 10:28:02,905 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:02] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 10:28:02,925 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:02] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 10:28:02,928 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:02] "GET /static/js/core/store.js HTTP/1.1" 200 - +2025-12-12 10:28:02,932 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:02] "GET /static/js/services/api.js HTTP/1.1" 200 - +2025-12-12 10:28:02,933 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:02] "GET /static/js/components/NotificationManager.js HTTP/1.1" 200 - +2025-12-12 10:28:02,935 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:02] "GET /static/js/components/AlertManager.js HTTP/1.1" 200 - +2025-12-12 10:28:03,218 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:03] "GET /static/css/design-system.css HTTP/1.1" 200 - +2025-12-12 10:28:03,231 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:03] "GET /static/js/app-new.js HTTP/1.1" 200 - +2025-12-12 10:28:03,236 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:03] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 200 - +2025-12-12 10:28:03,890 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:03] "GET /api/rules HTTP/1.1" 200 - +2025-12-12 10:28:03,894 - src.agent_assistant - INFO - TSP Agent助手初始化完成 +2025-12-12 10:28:03,895 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:03] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:28:03,898 - src.web.service_manager - INFO - 服务 agent_assistant 已初始化 +2025-12-12 10:28:03,902 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:03] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-12 10:28:03,905 - src.web.service_manager - INFO - 服务 chat_manager 已初始化 +2025-12-12 10:28:03,908 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:03] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-12 10:28:03,914 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:03] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:28:04,217 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:04] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:28:04,224 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:04] "GET /api/workorders HTTP/1.1" 200 - +2025-12-12 10:28:04,229 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:04] "GET /api/system/info HTTP/1.1" 200 - +2025-12-12 10:28:04,232 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:04] "GET /api/feishu-sync/config HTTP/1.1" 200 - +2025-12-12 10:28:04,238 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:04] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-12 10:28:04,243 - src.config.unified_config - WARNING - 无法加载默认LLM配置,使用内置默认值: No module named 'config.llm_config' +2025-12-12 10:28:04,244 - src.config.unified_config - INFO - 配置文件加载成功 +2025-12-12 10:28:04,244 - src.integrations.ai_suggestion_service - INFO - 使用LLM配置: qwen - qwen-plus-latest +2025-12-12 10:28:04,246 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Number -> order_id +2025-12-12 10:28:04,247 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Description -> description +2025-12-12 10:28:04,248 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Type of problem -> category +2025-12-12 10:28:04,250 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Level -> priority +2025-12-12 10:28:04,251 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Status -> status +2025-12-12 10:28:04,252 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Source -> source +2025-12-12 10:28:04,253 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Date creation -> created_at +2025-12-12 10:28:04,254 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: 处理过程 -> resolution +2025-12-12 10:28:04,255 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR tracking -> resolution +2025-12-12 10:28:04,256 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Created by -> created_by +2025-12-12 10:28:04,257 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Module(模块) -> module +2025-12-12 10:28:04,259 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Wilfulness(责任人) -> wilfulness +2025-12-12 10:28:04,260 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Date of close TR -> date_of_close +2025-12-12 10:28:04,263 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Vehicle Type01 -> vehicle_type +2025-12-12 10:28:04,264 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: VIN|sim -> vin_sim +2025-12-12 10:28:04,265 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: App remote control version -> app_remote_control_version +2025-12-12 10:28:04,266 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: HMI SW -> hmi_sw +2025-12-12 10:28:04,267 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: 父记录 -> parent_record +2025-12-12 10:28:04,268 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Has it been updated on the same day -> has_updated_same_day +2025-12-12 10:28:04,269 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Operating time -> operating_time +2025-12-12 10:28:04,271 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: AI建议 -> ai_suggestion +2025-12-12 10:28:04,272 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Issue Start Time -> updated_at +2025-12-12 10:28:04,278 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:04] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-12 10:28:04,558 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:04] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-12 10:28:04,784 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:04] "[33mGET /favicon.ico HTTP/1.1[0m" 404 - +2025-12-12 10:28:04,881 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:04] "GET /api/settings HTTP/1.1" 200 - +2025-12-12 10:28:05,202 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:05] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:28:05,313 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:05] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:28:05,449 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:05] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:28:07,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:07] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:28:08,910 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:08] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:28:08,954 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:08] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:28:08,957 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:08] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:28:09,278 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:09] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:28:10,291 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:10] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:28:10,322 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:10] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:28:12,296 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:12] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:28:12,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:12] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:28:13,899 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:13] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:28:13,912 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:13] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:28:15,293 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:15] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:28:17,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:17] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:28:20,291 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:20] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:28:20,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:20] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:28:22,292 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:22] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:28:22,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:22] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:28:25,313 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:25] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:28:27,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:27] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:28:30,292 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:30] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:28:30,310 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:30] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:28:32,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:32] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:28:32,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:32] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:28:55,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:28:55,316 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:28:55,324 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:28:55,344 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:29:55,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:29:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:29:55,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:29:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:29:55,320 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:29:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:29:55,334 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:29:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:30:18,934 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:18] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:30:18,949 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:18] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:30:18,950 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:18] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:30:18,958 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:18] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:30:18,970 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:18] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:30:18,973 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:18] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:30:18,983 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:18] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:30:18,985 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:18] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:30:19,001 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:19] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:30:19,013 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:19] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:30:19,485 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:19] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:30:19,500 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:19] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:30:22,291 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:22] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:30:22,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:22] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:30:22,966 - src.integrations.feishu_client - INFO - 正在获取飞书tenant_access_token,应用ID: cli_a8b50ec0eed1500d +2025-12-12 10:30:23,141 - src.integrations.feishu_client - INFO - 飞书API响应: {'code': 0, 'expire': 6579, 'msg': 'ok', 'tenant_access_token': 't-g104ccakLJU4WR564CXVQVOIUJO6WHOAB33FQYJV'} +2025-12-12 10:30:23,141 - src.integrations.feishu_client - INFO - tenant_access_token获取成功: t-g104ccakLJU4WR564C... +2025-12-12 10:30:23,141 - src.integrations.feishu_client - INFO - 令牌有效期: 6579秒,过期时间: 2025-12-12 12:20:02 +2025-12-12 10:30:23,143 - src.integrations.feishu_client - INFO - 发送飞书API请求: GET https://open.feishu.cn/open-apis/bitable/v1/apps/XXnEbiCmEaMblSs6FDJcFCqsnIg/tables/tblnl3vJPpgMTSiP/records +2025-12-12 10:30:23,143 - src.integrations.feishu_client - INFO - 请求头: Authorization: Bearer t-g104ccakLJU4WR564C... +2025-12-12 10:30:24,486 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:24] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:30:27,302 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:27] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:30:28,382 - src.integrations.feishu_client - INFO - 飞书API响应状态码: 200 +2025-12-12 10:30:28,383 - src.integrations.feishu_client - INFO - 飞书API响应内容: {'code': 0, 'data': {'has_more': False, 'items': [{'fields': {'AI建议': "1208:您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业分析与升级处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:The widget weather doesn't work \n\n相关背景信息:\n无相关背景信息\n\n请提供:\n1. 问题...", 'Created by': 'Evgeniy', 'Date creation': 1745769600000, 'Module(模块)': 'local O&M', 'Source': 'Mail', 'TR Description': "The widget weather doesn't work ", 'TR Level': 'Low', 'TR Number': 'TR559', 'TR Status': 'Processing', 'TR tracking': '28/04:Local feedback weather widget does not work, query TBOX and IHU login record is normal, traffic binding is normal, we suggest users to use mobile phone hotspot to connect to the car, observe whether the widget is restored, if not, try to capture the IHU logs.', 'Type of problem': 'HU troubles', 'VIN|sim': 'LVTDD24B8RG019153 ', 'Vehicle Type01': 'EXEED RX(T22)', 'Wilfulness(责任人)': 'Evgeniy', '处理过程': '0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志', '当前问题状态': '1027:天气小部件无法使用,已确认TBOX及IHU登录正常、流量绑定正常,建议已完成手机热点连接测试并尝试抓取IHU日志,若问题仍存在,建议进站进行系统诊断或软件版本升级排查。\n0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志'}, 'id': 'rec253kqBfXae4', 'record_id': 'rec253kqBfXae4'}, {'fields': {'AI建议': '1208:该工单问题已明确为TBOX自10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止更新、APP端数据滞留、且无任何TBOX日志上传——这已超出远程唤醒与诊断能力范围,属典型TBOX通信链路或电源管理异常。\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Vehicle data is not updated in the app => dated from October,...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': 'TBOX', 'Source': 'Mail', 'TR Description': 'Vehicle data is not updated in the app => dated from October, 19 - thus, they are old one. No TBOX log in since October, 19. TBOX is in deep sleep since October, 19.\n', 'TR Level': 'Low', 'TR Number': 'TR863', 'TR Status': 'Processing', 'TR tracking': '24/10:The vehicle is in deep sleep, and T-box logs cannot be remotely obtained. The problem is a bit complex and difficult to locate, so the customer needs to visit the station to retrieve T-box logs and DMC logs. @Vsevolod Tsoi', 'Type of problem': 'Remote control ', 'VIN|sim': 'LNNBDDEZ8SD345645 ', 'Vehicle Type01': 'JAECOO J7(T1EJ)', 'Wilfulness(责任人)': '刘娇龙', '处理过程': '1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志', '当前问题状态': '1027:车辆自10月19日进入深度睡眠,TBOX无远程连接,建议客户尽快进站提取TBOX及DMC日志,进行本地诊断分析,排查电源管理或通信模块异常原因,确认硬件状态及软件配置是否正常。\n1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志'}, 'id': 'recv0NLSh2a2S7', 'record_id': 'recv0NLSh2a2S7'}, {'fields': {'AI建议': '1208:经分析当前工单进展:用户无法通过手机号或二维码登录会员中心,且已上传DMC日志及问题视频(时间戳1024),说明远程行为已完整复现,初步排除用户操作误触可能。\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:User not able to enter into member center neither mobile phon...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': '生态/ecologically', 'Source': 'Mail', 'TR Description': 'User not able to enter into member center neither mobile phone nor QR code.', 'TR Level': 'Low', 'TR Number': 'TR864', 'TR Status': 'Processing', 'TR tracking': '23/10: DMC logs attached as well as vieos of the issue.', 'Type of problem': 'Problem with auth in member center', 'VIN|sim': 'LNNBDDEZXSD449358', 'Vehicle Type01': 'EXEED VX FL(M36T)', 'Wilfulness(责任人)': '袁清', '处理过程': '1024: DMC logs attached as well as vieos of the issue.', '当前问题状态': '1027:确认手机网络及APP版本正常,尝试清除APP缓存并重新登录,检查QR码扫描权限是否开启,重启手机和车机,若仍无法进入会员中心,建议联系售后进行远程诊断或进站排查系统故障。\n1024: DMC logs attached as well as vieos of the issue.'}, 'id': 'recv0NLZoKLlRJ', 'record_id': 'recv0NLZoKLlRJ'}, {'fields': {'AI建议': '1208:您好,感谢您反馈异常流量消耗问题。结合当前工单进展(已建议抓取DMC日志、用户确认仅使用导航且3天消耗3.12GB,症状与E0X车型TR866案例高度一致),现提供专业分析与处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Abnormal traffic consumption\n\n相关背景信息:\n相关知识库信息:\n- TR866 - Traf...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761235200000, 'Module(模块)': 'DMC', 'Source': 'Mail', 'TR Description': 'Abnormal traffic consumption', 'TR Level': 'Low', 'TR Number': 'TR866', 'TR Status': 'Analysising', 'TR tracking': '24/10: It is recommended that users grab the DMC log back for analysis.@Vsevolod Tsoi \n24/10: user states he use Navi only and no other apps. Consumption volume - 3.12 Gb for 3 days. Same symptom as E0X - traffic package size is plus mines the same - see pdf from MNO attached', 'Type of problem': 'Traffic is over', 'VIN|sim': 'XEYDD14B3SA012164', 'Vehicle Type01': 'TEST', 'Wilfulness(责任人)': 'Vsevolod Tsoi', '处理过程': '1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf', '当前问题状态': '1027:流量异常可能与导航应用后台持续联网有关,建议关闭Navi自动更新地图功能并限制后台数据使用,检查车机系统是否存在异常进程,如问题依旧,建议进站检测DMC模块日志及SIM卡通信状态,必要时升级系统或更换模块。\n1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf'}, 'id': 'recv0NLZoKjKvx', 'record_id': 'recv0NLZoKjKvx'}], 'total': 4}, 'msg': 'success'} +2025-12-12 10:30:28,386 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:28] "GET /api/feishu-sync/preview-feishu-data HTTP/1.1" 200 - +2025-12-12 10:30:29,480 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:29] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:30:29,494 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:29] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:30:31,183 - src.integrations.workorder_sync - INFO - 开始从飞书同步工单数据... +2025-12-12 10:30:31,184 - src.integrations.feishu_client - INFO - 发送飞书API请求: GET https://open.feishu.cn/open-apis/bitable/v1/apps/XXnEbiCmEaMblSs6FDJcFCqsnIg/tables/tblnl3vJPpgMTSiP/records +2025-12-12 10:30:31,184 - src.integrations.feishu_client - INFO - 请求头: Authorization: Bearer t-g104ccakLJU4WR564C... +2025-12-12 10:30:32,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:32] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:30:32,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:32] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:30:32,953 - src.integrations.feishu_client - INFO - 飞书API响应状态码: 200 +2025-12-12 10:30:32,954 - src.integrations.feishu_client - INFO - 飞书API响应内容: {'code': 0, 'data': {'has_more': False, 'items': [{'fields': {'AI建议': "1208:您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业分析与升级处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:The widget weather doesn't work \n\n相关背景信息:\n无相关背景信息\n\n请提供:\n1. 问题...", 'Created by': 'Evgeniy', 'Date creation': 1745769600000, 'Module(模块)': 'local O&M', 'Source': 'Mail', 'TR Description': "The widget weather doesn't work ", 'TR Level': 'Low', 'TR Number': 'TR559', 'TR Status': 'Processing', 'TR tracking': '28/04:Local feedback weather widget does not work, query TBOX and IHU login record is normal, traffic binding is normal, we suggest users to use mobile phone hotspot to connect to the car, observe whether the widget is restored, if not, try to capture the IHU logs.', 'Type of problem': 'HU troubles', 'VIN|sim': 'LVTDD24B8RG019153 ', 'Vehicle Type01': 'EXEED RX(T22)', 'Wilfulness(责任人)': 'Evgeniy', '处理过程': '0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志', '当前问题状态': '1027:天气小部件无法使用,已确认TBOX及IHU登录正常、流量绑定正常,建议已完成手机热点连接测试并尝试抓取IHU日志,若问题仍存在,建议进站进行系统诊断或软件版本升级排查。\n0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志'}, 'id': 'rec253kqBfXae4', 'record_id': 'rec253kqBfXae4'}, {'fields': {'AI建议': '1208:该工单问题已明确为TBOX自10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止更新、APP端数据滞留、且无任何TBOX日志上传——这已超出远程唤醒与诊断能力范围,属典型TBOX通信链路或电源管理异常。\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Vehicle data is not updated in the app => dated from October,...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': 'TBOX', 'Source': 'Mail', 'TR Description': 'Vehicle data is not updated in the app => dated from October, 19 - thus, they are old one. No TBOX log in since October, 19. TBOX is in deep sleep since October, 19.\n', 'TR Level': 'Low', 'TR Number': 'TR863', 'TR Status': 'Processing', 'TR tracking': '24/10:The vehicle is in deep sleep, and T-box logs cannot be remotely obtained. The problem is a bit complex and difficult to locate, so the customer needs to visit the station to retrieve T-box logs and DMC logs. @Vsevolod Tsoi', 'Type of problem': 'Remote control ', 'VIN|sim': 'LNNBDDEZ8SD345645 ', 'Vehicle Type01': 'JAECOO J7(T1EJ)', 'Wilfulness(责任人)': '刘娇龙', '处理过程': '1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志', '当前问题状态': '1027:车辆自10月19日进入深度睡眠,TBOX无远程连接,建议客户尽快进站提取TBOX及DMC日志,进行本地诊断分析,排查电源管理或通信模块异常原因,确认硬件状态及软件配置是否正常。\n1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志'}, 'id': 'recv0NLSh2a2S7', 'record_id': 'recv0NLSh2a2S7'}, {'fields': {'AI建议': '1208:经分析当前工单进展:用户无法通过手机号或二维码登录会员中心,且已上传DMC日志及问题视频(时间戳1024),说明远程行为已完整复现,初步排除用户操作误触可能。\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:User not able to enter into member center neither mobile phon...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': '生态/ecologically', 'Source': 'Mail', 'TR Description': 'User not able to enter into member center neither mobile phone nor QR code.', 'TR Level': 'Low', 'TR Number': 'TR864', 'TR Status': 'Processing', 'TR tracking': '23/10: DMC logs attached as well as vieos of the issue.', 'Type of problem': 'Problem with auth in member center', 'VIN|sim': 'LNNBDDEZXSD449358', 'Vehicle Type01': 'EXEED VX FL(M36T)', 'Wilfulness(责任人)': '袁清', '处理过程': '1024: DMC logs attached as well as vieos of the issue.', '当前问题状态': '1027:确认手机网络及APP版本正常,尝试清除APP缓存并重新登录,检查QR码扫描权限是否开启,重启手机和车机,若仍无法进入会员中心,建议联系售后进行远程诊断或进站排查系统故障。\n1024: DMC logs attached as well as vieos of the issue.'}, 'id': 'recv0NLZoKLlRJ', 'record_id': 'recv0NLZoKLlRJ'}, {'fields': {'AI建议': '1208:您好,感谢您反馈异常流量消耗问题。结合当前工单进展(已建议抓取DMC日志、用户确认仅使用导航且3天消耗3.12GB,症状与E0X车型TR866案例高度一致),现提供专业分析与处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Abnormal traffic consumption\n\n相关背景信息:\n相关知识库信息:\n- TR866 - Traf...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761235200000, 'Module(模块)': 'DMC', 'Source': 'Mail', 'TR Description': 'Abnormal traffic consumption', 'TR Level': 'Low', 'TR Number': 'TR866', 'TR Status': 'Analysising', 'TR tracking': '24/10: It is recommended that users grab the DMC log back for analysis.@Vsevolod Tsoi \n24/10: user states he use Navi only and no other apps. Consumption volume - 3.12 Gb for 3 days. Same symptom as E0X - traffic package size is plus mines the same - see pdf from MNO attached', 'Type of problem': 'Traffic is over', 'VIN|sim': 'XEYDD14B3SA012164', 'Vehicle Type01': 'TEST', 'Wilfulness(责任人)': 'Vsevolod Tsoi', '处理过程': '1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf', '当前问题状态': '1027:流量异常可能与导航应用后台持续联网有关,建议关闭Navi自动更新地图功能并限制后台数据使用,检查车机系统是否存在异常进程,如问题依旧,建议进站检测DMC模块日志及SIM卡通信状态,必要时升级系统或更换模块。\n1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf'}, 'id': 'recv0NLZoKjKvx', 'record_id': 'recv0NLZoKjKvx'}], 'total': 4}, 'msg': 'success'} +2025-12-12 10:30:32,957 - src.integrations.workorder_sync - INFO - 从飞书获取 4 条记录 +2025-12-12 10:30:32,957 - src.integrations.workorder_sync - INFO - 开始生成AI建议... +2025-12-12 10:30:32,958 - src.integrations.workorder_sync - INFO - 第一条记录结构示例: record_id=rec253kqBfXae4, 有fields字段=True +2025-12-12 10:30:32,958 - src.integrations.workorder_sync - INFO - 第一条记录的fields示例: ['AI建议', 'Created by', 'Date creation', 'Module(模块)', 'Source'] +2025-12-12 10:30:32,958 - src.integrations.workorder_sync - INFO - 第一条记录的AI建议字段内容: 1208:您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正 +2025-12-12 10:30:32,958 - src.integrations.ai_suggestion_service - INFO - 记录 rec253kqBfXae4 - 现有AI建议长度: 190 +2025-12-12 10:30:32,959 - src.integrations.ai_suggestion_service - INFO - 记录 rec253kqBfXae4 - 现有AI建议前100字符: 1208:您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业分析与升级处理建议如下: +模拟LLM响应: +作为技术支持专家,请基于 +2025-12-12 10:30:32,960 - src.dialogue.realtime_chat - INFO - 创建新会话: session_ai_suggestion_service_1765506632 +2025-12-12 10:30:32,962 - src.knowledge_base.knowledge_manager - WARNING - 知识库中没有活跃条目 +2025-12-12 10:30:35,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:35] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:30:37,293 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:37] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:30:39,480 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:39] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:30:39,502 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:39] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:30:42,292 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:42] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:30:42,307 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:42] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:30:44,491 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:44] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:30:47,307 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:47] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:30:50,285 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:50] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:30:50,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:50] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:30:52,296 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:52] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:30:52,305 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:52] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:30:55,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:30:55,951 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:55] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:30:55,963 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:55] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:30:57,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:57] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:30:59,685 - src.core.llm_client - INFO - API请求成功 +2025-12-12 10:30:59,694 - src.integrations.ai_suggestion_service - INFO - AI生成原始内容: 您好,感谢您对奇瑞汽车智能座舱体验的关注。针对“天气小部件(Weather Widget)无法工作”的问题,结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业、分阶段... +2025-12-12 10:30:59,694 - src.integrations.ai_suggestion_service - INFO - 未找到需要替换的内容: 您好,感谢您对奇瑞汽车智能座舱体验的关注。针对“天气小部件(Weather Widget)无法工作”的问题,结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业、分阶段 +2025-12-12 10:30:59,694 - src.integrations.ai_suggestion_service - INFO - 未找到需要替换的内容: 您好,感谢您对奇瑞汽车智能座舱体验的关注。针对“天气小部件(Weather Widget)无法工作”的问题,结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业、分阶段 +2025-12-12 10:30:59,695 - src.integrations.ai_suggestion_service - INFO - AI建议清理后: 您好,感谢您对奇瑞汽车智能座舱体验的关注。针对“天气小部件(Weather Widget)无法工作”的问题,结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业、分阶段... +2025-12-12 10:30:59,695 - src.integrations.ai_suggestion_service - INFO - _format_ai_suggestion_with_numbering 调用 - time_str=1212, existing长度=190 +2025-12-12 10:30:59,696 - src.integrations.ai_suggestion_service - INFO - 为记录 rec253kqBfXae4 生成AI建议,新建议长度: 311 +2025-12-12 10:30:59,696 - src.integrations.ai_suggestion_service - INFO - 记录 recv0NLSh2a2S7 - 现有AI建议长度: 231 +2025-12-12 10:30:59,696 - src.integrations.ai_suggestion_service - INFO - 记录 recv0NLSh2a2S7 - 现有AI建议前100字符: 1208:该工单问题已明确为TBOX自10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止更新、APP端数据滞留、且无任何TBOX日志上传——这已超出远程唤醒与诊断能力范围,属 +2025-12-12 10:30:59,697 - src.dialogue.realtime_chat - INFO - 创建新会话: session_ai_suggestion_service_1765506659 +2025-12-12 10:30:59,699 - src.knowledge_base.knowledge_manager - WARNING - 知识库中没有活跃条目 +2025-12-12 10:31:00,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:00] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:31:00,320 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:00] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:02,286 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:02] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:31:02,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:02] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:05,293 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:05] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:07,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:07] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:10,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:10] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:31:10,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:10] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:12,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:12] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:31:12,323 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:12] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:15,296 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:15] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:17,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:17] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:20,287 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:20] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:31:20,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:20] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:22,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:22] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:31:22,315 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:22] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:25,033 - src.core.llm_client - INFO - API请求成功 +2025-12-12 10:31:25,041 - src.integrations.ai_suggestion_service - INFO - AI生成原始内容: 该工单问题已明确定性为TBOX自2023年10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止上传、APP端数据滞留(最后更新为10月19日)、且无任何TBOX日志记录——这表... +2025-12-12 10:31:25,041 - src.integrations.ai_suggestion_service - INFO - 未找到需要替换的内容: 该工单问题已明确定性为TBOX自2023年10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止上传、APP端数据滞留(最后更新为10月19日)、且无任何TBOX日志记录——这表 +2025-12-12 10:31:25,042 - src.integrations.ai_suggestion_service - INFO - 未找到需要替换的内容: 该工单问题已明确定性为TBOX自2023年10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止上传、APP端数据滞留(最后更新为10月19日)、且无任何TBOX日志记录——这表 +2025-12-12 10:31:25,043 - src.integrations.ai_suggestion_service - INFO - AI建议清理后: 该工单问题已明确定性为TBOX自2023年10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止上传、APP端数据滞留(最后更新为10月19日)、且无任何TBOX日志记录——这表... +2025-12-12 10:31:25,043 - src.integrations.ai_suggestion_service - INFO - _format_ai_suggestion_with_numbering 调用 - time_str=1212, existing长度=231 +2025-12-12 10:31:25,044 - src.integrations.ai_suggestion_service - INFO - 为记录 recv0NLSh2a2S7 生成AI建议,新建议长度: 378 +2025-12-12 10:31:25,044 - src.integrations.ai_suggestion_service - INFO - 记录 recv0NLZoKLlRJ - 现有AI建议长度: 197 +2025-12-12 10:31:25,045 - src.integrations.ai_suggestion_service - INFO - 记录 recv0NLZoKLlRJ - 现有AI建议前100字符: 1208:经分析当前工单进展:用户无法通过手机号或二维码登录会员中心,且已上传DMC日志及问题视频(时间戳1024),说明远程行为已完整复现,初步排除用户操作误触可能。 +模拟LLM响应: +作为技术支 +2025-12-12 10:31:25,046 - src.dialogue.realtime_chat - INFO - 创建新会话: session_ai_suggestion_service_1765506685 +2025-12-12 10:31:25,047 - src.knowledge_base.knowledge_manager - WARNING - 知识库中没有活跃条目 +2025-12-12 10:31:25,294 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:25] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:27,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:27] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:30,295 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:30] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:31:30,318 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:30] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:32,290 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:32] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:31:32,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:32] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:35,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:35] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:37,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:37] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:40,289 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:40] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:31:40,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:40] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:42,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:42] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:31:42,313 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:42] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:45,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:45] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:47,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:47] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:48,976 - src.core.llm_client - INFO - API请求成功 +2025-12-12 10:31:48,984 - src.integrations.ai_suggestion_service - INFO - AI生成原始内容: 经分析当前工单进展:用户无法通过手机号或二维码任一方式进入会员中心,且已提供DMC日志(含完整鉴权流程记录)及实操视频(1024时间戳),远程复现充分,可排除用户端输入错误、网络临时中断或操作流程误触... +2025-12-12 10:31:48,985 - src.integrations.ai_suggestion_service - INFO - 未找到需要替换的内容: 经分析当前工单进展:用户无法通过手机号或二维码任一方式进入会员中心,且已提供DMC日志(含完整鉴权流程记录)及实操视频(1024时间戳),远程复现充分,可排除用户端输入错误、网络临时中断或操作流程误触 +2025-12-12 10:31:48,986 - src.integrations.ai_suggestion_service - INFO - 未找到需要替换的内容: 经分析当前工单进展:用户无法通过手机号或二维码任一方式进入会员中心,且已提供DMC日志(含完整鉴权流程记录)及实操视频(1024时间戳),远程复现充分,可排除用户端输入错误、网络临时中断或操作流程误触 +2025-12-12 10:31:48,987 - src.integrations.ai_suggestion_service - INFO - AI建议清理后: 经分析当前工单进展:用户无法通过手机号或二维码任一方式进入会员中心,且已提供DMC日志(含完整鉴权流程记录)及实操视频(1024时间戳),远程复现充分,可排除用户端输入错误、网络临时中断或操作流程误触... +2025-12-12 10:31:48,987 - src.integrations.ai_suggestion_service - INFO - _format_ai_suggestion_with_numbering 调用 - time_str=1212, existing长度=197 +2025-12-12 10:31:48,988 - src.integrations.ai_suggestion_service - INFO - 为记录 recv0NLZoKLlRJ 生成AI建议,新建议长度: 310 +2025-12-12 10:31:48,988 - src.integrations.ai_suggestion_service - INFO - 记录 recv0NLZoKjKvx - 现有AI建议长度: 212 +2025-12-12 10:31:48,988 - src.integrations.ai_suggestion_service - INFO - 记录 recv0NLZoKjKvx - 现有AI建议前100字符: 1208:您好,感谢您反馈异常流量消耗问题。结合当前工单进展(已建议抓取DMC日志、用户确认仅使用导航且3天消耗3.12GB,症状与E0X车型TR866案例高度一致),现提供专业分析与处理建议如下: + +2025-12-12 10:31:48,990 - src.dialogue.realtime_chat - INFO - 创建新会话: session_ai_suggestion_service_1765506708 +2025-12-12 10:31:48,992 - src.knowledge_base.knowledge_manager - WARNING - 知识库中没有活跃条目 +2025-12-12 10:31:50,295 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:50] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:31:50,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:50] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:52,296 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:52] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:31:52,315 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:52] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:55,302 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:32:17,690 - src.core.llm_client - INFO - API请求成功 +2025-12-12 10:32:17,697 - src.integrations.ai_suggestion_service - INFO - AI生成原始内容: 您好,感谢您对奇瑞汽车技术支持的信任。针对当前“Abnormal traffic consumption”(异常流量消耗)工单,结合已有处理进展与技术特征,现提供专业分析与闭环处理建议如下: + +一、问... +2025-12-12 10:32:17,698 - src.integrations.ai_suggestion_service - INFO - 未找到需要替换的内容: 您好,感谢您对奇瑞汽车技术支持的信任。针对当前“Abnormal traffic consumption”(异常流量消耗)工单,结合已有处理进展与技术特征,现提供专业分析与闭环处理建议如下: + +一、问 +2025-12-12 10:32:17,698 - src.integrations.ai_suggestion_service - INFO - 未找到需要替换的内容: 您好,感谢您对奇瑞汽车技术支持的信任。针对当前“Abnormal traffic consumption”(异常流量消耗)工单,结合已有处理进展与技术特征,现提供专业分析与闭环处理建议如下: +2025-12-12 10:32:17,698 - src.integrations.ai_suggestion_service - INFO - AI建议清理后: 您好,感谢您对奇瑞汽车技术支持的信任。针对当前“Abnormal traffic consumption”(异常流量消耗)工单,结合已有处理进展与技术特征,现提供专业分析与闭环处理建议如下:... +2025-12-12 10:32:17,699 - src.integrations.ai_suggestion_service - INFO - _format_ai_suggestion_with_numbering 调用 - time_str=1212, existing长度=212 +2025-12-12 10:32:17,699 - src.integrations.ai_suggestion_service - INFO - 为记录 recv0NLZoKjKvx 生成AI建议,新建议长度: 313 +2025-12-12 10:32:17,699 - src.integrations.feishu_client - INFO - 发送飞书API请求: PUT https://open.feishu.cn/open-apis/bitable/v1/apps/XXnEbiCmEaMblSs6FDJcFCqsnIg/tables/tblnl3vJPpgMTSiP/records/rec253kqBfXae4 +2025-12-12 10:32:17,700 - src.integrations.feishu_client - INFO - 请求头: Authorization: Bearer t-g104ccakLJU4WR564C... +2025-12-12 10:32:20,460 - src.integrations.feishu_client - INFO - 飞书API响应状态码: 200 +2025-12-12 10:32:20,460 - src.integrations.feishu_client - INFO - 飞书API响应内容: {'code': 0, 'data': {'record': {'fields': {'AI建议': "1212:您好,感谢您对奇瑞汽车智能座舱体验的关注。针对“天气小部件(Weather Widget)无法工作”的问题,结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业、分阶段的技术分析与升级处理建议如下:\n1208:您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业分析与升级处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:The widget weather doesn't work \n\n相关背景信息:\n无相关背景信息\n\n请提供:\n1. 问题..."}, 'id': 'rec253kqBfXae4', 'record_id': 'rec253kqBfXae4'}}, 'msg': 'success'} +2025-12-12 10:32:20,462 - src.integrations.workorder_sync - INFO - 更新飞书记录 rec253kqBfXae4 的AI建议 +2025-12-12 10:32:20,462 - src.integrations.feishu_client - INFO - 发送飞书API请求: PUT https://open.feishu.cn/open-apis/bitable/v1/apps/XXnEbiCmEaMblSs6FDJcFCqsnIg/tables/tblnl3vJPpgMTSiP/records/recv0NLSh2a2S7 +2025-12-12 10:32:20,462 - src.integrations.feishu_client - INFO - 请求头: Authorization: Bearer t-g104ccakLJU4WR564C... +2025-12-12 10:32:22,466 - src.integrations.feishu_client - INFO - 飞书API响应状态码: 200 +2025-12-12 10:32:22,467 - src.integrations.feishu_client - INFO - 飞书API响应内容: {'code': 0, 'data': {'record': {'fields': {'AI建议': '1212:该工单问题已明确定性为TBOX自2023年10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止上传、APP端数据滞留(最后更新为10月19日)、且无任何TBOX日志记录——这表明TBOX未执行常规唤醒周期(如定时心跳、CAN总线活动触发唤醒或远程指令唤醒),\n1208:该工单问题已明确为TBOX自10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止更新、APP端数据滞留、且无任何TBOX日志上传——这已超出远程唤醒与诊断能力范围,属典型TBOX通信链路或电源管理异常。\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Vehicle data is not updated in the app => dated from October,...'}, 'id': 'recv0NLSh2a2S7', 'record_id': 'recv0NLSh2a2S7'}}, 'msg': 'success'} +2025-12-12 10:32:22,468 - src.integrations.workorder_sync - INFO - 更新飞书记录 recv0NLSh2a2S7 的AI建议 +2025-12-12 10:32:22,469 - src.integrations.feishu_client - INFO - 发送飞书API请求: PUT https://open.feishu.cn/open-apis/bitable/v1/apps/XXnEbiCmEaMblSs6FDJcFCqsnIg/tables/tblnl3vJPpgMTSiP/records/recv0NLZoKLlRJ +2025-12-12 10:32:22,469 - src.integrations.feishu_client - INFO - 请求头: Authorization: Bearer t-g104ccakLJU4WR564C... +2025-12-12 10:32:24,719 - src.integrations.feishu_client - INFO - 飞书API响应状态码: 200 +2025-12-12 10:32:24,720 - src.integrations.feishu_client - INFO - 飞书API响应内容: {'code': 0, 'data': {'record': {'fields': {'AI建议': '1212:经分析当前工单进展:用户无法通过手机号或二维码任一方式进入会员中心,且已提供DMC日志(含完整鉴权流程记录)及实操视频(1024时间戳),远程复现充分,可排除用户端输入错误、网络临时中断或操作流程误触等基础性问题。\n1208:经分析当前工单进展:用户无法通过手机号或二维码登录会员中心,且已上传DMC日志及问题视频(时间戳1024),说明远程行为已完整复现,初步排除用户操作误触可能。\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:User not able to enter into member center neither mobile phon...'}, 'id': 'recv0NLZoKLlRJ', 'record_id': 'recv0NLZoKLlRJ'}}, 'msg': 'success'} +2025-12-12 10:32:24,722 - src.integrations.workorder_sync - INFO - 更新飞书记录 recv0NLZoKLlRJ 的AI建议 +2025-12-12 10:32:24,722 - src.integrations.feishu_client - INFO - 发送飞书API请求: PUT https://open.feishu.cn/open-apis/bitable/v1/apps/XXnEbiCmEaMblSs6FDJcFCqsnIg/tables/tblnl3vJPpgMTSiP/records/recv0NLZoKjKvx +2025-12-12 10:32:24,722 - src.integrations.feishu_client - INFO - 请求头: Authorization: Bearer t-g104ccakLJU4WR564C... +2025-12-12 10:32:26,647 - src.integrations.feishu_client - INFO - 飞书API响应状态码: 200 +2025-12-12 10:32:26,647 - src.integrations.feishu_client - INFO - 飞书API响应内容: {'code': 0, 'data': {'record': {'fields': {'AI建议': '1212:您好,感谢您对奇瑞汽车技术支持的信任。针对当前“Abnormal traffic consumption”(异常流量消耗)工单,结合已有处理进展与技术特征,现提供专业分析与闭环处理建议如下:\n1208:您好,感谢您反馈异常流量消耗问题。结合当前工单进展(已建议抓取DMC日志、用户确认仅使用导航且3天消耗3.12GB,症状与E0X车型TR866案例高度一致),现提供专业分析与处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Abnormal traffic consumption\n\n相关背景信息:\n相关知识库信息:\n- TR866 - Traf...'}, 'id': 'recv0NLZoKjKvx', 'record_id': 'recv0NLZoKjKvx'}}, 'msg': 'success'} +2025-12-12 10:32:26,648 - src.integrations.workorder_sync - INFO - 更新飞书记录 recv0NLZoKjKvx 的AI建议 +2025-12-12 10:32:26,652 - src.integrations.workorder_sync - INFO - 开始转换飞书字段: {'AI建议': "1208:您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业分析与升级处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:The widget weather doesn't work \n\n相关背景信息:\n无相关背景信息\n\n请提供:\n1. 问题...", 'Created by': 'Evgeniy', 'Date creation': 1745769600000, 'Module(模块)': 'local O&M', 'Source': 'Mail', 'TR Description': "The widget weather doesn't work ", 'TR Level': 'Low', 'TR Number': 'TR559', 'TR Status': 'Processing', 'TR tracking': '28/04:Local feedback weather widget does not work, query TBOX and IHU login record is normal, traffic binding is normal, we suggest users to use mobile phone hotspot to connect to the car, observe whether the widget is restored, if not, try to capture the IHU logs.', 'Type of problem': 'HU troubles', 'VIN|sim': 'LVTDD24B8RG019153 ', 'Vehicle Type01': 'EXEED RX(T22)', 'Wilfulness(责任人)': 'Evgeniy', '处理过程': '0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志', '当前问题状态': '1027:天气小部件无法使用,已确认TBOX及IHU登录正常、流量绑定正常,建议已完成手机热点连接测试并尝试抓取IHU日志,若问题仍存在,建议进站进行系统诊断或软件版本升级排查。\n0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志'} +2025-12-12 10:32:26,653 - src.integrations.flexible_field_mapper - INFO - 开始转换字段: ['AI建议', 'Created by', 'Date creation', 'Module(模块)', 'Source', 'TR Description', 'TR Level', 'TR Number', 'TR Status', 'TR tracking', 'Type of problem', 'VIN|sim', 'Vehicle Type01', 'Wilfulness(责任人)', '处理过程', '当前问题状态'] +2025-12-12 10:32:26,654 - src.integrations.flexible_field_mapper - INFO - 映射字段 AI建议 -> ai_suggestion: 1208:您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业分析与升级处理建议如下: +模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:The widget weather doesn't work + +相关背景信息: +无相关背景信息 + +请提供: +1. 问题... +2025-12-12 10:32:26,654 - src.integrations.flexible_field_mapper - INFO - 映射字段 Created by -> created_by: Evgeniy +2025-12-12 10:32:26,655 - src.integrations.flexible_field_mapper - INFO - 映射字段 Date creation -> created_at: 1745769600000 +2025-12-12 10:32:26,655 - src.integrations.flexible_field_mapper - INFO - 映射字段 Module(模块) -> module: local O&M +2025-12-12 10:32:26,655 - src.integrations.flexible_field_mapper - INFO - 映射字段 Source -> source: Mail +2025-12-12 10:32:26,656 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Description -> description: The widget weather doesn't work +2025-12-12 10:32:26,656 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Level -> priority: Low +2025-12-12 10:32:26,656 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Number -> order_id: TR559 +2025-12-12 10:32:26,657 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Status -> status: Processing +2025-12-12 10:32:26,657 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR tracking -> resolution: 28/04:Local feedback weather widget does not work, query TBOX and IHU login record is normal, traffic binding is normal, we suggest users to use mobile phone hotspot to connect to the car, observe whether the widget is restored, if not, try to capture the IHU logs. +2025-12-12 10:32:26,658 - src.integrations.flexible_field_mapper - INFO - 映射字段 Type of problem -> category: HU troubles +2025-12-12 10:32:26,658 - src.integrations.flexible_field_mapper - INFO - 映射字段 VIN|sim -> vin_sim: LVTDD24B8RG019153 +2025-12-12 10:32:26,658 - src.integrations.flexible_field_mapper - INFO - 映射字段 Vehicle Type01 -> vehicle_type: EXEED RX(T22) +2025-12-12 10:32:26,658 - src.integrations.flexible_field_mapper - INFO - 映射字段 Wilfulness(责任人) -> wilfulness: Evgeniy +2025-12-12 10:32:26,658 - src.integrations.flexible_field_mapper - INFO - 映射字段 处理过程 -> resolution: 0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志 +2025-12-12 10:32:26,663 - src.integrations.flexible_field_mapper - INFO - 飞书字段 当前问题状态 不存在于数据中 +2025-12-12 10:32:26,663 - src.integrations.flexible_field_mapper - INFO - 字段转换完成: 已映射 15, 未映射 1 +2025-12-12 10:32:26,664 - src.integrations.workorder_sync - INFO - 字段转换统计: 总字段 16, 已映射 15, 未映射 1 +2025-12-12 10:32:26,664 - src.integrations.workorder_sync - WARNING - 未映射字段: ['当前问题状态'] +2025-12-12 10:32:26,664 - src.integrations.workorder_sync - INFO - 字段 '当前问题状态' 的建议映射: {'local_field': 'status', 'similarity': 0.7, 'matched_pattern': '.*状态.*', 'confidence': 'medium', 'reason': "匹配模式 '.*状态.*'"} +2025-12-12 10:32:26,666 - src.integrations.workorder_sync - INFO - 开始转换飞书字段: {'AI建议': '1208:该工单问题已明确为TBOX自10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止更新、APP端数据滞留、且无任何TBOX日志上传——这已超出远程唤醒与诊断能力范围,属典型TBOX通信链路或电源管理异常。\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Vehicle data is not updated in the app => dated from October,...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': 'TBOX', 'Source': 'Mail', 'TR Description': 'Vehicle data is not updated in the app => dated from October, 19 - thus, they are old one. No TBOX log in since October, 19. TBOX is in deep sleep since October, 19.\n', 'TR Level': 'Low', 'TR Number': 'TR863', 'TR Status': 'Processing', 'TR tracking': '24/10:The vehicle is in deep sleep, and T-box logs cannot be remotely obtained. The problem is a bit complex and difficult to locate, so the customer needs to visit the station to retrieve T-box logs and DMC logs. @Vsevolod Tsoi', 'Type of problem': 'Remote control ', 'VIN|sim': 'LNNBDDEZ8SD345645 ', 'Vehicle Type01': 'JAECOO J7(T1EJ)', 'Wilfulness(责任人)': '刘娇龙', '处理过程': '1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志', '当前问题状态': '1027:车辆自10月19日进入深度睡眠,TBOX无远程连接,建议客户尽快进站提取TBOX及DMC日志,进行本地诊断分析,排查电源管理或通信模块异常原因,确认硬件状态及软件配置是否正常。\n1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志'} +2025-12-12 10:32:26,666 - src.integrations.flexible_field_mapper - INFO - 开始转换字段: ['AI建议', 'Created by', 'Date creation', 'Module(模块)', 'Source', 'TR Description', 'TR Level', 'TR Number', 'TR Status', 'TR tracking', 'Type of problem', 'VIN|sim', 'Vehicle Type01', 'Wilfulness(责任人)', '处理过程', '当前问题状态'] +2025-12-12 10:32:26,666 - src.integrations.flexible_field_mapper - INFO - 映射字段 AI建议 -> ai_suggestion: 1208:该工单问题已明确为TBOX自10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止更新、APP端数据滞留、且无任何TBOX日志上传——这已超出远程唤醒与诊断能力范围,属典型TBOX通信链路或电源管理异常。 +模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:Vehicle data is not updated in the app => dated from October,... +2025-12-12 10:32:26,667 - src.integrations.flexible_field_mapper - INFO - 映射字段 Created by -> created_by: Vsevolod Tsoi +2025-12-12 10:32:26,667 - src.integrations.flexible_field_mapper - INFO - 映射字段 Date creation -> created_at: 1761148800000 +2025-12-12 10:32:26,667 - src.integrations.flexible_field_mapper - INFO - 映射字段 Module(模块) -> module: TBOX +2025-12-12 10:32:26,667 - src.integrations.flexible_field_mapper - INFO - 映射字段 Source -> source: Mail +2025-12-12 10:32:26,667 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Description -> description: Vehicle data is not updated in the app => dated from October, 19 - thus, they are old one. No TBOX log in since October, 19. TBOX is in deep sleep since October, 19. + +2025-12-12 10:32:26,668 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Level -> priority: Low +2025-12-12 10:32:26,668 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Number -> order_id: TR863 +2025-12-12 10:32:26,668 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Status -> status: Processing +2025-12-12 10:32:26,668 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR tracking -> resolution: 24/10:The vehicle is in deep sleep, and T-box logs cannot be remotely obtained. The problem is a bit complex and difficult to locate, so the customer needs to visit the station to retrieve T-box logs and DMC logs. @Vsevolod Tsoi +2025-12-12 10:32:26,669 - src.integrations.flexible_field_mapper - INFO - 映射字段 Type of problem -> category: Remote control +2025-12-12 10:32:26,669 - src.integrations.flexible_field_mapper - INFO - 映射字段 VIN|sim -> vin_sim: LNNBDDEZ8SD345645 +2025-12-12 10:32:26,669 - src.integrations.flexible_field_mapper - INFO - 映射字段 Vehicle Type01 -> vehicle_type: JAECOO J7(T1EJ) +2025-12-12 10:32:26,669 - src.integrations.flexible_field_mapper - INFO - 映射字段 Wilfulness(责任人) -> wilfulness: 刘娇龙 +2025-12-12 10:32:26,669 - src.integrations.flexible_field_mapper - INFO - 映射字段 处理过程 -> resolution: 1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志 +2025-12-12 10:32:26,671 - src.integrations.flexible_field_mapper - INFO - 飞书字段 当前问题状态 不存在于数据中 +2025-12-12 10:32:26,672 - src.integrations.flexible_field_mapper - INFO - 字段转换完成: 已映射 15, 未映射 1 +2025-12-12 10:32:26,672 - src.integrations.workorder_sync - INFO - 字段转换统计: 总字段 16, 已映射 15, 未映射 1 +2025-12-12 10:32:26,672 - src.integrations.workorder_sync - WARNING - 未映射字段: ['当前问题状态'] +2025-12-12 10:32:26,672 - src.integrations.workorder_sync - INFO - 字段 '当前问题状态' 的建议映射: {'local_field': 'status', 'similarity': 0.7, 'matched_pattern': '.*状态.*', 'confidence': 'medium', 'reason': "匹配模式 '.*状态.*'"} +2025-12-12 10:32:26,673 - src.integrations.workorder_sync - INFO - 开始转换飞书字段: {'AI建议': '1208:经分析当前工单进展:用户无法通过手机号或二维码登录会员中心,且已上传DMC日志及问题视频(时间戳1024),说明远程行为已完整复现,初步排除用户操作误触可能。\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:User not able to enter into member center neither mobile phon...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': '生态/ecologically', 'Source': 'Mail', 'TR Description': 'User not able to enter into member center neither mobile phone nor QR code.', 'TR Level': 'Low', 'TR Number': 'TR864', 'TR Status': 'Processing', 'TR tracking': '23/10: DMC logs attached as well as vieos of the issue.', 'Type of problem': 'Problem with auth in member center', 'VIN|sim': 'LNNBDDEZXSD449358', 'Vehicle Type01': 'EXEED VX FL(M36T)', 'Wilfulness(责任人)': '袁清', '处理过程': '1024: DMC logs attached as well as vieos of the issue.', '当前问题状态': '1027:确认手机网络及APP版本正常,尝试清除APP缓存并重新登录,检查QR码扫描权限是否开启,重启手机和车机,若仍无法进入会员中心,建议联系售后进行远程诊断或进站排查系统故障。\n1024: DMC logs attached as well as vieos of the issue.'} +2025-12-12 10:32:26,674 - src.integrations.flexible_field_mapper - INFO - 开始转换字段: ['AI建议', 'Created by', 'Date creation', 'Module(模块)', 'Source', 'TR Description', 'TR Level', 'TR Number', 'TR Status', 'TR tracking', 'Type of problem', 'VIN|sim', 'Vehicle Type01', 'Wilfulness(责任人)', '处理过程', '当前问题状态'] +2025-12-12 10:32:26,674 - src.integrations.flexible_field_mapper - INFO - 映射字段 AI建议 -> ai_suggestion: 1208:经分析当前工单进展:用户无法通过手机号或二维码登录会员中心,且已上传DMC日志及问题视频(时间戳1024),说明远程行为已完整复现,初步排除用户操作误触可能。 +模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:User not able to enter into member center neither mobile phon... +2025-12-12 10:32:26,675 - src.integrations.flexible_field_mapper - INFO - 映射字段 Created by -> created_by: Vsevolod Tsoi +2025-12-12 10:32:26,675 - src.integrations.flexible_field_mapper - INFO - 映射字段 Date creation -> created_at: 1761148800000 +2025-12-12 10:32:26,675 - src.integrations.flexible_field_mapper - INFO - 映射字段 Module(模块) -> module: 生态/ecologically +2025-12-12 10:32:26,676 - src.integrations.flexible_field_mapper - INFO - 映射字段 Source -> source: Mail +2025-12-12 10:32:26,676 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Description -> description: User not able to enter into member center neither mobile phone nor QR code. +2025-12-12 10:32:26,676 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Level -> priority: Low +2025-12-12 10:32:26,676 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Number -> order_id: TR864 +2025-12-12 10:32:26,676 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Status -> status: Processing +2025-12-12 10:32:26,677 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR tracking -> resolution: 23/10: DMC logs attached as well as vieos of the issue. +2025-12-12 10:32:26,677 - src.integrations.flexible_field_mapper - INFO - 映射字段 Type of problem -> category: Problem with auth in member center +2025-12-12 10:32:26,677 - src.integrations.flexible_field_mapper - INFO - 映射字段 VIN|sim -> vin_sim: LNNBDDEZXSD449358 +2025-12-12 10:32:26,678 - src.integrations.flexible_field_mapper - INFO - 映射字段 Vehicle Type01 -> vehicle_type: EXEED VX FL(M36T) +2025-12-12 10:32:26,678 - src.integrations.flexible_field_mapper - INFO - 映射字段 Wilfulness(责任人) -> wilfulness: 袁清 +2025-12-12 10:32:26,678 - src.integrations.flexible_field_mapper - INFO - 映射字段 处理过程 -> resolution: 1024: DMC logs attached as well as vieos of the issue. +2025-12-12 10:32:26,680 - src.integrations.flexible_field_mapper - INFO - 飞书字段 当前问题状态 不存在于数据中 +2025-12-12 10:32:26,680 - src.integrations.flexible_field_mapper - INFO - 字段转换完成: 已映射 15, 未映射 1 +2025-12-12 10:32:26,680 - src.integrations.workorder_sync - INFO - 字段转换统计: 总字段 16, 已映射 15, 未映射 1 +2025-12-12 10:32:26,681 - src.integrations.workorder_sync - WARNING - 未映射字段: ['当前问题状态'] +2025-12-12 10:32:26,681 - src.integrations.workorder_sync - INFO - 字段 '当前问题状态' 的建议映射: {'local_field': 'status', 'similarity': 0.7, 'matched_pattern': '.*状态.*', 'confidence': 'medium', 'reason': "匹配模式 '.*状态.*'"} +2025-12-12 10:32:26,682 - src.integrations.workorder_sync - INFO - 开始转换飞书字段: {'AI建议': '1208:您好,感谢您反馈异常流量消耗问题。结合当前工单进展(已建议抓取DMC日志、用户确认仅使用导航且3天消耗3.12GB,症状与E0X车型TR866案例高度一致),现提供专业分析与处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Abnormal traffic consumption\n\n相关背景信息:\n相关知识库信息:\n- TR866 - Traf...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761235200000, 'Module(模块)': 'DMC', 'Source': 'Mail', 'TR Description': 'Abnormal traffic consumption', 'TR Level': 'Low', 'TR Number': 'TR866', 'TR Status': 'Analysising', 'TR tracking': '24/10: It is recommended that users grab the DMC log back for analysis.@Vsevolod Tsoi \n24/10: user states he use Navi only and no other apps. Consumption volume - 3.12 Gb for 3 days. Same symptom as E0X - traffic package size is plus mines the same - see pdf from MNO attached', 'Type of problem': 'Traffic is over', 'VIN|sim': 'XEYDD14B3SA012164', 'Vehicle Type01': 'TEST', 'Wilfulness(责任人)': 'Vsevolod Tsoi', '处理过程': '1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf', '当前问题状态': '1027:流量异常可能与导航应用后台持续联网有关,建议关闭Navi自动更新地图功能并限制后台数据使用,检查车机系统是否存在异常进程,如问题依旧,建议进站检测DMC模块日志及SIM卡通信状态,必要时升级系统或更换模块。\n1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf'} +2025-12-12 10:32:26,683 - src.integrations.flexible_field_mapper - INFO - 开始转换字段: ['AI建议', 'Created by', 'Date creation', 'Module(模块)', 'Source', 'TR Description', 'TR Level', 'TR Number', 'TR Status', 'TR tracking', 'Type of problem', 'VIN|sim', 'Vehicle Type01', 'Wilfulness(责任人)', '处理过程', '当前问题状态'] +2025-12-12 10:32:26,683 - src.integrations.flexible_field_mapper - INFO - 映射字段 AI建议 -> ai_suggestion: 1208:您好,感谢您反馈异常流量消耗问题。结合当前工单进展(已建议抓取DMC日志、用户确认仅使用导航且3天消耗3.12GB,症状与E0X车型TR866案例高度一致),现提供专业分析与处理建议如下: +模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:Abnormal traffic consumption + +相关背景信息: +相关知识库信息: +- TR866 - Traf... +2025-12-12 10:32:26,684 - src.integrations.flexible_field_mapper - INFO - 映射字段 Created by -> created_by: Vsevolod Tsoi +2025-12-12 10:32:26,684 - src.integrations.flexible_field_mapper - INFO - 映射字段 Date creation -> created_at: 1761235200000 +2025-12-12 10:32:26,684 - src.integrations.flexible_field_mapper - INFO - 映射字段 Module(模块) -> module: DMC +2025-12-12 10:32:26,684 - src.integrations.flexible_field_mapper - INFO - 映射字段 Source -> source: Mail +2025-12-12 10:32:26,684 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Description -> description: Abnormal traffic consumption +2025-12-12 10:32:26,685 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Level -> priority: Low +2025-12-12 10:32:26,685 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Number -> order_id: TR866 +2025-12-12 10:32:26,685 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Status -> status: Analysising +2025-12-12 10:32:26,685 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR tracking -> resolution: 24/10: It is recommended that users grab the DMC log back for analysis.@Vsevolod Tsoi +24/10: user states he use Navi only and no other apps. Consumption volume - 3.12 Gb for 3 days. Same symptom as E0X - traffic package size is plus mines the same - see pdf from MNO attached +2025-12-12 10:32:26,686 - src.integrations.flexible_field_mapper - INFO - 映射字段 Type of problem -> category: Traffic is over +2025-12-12 10:32:26,686 - src.integrations.flexible_field_mapper - INFO - 映射字段 VIN|sim -> vin_sim: XEYDD14B3SA012164 +2025-12-12 10:32:26,686 - src.integrations.flexible_field_mapper - INFO - 映射字段 Vehicle Type01 -> vehicle_type: TEST +2025-12-12 10:32:26,687 - src.integrations.flexible_field_mapper - INFO - 映射字段 Wilfulness(责任人) -> wilfulness: Vsevolod Tsoi +2025-12-12 10:32:26,687 - src.integrations.flexible_field_mapper - INFO - 映射字段 处理过程 -> resolution: 1024:建议用户抓去DMC日志回传分析 +1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf +2025-12-12 10:32:26,689 - src.integrations.flexible_field_mapper - INFO - 飞书字段 当前问题状态 不存在于数据中 +2025-12-12 10:32:26,690 - src.integrations.flexible_field_mapper - INFO - 字段转换完成: 已映射 15, 未映射 1 +2025-12-12 10:32:26,690 - src.integrations.workorder_sync - INFO - 字段转换统计: 总字段 16, 已映射 15, 未映射 1 +2025-12-12 10:32:26,690 - src.integrations.workorder_sync - WARNING - 未映射字段: ['当前问题状态'] +2025-12-12 10:32:26,691 - src.integrations.workorder_sync - INFO - 字段 '当前问题状态' 的建议映射: {'local_field': 'status', 'similarity': 0.7, 'matched_pattern': '.*状态.*', 'confidence': 'medium', 'reason': "匹配模式 '.*状态.*'"} +2025-12-12 10:32:26,714 - src.integrations.workorder_sync - INFO - 飞书同步完成: {'success': True, 'total_records': 4, 'synced_count': 4, 'created_count': 3, 'updated_count': 1, 'ai_suggestions_generated': True, 'errors': []} +2025-12-12 10:32:26,714 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:32:26] "POST /api/feishu-sync/sync-from-feishu HTTP/1.1" 200 - +2025-12-12 10:32:26,727 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:32:26] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-12 10:32:55,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:32:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:32:55,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:32:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:32:55,317 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:32:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:32:55,328 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:32:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:33:55,296 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:33:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:33:55,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:33:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:33:55,310 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:33:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:33:55,327 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:33:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:34:55,305 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:34:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:34:55,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:34:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:34:55,319 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:34:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:34:55,335 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:34:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:35:55,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:35:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:35:55,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:35:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:35:55,318 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:35:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:35:55,332 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:35:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:36:55,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:36:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:36:55,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:36:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:36:55,324 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:36:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:36:55,341 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:36:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:37:55,317 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:37:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:37:55,328 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:37:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:37:55,335 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:37:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:37:55,356 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:37:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:38:55,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:38:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:38:55,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:38:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:38:55,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:38:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:38:55,333 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:38:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:39:55,309 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:39:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:39:55,318 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:39:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:39:55,327 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:39:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:39:55,341 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:39:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:39:59,648 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:39:59] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:39:59,664 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:39:59] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:39:59,671 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:39:59] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:39:59,684 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:39:59] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:40:02,287 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:02] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:40:02,302 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:02] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:40:07,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:07] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:40:12,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:12] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:40:12,313 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:12] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:40:17,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:17] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:40:22,287 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:22] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:40:22,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:22] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:40:27,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:27] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:40:32,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:32] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:40:32,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:32] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:40:37,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:37] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:40:42,295 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:42] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:40:42,310 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:42] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:40:47,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:47] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:40:52,289 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:52] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:40:52,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:52] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:40:55,294 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:40:55,309 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:40:57,309 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:57] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:41:55,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:41:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:41:55,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:41:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:41:55,323 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:41:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:41:55,339 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:41:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:42:05,149 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:05] "GET / HTTP/1.1" 200 - +2025-12-12 10:42:05,992 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:05] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-12 10:42:06,009 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:06] "GET /api/settings HTTP/1.1" 200 - +2025-12-12 10:42:06,020 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:06] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:42:06,031 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:06] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:42:11,315 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:11] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:42:16,295 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:16] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:42:16,305 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:16] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:42:21,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:21] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:42:26,292 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:26] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:42:26,305 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:26] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:42:31,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:31] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:42:36,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:36] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:42:36,310 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:36] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:42:41,296 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:41] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:42:46,291 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:46] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:42:46,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:46] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:42:51,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:51] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:42:55,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:42:55,309 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:42:55,313 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:42:55,328 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:42:56,296 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:56] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:42:56,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:56] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:43:01,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:43:01] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:43:06,287 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:43:06] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:43:06,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:43:06] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:43:55,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:43:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:43:55,318 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:43:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:43:55,326 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:43:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:43:55,327 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:43:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:43:55,343 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:43:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:43:55,360 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:43:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:44:55,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:44:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:44:55,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:44:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:44:55,321 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:44:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:44:55,327 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:44:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:44:55,343 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:44:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:44:55,359 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:44:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:45:55,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:45:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:45:55,307 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:45:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:45:55,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:45:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:45:55,320 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:45:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:45:55,336 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:45:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:45:55,352 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:45:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:46:55,310 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:46:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:46:55,321 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:46:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:46:55,328 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:46:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:46:55,335 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:46:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:46:55,350 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:46:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:46:55,360 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:46:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:47:47,574 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:47:47] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:47:47,585 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:47:47] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:47:47,596 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:47:47] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:47:47,601 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:47:47] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:47:47,613 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:47:47] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:47:52,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:47:52] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:47:52,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:47:52] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:47:55,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:47:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:47:55,315 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:47:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:47:55,326 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:47:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:47:55,341 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:47:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:47:57,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:47:57] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:48:02,302 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:02] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:48:02,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:02] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:48:07,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:07] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:48:12,285 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:12] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:48:12,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:12] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:48:17,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:17] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:48:22,292 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:22] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:48:22,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:22] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:48:27,296 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:27] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:48:32,302 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:32] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:48:32,317 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:32] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:48:37,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:37] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:48:42,292 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:42] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:48:42,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:42] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:48:47,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:47] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:48:55,302 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:48:55,309 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:48:55,316 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:48:55,325 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:48:55,341 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:48:55,358 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:49:55,296 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:49:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:49:55,307 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:49:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:49:55,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:49:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:49:55,317 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:49:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:49:55,332 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:49:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:49:55,348 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:49:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:50:55,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:50:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:50:55,320 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:50:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:50:55,328 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:50:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:50:55,329 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:50:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:50:55,349 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:50:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:50:55,367 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:50:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:51:55,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:51:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:51:55,305 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:51:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:51:55,315 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:51:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:51:55,319 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:51:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:51:55,334 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:51:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:51:55,351 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:51:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:52:55,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:52:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:52:55,319 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:52:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:52:55,328 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:52:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:52:55,332 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:52:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:52:55,350 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:52:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:52:55,361 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:52:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:53:55,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:53:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:53:55,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:53:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:53:55,320 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:53:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:53:55,326 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:53:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:53:55,340 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:53:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:53:55,355 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:53:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:54:55,302 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:54:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:54:55,309 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:54:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:54:55,318 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:54:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:54:55,324 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:54:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:54:55,339 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:54:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:54:55,356 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:54:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:55:55,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:55:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:55:55,325 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:55:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:55:55,337 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:55:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:55:55,347 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:55:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:55:55,370 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:55:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:55:55,386 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:55:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:56:55,305 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:56:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:56:55,315 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:56:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:56:55,323 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:56:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:56:55,330 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:56:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:56:55,346 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:56:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:56:55,361 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:56:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:57:55,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:57:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:57:55,313 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:57:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:57:55,320 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:57:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:57:55,328 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:57:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:57:55,343 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:57:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:57:55,356 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:57:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:58:55,294 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:58:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:58:55,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:58:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:58:55,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:58:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:58:55,315 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:58:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:58:55,330 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:58:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:58:55,346 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:58:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:59:55,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:59:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:59:55,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:59:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:59:55,321 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:59:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:59:55,326 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:59:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:59:55,342 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:59:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:59:55,357 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:59:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:00:55,302 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:00:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:00:55,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:00:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:00:55,322 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:00:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:00:55,329 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:00:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:00:55,347 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:00:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:00:55,369 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:00:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:01:55,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:01:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:01:55,309 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:01:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:01:55,317 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:01:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:01:55,323 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:01:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:01:55,339 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:01:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:01:55,352 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:01:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:02:55,286 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:02:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:02:55,307 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:02:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:02:55,316 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:02:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:02:55,319 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:02:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:02:55,333 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:02:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:02:55,347 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:02:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:03:55,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:03:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:03:55,307 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:03:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:03:55,315 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:03:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:03:55,323 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:03:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:03:55,338 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:03:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:03:55,353 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:03:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:04:55,289 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:04:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:04:55,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:04:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:04:55,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:04:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:04:55,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:04:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:04:55,327 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:04:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:04:55,343 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:04:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:05:25,742 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:05:25] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 11:05:25,759 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:05:25] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:05:25,771 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:05:25] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 11:05:25,771 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:05:25] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:05:25,789 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:05:25] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 11:05:27,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:05:27] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:05:32,289 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:05:32] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:05:32,305 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:05:32] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:05:37,295 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:05:37] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:05:42,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:05:42] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:05:42,318 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:05:42] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:05:47,310 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:05:47] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:05:52,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:05:52] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:05:52,339 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:05:52] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:05:55,316 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:05:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:05:55,328 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:05:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:05:55,341 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:05:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:05:55,360 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:05:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:05:57,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:05:57] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:06:02,294 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:02] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:06:02,310 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:02] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:06:07,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:07] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:06:12,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:12] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:06:12,313 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:12] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:06:17,293 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:17] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:06:22,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:22] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:06:22,315 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:22] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:06:40,866 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:40] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 11:06:40,881 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:40] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:06:40,896 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:40] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:06:40,900 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:40] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 11:06:40,918 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:40] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 11:06:42,295 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:42] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:06:42,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:42] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:06:47,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:47] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:06:52,286 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:52] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:06:52,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:52] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:06:55,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:06:55,313 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:06:55,321 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:06:55,339 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:06:57,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:57] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:07:02,289 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:02] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:07:02,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:02] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:07:07,305 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:07] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:07:12,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:12] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:07:12,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:12] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:07:17,310 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:17] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:07:19,874 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:19] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 11:07:22,288 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:22] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:07:22,302 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:22] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:07:27,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:27] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:07:32,292 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:32] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:07:32,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:32] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:07:37,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:37] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:07:39,927 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:39] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 11:07:39,937 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:39] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:07:39,939 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:39] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 11:07:39,957 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:39] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:07:39,960 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:39] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 11:07:41,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:41] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:07:42,293 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:42] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:07:42,309 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:42] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:07:46,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:46] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:07:46,317 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:46] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:07:47,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:47] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:07:51,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:51] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:07:52,287 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:52] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:07:52,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:52] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:07:55,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:07:55,321 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:07:56,291 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:56] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:07:56,309 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:56] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:07:57,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:57] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:08:01,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:01] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:08:02,292 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:02] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:08:02,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:02] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:08:06,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:06] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:08:06,316 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:06] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:08:07,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:07] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:08:11,307 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:11] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:08:12,295 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:12] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:08:12,310 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:12] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:08:16,318 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:16] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:08:16,338 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:16] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:08:17,302 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:17] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:08:21,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:21] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:08:26,291 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:26] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:08:26,307 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:26] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:08:31,307 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:31] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:08:36,285 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:36] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:08:36,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:36] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:08:39,193 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:39] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 11:08:39,207 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:39] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:08:39,223 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:39] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 11:08:39,225 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:39] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:08:39,242 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:39] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 11:08:42,291 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:42] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:08:42,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:42] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:08:47,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:47] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:08:52,269 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:52] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:08:52,286 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:52] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:08:55,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:08:55,310 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:08:55,321 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:08:55,336 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:00,360 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:00] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 11:09:00,370 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:00] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:09:00,380 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:00] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 11:09:00,393 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:00] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:00,402 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:00] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 11:09:00,898 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:00] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:01,242 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:01] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 11:09:01,254 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:01] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:09:01,260 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:01] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 11:09:01,275 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:01] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:01,284 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:01] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 11:09:05,295 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:05] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:06,293 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:06] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:09:06,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:06] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:10,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:10] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:09:10,313 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:10] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:11,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:11] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:15,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:15] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:16,287 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:16] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:09:16,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:16] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:20,286 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:20] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:09:20,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:20] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:21,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:21] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:25,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:25] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:26,296 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:26] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:09:26,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:26] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:30,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:30] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:09:30,316 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:30] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:31,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:31] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:35,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:35] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:36,291 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:36] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:09:36,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:36] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:40,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:40] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:09:40,315 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:40] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:41,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:41] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:45,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:45] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:46,293 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:46] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:09:46,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:46] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:50,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:50] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:09:50,315 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:50] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:51,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:51] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:55,313 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:56,290 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:56] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:09:56,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:56] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:10:00,292 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:00] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:10:00,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:00] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:10:14,404 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 11:10:14,719 - src.core.database - INFO - 数据库初始化成功 +2025-12-12 11:10:14,720 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-12 11:10:16,639 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-12 11:10:16,648 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-12 11:10:16,755 - werkzeug - INFO - [31m[1mWARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.[0m + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.105.212.207:5000 +2025-12-12 11:10:16,756 - werkzeug - INFO - [33mPress CTRL+C to quit[0m +2025-12-12 11:10:16,780 - src.web.websocket_server - INFO - 启动WebSocket服务器: ws://localhost:8765 +2025-12-12 11:10:16,787 - websockets.server - INFO - server listening on [::1]:8765 +2025-12-12 11:10:16,787 - websockets.server - INFO - server listening on 127.0.0.1:8765 +2025-12-12 11:10:22,708 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:22] "GET / HTTP/1.1" 200 - +2025-12-12 11:10:22,795 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:22] "[36mGET /static/css/design-system.css?v=1.0.0 HTTP/1.1[0m" 304 - +2025-12-12 11:10:22,799 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:22] "[36mGET /static/css/style.css?v=1.0.0 HTTP/1.1[0m" 304 - +2025-12-12 11:10:22,801 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:22] "[36mGET /static/js/core/store.js HTTP/1.1[0m" 304 - +2025-12-12 11:10:22,803 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:22] "[36mGET /static/js/services/api.js HTTP/1.1[0m" 304 - +2025-12-12 11:10:22,806 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:22] "[36mGET /static/js/components/NotificationManager.js HTTP/1.1[0m" 304 - +2025-12-12 11:10:22,810 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:22] "[36mGET /static/js/components/AlertManager.js HTTP/1.1[0m" 304 - +2025-12-12 11:10:22,814 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:22] "[36mGET /static/js/app-new.js HTTP/1.1[0m" 304 - +2025-12-12 11:10:22,816 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:22] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 200 - +2025-12-12 11:10:22,831 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:22] "[36mGET /static/css/design-system.css HTTP/1.1[0m" 304 - +2025-12-12 11:10:23,625 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:23] "GET /api/rules HTTP/1.1" 200 - +2025-12-12 11:10:23,626 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:23] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:10:23,632 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:23] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-12 11:10:23,639 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:23] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-12 11:10:23,654 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:23] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 11:10:23,657 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:23] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:10:23,659 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:23] "GET /api/system/info HTTP/1.1" 200 - +2025-12-12 11:10:23,665 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:23] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-12 11:10:23,665 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:23] "GET /api/feishu-sync/config HTTP/1.1" 200 - +2025-12-12 11:10:23,667 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:23] "GET /api/workorders HTTP/1.1" 200 - +2025-12-12 11:10:23,675 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:23] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-12 11:10:23,745 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:23] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-12 11:10:23,767 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:23] "GET /api/settings HTTP/1.1" 200 - +2025-12-12 11:10:23,776 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:23] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 11:10:23,789 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:23] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 11:10:26,751 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:26] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-12 11:10:26,752 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:26] "GET /api/agent/tools/stats HTTP/1.1" 200 - +2025-12-12 11:10:27,501 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:27] "GET /api/alerts?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-12 11:10:28,637 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:28] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:10:28,660 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:28] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 11:10:28,671 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:28] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 11:10:28,681 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:28] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 11:10:29,053 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:29] "GET /api/knowledge?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-12 11:10:30,928 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:30] "GET /api/workorders?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-12 11:10:33,628 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:33] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:10:33,641 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:33] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:10:36,081 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:36] "GET /api/workorders/4 HTTP/1.1" 200 - +2025-12-12 11:10:37,804 - src.knowledge_base.knowledge_manager - WARNING - 知识库中没有活跃条目 +2025-12-12 11:10:38,639 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:38] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:10:40,980 - src.core.llm_client - INFO - API请求成功 +2025-12-12 11:10:40,989 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:40] "POST /api/workorders/4/ai-suggestion HTTP/1.1" 200 - +2025-12-12 11:10:43,624 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:43] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:10:43,639 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:43] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:10:49,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:49] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:10:54,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:54] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:10:54,308 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-12 11:10:54,313 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-12 11:10:54,345 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:10:54,348 - src.web.error_handlers - ERROR - 未处理错误 in get_health: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlite3.OperationalError: no such column: work_orders.assigned_module + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "D:\code\assist\src\web\error_handlers.py", line 20, in wrapper + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\code\assist\src\web\blueprints\core.py", line 32, in get_health + open_wos = session.query(WorkOrder).filter(WorkOrder.status == 'open').count() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 3112, in count + self._legacy_from_self(col).enable_eagerloads(False).scalar() + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2805, in scalar + ret = self.one() + ^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2778, in one + return self._iter().one() # type: ignore + ^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2827, in _iter + result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2362, in execute + return self._execute_internal( + ^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2247, in _execute_internal + result: Result[Any] = compile_state_cls.orm_execute_statement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\context.py", line 293, in orm_execute_statement + result = conn.execute( + ^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1418, in execute + return meth( + ^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\sql\elements.py", line 515, in _execute_on_connection + return connection._execute_clauseelement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1640, in _execute_clauseelement + ret = self._execute_context( + ^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context + return self._exec_single_context( + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context + self._handle_dbapi_exception( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception + raise sqlalchemy_exception.with_traceback(exc_info[2]) from e + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:10:54,350 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:54] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:10:54,365 - src.web.error_handlers - ERROR - 错误响应: 服务器内部错误: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) - None +2025-12-12 11:10:59,289 - src.core.database - ERROR - 数据库操作失败: returned NULL without setting an exception +2025-12-12 11:10:59,290 - src.web.error_handlers - ERROR - 未处理错误 in get_health: returned NULL without setting an exception +Traceback (most recent call last): + File "D:\code\assist\src\web\error_handlers.py", line 20, in wrapper + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\code\assist\src\web\blueprints\core.py", line 32, in get_health + open_wos = session.query(WorkOrder).filter(WorkOrder.status == 'open').count() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 3112, in count + self._legacy_from_self(col).enable_eagerloads(False).scalar() + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2805, in scalar + ret = self.one() + ^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2778, in one + return self._iter().one() # type: ignore + ^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2827, in _iter + result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2362, in execute + return self._execute_internal( + ^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2247, in _execute_internal + result: Result[Any] = compile_state_cls.orm_execute_statement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\context.py", line 293, in orm_execute_statement + result = conn.execute( + ^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1418, in execute + return meth( + ^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\sql\elements.py", line 515, in _execute_on_connection + return connection._execute_clauseelement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1640, in _execute_clauseelement + ret = self._execute_context( + ^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context + return self._exec_single_context( + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context + self._handle_dbapi_exception( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 2358, in _handle_dbapi_exception + raise exc_info[1].with_traceback(exc_info[2]) + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +SystemError: returned NULL without setting an exception +2025-12-12 11:10:59,295 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:59] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:10:59,297 - src.web.error_handlers - ERROR - 错误响应: 服务器内部错误: returned NULL without setting an exception - None +2025-12-12 11:11:04,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:11:04] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:11:04,306 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:11:04,309 - src.web.error_handlers - ERROR - 未处理错误 in get_health: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlite3.OperationalError: no such column: work_orders.assigned_module + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "D:\code\assist\src\web\error_handlers.py", line 20, in wrapper + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\code\assist\src\web\blueprints\core.py", line 32, in get_health + open_wos = session.query(WorkOrder).filter(WorkOrder.status == 'open').count() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 3112, in count + self._legacy_from_self(col).enable_eagerloads(False).scalar() + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2805, in scalar + ret = self.one() + ^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2778, in one + return self._iter().one() # type: ignore + ^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2827, in _iter + result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2362, in execute + return self._execute_internal( + ^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2247, in _execute_internal + result: Result[Any] = compile_state_cls.orm_execute_statement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\context.py", line 293, in orm_execute_statement + result = conn.execute( + ^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1418, in execute + return meth( + ^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\sql\elements.py", line 515, in _execute_on_connection + return connection._execute_clauseelement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1640, in _execute_clauseelement + ret = self._execute_context( + ^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context + return self._exec_single_context( + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context + self._handle_dbapi_exception( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception + raise sqlalchemy_exception.with_traceback(exc_info[2]) from e + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:11:04,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:11:04] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:11:04,318 - src.web.error_handlers - ERROR - 错误响应: 服务器内部错误: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) - None +2025-12-12 11:11:11,602 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 11:11:11,965 - src.core.database - INFO - 数据库初始化成功 +2025-12-12 11:11:11,966 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-12 11:11:13,992 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-12 11:11:14,002 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-12 11:11:14,115 - werkzeug - INFO - [31m[1mWARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.[0m + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.105.212.207:5000 +2025-12-12 11:11:14,115 - werkzeug - INFO - [33mPress CTRL+C to quit[0m +2025-12-12 11:11:14,138 - src.web.websocket_server - INFO - 启动WebSocket服务器: ws://localhost:8765 +2025-12-12 11:11:14,144 - websockets.server - INFO - server listening on [::1]:8765 +2025-12-12 11:11:14,145 - websockets.server - INFO - server listening on 127.0.0.1:8765 +2025-12-12 11:11:14,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:11:14] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:11:14,307 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-12 11:11:14,312 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-12 11:11:14,329 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:11:14] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:11:14,339 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:11:14,341 - src.web.error_handlers - ERROR - 未处理错误 in get_health: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlite3.OperationalError: no such column: work_orders.assigned_module + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "D:\code\assist\src\web\error_handlers.py", line 20, in wrapper + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\code\assist\src\web\blueprints\core.py", line 32, in get_health + open_wos = session.query(WorkOrder).filter(WorkOrder.status == 'open').count() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 3112, in count + self._legacy_from_self(col).enable_eagerloads(False).scalar() + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2805, in scalar + ret = self.one() + ^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2778, in one + return self._iter().one() # type: ignore + ^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2827, in _iter + result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2362, in execute + return self._execute_internal( + ^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2247, in _execute_internal + result: Result[Any] = compile_state_cls.orm_execute_statement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\context.py", line 293, in orm_execute_statement + result = conn.execute( + ^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1418, in execute + return meth( + ^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\sql\elements.py", line 515, in _execute_on_connection + return connection._execute_clauseelement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1640, in _execute_clauseelement + ret = self._execute_context( + ^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context + return self._exec_single_context( + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context + self._handle_dbapi_exception( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception + raise sqlalchemy_exception.with_traceback(exc_info[2]) from e + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:11:14,354 - src.web.error_handlers - ERROR - 错误响应: 服务器内部错误: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) - None +2025-12-12 11:11:19,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:11:19] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:11:19,304 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:11:19,306 - src.web.error_handlers - ERROR - 未处理错误 in get_health: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlite3.OperationalError: no such column: work_orders.assigned_module + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "D:\code\assist\src\web\error_handlers.py", line 20, in wrapper + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\code\assist\src\web\blueprints\core.py", line 32, in get_health + open_wos = session.query(WorkOrder).filter(WorkOrder.status == 'open').count() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 3112, in count + self._legacy_from_self(col).enable_eagerloads(False).scalar() + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2805, in scalar + ret = self.one() + ^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2778, in one + return self._iter().one() # type: ignore + ^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2827, in _iter + result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2362, in execute + return self._execute_internal( + ^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2247, in _execute_internal + result: Result[Any] = compile_state_cls.orm_execute_statement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\context.py", line 293, in orm_execute_statement + result = conn.execute( + ^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1418, in execute + return meth( + ^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\sql\elements.py", line 515, in _execute_on_connection + return connection._execute_clauseelement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1640, in _execute_clauseelement + ret = self._execute_context( + ^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context + return self._exec_single_context( + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context + self._handle_dbapi_exception( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception + raise sqlalchemy_exception.with_traceback(exc_info[2]) from e + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:11:19,313 - src.web.error_handlers - ERROR - 错误响应: 服务器内部错误: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) - None +2025-12-12 11:11:24,291 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:11:24] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:11:24,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:11:24] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:11:24,307 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:11:24,309 - src.web.error_handlers - ERROR - 未处理错误 in get_health: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlite3.OperationalError: no such column: work_orders.assigned_module + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "D:\code\assist\src\web\error_handlers.py", line 20, in wrapper + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\code\assist\src\web\blueprints\core.py", line 32, in get_health + open_wos = session.query(WorkOrder).filter(WorkOrder.status == 'open').count() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 3112, in count + self._legacy_from_self(col).enable_eagerloads(False).scalar() + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2805, in scalar + ret = self.one() + ^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2778, in one + return self._iter().one() # type: ignore + ^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2827, in _iter + result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2362, in execute + return self._execute_internal( + ^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2247, in _execute_internal + result: Result[Any] = compile_state_cls.orm_execute_statement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\context.py", line 293, in orm_execute_statement + result = conn.execute( + ^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1418, in execute + return meth( + ^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\sql\elements.py", line 515, in _execute_on_connection + return connection._execute_clauseelement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1640, in _execute_clauseelement + ret = self._execute_context( + ^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context + return self._exec_single_context( + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context + self._handle_dbapi_exception( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception + raise sqlalchemy_exception.with_traceback(exc_info[2]) from e + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:11:24,316 - src.web.error_handlers - ERROR - 错误响应: 服务器内部错误: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) - None +2025-12-12 11:11:29,292 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:11:29] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:11:29,301 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:11:29,302 - src.web.error_handlers - ERROR - 未处理错误 in get_health: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlite3.OperationalError: no such column: work_orders.assigned_module + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "D:\code\assist\src\web\error_handlers.py", line 20, in wrapper + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\code\assist\src\web\blueprints\core.py", line 32, in get_health + open_wos = session.query(WorkOrder).filter(WorkOrder.status == 'open').count() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 3112, in count + self._legacy_from_self(col).enable_eagerloads(False).scalar() + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2805, in scalar + ret = self.one() + ^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2778, in one + return self._iter().one() # type: ignore + ^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2827, in _iter + result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2362, in execute + return self._execute_internal( + ^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2247, in _execute_internal + result: Result[Any] = compile_state_cls.orm_execute_statement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\context.py", line 293, in orm_execute_statement + result = conn.execute( + ^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1418, in execute + return meth( + ^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\sql\elements.py", line 515, in _execute_on_connection + return connection._execute_clauseelement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1640, in _execute_clauseelement + ret = self._execute_context( + ^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context + return self._exec_single_context( + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context + self._handle_dbapi_exception( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception + raise sqlalchemy_exception.with_traceback(exc_info[2]) from e + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:11:29,308 - src.web.error_handlers - ERROR - 错误响应: 服务器内部错误: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) - None +2025-12-12 11:11:34,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:11:34] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:11:34,311 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:11:34,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:11:34] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:11:34,312 - src.web.error_handlers - ERROR - 未处理错误 in get_health: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlite3.OperationalError: no such column: work_orders.assigned_module + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "D:\code\assist\src\web\error_handlers.py", line 20, in wrapper + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\code\assist\src\web\blueprints\core.py", line 32, in get_health + open_wos = session.query(WorkOrder).filter(WorkOrder.status == 'open').count() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 3112, in count + self._legacy_from_self(col).enable_eagerloads(False).scalar() + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2805, in scalar + ret = self.one() + ^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2778, in one + return self._iter().one() # type: ignore + ^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2827, in _iter + result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2362, in execute + return self._execute_internal( + ^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2247, in _execute_internal + result: Result[Any] = compile_state_cls.orm_execute_statement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\context.py", line 293, in orm_execute_statement + result = conn.execute( + ^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1418, in execute + return meth( + ^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\sql\elements.py", line 515, in _execute_on_connection + return connection._execute_clauseelement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1640, in _execute_clauseelement + ret = self._execute_context( + ^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context + return self._exec_single_context( + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context + self._handle_dbapi_exception( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception + raise sqlalchemy_exception.with_traceback(exc_info[2]) from e + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:11:34,318 - src.web.error_handlers - ERROR - 错误响应: 服务器内部错误: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) - None +2025-12-12 11:11:39,301 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:11:39,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:11:39] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:11:39,303 - src.web.error_handlers - ERROR - 未处理错误 in get_health: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlite3.OperationalError: no such column: work_orders.assigned_module + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "D:\code\assist\src\web\error_handlers.py", line 20, in wrapper + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\code\assist\src\web\blueprints\core.py", line 32, in get_health + open_wos = session.query(WorkOrder).filter(WorkOrder.status == 'open').count() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 3112, in count + self._legacy_from_self(col).enable_eagerloads(False).scalar() + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2805, in scalar + ret = self.one() + ^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2778, in one + return self._iter().one() # type: ignore + ^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2827, in _iter + result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2362, in execute + return self._execute_internal( + ^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2247, in _execute_internal + result: Result[Any] = compile_state_cls.orm_execute_statement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\context.py", line 293, in orm_execute_statement + result = conn.execute( + ^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1418, in execute + return meth( + ^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\sql\elements.py", line 515, in _execute_on_connection + return connection._execute_clauseelement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1640, in _execute_clauseelement + ret = self._execute_context( + ^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context + return self._exec_single_context( + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context + self._handle_dbapi_exception( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception + raise sqlalchemy_exception.with_traceback(exc_info[2]) from e + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:11:39,311 - src.web.error_handlers - ERROR - 错误响应: 服务器内部错误: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) - None +2025-12-12 11:11:44,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:11:44] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:11:44,313 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:11:44,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:11:44] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:11:44,315 - src.web.error_handlers - ERROR - 未处理错误 in get_health: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlite3.OperationalError: no such column: work_orders.assigned_module + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "D:\code\assist\src\web\error_handlers.py", line 20, in wrapper + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\code\assist\src\web\blueprints\core.py", line 32, in get_health + open_wos = session.query(WorkOrder).filter(WorkOrder.status == 'open').count() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 3112, in count + self._legacy_from_self(col).enable_eagerloads(False).scalar() + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2805, in scalar + ret = self.one() + ^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2778, in one + return self._iter().one() # type: ignore + ^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2827, in _iter + result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2362, in execute + return self._execute_internal( + ^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2247, in _execute_internal + result: Result[Any] = compile_state_cls.orm_execute_statement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\context.py", line 293, in orm_execute_statement + result = conn.execute( + ^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1418, in execute + return meth( + ^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\sql\elements.py", line 515, in _execute_on_connection + return connection._execute_clauseelement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1640, in _execute_clauseelement + ret = self._execute_context( + ^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context + return self._exec_single_context( + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context + self._handle_dbapi_exception( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception + raise sqlalchemy_exception.with_traceback(exc_info[2]) from e + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:11:44,322 - src.web.error_handlers - ERROR - 错误响应: 服务器内部错误: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) - None +2025-12-12 11:11:55,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:11:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:11:55,313 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:11:55,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:11:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:11:55,314 - src.web.error_handlers - ERROR - 未处理错误 in get_health: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlite3.OperationalError: no such column: work_orders.assigned_module + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "D:\code\assist\src\web\error_handlers.py", line 20, in wrapper + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\code\assist\src\web\blueprints\core.py", line 32, in get_health + open_wos = session.query(WorkOrder).filter(WorkOrder.status == 'open').count() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 3112, in count + self._legacy_from_self(col).enable_eagerloads(False).scalar() + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2805, in scalar + ret = self.one() + ^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2778, in one + return self._iter().one() # type: ignore + ^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2827, in _iter + result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2362, in execute + return self._execute_internal( + ^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2247, in _execute_internal + result: Result[Any] = compile_state_cls.orm_execute_statement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\context.py", line 293, in orm_execute_statement + result = conn.execute( + ^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1418, in execute + return meth( + ^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\sql\elements.py", line 515, in _execute_on_connection + return connection._execute_clauseelement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1640, in _execute_clauseelement + ret = self._execute_context( + ^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context + return self._exec_single_context( + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context + self._handle_dbapi_exception( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception + raise sqlalchemy_exception.with_traceback(exc_info[2]) from e + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:11:55,321 - src.web.error_handlers - ERROR - 错误响应: 服务器内部错误: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) - None +2025-12-12 13:31:39,178 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 13:31:39,482 - src.core.database - INFO - 数据库初始化成功 +2025-12-12 13:31:39,483 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-12 13:31:41,339 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-12 13:31:41,350 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-12 13:31:41,453 - werkzeug - INFO - [31m[1mWARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.[0m + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.105.212.207:5000 +2025-12-12 13:31:41,454 - werkzeug - INFO - [33mPress CTRL+C to quit[0m +2025-12-12 13:31:41,478 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 10 个条目 +2025-12-12 13:31:41,479 - src.web.websocket_server - INFO - 启动WebSocket服务器: ws://localhost:8765 +2025-12-12 13:31:41,485 - websockets.server - INFO - server listening on 127.0.0.1:8765 +2025-12-12 13:31:41,486 - websockets.server - INFO - server listening on [::1]:8765 +2025-12-12 13:31:43,576 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:43] "GET / HTTP/1.1" 200 - +2025-12-12 13:31:43,860 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:43] "[36mGET /static/css/design-system.css?v=1.0.0 HTTP/1.1[0m" 304 - +2025-12-12 13:31:43,865 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:43] "[36mGET /static/js/app-new.js HTTP/1.1[0m" 304 - +2025-12-12 13:31:43,870 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:43] "[36mGET /static/js/dashboard.js?v=1.0.9 HTTP/1.1[0m" 304 - +2025-12-12 13:31:43,872 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:43] "[36mGET /static/css/style.css?v=1.0.0 HTTP/1.1[0m" 304 - +2025-12-12 13:31:43,881 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:43] "[36mGET /static/css/design-system.css HTTP/1.1[0m" 304 - +2025-12-12 13:31:43,916 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:43] "[36mGET /static/js/core/store.js HTTP/1.1[0m" 304 - +2025-12-12 13:31:43,934 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:43] "[36mGET /static/js/components/AlertManager.js HTTP/1.1[0m" 304 - +2025-12-12 13:31:43,963 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:43] "[36mGET /static/js/services/api.js HTTP/1.1[0m" 304 - +2025-12-12 13:31:43,971 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:43] "[36mGET /static/js/components/NotificationManager.js HTTP/1.1[0m" 304 - +2025-12-12 13:31:44,397 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:44] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 13:31:44,400 - src.agent_assistant - INFO - TSP Agent助手初始化完成 +2025-12-12 13:31:44,401 - src.web.service_manager - INFO - 服务 agent_assistant 已初始化 +2025-12-12 13:31:44,405 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:44] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-12 13:31:44,415 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:44] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 13:31:44,422 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 10 个条目 +2025-12-12 13:31:44,426 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:44] "GET /api/workorders HTTP/1.1" 200 - +2025-12-12 13:31:44,429 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 10 个条目 +2025-12-12 13:31:44,437 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 10 个条目 +2025-12-12 13:31:44,440 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 10 个条目 +2025-12-12 13:31:44,443 - src.web.service_manager - INFO - 服务 chat_manager 已初始化 +2025-12-12 13:31:44,445 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:44] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-12 13:31:44,446 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 10 个条目 +2025-12-12 13:31:44,447 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:44] "GET /api/system/info HTTP/1.1" 200 - +2025-12-12 13:31:44,451 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 10 个条目 +2025-12-12 13:31:44,453 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-12 13:31:44,457 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:44] "GET /api/feishu-sync/config HTTP/1.1" 200 - +2025-12-12 13:31:44,458 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:44] "GET /api/rules HTTP/1.1" 200 - +2025-12-12 13:31:44,459 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-12 13:31:44,460 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 10 个条目 +2025-12-12 13:31:44,475 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 10 个条目 +2025-12-12 13:31:44,483 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-12 13:31:44,496 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 10 个条目 +2025-12-12 13:31:44,500 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:44] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 13:31:44,502 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 10 个条目 +2025-12-12 13:31:44,507 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-12 13:31:44,527 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:44] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-12 13:31:44,529 - src.config.unified_config - WARNING - 无法加载默认LLM配置,使用内置默认值: No module named 'config.llm_config' +2025-12-12 13:31:44,530 - src.config.unified_config - INFO - 配置文件加载成功 +2025-12-12 13:31:44,530 - src.integrations.ai_suggestion_service - INFO - 使用LLM配置: qwen - qwen-plus-latest +2025-12-12 13:31:44,533 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Number -> order_id +2025-12-12 13:31:44,538 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Description -> description +2025-12-12 13:31:44,539 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:44] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-12 13:31:44,541 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Type of problem -> category +2025-12-12 13:31:44,543 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Level -> priority +2025-12-12 13:31:44,545 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Status -> status +2025-12-12 13:31:44,546 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Source -> source +2025-12-12 13:31:44,547 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Date creation -> created_at +2025-12-12 13:31:44,549 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: 处理过程 -> resolution +2025-12-12 13:31:44,550 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR tracking -> resolution +2025-12-12 13:31:44,552 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Created by -> created_by +2025-12-12 13:31:44,560 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:44] "GET /api/settings HTTP/1.1" 200 - +2025-12-12 13:31:44,560 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Module(模块) -> module +2025-12-12 13:31:44,561 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Wilfulness(责任人) -> wilfulness +2025-12-12 13:31:44,562 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Date of close TR -> date_of_close +2025-12-12 13:31:44,565 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Vehicle Type01 -> vehicle_type +2025-12-12 13:31:44,567 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: VIN|sim -> vin_sim +2025-12-12 13:31:44,568 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:44] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 13:31:44,569 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: App remote control version -> app_remote_control_version +2025-12-12 13:31:44,571 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: HMI SW -> hmi_sw +2025-12-12 13:31:44,575 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: 父记录 -> parent_record +2025-12-12 13:31:44,578 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Has it been updated on the same day -> has_updated_same_day +2025-12-12 13:31:44,579 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Operating time -> operating_time +2025-12-12 13:31:44,581 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: AI建议 -> ai_suggestion +2025-12-12 13:31:44,583 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Issue Start Time -> updated_at +2025-12-12 13:31:44,584 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:44] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 13:31:44,593 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:44] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-12 13:31:46,065 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:46] "GET /api/alerts?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-12 13:31:48,331 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:48] "GET /api/knowledge?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-12 13:31:49,420 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:49] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 13:31:49,434 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:49] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 13:31:49,441 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:49] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 13:31:49,452 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:49] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 13:31:49,506 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:49] "GET / HTTP/1.1" 200 - +2025-12-12 13:31:49,755 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:49] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 13:31:49,831 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:49] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 13:31:49,832 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:49] "GET /static/js/core/store.js HTTP/1.1" 200 - +2025-12-12 13:31:49,834 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:49] "GET /static/js/services/api.js HTTP/1.1" 200 - +2025-12-12 13:31:49,836 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:49] "GET /static/js/components/NotificationManager.js HTTP/1.1" 200 - +2025-12-12 13:31:49,837 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:49] "GET /static/js/components/AlertManager.js HTTP/1.1" 200 - +2025-12-12 13:31:50,073 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:50] "GET /static/css/design-system.css HTTP/1.1" 200 - +2025-12-12 13:31:50,149 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:50] "GET /static/js/app-new.js HTTP/1.1" 200 - +2025-12-12 13:31:50,149 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:50] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 200 - +2025-12-12 13:31:50,788 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:50] "GET /api/rules HTTP/1.1" 200 - +2025-12-12 13:31:50,789 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:50] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 13:31:50,793 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:50] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-12 13:31:50,804 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:50] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-12 13:31:50,812 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:50] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 13:31:51,096 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:51] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 13:31:51,101 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:51] "GET /api/workorders HTTP/1.1" 200 - +2025-12-12 13:31:51,110 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:51] "GET /api/system/info HTTP/1.1" 200 - +2025-12-12 13:31:51,111 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:51] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-12 13:31:51,117 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:51] "GET /api/feishu-sync/config HTTP/1.1" 200 - +2025-12-12 13:31:51,122 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:51] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-12 13:31:51,431 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:51] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-12 13:31:51,682 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:51] "[33mGET /favicon.ico HTTP/1.1[0m" 404 - +2025-12-12 13:31:51,765 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:51] "GET /api/settings HTTP/1.1" 200 - +2025-12-12 13:31:52,084 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:52] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 13:31:52,346 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:52] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 13:31:52,530 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:52] "GET /api/workorders?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-12 13:31:54,394 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:54] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 13:31:54,413 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:54] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 13:31:54,831 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:54] "GET /api/conversations?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-12 13:31:55,410 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:55] "GET /api/token-monitor/stats HTTP/1.1" 200 - +2025-12-12 13:31:55,431 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:55] "GET /api/token-monitor/records HTTP/1.1" 200 - +2025-12-12 13:31:55,434 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:55] "GET /api/token-monitor/chart HTTP/1.1" 200 - +2025-12-12 13:31:55,791 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 13:31:55,850 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:55] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 13:31:55,857 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:55] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 13:31:55,958 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:55] "GET /api/ai-monitor/stats HTTP/1.1" 200 - +2025-12-12 13:31:55,967 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:55] "GET /api/ai-monitor/model-comparison HTTP/1.1" 200 - +2025-12-12 13:31:55,971 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:55] "GET /api/ai-monitor/error-distribution HTTP/1.1" 200 - +2025-12-12 13:31:55,975 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:55] "GET /api/ai-monitor/error-log HTTP/1.1" 200 - +2025-12-12 13:31:56,174 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:56] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 13:31:57,938 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:57] "GET /api/token-monitor/stats HTTP/1.1" 200 - +2025-12-12 13:31:57,952 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:57] "GET /api/token-monitor/records HTTP/1.1" 200 - +2025-12-12 13:31:57,957 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:57] "GET /api/token-monitor/chart HTTP/1.1" 200 - +2025-12-12 13:31:59,408 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:59] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 13:31:59,479 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:59] "GET /api/settings HTTP/1.1" 200 - +2025-12-12 13:32:00,082 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:00] "GET /api/system-optimizer/status HTTP/1.1" 200 - +2025-12-12 13:32:00,090 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:00] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 13:32:00,141 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:00] "GET /api/system-optimizer/security-settings HTTP/1.1" 200 - +2025-12-12 13:32:00,143 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:00] "GET /api/system-optimizer/traffic-settings HTTP/1.1" 200 - +2025-12-12 13:32:00,144 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:00] "GET /api/system-optimizer/cost-settings HTTP/1.1" 200 - +2025-12-12 13:32:00,150 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:00] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 13:32:00,194 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:00] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 13:32:00,789 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:00] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 13:32:00,811 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:00] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 13:32:05,294 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:05] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 13:32:05,324 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:05] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 13:32:10,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:10] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 13:32:15,293 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:15] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 13:32:15,310 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:15] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 13:32:20,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:20] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 13:32:25,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:25] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 13:32:25,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:25] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 13:32:30,310 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:30] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 13:32:35,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:35] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 13:32:35,315 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:35] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 13:32:40,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:40] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 13:32:45,291 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:45] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 13:32:45,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:45] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 13:32:50,302 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:50] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 13:32:55,294 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 13:32:55,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 13:33:00,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:33:00] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 13:34:25,979 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 13:34:47,469 - src.core.database - ERROR - 数据库初始化失败: (pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on 'jeason.online' ([WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。)") +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 13:34:47,470 - __main__ - ERROR - 数据库连接失败,退出启动 +2025-12-12 13:35:02,972 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 13:35:24,389 - src.core.database - ERROR - 数据库初始化失败: (pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on 'jeason.online' ([WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。)") +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 13:35:24,391 - __main__ - ERROR - 数据库连接失败,退出启动 +2025-12-12 13:37:51,892 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 13:38:13,315 - src.core.database - ERROR - 数据库初始化失败: (pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on '43.134.68.207' ([WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。)") +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 13:38:13,317 - __main__ - ERROR - 数据库连接失败,退出启动 diff --git a/logs/tsp_assistant.log b/logs/tsp_assistant.log new file mode 100644 index 0000000..4879734 --- /dev/null +++ b/logs/tsp_assistant.log @@ -0,0 +1,9 @@ +2025-12-12 13:30:49,040 - src.core.database - ERROR - 数据库操作失败: 'search_frequency' is an invalid keyword argument for KnowledgeEntry +2025-12-12 13:31:25,399 - src.vehicle.vehicle_data_manager - INFO - 添加车辆数据成功: V001 - location +2025-12-12 13:31:25,404 - src.vehicle.vehicle_data_manager - INFO - 添加车辆数据成功: V001 - status +2025-12-12 13:31:25,409 - src.vehicle.vehicle_data_manager - INFO - 添加车辆数据成功: V001 - battery +2025-12-12 13:31:25,414 - src.vehicle.vehicle_data_manager - INFO - 添加车辆数据成功: V001 - engine +2025-12-12 13:31:25,419 - src.vehicle.vehicle_data_manager - INFO - 添加车辆数据成功: V002 - location +2025-12-12 13:31:25,424 - src.vehicle.vehicle_data_manager - INFO - 添加车辆数据成功: V002 - status +2025-12-12 13:31:25,429 - src.vehicle.vehicle_data_manager - INFO - 添加车辆数据成功: V002 - fault +2025-12-12 13:31:25,429 - src.vehicle.vehicle_data_manager - INFO - 示例车辆数据添加成功 diff --git a/src/__pycache__/__init__.cpython-310.pyc b/src/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bd00c5c832556692bab8ff7870b8f16ee5dee891 GIT binary patch literal 180 zcmd1j<>g`kf`uDRGqZs7V-N=!FakLaKwQiNBvKfn7*ZIc7*m*n88n%zSPk_I^bD$m zLV^Pn9E*!Hi%SyoN)$p;6LbAEnQn2%$CsrR6=&w>#mC>`ijPk$Ey>6)ijQB(P{a&0 z3rzfy(J#u+FVRl~>((zWO4g5$&& ^FzA}lfL<6&h>ozsR=JvEM)U(-M2;7bG+QRGeX0gKixQa96$F_ zL(?1$oY061!y)k<5fbJxeb~g2<={P?uwyxqQDdVvYVx~U!!}=uI#Kk*MAtEM81L?M zEsw-lL&QZluEaqn0XjX)S21>(W>_Re?=fq*yKPjT6A^2is95VHMq^@~=m)i)mU|7c zUTi>bQVfVqPH)>BOmUOA8MOOW-1RlF8F#H&(R+(Xp?9sg70*=fcAK~zJ?r?)5O;{L z ;Rq3;%{*8PW)PVze_xd ztGDpg$M~u>8WxX>-RMn;Z#V8~m2Fr&A@*Rzt)$=S@A Mt^7--1NU<=Q8}qw!ZYE2XnHet%$M1CxIU^-9q|7sT zqoSPjEw5P2yMB`XG82v*Ez0q1VZ`y*W^=fyki)24VJwp!@p1=1p{dJzMmkyHhx5g; zF-Q7lt}t3m8@}l}`B7=(WiM#54}X8W{T^8?diP|RjrX{6 H8geY)q`ZOb=~?Z7Ci|8Ab}9MkEE%IAztCRDMwo#VAA%H(h7>Ix8?G2FQjAO) zhoJ|MA|J67?Yb1NojIbIFK@yu8UjFfAb^3o1R5h#l6W#GzlJs)T4t>zey!waPpQzt zjqMoYl6n|MOt @ww`SYxHl19jl)NDcn _E>~b6~uSO=Kl- z54Puykag5QWbI@rzsJulL-t4Y@|%IJ=rT!|$66mc8_Kcll=W=XAaevt_&4!ySsJ7q zei$xH;o`hD7n&y>h}6%gtnx0BbOrb)AFr4q2~TEBd@HBDubfxq@v9MU!i?r5vxSzErgx1O1OeP(KT!CgEq0o*^_TU;}FP} zZztr&?Aj=J(TY8-i+DgKuFjcKH&J4(w5RODHqjJ(MD`ASwkN*`sIT{8b6q0AT )1~!rl5m_l)C!)%hg}LS)DyE*V6@3^=o9Wtm=cT z^+O1XBY`&{Y;;R`&rdA7a|(y$H*wEE+LT-AUVg?sbVS_>kDBJ7@Q8sY9aqjEjB$Rb zP(0{Ib8e9X0nd+Q-O0j8uIR7Hxg$kcMD$Q_>MqOg_KIFMpK%?;8^ZN_GZIHqWEvA= zyYfRYpC;pqD)^&$$-Ai8LQM*dA48lay$rw3HtOX!=!B7R^$cZXgBa?54~=nzAhJ)7 z8MdAb!LCAv9@97JeFmNNg$$h2H}+K`l7u^|yQsBa!2 SC#t7^oel$3pg~~%_yp^Vl1uAL=9U04xeZ_4xG|_ewvA35WYbYe43YOz zL(WSQKjfWg{7~L0tVCOTr9!km*iSa}DNwLZ;42>l`G3Ywfo&*eC{a@z{$t!ug!=XH zjYMcO3HV0&_I3fcX>W_yq&I4a^*m0>4|@>Iv--3?rF)cY8^`#ZFmjJJP5lP?;Wyj* zLlwjp5b_qNf^ic(=~}ITq#UTr>fxEdOQhkzKx-ZzbJhybE lPq+*V%3G7 ztNYjJly%qw0`WhKJ=W}B*(cVHe1!D7cJhPjt0!AtvYxQGc)$N4AUcXy`bh-A0dnb$ z+7C6jd%P+V5`%GSkP+m9;TzlT^-Xe)D`T1HPUIiXp$Ylun?#f1a^pz9R(`yl|K#l0 zzc%F|kjX?*dfRs9izC^*`{=d?xmD*acj6hCA4Lmlev*9fiiyd`(f1bh@1} WFeKrN*}sW}p9=6c;!24O2ZFir&} zA-6Q{hYw`)B~Y}0wuns9bah2|5>^JYhc11GngMFQOHC)Nyy-7+_6%+c!jl-l4_`xp zq>TW@{u9Au5T0!Pe@X1xeIV>x`P_KUTRn>ZF$R@;p {j@>x5t7qGU8g2rOVcdrJy}{W#I&+qC?&VayMc*mdYk*N6C*`%v zU__uqzJ@D(jX+PBvqr$m(By*wE7x(DZY{G?ggvA}@Iet89fUNBsdj^@QT8LX&yO!& zxYW$fp%Trh`q{75rBsPh%T(>`eDfe!CizW20)IofE_1(~R-O9;7u0wTXa>^}Wi9j^ z-x|p~S-HYC %Tht;7u0%W zHwMaOh@pak-_-=oB?8zsN)5TS1foMkiwF*;yCh{Nih2Y2l!Y RYrDNJu)zUj)hwDuRY-|}6XF2v{$Vu< z^m?cQBISia2i3-ZClU0q2*PkHRIo_m#|-Zfe6`)by7>%)D4Yh2$L--#s$zE#`%-iQ zHlyWNC0(C^k2lOb{i*Km>(LCYef8lnnM&;S4^%jCS$uS8Jy}8Y)rEp}7Z0r-m_x zwcoMKS`^&aoI0>p{t#4G1SkF`l?P48qAI*Lm16$`!vlaKg^saWH}UrFc4c0j*y>Ck zBqn!tU@vNE%-B0y7|RvYru4%ic9IYTA2l=f=xptm?>4h>pd({>*pT9E+bs>wN>YZ7 zEZm3!_e7=>2bYM0b |Y>9bWd+QRdc+Q-tz4OX7dTSM~Q{DkjNy`I%52`1Go^0|t zZ<0rFZ*hDaManFNgKm?&nrYVM6~swV$$pfqm?I`X1drx#%mAJp%1}7hZKB%A RTz3Sm&+hS29|y~miR$~N+c=QP<{F`yEtUFyg?a1|A6T&3(g zf~zUMYV%cE5{z;sZ}H4Is`6jHw6w6GWcY17;2N2H>0UIdcC8iy7Ee9D^t c9;*A_ZvknjE6*tp}qiz<{RcjjM4rsWl2DMmWOSt>@ zct$x6*001v6kh{8+!8nwwQSIYhmEoZyO9;{g#57zK%ac_2Z~#Zm(MLN%yV8hhO7KR z?KGj%b?NL!X6+$cuV?qqIR)1@M~c{E5Le4<6STcRlxU%*Bkj7O(MkfvSxr^06_D7; zvGWQ6t kvNh0&I}0s_^z+lGi2- zN442BLbj?X2gQ=0e*BGg_tlYBi`CS#dS?H#cmUYnN8XDpM_{RD-oTQIi6s@ptXN#5 zEWPfj^vMSx0xFNJ giV(-@kPAcP~=- zdu7(|a#0ix7PGKi#x)6)`d~(bDk5$kO}Rf8mXU!k3yR9Q%5AlguM0_q84&LyB!(4+ z^bq>$i>5@YqpbQpnWK#enP9$ZrtWSM7F9B7X`sJe+iH$9wzP|?Gbukhngb&yvfeXT zw#Ol@!L_Wr_24;_CqIFoJA@~fXGnB;tgG?APQC?est7c&!fMef7?=N%y3o2RW&OPJ z1<_))%9ye%w!4KgdKC^*Jq)X25G}4ng+3KS2ojyvv10pu(CeCtm%rgf=VI8I&?Q3a zHSA%qD{-t_MMZ4hfC_a{T@AhQv%GR!iHXp|8mQ1c-Hm$^^>y?84 ZPBn%AUL% zf*9a hqVboq20V3afak%F^>3mf28DXzcU| z%E`_lPeN}UArIj}r6xpEGYj20LF~`zL&%pE8CGE|*LjFE{aaA~;wNU7Cp0RHynl!XM4dtjD~nXpCf(+}A}Y>c z6Xiw59dv DoVDpQf z!^RX`n8X?(x-+~ *6Q()smH0s@}QyLt=q;X zq=R?z8WF%9$)Ta!yjU32|2l+3t3FTC>R$^$kh5)+0q1a1egLMSV*|?_sNXWm3-jgB z>23;9=dfnDPcsmfnuunnL$twYueKe*^Faix^!*WjsCA%z0V-ka)4U63C>r6+2F?3$ zhK)#QV{CZF F8^nkSG0N8Z^qv7_b=PK(EPZ&iy70o%d&i%iME8BLRwgEj zBV}tF+C!x~z?prBS=w)znDm}07PitT+!tiJFW1goti5y;n@iOVwYe{-E=K0lV(@|a z$TBWqiN`Er>xXZWS*-9l^#GbRnS|);qn&h3PUG4k(ke0s(yAmhX3Gs5JD<4TXf%}; zI#l`FO;Wx9LM %p^_48k13ou|;!DZQq#RjjDA;=6GRjWMy$<<4zN>qJ>5U;(laP8eU8N1cq ziPxX6&A+Ga9vkIP?J+>7~g_lbSR& z6uJ4 BcrBhQ5Pk?5yW}#&UK+HInjcZ~kJQlmpZq6kMyVO0W}F(<4@pM{s5wmy z8Ji^5HHGOMuyZC$TOt$qx%4nwGqDHc=44-TQ+!Kr-*#*QxS@Wr8~y82Yy0i~?!I-2 zSR&pZ>yK|<-=8qLX`?{=I{1GBdD!)s5xd^sySb--%biI{v}taQ53z#Y{P*~|d(a%! zJ#AW>LM2+DdWUj?_ACWl*uU{I#q1Wv?6^j?J;dk;<6v~y9)JiQkvVz@!_#(&oGexD zp1)Fi?PC>Kb0)fL*RB*apn02p?cZKpy7*cOS4x!r)Mj3V=`8)`!`jSeD%M$i>oWFv zpz^SE@w4jZ3$!_Z=GCQ--m9MYWa-Pdu73UtWoIf?+ C6tcNA6bZMmu1J#2nw6z&2s*@*x5w<8;XH$*QtXefP9)W8cyQDp-ymSC`aU zO_MZ9kiI#d%@yX!I!OOu2O%5oSxF~m+M$Fle?jA*$}}>QN%zQk>WI)zWcVF awb`Vo{#!M^O=blJ_plcW|x(9C{f=K7?{()6^P@=G!}!-C(OD=6Ew2EH7C$ W3RiLHT*AO66nyP|dkrl5#{U5jbMdqQ literal 0 HcmV?d00001 diff --git a/src/__pycache__/agent_assistant.cpython-311.pyc b/src/__pycache__/agent_assistant.cpython-311.pyc index 19251cc57d42b93ba186712c9d62939720f10abd..ca8aeff4425cd83c4548904a9516033cec61c0a4 100644 GIT binary patch delta 25 fcmZqK!q~Efk#9LKFBbz4EZk_CDQv%y?^`4QUl|9S delta 25 fcmZqK!q~Efk#9LKFBbz4R4JKe9(UNt_bn0tT*(KU diff --git a/src/__pycache__/main.cpython-310.pyc b/src/__pycache__/main.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d9e1cc02eff43d24bc29dc31c267eddbca013c09 GIT binary patch literal 16326 zcmcgzTaX*oneJ}2S}l!6bFn?1F}4}N2FrlGBq0}vBsgFQ#0(cZ5GEHz==9jKbs0`e zI5Vqp3^v3#m`k_^0~!YhoJwp64t8t^Ra> h zTiud|&AzNuefspd_W93$zW;JgmwS5?3Vui5xH{k1swn?X55Zp?57*+duTT|*DNHRW z nzt*CdFx~)UoK?}Y0WWNwqjNCMazj($gDyon^qm;x^ihE zzXP#e+p1J2GllYw9r@CZ (ls(`DyWj@w>`=_pO{+JVyix{!)0j7MHy>q9~R^3 k8xC=(isGUI?gZn7QBv =+kTVP_T!nY>DDkPb_e!u&v(MnYM%dM2v_yr^vd^LBine$9 zJo^GtFJJ}sMNu;RCOW%@eF^QXY^(KU_7&7x#foCCHjA3A`83#9*>$M3nw8iVyx9#M z`8Tq!A^$>FX0mR3uQ#)=BY%`lE|R~M-Gcm!;<5Nx{8o0a%P|*Q@exIg TuFK=*$X#~M_w!(~q(s3;Y6mxe2{UsIKe zUXNCcS+%BQVij}0f_uD@5ci%+QrvqhDRJ+s^o#pIWl-FgRF;bSvdWOSFRu)X`v_CE zDaX~Z^a@TghMNeS_|{u*%xv9q=a#LGNzof_+PcMwxzOjtcUYCJfI*8pW+qe07OhOi zF(}vKJW2Hvg+eit6JW@DDPdr@hld_yasnNvpShUmCliI70f45&ML)ft(vw-j#*8h% zkq=N(Us2*?#+Crd2Pw6;LKvBG^Y{`<8_ec2wggH)V<~0y%l0zm09xv{RhT%g@O3Eg z!SF_2E>|{Y#WZfTd2VAdn=fscoTBmP0neGt1t@0^AxLRS)r^>G@Sjwtmj&5igICKj zID`r>g?K ?QMQ2r2DH-BP zXW$Z*a-yQ_m7;9SFKdR%#@(_;JvOV%Xf=&*5# *fO-}Ra*PDk=G|oOb|L#l8M~}%4ng<_m9C~^2{KhM9%%3{OucSss z5NzFg%jo9YZtBv+BDrn@8>oS02 Wg1U$xE<|GcCda zpenW#+mq!b=r>LT ~% zXAo!+O{Kr_p%ybWQ%$K!ErInS?>g2E#a2Z0XzHVts;-&)w2!8TL#rpy?3fcPLh*qP z=ESN%fJ~k_y?dbOWXh!J;4w$b$@>|I_)BXa9;Pn 2gFhLYdu)=2oqy(5C>NCN$U;-n=1V$SZ7#&Pt>@@@v;O;U3NzKN=7aHfz zHclUF9De$^&aX!j-$KC+6x>KbYw81K!&4v3aOe4tV(Mi^`_vEQxCMe`T5CpNMr+>r zwdgn d<_5yi-m?6W-60k6%ZEeH()5 z9&ZLG)VxyDUQr*#f)k5Wo4PC@gCcdzZkr6!NCvS8=0n89eCSo0kLC-fn$Ns0=R+*3 zV1mDfZb(PvA{wYpk_j24B(0kkIb8@9i`X%C188^HT?t16o5E$&ylL7H5OENfSQueK zb#%Ev%A*s#w`ySlL@VXV% Y%B(3z`~2_ia9YWbV{aUkau*{yDsa6U~*Y z(2kcQ-d4h+vt)fDh%DfxkAXFXH0!smEYIz12{b2Cuu1~DT2mmIIVzcX42|(yDWG@g zIuo}e<9=K=NnTA$sl>+S$0^+hs#PJzZGVS3RKxH0UvW%KiA^HeF|s9l4^-!Vi0O$u zvr0KDW9Q1;3c*xJQqh}ECt4F#gG`$B #kv57 z(;I5?Fp9Y=U} Se z`Z-7gS;t-`>Y#otGOX;1F@3p$+9u%-Ln>BKq!z82EOsQ~t~7HhkEw)%PN)>|dV-m? zcwnW)D?PP%+e%B!#P`Or(!^a%ZI4hX=AL?)wA+IZHD7wXdFWW OY#>@X1Q%; zS~L=CYr)OcK|s4oI5FBd`1&aH5M$DUAZ1P;%jOGH8Q(N>Vs^Dy%<`$~3Y6~b&*K@P zdAQlW_(?hgu%k9qEBS)GVW(9 m{n!~?f`YLb_mq30;_@P1*=I=*8;3YpbnFcQhe<-I-~8?1gPWgf;wrh z^N*fxJoe1O(F60p{Mq?;XGwe2u$WW0(Y6~r4zUdb{G)z z9BS|mG}v{HBXW*+QGU1CNr<+{k6`}_Wn5@abVB>`Hu{6pM6D3r$z9^p{S+Riul6BD z7~pjcGoVRiMhxceeh5=MN9zWjqlm@oCSssB;X2G}SPeA;iy!vLtR`ZBmRYURQ%}w+ z_1;;)$B~!|8L6qeRb>V~eld@I^?nws#r%0RS-dh(i?z*TVkWj1&M80!?g7Y<#Fqx< z+@ZIc`|kH4gJ@Q?icqUzBapR~+-YSCm7P*@IR+VzRalSJ5}AdibPVot;iSpP9KHdh zagxC%xR{|5rT2P`$yS5|9`%Zo0$Dm=%i|BpHzb?gGUBDZ+_Cf^&mxZ(DcD2-NiP0r z3NEH#HwBj OX87`PG -J&Lt!guVzO|@5LWa)}n z04o}gpKKg@ZSI99nvcHPJaV{kXjb|~0tt=Nzmlc4i|OyI;Tb$*H$cM>(-#Gyctz@Y zS78Wpc0PsJaZS!iH%j-5TAnWuPLJQC!ux{=G%W#iHiBwLo1!PghU;EL%|$87YiKTQ zNGt#TBh6nP{a?o}O1We2sL?rg-G-XqZRmV2y6!N?sdQk-|3PK;A!swX+lnnZzW2XI zb;;={oRYrTb&1O%1IUp&sm~!hz)8Xzq7j#XN5oz5NJJW5Ki$`S`IwX^((no-_ym9= zN{iU(%k8vsyMfJx46ha}yM1MLqe9ZFLsH;B(aQTN1hl-!)asX})<_8dgEbbV2H%fn z(h)J+5|Wyy&ds0R?~aA^q|W5_5lL8TQ(wA_LX`UuP4b5jOn0vNkOX!T0(df&sY%O; z7OeZMLdf7C|Dgv1c1lHq_xOSgPA _7*O&MJ>>hF)txtBsLR ztH&6$ViH1dtLZhU70_eJ^BZAtS%M`F8#D2mS%-cr^k=gkpT(vvm<1cttcU7IKXEO- zD=7sd+KTV$t*0RVl1GfY6is2hI^bx3grI4ga+P9#YY#w){&(X7T=fdL>YI89%$RUR zWC9{GRZDp7vp&`j5t(Qck-amCy$P_UxC_=C5UeSEG;%r@2st^?3`%u$GwBAdyc80n z+KU|Q@&N8+`OI|h+Pl{l*RssoudTgh?Y3!c)9CiJ;lzn;#Wo86A+>mr0`jntxXH*# zbQ01h!ZMJvB=CYSBE8s~M$wj*X935NXi2nr7*)nPDteMq$WeY1%A^OKUb00uKqD4D zcIj8{5oyITcExRe2<4 =BX$jze-a??JL-!bvzGcF`lS%p4zSoeNv$QP?^h#);@qIJg Te_&`U;Sz0p*LN05qeM{!N(P{*#%VgLLDg=Jf*x1 zDATUu{2X4s8#(z;kg*n2bg?oOl#XGeJk-siU}^u~MMwUVL kJ5tgBg_&vzSQl z$8{Yp`(p&tS-I2q*d4SdSJx_$S+%ZLBD;j?0AB*sE 0q-5H z!T$~XRon1)ybXWlKH##cy{?Hu%D_;a_APxA#a9O4R}n^uxC_M9tAq}&ygagR{@o|$ zesVy%V;cvbou7T}y|)iGA9+|JVe{Fy7M?xT*!Sbc*~i{{`(fG |Y- zUgVxB*&mJxV9(+u%D$R{90dX#U#3_K{Muetpk|$l%u;Zag0QNPcC8T6Hu)VK^ SSRcq$~U%1c*{f;*VPIx<90r`RdaJ z9V?;L`r?>yC%WvSPI?9hZMC(jlMK*^tv0wfNT&PF3SoGJ43MbUS(g0d?kwMbta0|V zG3W!V(04~H QfWg>`e z&;~&pv9XCFh>g2gyiwsrmh=?o)y}{3F7`KFOeQ;gkvxx#lGG#Ng0i|-gxo`GP{0w` zE%q+uu@3@p+ZhttiS$AQ(z{KGw>5JOT9e+xZuX+^Hp-TS6GZqnZ1`V1qfv+Hkiss3 zuP|KPu?9M-FAUQN5<<5UN}v ~v6p2}+d0I=O6a N08vHs`qcEmbz(lYp{Yyqib2ezDDN@Jk9l{ zio2k5$ZkCNc=O0F=HG((@NPihK-Kq?JsOWeg%Qg@KzOc<6Cf41s#zQTj=TDuaE^DO z8h;C;DHAhG2$K4pYYTURd8?mA>BE1G7Q@!C;GND<1(JiKYB5c4Cc6!epGH@0z7GBy zr0t;@KZD40=UVJ&bb)48*l> 5BRp{BkT?(0IQg6TlP@+NeW>x+uYgkmqP|4$DFpmE#Db!$ zqe_sTqbTgGqQxP=5*v^>CPfMkRGXd9c;Vh{V;XM@uS>7pRvv#FJ^TP9w`mlb>7DS< zu*X3=8!k7k?^t|`z7O0x!MFSb`-(r0F4Ma7v>mK3JpYQM-292x8}B?VU5OpZK6U(U z{3Wn)E$ll5yKN_myOQ2Phh3@gTV(v081Dr{rbk1g?b7_>P%i++6e8N)q4(K~AO@a~ zfYBH}Ti5+u!$o+ZhM C3^e$fDC&We)iXc@XQ{58~mv$p(XTKp-A`Qu3xzFHX`pUfAmBHDsI^0y!e5z?o z6-OSSVv01K+*eE!X|&l(<#4JCX%Ufz1CvZRxLjwIcVxnxx*5|$$AW0}8}&Gg*8F2Z zz7cE8bRGoi!^<_#Jc!d^&1YYgXBNpL(^{yulaM+Dd1#y%q!vY_n^YWel(ict9)YaD zu`h9^BHW-qh3SMmy3*$^e($iYGm L00CD>BZ^at~)e<9zyIiVr?FT;?e zQbp%1oTb6h;E*snvT$fm4$6B>U|epz>k9j8v~-jhgaovv>1ql`2$SwLh(j85mdr() zu;;%0%|m<=l A1*wP9rm{bw#XvEWS`92A)qg% zq4!HCve?%a_WvTlBG9(my7(Kka@Gfywt)#Zc&lxgwBkTyX|fvjGXw`I&rfwzVd&fx zsW3~yz|!LKRTwe?m`>+|gd4xxw(v5aX!E~)vhm=t#)*d;555M~vASxp9FJVvC4$Qe zg6`5yi9O{Q{GoPs!V=z5QhNkdmrAPUX`na-j*WVp`CEjtzeDd`8R~D5@mDRxk;>1I z+z1H!bh`ECr08%DwgoL(F81Q|_Lz!%Rgz<*M%Tee!DNpzW9^J2bg)liq`zBixPOm~ z-+dw@wc1|XSQk1_=iU!#KD0YH y_ro-4s L(Z*zNlHu*pReqJbAcr_9^K?6JXYv>=D*qbwl3Q5}DBZ zw~^L!D*q! }{H4EY0!JwO4u zZTN!}h|>wrQj9$B!q3cKqnL0k{eog|Qb2Z_uyuHpVx)p|(m*+BQJf?tC%M51;y5jQ z{tpxo B^ zQu=YUm1?2&^guO^7s6LtjUT=P)vUS%Pr=VI=FUCYeCfz0z7gqF(t2Dk &R`2g$iUf9hxS z0m8HO=9^E?J%0{n6Cjk(Qx@z+OnyNizd6_>S`3~S+60s(_L0jWiUasq5VRKLsvzu5 zN1eF*kP6?!@hPM@iPqtB$Mn!dLbu>bpEVtwzPtK2LftD+(TLzM47gJ`rZrvn_U()h z6NZTsc4AlW It7~Q45(2Ry%od@lnH+?Pz7&F|aR=a~yJ6ixn*vqF7PH zkMg{sKAElT6ux>V#`2ti0V?=CHYHQz6M2Cf;%Fn(TzojZLEgk?b@DV4@sK?H*kz-2 z2_1?Q>47ikl2l_2<+Q%Jq0gKGkM4KK@?*PIRMh*h&X0J?z5MX*LMr1QPi)2fQe=oY zE80p0zrLfbDo1qHYNq{Lya6h6LAVjA=zCx0ks{=bhD$*AZ~sn@mYOp{#RPF&|F-{@f`CS3He_JXDK!*2c|;b?+wF*SQAOok g`kf`uDRGx>q^V-N=!FakLaKwQiMBvKfH88jLFRx%WUgb~CqHT|Oe{1W}d z;^NHW68++$Wc|dv#GJ~K%;aMI`1s7c%#!$cy@JYH95%W6DWy57b|C%5OhAH#0RXZ% B8+ZT! literal 0 HcmV?d00001 diff --git a/src/analytics/__pycache__/__init__.cpython-311.pyc b/src/analytics/__pycache__/__init__.cpython-311.pyc index cecf113cc6b3c591efa765ba63e5b9e9e01a6480..9816887165340974c8bbd380094d66bf9f4ef3bd 100644 GIT binary patch delta 21 bcmbQrIF*riIWI340}w3SXqw4Ck+%Z?G=>E# delta 21 bcmbQrIF*riIWI340}xaxnPv)1 F(*dXmqhG*#;EAfJm?jaT3 a*Adw4DSqLO4l8~@e?ZejA*6w?%tM+Ll*{a>z U{GNODqvf5Gn)aWR==_;T?84>$BLbmKYC;!A zMW599ZcG}uCn|{ Ci{dfoJxMCf3hEWwn$Y5W(Fq*Iqp`5W;RT2;CQ++JhO3fqpo?z;)pl8 zq)%@0GM~~!Mr7~TM0UYg&?h$|ofCaX_bnKcTZFMk8_(D8z)QHhZ#(nK!s)NRu=2p8 z%MU(#`jKO&pLuNMk>^)lSXw^yl&ccEZyVeFnYiBRr|)l7U4H!Gm7~v}S$JdR;bSX{ z$J|wPs7;I~BlDJWDTvHZm;E4e?wk$EwQ8{vC3aWmqU2rm*@`!AM2;v1UQnL#q7;R~ zs|3YyJxU?FSgI6#ABnW^ri%4SAkf{afzFZVioJ!IVzoH!Nu-jyE1nDx$x2U@{f-jr z=2~^CJYAwOb^a1a?84 @LQM*lbZ2Uqu|l &Qpxjunhk%pR`tCC z&u|)@1$DnrLZc|_Nm-MH8PvlhMwxPTwjLBJUUfRy7iDYppq-o;Pe)FHpHe79ZlQpu z)+-+3nL^=Uy;z~=BV`u~qE;#tq>Z^>$gS1>5oM0i5l=EN#bkuFM7HlE1xJF2pZ~K~&2@O>Uc=lX z6pm+!l={}fMLdlw FloXm&~NEu>SY`ou` z%*Lq^F^W` Uf%rRdQV9~B=%`DSrLTu$$Dt@sP%Z4nmM!i`aW_icL= zZtqZEwoYI39K^KzjTcJzT&*9)EnGL_@^3&uR4fwo>4bGM8EOS0Pe-Iq5;?nkPlFsO zodqe uAh~=Kj}k;ym?>AI z4aGy#g|3wcKDsZ;sRgI1Aw5!}m079> hWv(l8`rZ@&^wt&k z{;D|~Z5PNh)A?*kK#m7Hv}^j`|BZhC-K;;hYx*Pn`>$rs6}!gGDCON(@+w&MSdY`S znutt{L`LRpttRmRH`s?k?W 8qmmmaptt8wBS$DUN&x{|ZblGU(hKUcT1q3){ACfL zi{JKfL>gBGTA(i)OIoOhMwkfAFd15*9XequbcKFAJ)aJ>#YC81(sd0nQ^kVhq9suO z8BHX@q`XX+Rb3>X(N39MFMT&=(9{BZ?p9r!hx*azLkmY(VFq;!s<?57y0m=14}^ zd*aw({jfIfu*6b=swKC^)3P7K{nMwRPR&}~s9txDH4 QpUC zeFDpZ6_zN;%XT~~KmKRETI3XG%Y_nTe58B5xa*T%39`J 0c^A-ZQckC-x2yA zt#MbV@7HOW%_k5uaM9hwmBeM?vT-@MQn*}PX)6=c&;LVt1&&yFv2|;r!fTKsd<|?q3`bsgPjahOj=LJd&ikf@2I} zw@&=<%QsIgzx4Ix2VP 75ebo8F>Ykog}rvQ)7eG-aj#;f`u^g_`umCI-I?Ha7H z?QC?kA>D3gSv!8YR==n t42vtpPBU|%e!y3 zEIqlKy1kKtn-Gj!3h@MxDAUP}{OBk}m@bf-E^nbWE&Yu}fV>`g`*8Wxmt&Z^sT+o? zn;fH5`_KA~3ApEV^IbFPcHIZ8oN*yR{Jq9SYargern|sR`X`BJ2KS|)=Efm{H(;eN z=>+jm+YdcpR6CHA7Z7s_=n7N{rUZNuCQm_cSW3if3do~f0?bS8Y;L!M+d-osem!Lf zSJmc)p$q61#| ~uP{=3U39$S6x{xdIqS6+qkXlOmXrA|{$*5WrG8sl{} zcIM4*p8nZO3bkW(Qv1hN{$VL{O0o=1zF3jObJ5Vg^7Ot!kG@mCfI9pBiRD*LtUUFa z>H=+7o_yuZo5z;F{q)YU$Ua<@)pB)umE =G&}8+=H&v6VdIH6#pMRWH zkFM!r*+dd39gVU|vEEcE-CzejHdhE_nZ!<^NcL+q#Ep7pLoK(FSVbv8Iq7=2XqZdZ z=$yUF*={dqc_%%*ulG6IDYt)ZN9!$bl2lLN@~O};GDeOTxITc(d?#b8l*6ffoKj`Y z)DX(tcdYkvcD%sX(Xx7lbk`bB;lZsn{&OT6H(`x5MVPBZLug< cb33JKtw_}CcAJ^v1YVvLkTws#MbhmbJ z6IPh9KRI`!j$9o&(!ouK<5HAZb6>>TgR2Mnlns5#37xLBmzsBuu!t2Li-i$shf0s_ zTsaE%O1r!jHCE}h?*ic6!{uO~5ADJ8m5R9s1@$om=jx;>KuA9#2@<6m(mN!JRp9S- zN+)57L(fk@xsCd6-*e~0EznMc_X+Y7^r9)H&@_a0k{n1RAsCt@6?_JmoS=NY5Sf&> zu8{aVYP^BVzZQW3tKEdwV ~|NU!!pgYxdd?bo|Wj(ey&_A8e*M) zjd{gusS8G=Xt!YW3nUt!SqDZ$%j(ZKo*+RGuyJ`@-w1GoiN(Ycw2#o_y9LkzW~8D6 zMmFGP18z=e18x@qZmD^<(GNx23R8evI!rH;VQK+xH-(N!0B#N-whcf^?sw+yXhCcn zAchjA_te}0KuoFZ?qV83s9R-sS!E}Ehhq$}G}F66$GYUoC>u{i7L3?>;6)auuT~XN zdZt{GHI `~NokYQZ;PS6S(1dIr^yd(Kji$2R30>qLWkT$R?bh{S+sn#4;h)39N+fogzb@GR z2Dyzw3|oNHkJ(Szj0{Rs#RF(J!Z@yvK<8n|CicU{srV6qRqDDqZ-tisAuuQ$GqC>b z0O vc1@lvMH< z)akiK3)Gp#tZ;ikoo<1eV+`sH%jy_*Cy$Q8Bz4wwDoxcZ zY&-fzt7#QuOSI{le8Q_*kwvE)0PJ$g@AE`0pclw~Z zFiPfCi&|l=X$|lH0i(*OvxODo^YWNtM+0loZs8NCBZ{5RgfKvXzX{+kLpTK RP0mh;O${o(Sd zW1VWI3@~NAa8)QJY%=-Q#}HG1U)w<&uG#a$_5C0<*CFH2iBwnNlJ^&qrCPlj^rDkT zzMc+wFJ5FTL6l6y^F!3^fG9Z+n}pg0)63U~=^BMLa#`Ch1aq@qWH&cJ93L)C*d}u& z6T@l#Xt}pA`~nh ^6$zJarw8Dk;0~05f0Qt zUgVaf2crsJt6-u|?#wk^Dr<4)Se<+VY6Rz~)5I%0ha}P1WvAGc1|OwKkMprZ1;=fa zAjgGOs?E%l1LdapEH&9p0Xr;W3x{5S2hGEelFGEQ<8Ia!>i3|@rwNJVy*5CGO^ReK zRJVTbx-JNE%e%wyRGix((Phl7(n9azL$X5YwQk1cUuFPHZ*}rvnWf=5WVYTTvtyfv zWj3rDD48U)KN7;f3#F44PvM-jNU|#FjeL|$17m@+pku$o0{4+T{~Y+znNKx76~Ipr zI#5a7kW@-nBp}bf0C}EHYS_jCTPC#YwCV_QvYk0xJ11 W?sY+r%X6wWxBq9v;gwN2ad{uUMlQ^TIgB(9PdoRGP(25=gT62; zh87Imb7BME`zRgegM84Bnt1ocfh7&|i;cZ6VJi)>k&~%dzZrZ~pBunB#zuZ49}F#S z5Tjv#a~;#yx5(Q*Jl}t$A1j&fyplK7+cHDBSUR`c*B2KgNU&>MJplK26|Ov1Hx46H zl9ez2nu^`_hE&wQW^)IPxc(uknjsY#OI|6=gNpN;?h>U;=em;QRV2GHHcqJ%WjZ`a zG2R3@PB9h^4^ix43h0Te#J`e!(-ZOvgfLgzqvwvekJfw02dMs65MaBiHd|27<;}xb zFJ!lrnzI(+4F3`NSf@^j`Q^nF+)hEu6p5_j>@3U(Hc6r_1>psrgw^B~)=XoRln{#W zxYFT;$gI#=h-5kNX8c}LX5jsZ+azt_`#mBSyLf6Z-=9_!y3X9J$9vHR;#YNqpkv^B zi3y4N&n=UQBb$HDS<7w4E!{esNwG3%4Cr|yqYpuHJ8 *0W}u;O(w*PtGkMhIJ&nuONb_|E+s1Pj*CsK1!Vz=rwTQr%%6o=jydf}N0%p4o zdq??zN8u4R1=i~UU5 -I5Mm~n%Rhn;t+JG@alIN(YH?CUq_U8jxmq()y zJyCD`>YGT+{3;eRw727~5i^OFX$TKTOU%GfglULr2@~WtgMfiL<8P0}OR@~Z@FbjK zEMAhJITkO0y#Uv9kXq1H2oYpMFeNeRWlXv~?=-#;K)8f9#7rtok 5CO%>NW5{SEx8Az*>Z|25)IAUN5sHyi8FzXI(s~Qo8Vxt>kRkEp@G-Zh44D{zKSBh@ zp1k0kl0^PJMigbIWNn5_D6l(DdpVf3DM~7r*W)zuCn(rWL3@X;PtnY|Y%}>as!m>5 z<*V37F`B%{BqvjwIoFj9!>oJH`4Cl|Qtc;1R`fx-g+ogKz-8MO4$dDe2m|^f$1eVU zpMj`=r$Gq^77WA27CoOB!FG02I9MzgNGy=j?ds0&^68dXSZn01Kh9OM+#q#}@Fju+ zTR&1ITI~1(yiDWg)7bS6usOJ(gQs4ekNJ=sWN?>ZtAIEWW}QyPT!5YLMSDquikNKW zIB^b`ZZWk)P6dna4tUo^8cgT!#@=@t9^%ZBMw^YqsVCVqJP0Sne()MO7-D}h_|3oP z-1P+%ZIOU0!^L>70 W<~&yztlH*<0Tuf1 z!c3S)SqA)80Ket-_s>1t; }{m6SZ%yi`qv`4D)gTb(0q`_W; z;eg0280|L=hJp SR7vb_;xQH$V9Xih$Qi~q;Q;%~)wzJ?K^Nz3?C`V{ zOY)!-YbgFuWu0yyQY+aJ#Jn+-7=kCWsZP3Y=WN;_I !rTSUep^hbD#5=*3O8aRoC |pPZ74p#;_9^jhB-zPxI4sxNZ*&ESq`8Rr{Fc+&Z{!#+p%kCrTKUPBPCxqP zm8YJ^*80lvm({}gHhpl~+-dapo?5xG(Q%N4kF8u;{}5`be%APSRIke4v~vup)ng~F zXQ$A48?@J0y4Ogf#ih22^4Pqb>D(=f%mdz>ucYHHs>Z_dCd6Psew;Fx8wlr78mBI6 zQ&Y-t#UbgL+95J-$$J^aN2;l_D1k6a@!4zc{1)n_TZ51CrHWUq)@KViB*_cz4nq4j z)ND$~VZ)41Kbr5jHW@=Mwm5;#?n7K3Sfldy_B?J*#0L!_w{Z56c?-8MtJHJq_5-?I zAh+Nq=^%w9SW7xtB*_p`Q~Cjlv7vo2#V(=XQVQ}Ee1d}ODY$`x&r`rOH%T$tT9Efr za1RA|T}>t__&Nn-(a0qV5)`~j!Rr*X=Z#}*{#=d%O8I| CHJ7^ZaHC*F2M%sAG$hiNTyE6B|fhz~bMlKoII(+%q z@bH~m?6HZFPf2 YbU;)2;tUz
MQl`Mas_7mi#uVy|)NeSh+Ddk5yuy{hZMN=cq$f@qaO>)2e7r|E{o2 z-6Yv^Q3@K)r}=cE`lze`@^_+FTW?+?=Q=zMF5MdlDE=4%Ol{K9p=x29hc Fl#6x31GB}PMA`66&h!U|P(qfr0)Oa*~cQvbd ztoqJK-t~-1cm)W9kT3!pgkaYOE7$?yf*2tgQ |sXLm&9Uv}%B>D#9t=bk?2^f{-y7>(Kr{(k(6uVe!cD9R`F;{P-7axWhDp8%MW zRG7-NoSIbetLL=5p49V3(#QvrfxMYC^H$PQsg02f=7YK9mfJ_dw3hhm&DZHgl1D zG#M3TE!UOoVipVLy7RGQ40RR@<$Ch*WIW%S?9KNj`||zCepPYQxdCUzyqX+*Kw&lu zA5~b`iO%ZDA-qRe6z@^-KJ0{1)5W?`(><%rs>zjjkFg%S_snX^RZQEhB;w^Ue2_i1 z`=Q$R-&%P3nT3}xEY5y(<;O=C-~Q?4_by((_`1Dt>fFM!kJsLK`9%60vypXzkd` zpB#C-_RebyKm6t8)6XwFceeI}XJzNwu_qT^J856RxXNfE;2HO4GbPX1k#$R+zPT{% z1$R!Bvc*C==LNT xgCj-n#nk 0Rde)&dFJuc7UclkJ$h}~OXF) tI4|svCyLRo|1;*{#KDK?!<{fV-d<{qt;Mx~A@M5vF z0lWgQH@G~r0ql|Az9CJYo^q$%l9OLQHO+g_s}GM$Ul3FbRsIK6fw?}9ZbI|V=TS1q zEbu7^&eNP@(^HP0O~1HUd+ix7Jmv85BFFk=9M7T;&z7b=^I$Poh6I?BPA|B(>}Cs& z>y9Qud;l}^6$Aze3;}rIhqmt8wsY5mn@6{7^{l^sc=L|!V~=>|H+JrL_`$87x%-jb zV_P5eg7-bVd;93t-Md@7lBFAHpb>zTc-$_47AFi9ydc~%Ug)U27ms@opuvlWq3ucC zF`NL?HY(y*$FGTZ1HTr21NaT%*R12MjS34ULynEQ5XyEk>_kuwqZ~;_oi3+)NWps) z?_J55z;zQ2+>O<_y9>hO )Fu7QcBcbiGgL1?IMOK9x5by zI TRkQ7+7y$!Yt&N^*#bOZU{SVBqJ>1Sg_7Cn!un{blem+ z+JN<6j%~I?E3({1vb#eo6WBQG1vbX|{G+pe%ss$X0MpZf-a$45Oq>lny@C>htz@fE z)7M75##Xa6sO=Xs6U7F*fsLSMp#G&)^96PzYF7Aa*0P&WGsyZOtv7pNVGDK(^HYw4 z-OD$c4B6qvAC<|@Z^7dZ15}hbWgal4P7u_x1a+ohbafQ=zXu`;0frr!aZ(&w0dp^Z zqEhnr!6p{@v=>chO4)->O4N!?#dUJyKB*$3KsK7jOQlE_T@%1oP1ROs`g|X w6Mlz6R;j8b;W(7kNv)($Vsl{z3Dj|`qB58RV1q0KY(QYKy< z5EPgvi<985PPhbOqFA=ztfUq^OT=7uKKh~!tqKjvL zQhV|}I5<~+_ aQ@%8y+9_^B%|etd T19GUhVw(+K*o&cG8A$ZD?Py z%yZMJB6)VMpOM*bLczSSm_xb^V$o_Z9IstCwQSMkcleQV(dwM*yZ74a`oc{W3$Bw| zx@=w#F%Ik6Ld)r%e4_UDk1l=mG33=Ry~1^_`H*01oq6~y{EgjvZ7}cTVUbd07e1{2 z)4YfuBj-8y;o`Y75Qv4B-uBNUw4~-kw&syq^4oi^-H6S-=?|wEFHS96Ft2A>n}jX) zOSw_s3W~*U%}F=;Ed&w-RuNc7fQ)oP TDV!8Q1@qe+*1ICrs o&9pDwPTFicISu4E3)}t~3KOvH6=hPHQ|FcYmB-4DYE`YOSM*8E z?LJ`PSLbU=##{hf7|Mgnq={c^Ke%+jnpus_Em+a!)vAF~sG?Vld5zzVvMtNiKt-Jk zR|4~@sx(GP>3fs|mZ6j)(-l>znyNDMl~Q!Bi>Vduw8FHCd0IJRP!Fb4%^9uKJsF$q zDa9vyC*cl=Rsq?HnWespIjd$>Ir?1xJO!Y^SFNfADh4VRjk8C2L}8(-dDuLF;FNw3 zsfVP6x65R^7JhPM;q^Bco<6eh>eEt4r9WDZHj%Poq)Z#*NbQYZEWZEd-6Q3-c&l3) z5qXZ>F(Mnv5u5FZ?e!6EEywV3>qvVG-iJzWNQMu>4UnE{YCN6ImAUhl<%P&A5CK?g zKk%$Pf(&S(XHd8)BT%=L&QE!kXr5)Gi4{Vuy+9Tblq=j->7HVjfwu~?>shWtezYt6 zRIe*F;lKjZY+}%^lmiF442vu(y=W@K9eNX L~Q@Yg8M`x 1LfoUzavDLyK!BG Y0ijd=WRH>NvE3+zULU4JS?^U~E^RZI2V$Z7R0k~2rsLZTr tDnmznb#>+7Q# z`iU;0wAzO+8EB)gztYElR{?B}xnd)X5gRlVLz&gdFjbJtx>Gr+x}ihh6#YMfN7lnc z4xCh{Z-J2 D+m1j&N=d@qctpTLVaj76> IH>| zc+g=en=mw`vip|iY3sk_X@`nSHO}6cL+p|%=BGCO8;wp=4J$M2{fg6WYu0bf6_IRm zH=)qzx{O-AK`ohXL2Xb{OO#G3l2$ ZKa E zi?wxzpT(!CtMG(-JNV1jCv^b*1gTbw)OJF YHe?$hRcnF4l7Q=L+ z>yrjuYZT9JInZ9T%^UW5mbt7vjGkDo7;Qa%C(^T!aLYJ_(iKK?ehXmP*EI!#HWl%8 zc8klCs@oJ`DHNI)0f#xJ5nCsJk_Nus7yUPog43%MZ(y0PDg4pVGP#g`)ssrs*!>ej zoLnw1OyA~WQp9{REksT{C*Qye9Kgmn&B@>J%<*gvNh{Bm+bs4y ?VuPpW zoPwvj v@S=$Da_;(lP7b_v`7>ff5XbW< z@d5#IN8mWzM`hY? EXJ(i3E7B zq_e$mKgAwX;BQ+sFVhgDQ4)w~A&b}ZcwAz 8n%&_?X&9KE{z%YFr-_PeiAB6KO!IjldJ>gFg~i2h_-KjQje2ZQK|8eGEPeJd!`m z3}4@@a+iqA0Axs48h>Q=n?A{USiG6<3Zt*W=*KGB9DER_&y!Kr_G3@lE$js|fW1Lr z15K>a#G1ga7g(!_ZS^Ie;p+k$YGPY`ZD4l@Y`6n90_?X0HrfH(1?;52c6Y$WfSnfD zo^~vD
LCR60OlGeBY)6HA0zVg&Z1ZY431wtYhc5EMMvNE?_}?J(3@n;B|TSARs+#w*fS z+Pwv@c3@1&1;}$BLS@oXc=Yf_1E&pm>fj(kXzNU%uB)VP>sUy%vqifw+C}Q^qRn=s zJsVlKXczmO@p{niAr=?ykbA%GynSfLSifiopBU|E-WBzE2b=Q_q1|`buxPikIo_&z zyVcEhYtZglCaum$bG$Fq+uhh~w-)W@*iB-*o15dc@rB)jUJB_pq~%tj!Iw|HzHscM zl$M2G9$R?)9N!9-mnmjjlFnWH^(@kscaOBRdq!V>*Lc}R(~)&D&3pIAH8sKif<_?6 z;Cg9S4DvY8=zr(9$O+WmJ%RLJYm_nxp{z{s9gX2Sq*5C+3B$6J8VbrqDsM>!6q5?0 zv#Zgnnb!2DFwu$(QklGfOXq*KVHsuQt+fyd{taqPAA7xYB}OE}CK4)_&;G#ok+cb+ zCcz&e{OZ;iopO*EhOA _ z%?0O0$jR(hSjub)OWm)w2c=Yttui$I2)0T?Y?bz0m?72BwpH3y<1mg6u~mwa*eW9; zJiYYs86=%0%WKEpt-Hw=UXU&(?Ktw3V=t950NW4}M4W<)3|K1dX0q8aoQtFh+o3UK zl2Y=JjK6?3qf&nTbJp{AiHPvX`AHfn2H+W!F0NbzSUErCwtREA-HdrABG`O(nRgtJ z@IUH^wGh{#<0t|i~%Ho)f79C~EA8F*}A^)OL{$&pi zFPYI21R(~uEfE7lh=DylTKAY@rSM#YAyd^5g9&(iCM8`B@|qwB;#UZQDSal9r&xIZ z;^GIhQXIzGzDmP~kdE)hR`VqIU#%n{6fqpg=pi~;wwu*B%)E8R|{$u z35-{*M)CqTV6-gjC_W@ELg3&h{2i4$$(U#)+yN3z{w@H;!)fN?_<(|SE@WYenK%qY ziq^dk1yj+2#?{uH6*yK`XYTZ`GsTE)2fdwABL0Ze&%}l=n27r1`+1^_gq;6?z&QXf zDB`fx-f5vINFLLLi&KQ|>@y1aHidAzouu3ASw{CB`sNV~NwSV0NY(xr)3nb_TyZdd zx9;~{-E^}-xQ%Vc7t6-+f@0cKmi^z&BFvjl?kjb RRU=~p;jx$ T zqhrEs`Rkg?+I{_HC8@=Ylq|=k6 qJS5*{1xo+ckH*Am*5vsGGEJ z`b`>{uBL&bdk1FSz!|jANUs|uO8fSUGbkwz)Cwu|$&fIF)XuD!6@zLvDhJk}k5#fo zpJ3a_;Yx5xAB$?x=W7*>PP!@<(_Td&3*)J`1V{+Wx0e`C2$c|)SyidxYUNB!oP8OU zP(xU<4dba-Lx)2U7x7yc7ZGp@<0-`j_Z%1BnIFSFl6r!ruA`g5LoY6_OQjexsXV(^ zBuu;>x=7Vlc|$g7z^r610XT zt&~!Br4#V?z Cz<57MnpV0#t}6QYlEHG=JqmE{<~l zXWf5xt!P@Kk!99+$-r%9NC%NkS$z~QGjRm2I8VhEq~d4*M>;S!C^uG@42qBdWBLwA zfF`^s4GD+(Stt2q!dw_t?J&YRv3a6Y-#q&<#li;{Yu}$+eClVlcV4;l;nOnnAYA^A zn7c>Dgj?Ma*;wS!ZAc&7gTbX2T%Z!knlu%(b+!4!omQb6zEUbv#$~0vIAD8)7J$ak zw1^sqZSYxwwzIP({o43TArSHRukg4h0cLKO{6)(8i;~YnWY!S~i}UMloL?K&0Q_QT z<*bIYYnXh}a5`=|AX7V7kM`BTnn g(UO zN^M#|-!X$wpH>H})Gt@*>q-gEDCt6rqofH<-s{tMHT3}wt32m#<2~tv X8z{{CJF2(Kw+uOS6!geMgqSk z@EZdENZ_9d{0jjR03Q$;?60HlPCV`i09`8%Y6F4cJ;UqPY` `#}+O;~OG%1>y~Orb0{35fI>r2ui)w{cD0ae0Vp3 Vo%PggZyLuowBlY^)Zq%clXJzPi98$WrcUJQdLe8HJLDwp9XEvCgREf`bd(f NI2<5~74hR5d! omr9))|{E|EO6sD&z}E$15&|q`ysMz z8*D4^k@=7=knO8n+#sA@<%3%V7mH4ZIIS3ex2`ZpPYj9h>0=@IvaoC<&JWst#r?*n zm1h+=Zf9 c;K?6Ix{(Ofem z{JgNlHd+Mo@?cKf5qJLDG2|HJM!j(Bz9M+7WC3h^Lh!qW#9{FeIoJ_5seaPWJ;iU~ z`pF>K#6{fjP*KxJI>apA(9hmDd+dv`y*J-@MXHi+p4xkD|IzCw_FO-9^4j>Bn{S?6 zCZ(NB&k{(LX$-Vdx?6*K8Piy(4yc-viqdpaiN Q6oJgjr@~XpdncN;ZrO-O2 zOdsYRV81w0imJ+8ieZn-nryhV1Y>A&YM0?K^%L>dh!47phDInRlUAW0p-)bx6^a?9 zSOVIFTvtNv?d+u~Su^HERk=@z%1MQ45hq=T;#`d;y1Epq#4Wx`cOu)4ZfFuo!PGa1 zV&u#OVlq^WUV=*RDl!IL-g2kps=386fM0l9_+n2DyzfnVay&H|E(`FuFEo-7x!@*p zZeS|V#_lV@ho*zI)4_%-WtG!qRnuj4m;LJ}8mIj0*?sOw>wUQ_d@?o>INmwlIaOM9 zB@h`eJzhRu{z0Jey+Gr;f#uVI<(K`-G7FqieuiUkC?}K8 ^KMDmuU>jypR+Hn{h6%wx%2wEZ#zCO`pJWO= z{=@mtFa;G&N)ipS7d-%H{B`7SaLvDt?1dWXNwN=)O9jN@e*#}ff6hNN_fMa}?Z9o{ zFVV_9G;Tv u5G{qDRKB@E=yqZqYr@ HOB4`q5_-V2qz7DS!pF@qKu(qPfHOxrW#{izID0EBNxG4O#!tZ?xh5u$L+rwR5 zkhkBSu{RS}zJ9gh6z}0(tb$p9$(oY9t2udQnH-FZWpcx%$kL)p{*t|XLy*4|6gE`y zbP!!9_2LIx`3(n=#%$6ygl7@j5e_44MtA{XE5Z?kD8h>f+Yw?23c}0qyQ)PiUqf;U z!mLEttwdPPQErB9XB3Ngrj#m_R{L#)=uOoXyq6}JFyf|*QQO?^PcaI{7Ka;mA!`6( zH^N#5k?%PeVqEoZ2O4;4%Snm8sP;pi90alc5%MhjsJ@jPhL`Fq$O~|e;SsoA|2TOO z8kRmoUWRv;mPft~D#Fi-Ld9nOcKvUI*zf?U(Q6tUHZr6yU6x~O!vT>UR*dS#Pn;Bw zMTn83^r&pGMP)UXNIVg7SZy*h+3r-vxfGRSTB1*(WAOZn3UUn2t|%G7JQ%zjj~imF zH N{ToI0;LkyGE?=MK-Q^~9%YSIe~3?bPo$JL09?n9PYLTu0M0uL~H z_u@Mj*aa(E!XyfE%NrfX@SjlxJU;1hgg-DaoV_%z(CGF7iVI`sgrdgi2^7!WrDm!` zYjV?JP*$%d9r~-QFY+UExxfGop))~M&2&d`*i*AM^QfZsCj0Qb(CDA$a5z(-DHNes zGvv8yV|dUM{A*2^r1bo?&kOB$FU1gIz3Cq9yP&P3?P0Wu`^Gx@%-)(6v)k$s)BE4y zzdtVVeaQ3;w>Gd#iL!H4Q?33ThU(UhWKbV&-OC5e30H`AO>168-L*M}A=I{#yrge$ zYqxFeMSG4NvMOsDH5{tKjB3=HlCx|$ti@ov7-Dz7OuJNbU>SV3GGGNV3}X8-GOjnb zSK9vHI?R?Eh65e-M2B-7*IM>4qm&~25J5%I5Z*>GC&^!tYDSnw_z2-+gwGMK!;Q@W zvIbmRTDROUNTY?L@rk-gexhN#XF9MX!!h1$_z77 -pp?VS^|!P0 z=Dm3{^WOCPOXTJSl6f*C!@;qqzhGW?wE1kN&FQeQPoDk#X#tP3&eZuU1e`9C0liMq z+F<9lamQ>RX6L|t=U2{83OOYY=NnHEN6X-w>?NKKF2oO51}$&>WW0MxFZU|n!S#}D zWHskEgFAO2-{zkJylbG*Z>6nlzLurXa95W^rBFbONK}zEJ55BSKunBEni)mS91;~# z6ZBz?NV1j9gMVF(qyifAW;$~0EhNPuLCRZV&d6ZG$9a(~!h{s}m{2&aaM@^9^Z4IC z>`C!xgMx+2@{HQt@-*h)%lyR^O%BtD!_m|rjAVP7YJ`y*fytDj``OEK$;+yH`d@;x zilt)~(~UhW9VJlesdun+xCU|ub7MBx?72s-K)d%~&H%HLO$;6nEnqLYodLYwIpivo z6||DqKq=UoH^`J438pu^0TqQ;b9OP4^y4?7zUc4iZ?bXvY@^>{uy_{ 1AnYsf9l-tYU6MlMxNHw1m%;DSi>RlBDsa~KIvIim zCCe?l(c%E?Dp_bxGEsIh!1WR*+%9pDZn#(C&N+kn2kgvk=Wb7#y4##GH`?n|Pw7cM zgV^g>;l==E?fElCC)bYujg`$_r&sOZtOYsc{5A886+Zr&PgqgTQyKj$>WW!yeESZR zG3B%!u@kWtu?Mjpu@~_YVjm)a*pJwR2qGlJA%>R3bQqeQv-0lov%j4?QR`{*Tj+co z`~WczF(FB2BT2@da9mG`nMoe@7{?$2tLC^(_c?XzoML_vyBv7RXeFYGL9?;~$s)Ta z3aZ}IRr);%hx`sY7nNwN2}v=Mkl=J>5i9QduKaTPJX8Ch+CqY9 QZ6sYC3Ruf66mGzTN?N0_tKV|lMfGvKaO_pMEf=U5V4u->Pp32B$W6d6x17c7K zCnb6m-fk!!I*jW~Wzfv8$nlsagc8vnnPQKlVN~;CD5P0}@n|&s)R7j9C@?|vLo~L9 zHW{tSsGGoaEU1Tt`+|M;yB1^XTHPlrQnVs4NfwiA->6!kE^6#E52cIqC_2Duvig0E z@-vM-e`rZBGf5L7aWN$OO%%HX)eDKI`{9PRGr526_ziVI_0l5J4xLNStkY9-1SevC z=sSo@44N%YLlO;a>Z7 cL X=YDp+t zwUWfu{#849uihlHaS`1~E|Z?PAxUtrX&`&mjceALR&K!sty@G{R1~UNWr_JxsL^OA ztYQ4$)K80M>FyP2m#nutjqjHFjQEmZT31Vss0-JXnEr1c`iV=z>mBpSM{u#@?vh^I zZZ~2PB7%q_&Li-s(`$&ui0g=3h#wI@BksVR7rmqfgbi)$^99eb>|>!*mBak0>f^B+ z-gzmG=_aDKnF!gZ_!NilVe|0n^M%9f&t)3lY1pQo-e572%b<3)k{)=_IhWj1XK(Bx WjY9&Nmg3U$4_$x%8Kcz8Hvb=&7EICr diff --git a/src/analytics/__pycache__/analytics_manager.cpython-310.pyc b/src/analytics/__pycache__/analytics_manager.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..36cea15bf7e7bb17b4718d4a839884431ecffdb6 GIT binary patch literal 8776 zcmbVRYmgk(b?(0Xn4b6S>_fW(#PT!)Si+=iWLcI_FjgFkbrLYDOiXn~b9+~_JCD`v z9>i{X6p>XxR+W%cF~JU!nZ*cOMHxe&q}U49k0gIm`H{+xq|$$qDzl^As#K~{E~mmn zIN!NFuYHI>X17n@zW4UIuk-lM=~^-wQ}BEF&Ci#%->)dYpojjShKC1nxyM1c!qu{p zr#maF6_#feEw5Gdyk0T#hD!BX*{qm(vl7Wi T3syIq>&>31(^TT@;Zt>_bg+~`yeuS%!D!JGSW}{5x z^g#bgsptjzzLM(&+MeoMV0~lOE7huna*hQSFL;husyIQED0j+UA*Tj$?o1ZyWsl?4 z6$VDAi}3??rBE$QIU;8S(fu_s^9{ir5hNa}RiAW(TOh7MbPqVsd8MKo7< 1(aEId4j%l!usN6D*P$uq9zHO{zpOv&qf3pX6YF~<~cIuXZm zqLXY)nbdiNTgQxij7OcglaQ@R)W&%Hn4VAZgp=e+Tq#^>Cp~HL3?D#ChTqHwo%9-B zLwp##22dOCje$`ZAK{zuR+f*-cLp)S7~hPVAwIqVpBwp2;4{p19KtO@rn?)Dgj-i1 z#v+%FKhygD>8qDtT7G@;D*jJDv-G_m6;-r!epEJaJ%r000^us{2G_Z9R`(Sff&~8N z#ME!d-!FErjH1&NF8uy|_tal}kA6Shjq}fxYlm$*9Cxx%lt(mlurzhh7LHph*Qvsm z0+5~Q9Fu*p