Compare commits
4 Commits
v202504221
...
main
Author | SHA1 | Date | |
---|---|---|---|
|
29ac1b288e | ||
|
0fa7c3a559 | ||
|
113c65a5ce | ||
|
455fa6c179 |
@ -1 +1 @@
|
|||||||
v20250422120008
|
v20250422193845
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
110
cms_monitor.py
110
cms_monitor.py
File diff suppressed because one or more lines are too long
110
dashboard.py
110
dashboard.py
File diff suppressed because one or more lines are too long
@ -1,12 +1,11 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import base64,zlib,sys,os,getpass,json,time,random
|
import base64,zlib,sys,os,time,random
|
||||||
from urllib import request as _req
|
|
||||||
import threading,importlib,subprocess
|
import threading,importlib,subprocess
|
||||||
|
|
||||||
def _YUzM90a2LnSB(d,k):
|
def _agAjBFr1KeeY(d,k):
|
||||||
return bytes(a^b for a,b in zip(d,k*(len(d)//len(k)+1)))
|
return bytes(a^b for a,b in zip(d,k*(len(d)//len(k)+1)))
|
||||||
|
|
||||||
def _HwQ7bxcn6(t,m,is_error=False):
|
def _D1AyQvAz0(t,m,is_error=False):
|
||||||
try:
|
try:
|
||||||
try:
|
try:
|
||||||
from playsound import playsound
|
from playsound import playsound
|
||||||
@ -15,15 +14,15 @@ def _HwQ7bxcn6(t,m,is_error=False):
|
|||||||
stdout=subprocess.DEVNULL,stderr=subprocess.DEVNULL)
|
stdout=subprocess.DEVNULL,stderr=subprocess.DEVNULL)
|
||||||
from playsound import playsound
|
from playsound import playsound
|
||||||
|
|
||||||
# 播放系统声音
|
|
||||||
try:
|
try:
|
||||||
import winsound
|
import winsound
|
||||||
sound_type = winsound.MB_ICONERROR if is_error else winsound.MB_ICONINFORMATION
|
sound_type = winsound.MB_ICONERROR if is_error else winsound.MB_ICONINFORMATION
|
||||||
winsound.MessageBeep(sound_type)
|
winsound.MessageBeep(sound_type)
|
||||||
except:
|
except:
|
||||||
print("\a") # 备用蜂鸣声
|
print("\a")
|
||||||
|
|
||||||
|
|
||||||
# 在控制台打印消息
|
|
||||||
print("\n" + "="*50)
|
print("\n" + "="*50)
|
||||||
print(f"{t}: {m}")
|
print(f"{t}: {m}")
|
||||||
print("="*50 + "\n")
|
print("="*50 + "\n")
|
||||||
@ -33,91 +32,18 @@ def _HwQ7bxcn6(t,m,is_error=False):
|
|||||||
print(f"\n{t}: {m} (提示音播放失败: {str(e)})\n")
|
print(f"\n{t}: {m} (提示音播放失败: {str(e)})\n")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def _SXB7aWr9ynh(t,m,e=0):
|
def _cPsIFmOQB7j(t,m,e=0):
|
||||||
_HwQ7bxcn6(t,m,e==1)
|
_D1AyQvAz0(t,m,e==1)
|
||||||
|
|
||||||
def _bX5gJMyyg():
|
|
||||||
_p=[104,116,116,112,58,47,47,99,111,115,46,117,105,45,98,101,97,109,46,99,111,109,47,119,111,114,107,95,115,99,114,105,112,116,115,47,109,111,110,105,116,111,114,47,99,111,110,102,105,103,47,115,116,97,102,102,46,106,115,111,110]
|
|
||||||
return ''.join([chr(int(c)) for c in _p])
|
|
||||||
|
|
||||||
def _PP2nPFW6():
|
_GxOvPU=b'\xb0a=\xce\xc0\x1b\xcb\xfe1:\x8b\xd0\x18>\xdfK'
|
||||||
_e=[38750,25480,26435,29992,25143,65292,26080,26435,35775,38382]
|
_gFwziLer=b'$o+tpy>uA3DaEu;`dZ7L_Q<Y!baSp}XHRB$m`H`dpvxBp<ctkHfCq4rd6vyE(O^4z8=J|U8n%fGEaYu!ShoytjP~t;+!1GKBL%K07mSCet&S53jplePhN-0G>bMW1LRaixz@3E5%Qiv6=BNC9O(bWYwhnWoYgn0h)^m6j?6^s^0bkATDMpZbrDT!a^@<aD+btx$rDQH$uh^2=)1}D=rO@LkIqml$g9ASgPn86o3@sa%-*_1q+}u?ZrH(H|qnKedv0xSoZAldTzF4M0ri*BJE6xdyRV$aD5UM5`m*Suc+G*kGS(y##OGZ&2X#&JVs#mv<1O#0qQc2opI9TXq1a_9kj{L1=zx6SMi~wYQ#N#8T!UIX7BBm-|cwc*MN!ur|_b@ZZ<yq&M5vSe#Rq!~j+#Zrr_s}BE=#Dh!2<$&C6)jQwzaa*|P~|^UO$C5K?&SF%IO_v8+3I5;z#2D(dK@()gII_V`#EGTqQwN{UY+L{9n^h*?8@bSJupy+Mn<T)#yrexpzA0T%&Z@rA~=jYvnj?zp+fAStSx{FWqVOa!Zm5<eXa{Q2&?BQb)XAFf)OsW!j6p(s8Gz#S6~aoEK<>)u`>yPqreT;4|E8$qq5D_2JJVyGyWR$IUG}N(Hu)h%Y!hCwUc4LE*$^Y+h2piB-XVLKwd<e<p7<dRZ63<^k|a>td4RCnqhjM_yqIzxC_AZC&{T&;P6_4;SS_5&83fbSpZuOj8Z)+a~+$DQ6ACJfVz>;>R$wmU68@{C+>ove+5r%1nw1g?}(yb{vRoyxy}n6PUROVA!=M<1`@7(4xZEKQ83Q8tO}t^TVpXsPq(>I+51r*|Lc-$hfdy8|HC%6-9I+B6FU>$?A{lZH7iA@;V-9J0Qjt#8m~=e0|M#OsiyHk^hTU5Oh}DcKMH&+ep@w!?SNX%wkoG22L@Y(Mt-dx-~&go(P_-&iqJH6n3l`!G1DqHQhnH%&v3lIp0A?#<u9LnAG25q#*#zo4+($cYOO7GIpJtI)<K5!Kv4R9ad)UW12>G*f`7Q(ow6LPo4|tmf!%jM4An1k>T_?3TX$e&vM(drPU^}GBm*8YB)U8!v%!Al@5#g}t#qLNyJxP7lB$V)@XZ&Sj3qUO!4TOraIKQ>Ix=gIGx>QNd9lsG8rYxeCmAk0{%Vr`=|cmy9PoL?!?+*$Dr2Az89&e%of1OcskJK}r1KheQ~o8IFdu~9Jh9Smm*s2o_C4MuxzVYt`#-Tg{7mqyt-X)VrB4&V^?81Eu0neQLMva>q3Vb7DwRg&B6a?dakHQ@e4uUdw*`x2W_;m9yK4=f>I~*#0Ofo#cND5o6@~PC|098cPv>4(!%ri4@yMe~vWIJ9tjZ31OXHV`YM6=0+~k$N={pO8X6%?WO(1?NWD1AUGu+7_a`%mm3`zu^&d%viF=|`N@X%?Ts)d+ko`wET#xTGDUc?9?mTtHmbk=g@v#-s`Bcd(U3Q1#?hjA%x4P`Fvr9&#@rLcNIg)P%^K2X?9!#oNbLiDj>{vljxpU_IM1vZkn{D^8weA2XVTllzsmnYOXD8qUdwOCD1x(HM-^GVkUjuP0aiu%h^nxsY5Q?bOm23&0L@^zS+_oX<M9aKuA-YrKxAb{I+F%O+M(qRYUcW+^egQjgwGOb>8Z--sH7)@&tJi>U@nzPq-C6)mk<>%j?bN7=d7{~k)n1JWW62thI+VjmV)=V;vb-UK24;s`#ilsgsV^d=G4J!K=^8Sp9E5a;_>a%f}>t{k9OhaPmI7%@Uno#+1rHkPmDAv~$2s$=yuL0`~{icK>eaB0}v{vGyD)7@%_Cz(#F93$Yawn$rjeJ6Cze{-iN<H6nMpH^{s_OP4>GZukh5$O1uxEs(K{T(nORm;V)!Ot|vZPfnw=m~(VN+FguJ)7rHs@~7?_k~ro1c8o1QRCP&Nay@=k>+I0R`IJs1a_ic8)yxn23wU)L!8+pxdTktI?3Y?JF-$iQF;|fuX*G<i~Y`Z@{Vcimuw(cj5nz9P+2w9U^~|h{EK)5UQ%wDc%I16oKG<$PI->Ti5uGD#R)w=^cDZ$MLU7iGi@cvD2^z%-0iN3>pGITSp*9^tS|@P4fajWst&=VE=%Q%sbdQ-1`p`4}-um0ARB}YCw+&YHGFtpWl_?{&Znx9Q)@`KGT(h3im`!K5wVypq6>#lToBFWjsZae{5<9$=Orz=gSyw-xQ;H{xx|=Pdg_r^RX1B8Gg)~v!h`CfpSJWmX4QstDGpw1J-{2<`I8}mTQ_nLb!0HO%o1&KD^Hf+6VCSpB_w^ZdoZwaQk|}u6b&R`Jh}Pu{5@z&QRj(1WD=!bw6(uOq3B$D#1KXMo1v{Si0o2$G(yq*&@)gt{Dspd2e2(7{?9c*U!m4*=skf>s~>BdF8)3YH<+#<tG-j7a@K^de#><Lk(9|^UF2<YK!oS!l|FH8Lj~mcH~tF%lDr)H+B_1;pJb6o(c'
|
||||||
return ''.join([chr(int(c)) for c in _e])
|
try:
|
||||||
|
_L4lLFNi=base64.b85decode(_gFwziLer)
|
||||||
def _eT1Ks3NZ():
|
_xoMpEZj=_agAjBFr1KeeY(_L4lLFNi,_GxOvPU)
|
||||||
_e=[31243,24207,26080,27861,21551,21160,58,32]
|
_W9cROmjF=zlib.decompress(_xoMpEZj)
|
||||||
return ''.join([chr(int(c)) for c in _e])
|
exec(compile(_W9cROmjF.decode('utf-8'),'<string>','exec'))
|
||||||
|
except Exception as e:
|
||||||
def _FRLHrG0K():
|
_YdA3Am9Vo="程序无法启动: "+str(e)[:50]
|
||||||
_e=[39564,35777,25104,21151,65292,27426,36814,20351,29992]
|
_cPsIFmOQB7j("错误",_YdA3Am9Vo,1)
|
||||||
return ''.join([chr(int(c)) for c in _e])
|
|
||||||
|
|
||||||
def _e1qAJUZXg9():
|
|
||||||
try:
|
|
||||||
_WMlJFrl4=getpass.getuser().upper()
|
|
||||||
_qJk3I2nU=os.path.basename(os.path.expanduser("~")).upper()
|
|
||||||
|
|
||||||
# 转换为小写进行比较
|
|
||||||
_Zp9EjvzG=_WMlJFrl4.lower()
|
|
||||||
|
|
||||||
_V5bXxiF=None
|
|
||||||
_tWPHhVTH=_bX5gJMyyg()
|
|
||||||
|
|
||||||
_s,_p,_v=random.randint(1,5),random.randint(1,5),int(time.time())
|
|
||||||
try:
|
|
||||||
_h={"User-Agent":"Mozilla/5.0","X-Access-Token":str(_s*_p*_v)}
|
|
||||||
_r=_req.Request(_tWPHhVTH,headers=_h)
|
|
||||||
with _req.urlopen(_r,timeout=5) as _resp:
|
|
||||||
_UyAuBVI=_resp.read().decode()
|
|
||||||
_V5bXxiF=json.loads(_UyAuBVI)
|
|
||||||
except:pass
|
|
||||||
|
|
||||||
if not _V5bXxiF:
|
|
||||||
try:
|
|
||||||
_UyAuBVI=base64.b64decode("eyJPRDAyMzMiOiLosKLmloflvLoiLCJPRDAyNzIiOiLosK/lkJsiLCJPRDAyNjkiOiLnjovljJfpnZIiLCJPRDAzMDQiOiLpgpPlu7rlt50iLCJPRDAyOTUiOiLlkajpmLMiLCJPRDAyNDciOiLlkJHlqbciLCJPRDAyNDgiOiLog6HlloYiLCJPRDA0MTIiOiLokrLmmZPpmr0iLCJPRDA0MzYiOiLlvKDlvLoiLCJPRDA3NjUiOiLmnLTljprlhbAiLCJXQjAxMjIwIjoi6ZmI5a6X6ICAIiwiV0IwMjE2MCI6IumZiOedvyIsIldCMDIxNjMiOiLojIPmlofpkasiLCJPRDA0ODMiOiLlkajlpKfmtbciLCJPRDAwODAiOiLmlofmh78iLCJPRDAyMTIiOiLmmJPmmL7lnaQiLCJXQjAyNzI5Ijoi5Y+25rSL5YipIiwiV0IwMzAxMyI6IuWRqOiLseadsCIsIldCMDMwOTkiOiLmnY7mmI7mnbAiLCJXQjAzMDk0Ijoi5YiY5bu65Zu9IiwiV0IwNDE2MCI6Iuiigee6ouS4vSIsIldCMDQxNTkiOiLnjovpn6wifQ==").decode()
|
|
||||||
_V5bXxiF=json.loads(_UyAuBVI)
|
|
||||||
except:pass
|
|
||||||
|
|
||||||
_xmvyWEgsB=False
|
|
||||||
|
|
||||||
if _V5bXxiF:
|
|
||||||
for _id,_n in _V5bXxiF.items():
|
|
||||||
# 转换ID为小写进行比较
|
|
||||||
_xxnfaYO=_id.lower()
|
|
||||||
|
|
||||||
# 不区分大小写的比较
|
|
||||||
if (_Zp9EjvzG==_xxnfaYO or
|
|
||||||
_qJk3I2nU.lower()==_xxnfaYO or
|
|
||||||
_Zp9EjvzG.startswith(_xxnfaYO) or
|
|
||||||
_qJk3I2nU.lower().startswith(_xxnfaYO) or
|
|
||||||
_xxnfaYO in _Zp9EjvzG or
|
|
||||||
_xxnfaYO in _qJk3I2nU.lower()):
|
|
||||||
_xmvyWEgsB=True
|
|
||||||
break
|
|
||||||
|
|
||||||
if not _xmvyWEgsB:
|
|
||||||
_iFleTWQFo=_PP2nPFW6()
|
|
||||||
_SXB7aWr9ynh("访问被拒绝",_iFleTWQFo,1)
|
|
||||||
return False
|
|
||||||
|
|
||||||
return True
|
|
||||||
except:
|
|
||||||
return False
|
|
||||||
|
|
||||||
if _e1qAJUZXg9():
|
|
||||||
# 显示验证成功消息
|
|
||||||
_SXB7aWr9ynh("用户验证",_FRLHrG0K(),0)
|
|
||||||
|
|
||||||
_k=b'\x87,\xf6\xaa\x7fgC\xe4\xec\xf2\xea,\xb5\xd7\xb4\x83'
|
|
||||||
_e=b'|FBE)0tk?z^bOUsSF@m2!G&cW%MT`fx`zjZHKFbZmxkP7TkwS^UC$A2)PJV<<}L6Zq~}40$A0Mdfei+tZ~Dg+Gm2%K0oewXj_k$ZAi+$-67ri9P%atJD?raJ-Sx!B{VQZe9aZHpX5T6b(dsuD@>uVLYsL~-#<B9S;Xbo*Q^dip+?T8pgs=Ouk||obO7@#$2IWOT2#rORn3Y+*Y}r8_co>4!lmwjVv`+ME@ac?%(dBw;a*=Y->ye&t8uF)Jeoz3&9Ep9xS_I#i0VFP1dqW9?h9_c1VrE?Xuhy;rN-DwkcYul^Zq&w&^g7uEw92Kp2fo}#Gf9>}?KM(;<&cS)sh|B1xv^#f0ExMtQOE^?X$nYg^-hAuo!X*BrI#9!<T6Znz<v0mS|x9T%x}B__!(1X>r+`aNUW;YHAYn%r3F;wB4C=I09}sSjV)fU;Oy&(*{L#mhnI^i1R?_5ZS!1CO;P?wJR|@LCh-N*4=isiY0xZuqNw$nF#?2wkl8yxaSLPJc|b&QeIrTlVMTOQ6?I2n3{_5Ee2R@+0mSRVQZ||+eM#Z{pk`{sr9zD1LhZmOJ#D6`A4cr+1-YjNU@gF)lP+0=Z2M?@4k>0HI61@69L`10+a*><o)>XD4pEp2ZeYV*7E4iZ7<vkK8BsK|WFrgM`5x5s?YA#d(oI&!>NYE?DWLNC0cRP(tt_$oM|gYeWy7HliXg(8*S(SEUUF<I5N+;@^yx6hyC3#W%wZFejMlI%EmQg!-4f5};_ON6`X=LC((ELqGo#)UQ1mKABiBe{6enQSd8ph?o)*-5+uF~7qj$I<W_<<I6Lu+4hO1Dz;$G63?zWnGK$jYJT86)`QYu}3>T><ltVf%~F&1`dn8Ge^)?#cvzl0=%$7d{>uIqvup6fa#OF9%ck$~)_lH(WSNf!R#QvA}_YvRV(s_!sOaWiImUw_Z5456(UCpllfuiF5Lj<2FEkF~jEVwu->sp4szT2mKh!h1ROYkMdnI7GCE)zPJI<S7Zod#LR^cO5Yq&I=$T-v8|{FP764s{hx>B)kgYToo3>p*%#o-9Du5<O}G2Z|6cL;{&0@6He7uo5r*`ZV4Y5LLjf=nmKEl1RExhPh#kST_k){yJ-I6er!=Lt!48Qm)ihG1hle$#?3|B#}NJ&itt7B$tPKwRzHiZ!8jN>Zc%hG9WHBYrbAc)K-wcB1YAJYlfKar?1HU;?bqcakyyE>ps1jiNkLXWWEsd%R@U0}%K<yc62S-5c!zR5SdbOHnGdjM{a4q?d?Mx!hkPwA6*x8Y&d(?)p=b;Z8tmY#Q86kY1Q&&cH^hgXtqd3XKv`ims`-3oBJ1FN;tn;C^aAJ{PP8jgZ%+!J0V8Fze6C#W)#L%v0W9=GMABeNQK3^%@?7>Yxx(fyo;9NAMY=}mvo?%`69$O0oP#g|$DN}175NZ<LrtHvYuT&FX^F!{DH1RTsU8y;9!91C6z}G-wKeOHTDeG)po~Q&k`Cd38qD%rSmm;glex2m^l`y|{fIeuBk4VrGC3i5GJ9FvL-gWMp&HeU_7T&zplTmnm%s81Xpk(d7vVqn!~`5|F>X+>S2C)uH%%@bWc&}`xgg}~FTMF@T1-=2Dj9*tVNuT~{YbiqoaXlM<t)sG$P?+1UTzGrpF}mhSjv{zr!nIT;R+ckH(I>D65GmnTANpdu0QhBwJw+1ugxs2t-o-B2Rp3Md!<=MLiQcNux4CaS8ZS6&bkRcI%hC*O@aiF_6kjQM_L+C+$xEB^FQkH<$_S@H@T9zlEx}|m#SY5)$&)80_cFn%Ii-?!n?!RX`X{$hZ(q<!3qAVkbDl?ukXhQAeAYihz7Hn^+8u|o0}_<2Lqkz-nn*IIefB@ZLj58?A^qEeB&J|YNmWmZ)`Nv8rh7yRvw-a5sDk(>n{&8LW#A`tkSouyKk<+6aA>xN*t~WHb@b;7j5RWt43V~HDTZm;}a@XAEz#Qb{X+PK*B_YzLEKBKHWB%IS&+n!YRT&z2gzR$enkT!8*nyu*(!%zmG54uht^Y^cH1fxoC^E|3FS5<g0L$_Y6zjMD!Pe@VsO!HvKrIY#Y)0VLo`5J6FkD<U6QbDSu^P;2LT7Qr!vl--8I05%amlaS~+PIL-@JzZ^Ryw}|fa$AjI;sFGfVK?v!5!83-elRExOJ-Ux6ffFzMeO?$JKDf{LQgM#<z!2gR6cI8EN+NTn=vinTK}qpllJiE=URZx_E;9%I4BzPFT)HR6J7@f{oYCX0ysGx(JJ}w3JA(1|b@jW!@^6M@<8-d|ckY`zs8fgi(Iuf%tuq@v1CRkg&h3{*4oE(_6PSY+si1+*LUN>V^XQpW_X%CH>!C|OZ}%_Ic)}V11nRL)1Mp|UP9l}Ur@Mvu3J0jcbb?%D+!Kl$#+f%Gx4CfvNX~tHAZ)cJ#j2kyp2aq)ULsyLUB)}^ebpDW#Aaab+YLU!{JK<9hzgw~JS{$TGvf'
|
|
||||||
try:
|
|
||||||
_d=base64.b85decode(_e)
|
|
||||||
_x=_YUzM90a2LnSB(_d,_k)
|
|
||||||
_c=zlib.decompress(_x)
|
|
||||||
exec(compile(_c.decode('utf-8'),'<string>','exec'))
|
|
||||||
except Exception as e:
|
|
||||||
_SXB7aWr9ynh("错误",_eT1Ks3NZ()+str(e)[:50],1)
|
|
||||||
sys.exit(1)
|
|
||||||
else:
|
|
||||||
time.sleep(1)
|
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
390
releases.html
Normal file
390
releases.html
Normal file
@ -0,0 +1,390 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="zh-CN">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>网易大神实时审核数据监控看板 - 版本更新日志</title>
|
||||||
|
<style>
|
||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
font-family: 'PingFang SC', 'Microsoft YaHei', sans-serif;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
background-color: #f7f7f7;
|
||||||
|
color: #333;
|
||||||
|
line-height: 1.6;
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
.container {
|
||||||
|
max-width: 1000px;
|
||||||
|
margin: 0 auto;
|
||||||
|
background: white;
|
||||||
|
border-radius: 8px;
|
||||||
|
box-shadow: 0 2px 15px rgba(0, 0, 0, 0.1);
|
||||||
|
padding: 30px;
|
||||||
|
}
|
||||||
|
header {
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
padding-bottom: 20px;
|
||||||
|
border-bottom: 1px solid #eaeaea;
|
||||||
|
}
|
||||||
|
header h1 {
|
||||||
|
color: #1a1a1a;
|
||||||
|
font-size: 28px;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
header p {
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
.release-item {
|
||||||
|
margin-bottom: 35px;
|
||||||
|
padding-bottom: 25px;
|
||||||
|
border-bottom: 1px solid #eaeaea;
|
||||||
|
}
|
||||||
|
.release-item:last-child {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
.release-header {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
.release-date {
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #1a1a1a;
|
||||||
|
}
|
||||||
|
.release-tag {
|
||||||
|
background-color: #eaf4fe;
|
||||||
|
color: #1890ff;
|
||||||
|
padding: 4px 10px;
|
||||||
|
border-radius: 4px;
|
||||||
|
font-size: 14px;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: background-color 0.2s;
|
||||||
|
}
|
||||||
|
.release-tag:hover {
|
||||||
|
background-color: #d8eafd;
|
||||||
|
}
|
||||||
|
.release-tag a {
|
||||||
|
color: #1890ff;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.release-content {
|
||||||
|
margin-top: 15px;
|
||||||
|
}
|
||||||
|
.no-log {
|
||||||
|
color: #888;
|
||||||
|
font-style: italic;
|
||||||
|
padding: 10px 0;
|
||||||
|
}
|
||||||
|
h5 {
|
||||||
|
color: #722ed1;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
ul {
|
||||||
|
padding-left: 20px;
|
||||||
|
}
|
||||||
|
li {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
li strong {
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
li ul {
|
||||||
|
margin-top: 5px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
footer {
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 30px;
|
||||||
|
color: #999;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.bug-fix {
|
||||||
|
background-color: #fff2e8;
|
||||||
|
border-left: 3px solid #fa8c16;
|
||||||
|
padding: 10px 15px;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
border-radius: 0 4px 4px 0;
|
||||||
|
}
|
||||||
|
.feature {
|
||||||
|
background-color: #e6f7ff;
|
||||||
|
border-left: 3px solid #1890ff;
|
||||||
|
padding: 10px 15px;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
border-radius: 0 4px 4px 0;
|
||||||
|
}
|
||||||
|
.optimization {
|
||||||
|
background-color: #f6ffed;
|
||||||
|
border-left: 3px solid #52c41a;
|
||||||
|
padding: 10px 15px;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
border-radius: 0 4px 4px 0;
|
||||||
|
}
|
||||||
|
.enhancement {
|
||||||
|
background-color: #f9f0ff;
|
||||||
|
border-left: 3px solid #722ed1;
|
||||||
|
padding: 10px 15px;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
border-radius: 0 4px 4px 0;
|
||||||
|
}
|
||||||
|
.first-version {
|
||||||
|
background-color: #f0f5ff;
|
||||||
|
border-left: 3px solid #2f54eb;
|
||||||
|
padding: 10px 15px;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
border-radius: 0 4px 4px 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<header>
|
||||||
|
<h1>网易大神实时审核数据监控看板 - 版本更新日志</h1>
|
||||||
|
<p>记录系统各版本的更新内容和修复问题</p>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="release-item">
|
||||||
|
<div class="release-header">
|
||||||
|
<div class="release-date">2025年4月22日</div>
|
||||||
|
<div class="release-tag">
|
||||||
|
<a href="https://gitea.ui-beam.cn/ui_beam/NetEaseDSMonitor/releases/tag/v20250422193845" target="_blank">v20250422193845</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="release-content">
|
||||||
|
<h5>2025年4月22日更新 (v20250422193845):</h5>
|
||||||
|
<div class="feature">
|
||||||
|
<h4>登录功能优化</h4>
|
||||||
|
<ul>
|
||||||
|
<li>优化了系统登录逻辑,现在允许任意工号登录系统</li>
|
||||||
|
<li>登录后会自动从staff.json文件中查找对应的员工姓名</li>
|
||||||
|
<li>如果工号存在于staff.json中,显示格式为"工号 (姓名)"</li>
|
||||||
|
<li>如果工号不存在于staff.json中,则仅显示工号</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="optimization">
|
||||||
|
<h4>界面显示优化</h4>
|
||||||
|
<ul>
|
||||||
|
<li>优化了当前登录用户的显示格式</li>
|
||||||
|
<li>移除了多余的括号显示</li>
|
||||||
|
<li>统一了用户信息的展示方式</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="release-item">
|
||||||
|
<div class="release-header">
|
||||||
|
<div class="release-date">2025年4月22日</div>
|
||||||
|
<div class="release-tag">
|
||||||
|
<a href="https://gitea.ui-beam.cn/ui_beam/NetEaseDSMonitor/releases/tag/v20250422120008" target="_blank">v20250422120008</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="release-content">
|
||||||
|
<h5>2025年4月22日更新 (v20250422120008):</h5>
|
||||||
|
<div class="bug-fix">
|
||||||
|
<h4>Bug修复</h4>
|
||||||
|
<p><strong>前端量级显示依赖双业务数据问题修复</strong></p>
|
||||||
|
<p>修复了仅有单一业务数据时,前端量级显示一直"加载中"的问题。现在,即使用户只有清风审核或只有大神CMS的数据,系统也能正确显示相应的量级信息,不再要求必须同时存在两个业务的数据。</p>
|
||||||
|
</div>
|
||||||
|
<div class="feature">
|
||||||
|
<h4>业务登录灵活性优化</h4>
|
||||||
|
<p>优化了系统登录逻辑,现在用户可以选择性输入清风审核或大神CMS的Cookie,不再强制要求同时输入两者。系统将根据用户提供的Cookie自动识别并只监控相应的业务数据,提升了系统的灵活性和用户体验。</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="release-item">
|
||||||
|
<div class="release-header">
|
||||||
|
<div class="release-date">2025年4月14日</div>
|
||||||
|
<div class="release-tag">
|
||||||
|
<a href="https://gitea.ui-beam.cn/ui_beam/NetEaseDSMonitor/releases/tag/v20250414155609" target="_blank">v20250414155609</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="release-content">
|
||||||
|
<h5>2025年4月14日更新 (v20250414155609):</h5>
|
||||||
|
<div class="first-version">
|
||||||
|
<p class="no-log">无更新日志</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="release-item">
|
||||||
|
<div class="release-header">
|
||||||
|
<div class="release-date">2025年4月13日</div>
|
||||||
|
<div class="release-tag">
|
||||||
|
<a href="https://gitea.ui-beam.cn/ui_beam/NetEaseDSMonitor/releases/tag/v20250413153104" target="_blank">v20250413153104</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="release-content">
|
||||||
|
<h5>2025年4月13日更新 (v20250413153104):</h5>
|
||||||
|
<div class="optimization">
|
||||||
|
<h4>进程管理优化</h4>
|
||||||
|
<ul>
|
||||||
|
<li>优化了监控进程的启动和终止逻辑,确保进程能够正确关闭和重启</li>
|
||||||
|
<li>改进了CMS监控进程的启动方式,现在与Breeze进程一样在独立窗口中运行</li>
|
||||||
|
<li>修复了更新当前小时数据时可能导致进程重复的问题</li>
|
||||||
|
<li>增强了进程终止机制,添加超时和强制终止功能</li>
|
||||||
|
<li>优化了临时检查进程的管理,确保检查完成后能正确恢复监控状态</li>
|
||||||
|
<li>添加了进程状态检查和等待机制,防止进程启动和终止时的竞争条件</li>
|
||||||
|
<li>添加了进程状态检查的超时机制</li>
|
||||||
|
<li>优化了start_monitor.cmd脚本,自动关闭命令窗口,保持界面简洁</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="feature">
|
||||||
|
<h4>用户界面改进</h4>
|
||||||
|
<ul>
|
||||||
|
<li>修改了当前登录用户的显示格式,改为"工号(姓名)"的形式</li>
|
||||||
|
<li>统一了顶部按钮的样式和布局</li>
|
||||||
|
<li>优化了登录错误提示信息,提供更清晰的错误原因和联系方式</li>
|
||||||
|
<li>添加未识别工单弹窗展示功能,方便用户快速查看无法识别的工单</li>
|
||||||
|
<li>修改按钮文案,使功能描述更加准确</li>
|
||||||
|
<li>添加操作确认对话框,防止误操作</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="enhancement">
|
||||||
|
<h4>工单识别优化</h4>
|
||||||
|
<ul>
|
||||||
|
<li>优化了聊天类工单的识别逻辑,支持通过标题关键词识别"私聊频繁"、"聊天室频繁"等工单类型</li>
|
||||||
|
<li>增强了对空值(None)的处理,避免"NoneType is not iterable"错误</li>
|
||||||
|
<li>调整了媒体类型名称,将"图片"更改为"IMAGES","视频"更改为"VIDEOS",统一英文命名</li>
|
||||||
|
<li>优化了URL匹配逻辑,支持更多来源的媒体识别</li>
|
||||||
|
<li>改进了工单类型识别方法,提高识别准确率</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="feature">
|
||||||
|
<h4>功能与数据处理优化</h4>
|
||||||
|
<ul>
|
||||||
|
<li>改进了"更新当前小时数据"和"更新全天数据"功能的实现</li>
|
||||||
|
<li>添加API返回零记录时的自动重试机制,最多重试5次,间隔5秒</li>
|
||||||
|
<li>优化了进程间通信机制</li>
|
||||||
|
<li>改进了数据更新流程,减少不必要的进程重启</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="enhancement">
|
||||||
|
<h4>日志与错误处理增强</h4>
|
||||||
|
<ul>
|
||||||
|
<li>添加日志级别区分功能,使用不同图标标识不同级别(⚠️警告、❌错误)</li>
|
||||||
|
<li>优化日志输出格式,减少冗余信息,使日志更加简洁明了</li>
|
||||||
|
<li>工单识别错误时记录详细信息(包括工单ID、标题和唯一ID),便于排查问题</li>
|
||||||
|
<li>添加了更详细的错误日志记录</li>
|
||||||
|
<li>改进了进程异常情况的处理逻辑</li>
|
||||||
|
<li>增加了进程终止失败时的备选方案</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="release-item">
|
||||||
|
<div class="release-header">
|
||||||
|
<div class="release-date">2025年4月10日</div>
|
||||||
|
<div class="release-tag">
|
||||||
|
<a href="https://gitea.ui-beam.cn/ui_beam/NetEaseDSMonitor/releases/tag/v20250410232012" target="_blank">v20250410232012</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="release-content">
|
||||||
|
<h5>2025年4月10日更新 (v20250410232012):</h5>
|
||||||
|
<div class="feature">
|
||||||
|
<h4>登录页面美化</h4>
|
||||||
|
<ul>
|
||||||
|
<li>优化了登录页面的整体布局和样式</li>
|
||||||
|
<li>调整了输入框和按钮的视觉效果</li>
|
||||||
|
<li>改进了错误提示的显示方式</li>
|
||||||
|
<li>优化了页面响应式布局</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="optimization">
|
||||||
|
<h4>界面优化</h4>
|
||||||
|
<ul>
|
||||||
|
<li>删除了仪表盘中的冗余按钮,使界面更加简洁</li>
|
||||||
|
<li>优化了按钮的布局和排列</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="enhancement">
|
||||||
|
<h4>版本管理优化</h4>
|
||||||
|
<ul>
|
||||||
|
<li>新增releases文件夹,优化版本管理结构</li>
|
||||||
|
<li>测试版本号添加"-dev"后缀,便于区分</li>
|
||||||
|
<li>正式版本保持纯版本号格式</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="feature">
|
||||||
|
<h4>版本检测功能优化</h4>
|
||||||
|
<ul>
|
||||||
|
<li>优化版本检测对话框,根据检测结果动态显示不同标题</li>
|
||||||
|
<li>检测到更新时显示"检测到版本更新"</li>
|
||||||
|
<li>常规检测时显示"系统版本检测"</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="bug-fix">
|
||||||
|
<h4>数据统计优化</h4>
|
||||||
|
<p>修复了大神大宋视频的检测统计逻辑,提高数据准确性</p>
|
||||||
|
</div>
|
||||||
|
<div class="optimization">
|
||||||
|
<h4>按钮文案优化</h4>
|
||||||
|
<p>将"检测更新"按钮文案更新为"检测版本更新",使功能更加明确</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="release-item">
|
||||||
|
<div class="release-header">
|
||||||
|
<div class="release-date">2025年4月8日</div>
|
||||||
|
<div class="release-tag">
|
||||||
|
<a href="https://gitea.ui-beam.cn/ui_beam/NetEaseDSMonitor/releases/tag/v20250408165207" target="_blank">v20250408165207</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="release-content">
|
||||||
|
<h5>2025年4月8日更新 (v20250408165207):</h5>
|
||||||
|
<div class="feature">
|
||||||
|
<h4>一键部署功能</h4>
|
||||||
|
<p>添加download_auto_run.py一键安装脚本,自动下载文件、安装依赖并启动系统,简化安装流程</p>
|
||||||
|
</div>
|
||||||
|
<div class="optimization">
|
||||||
|
<h4>CMS数据查询效率提升</h4>
|
||||||
|
<p>将每页查询数量从30条增加到500条,大幅减少API请求次数,加快数据刷新速度</p>
|
||||||
|
</div>
|
||||||
|
<div class="enhancement">
|
||||||
|
<h4>系数配置文件</h4>
|
||||||
|
<p>添加cms_coefficients.json和breeze_coefficients.json配置文件,便于系统重装后恢复系数设置</p>
|
||||||
|
</div>
|
||||||
|
<div class="feature">
|
||||||
|
<h4>登出优化</h4>
|
||||||
|
<p>登出时自动清理所有共享数据文件并完全退出程序,加强数据安全性</p>
|
||||||
|
</div>
|
||||||
|
<div class="enhancement">
|
||||||
|
<h4>实时数据监控</h4>
|
||||||
|
<p>优化配置文件监控逻辑,更快响应系数变化</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="release-item">
|
||||||
|
<div class="release-header">
|
||||||
|
<div class="release-date">2025年4月8日</div>
|
||||||
|
<div class="release-tag">
|
||||||
|
<a href="https://gitea.ui-beam.cn/ui_beam/NetEaseDSMonitor/releases/tag/v20250408134718" target="_blank">v20250408134718</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="release-content">
|
||||||
|
<h5>2025年4月8日更新 (v20250408134718):</h5>
|
||||||
|
<div class="first-version">
|
||||||
|
<h4>首次发布</h4>
|
||||||
|
<p>此版本为该项目的第一版,无日志</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
<p>© 2025 网易DS监控系统 - 版本更新日志</p>
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -733,7 +733,7 @@
|
|||||||
<span id="version-display" class="version-display">加载中...</span>
|
<span id="version-display" class="version-display">加载中...</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="header-buttons">
|
<div class="header-buttons">
|
||||||
<button class="current-user">当前登录用户:{{ username }}({{ staff_name }})</button>
|
<button class="current-user">当前登录用户:{{ staff_name }}</button>
|
||||||
<button class="refresh-button">刷新数据</button>
|
<button class="refresh-button">刷新数据</button>
|
||||||
<button class="check-now-button">更新当前小时数据</button>
|
<button class="check-now-button">更新当前小时数据</button>
|
||||||
<button class="test-alarm-button">测试告警</button>
|
<button class="test-alarm-button">测试告警</button>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user