From c11ca2d79360a8bd27d39ffbaade5a80c5225656 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Tue, 12 Aug 2025 12:08:28 +0800 Subject: [PATCH] bugfix --- json/folder.json | 64 +++++++++++++++++++++++++++++ json/kdb.json | 2 +- json/ragquota.json | 12 ++++++ json/ragservies.json | 16 -------- models/ragquota.xlsx | Bin 0 -> 18265 bytes rag/folderinfo.py | 38 +++++++++++++++++ rag/init.py | 6 ++- wwwroot/bricks | 1 - wwwroot/conformed_delete.dspy | 6 +++ wwwroot/delete_folder_or_file.dspy | 29 +++++++++++++ wwwroot/get_folder_subs.dspy | 5 +++ wwwroot/getallfiles.dspy | 9 ++++ wwwroot/upload_file.dspy | 6 +++ wwwroot/upload_file.ui | 33 +++++++++++++++ 14 files changed, 208 insertions(+), 19 deletions(-) create mode 100644 json/folder.json create mode 100644 json/ragquota.json delete mode 100644 json/ragservies.json create mode 100644 models/ragquota.xlsx create mode 100644 rag/folderinfo.py delete mode 120000 wwwroot/bricks create mode 100644 wwwroot/conformed_delete.dspy create mode 100644 wwwroot/delete_folder_or_file.dspy create mode 100644 wwwroot/get_folder_subs.dspy create mode 100644 wwwroot/getallfiles.dspy create mode 100644 wwwroot/upload_file.dspy create mode 100644 wwwroot/upload_file.ui diff --git a/json/folder.json b/json/folder.json new file mode 100644 index 0000000..e46e768 --- /dev/null +++ b/json/folder.json @@ -0,0 +1,64 @@ +{ + "tblname": "folder", + "uitype":"tree", + "title":"目录", + "params":{ + "idField":"id", + "textField":"name", + "typeField":"filetype", + "sortby":"name", + "editable":true, + "browserfields":{ + "alter":{} + }, + "node_typeicons":{ + "pdf": "{{entire_url('/bricks/imgs/pdf.svg')}}", + "txt":"{{entire_url('/bricks/imgs/txt.svg')}}", + "docx":"{{entire_url('/bricks/imgs/docx.svg')}}", + "doc":"{{entire_url('/bricks/imgs/docx.svg')}}", + "pptx":"{{entire_url('/bricks/imgs/pptx.svg')}}", + "ppt":"{{entire_url('/bricks/imgs/pptx.svg')}}", + "xlsx":"{{entire_url('/bricks/imgs/xlsx.svg')}}", + "xls":"{{entire_url('/bricks/imgs/xlsx.svg')}}", + "epub":"{{entire_url('/bricks/imgs/epub.svg')}}", + "csv":"{{entire_url('/bricks/imgs/csv.svg')}}" + }, + "edit_exclouded_fields":["id", "fiid" ], + "get_data_url":"{{entire_url('/rag/get_folder_subs.dspy')}}", + "delete_data_url": "{{entire_url('/rag/delete_folder_or_file.dspy')}}", + "params":{ + "id":"{{params_kw.id or '' }}" + }, + "newdata_params":{ + "fiid":"{{params_kw.id or ''}}" + }, + "parentField":"parentid", + "toolbar":{ + "tools":[ + { + "name":"upload", + "label":"上传文件", + "selected_data": true, + "icon":"{{entire_url('/bricks/imgs/upload.svg')}}" + } + ] + }, + "binds":[ + { + "wid":"self", + "event":"upload", + "actiontype":"urlwidget", + "target":"PopupWindow", + "popup_options":{ + "width":"75%", + "height":"75%", + "icon":"{{entire_url('/bricks/imgs/app.png')}}", + "title":"上传文件" + }, + "options":{ + "url":"{{entire_url('/rag/upload_file.ui')}}" + } + } + ] + } +} diff --git a/json/kdb.json b/json/kdb.json index 14ba05e..36d6821 100644 --- a/json/kdb.json +++ b/json/kdb.json @@ -32,7 +32,7 @@ "title":"文件管理" }, "options":{ - "url":"{{entire_url('/filemgr/folder')}}" + "url":"{{entire_url('/rag/folder')}}" } } ] diff --git a/json/ragquota.json b/json/ragquota.json new file mode 100644 index 0000000..8017538 --- /dev/null +++ b/json/ragquota.json @@ -0,0 +1,12 @@ +{ + "tblname": "ragquota", + "title":"知识库限额", + "params":{ + "logined_userorgid":"orgid", + "browserfields":{ + "exclouded":["id", "orgid"], + "alters":{} + }, + "edit_exclouded_fields":["id", "orgid" ] + } +} diff --git a/json/ragservies.json b/json/ragservies.json deleted file mode 100644 index 8636dfa..0000000 --- a/json/ragservies.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "tblname": "ragservices", - "title":"知识库服务集", - "params":{ - "logined_userorgid":"orgid", - "sortby":"name", - "browserfields":{ - "alters":{} - }, - "edit_exclouded_fields":[], - "toolbar":{ - }, - "binds":[ - ] - } -} diff --git a/models/ragquota.xlsx b/models/ragquota.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..35a4e3aace5d118a5d36b16eafc23c100dfab218 GIT binary patch literal 18265 zcmeIaWl$XJ+AfTHaJK+~;O+!>x8M?-0KwfMxVyW%yA#~q-QC^cOtSWSvUc{`Ro~CA z>bzYwJ=4{FU-L}&?J}|wpkSy#5I|5sKtO~*@@o>ealk-8m4HJOASe)Z0Sj|m19Mv~ z1t&`b8%-KVGgE>rFc7i~AP~Uy|GWJ^db&6HjpDc zA^Wi{LT5k99fzKrSTXWKon)9q?@JZ4T)cVMqcwX^R8d5OgE5U7X2shJfv`9%&KrMR zUBmyxO2j9xR6MEL-wh)h;+IeAT^|c6$+oEb5r)Wvl4KWL0p{~w$K_zRuQ(EqU*R=H zdLengd%X*Z%~xnDyMkH7t`08A>6V;roq_T>Vm&<}>-tq?bpw7Utt1U3??K-g4@nMl z26}d*_%X^j=?O?#Y*?V8!D+~@unn{THhNU+?6024$%*a;vDW%vU7e1cThsMy)09iq zk3lZGV@M%>+d|;Z@@RWB@wv~IIxP0)ai{3UYDp?tHS)dgHfQJI$#T8wXZ-|r?s5%; zBJCu&d(;~ZM$ml*5^QB^omMY0xZPY>`YrhG`q{&2pg}bhz~L)-S^M03{NUr|-7D_S zww`N?&1{ZftzdhR`5K9j5VTi{;Z(Cyr^HJ`10+(kwQ%UMXyc?aG2nx+g2V8ZXya&L8y&5+dCmUcif>|7WHq3&HJEKb;7W5 zz0kqD@p&e8ALf@X9!}GQ_H)YgzcN9wfK<6zxm3G+m*!~lDZ-;8LJRdG-}4h0tyCD7 z2pIuNk~YzEIVh-k_g>#A>fJe&n6>$vNri4679K^%aVF8*7F)#C+hShX5^|d4!>YHv zGF8I|8Uj9J97`{$9T~<@=$MNmxMC74z-lr|I&E;~#?yG-5aRJ9X^A)_Ju zE?yHk=_F5+hdeBl!AZq|#cCfjyI0dy z_*%PH4Mf`p;EVrM$lqaztV}_Hfc63Y6#{^50NnL=zRFS3w8&;db<;9_1HJsj{E-($ zfy0DmQxTr6qo^Z<{$bqc_32AA@1#D{pnX<%@9o8gJFeE=;ZzgiY*b;= z5Ci{qCm%ZH=fn$Zq|EZEZhWHR*_z>k2$JA&znT51n>7#3(j4bxu?It7K2;I2xh5F; zvZ)lbnzjfuN*x0lMLuS@8IZYHU8Z82UR%P7BQ{_fGTMnaLWMoc{)d!&syO4%74jBh zs3;2F4|b!)O?s4*Hv2F|t4V{>26DhXA+Tkv)Z|q`OfBj$@)Lf|zvoLMI&jFyJ zORdmx(q9zM6$aEsZ@^`@N+(EPQ6Nz+X~2%AFjM-rb$a5Kw=3$!!Qa^FLGVOhN< zgnHJfmHHsIAXGiHn$a}1CE0YO)lb$MDZ1tP4#e=rWz@EfG#IM-(CCmUoAPXYkYJu^ z*Z@(2wpu3aoNG;aj|N9@$I8#BC_nPCYMP)n^}vIoIL;+X0p(UhR zlAo;-k9?|nC^Ax~*0*y6i=eZHMQtIBh6pSaW^TmyT#Aox5$~l!?=U%6)oR_iZ}CGu z>yTE8lu|ji1)mWPYwaU@!55C$f4v+Pv^!VJqaZHl5zf|*>aNs7_~<=v-?uuB520@w zjnnr&yyXWL#Hoy>Ft`qdarTua_d7cuPSMqYNl;A(%5G?!w3CthjbrY*gYYEtlYFar zg|e@sN;lkBhDN1Yj)?<`M-zE2w|M6kGc+ydl6&XQUs11Z-ssx;JJcN3u?VD?wW`Qd zg^aX^9YRBqoWH8K)KY&BH%oG;+W_5KG=UbbYgMd+DNhDDoP{{7BF{Bz;hW5K3Tzq* zusTEJ-jmdq#c*L#D8oO&&yH6(FQLwd{PZK-y>HzSQUl$R^!Omtqqqq8`gb1aoX}@pj>$)a96EPibqAoJFDhoxfNa^x}FR? z|2!%C>X&WTPnFSK&0YB1J-x9jr)$9Nyr$rvP*OP4p;KJl6Sz|XTia9H+K9h;S)`?z zw@F#Noz$&sK|l$>XL{KscCVzz9K8X=?mq=H^GzRU4&WtW0@Oa{Z^5)NGBB{Uq5bv7 z^i%VvL`j7w(*ew7?Bn~0vu;=BrHlwgg21NuqC@kgYI=bRT|JXe@0W_+T0s{oD0h%c zeR3}_d9K3tQrFUBuHm&y#?6E~#dtZ58p{NmNBYC_L*Eh|XDjP;%oe!ex@D;+MEj(()BBPHJLWD`q%N{51$hE3k z10_lwxK4p-Aynqz6WVCDq;WHV0^7?gz@J=Xy$A<0vcu{xgr*EDURbwchxs#iXyqCq zd^4k9OzPrKo4MVAE6s2XQNUgye?IG958O0T4yKC$QLvoI1vuGHP+h@D7oLc4yu40O ztX#`%Qi1h}G#qktn8G7HPg~Pccw~$YXGkdAu7PjFTHas z%IPvmGR;UF|Kv=S1I`)F6k-bkZUATon7Td!h+0Gp#gO6FT}D zk-jgu>eMfAbWta4zHZYmA2W5X!x+P{4K%Z42V3O2(7g)~sIdb<4 z?#Pt815rN7PTRYiH~fJW9X|)wJW5Gu-Z?q8DnvYW{>}9rD~Uej77nKfP_*0 zt1vMC5{BrdprxO}0P6;s=_112BgLOWf-`4(CVp_B6xml9px+o}ts=hW);IbQ2P&pQ z+ett0E!m@F;(4P0ZNb}avW7iWn2=-~=JSAk^wj&cA#MJ^tCrFR2I}o=EL=Ag*JnB& z%x1fHo}{8in$kFD%~*QUOc{+hiSTO6g`qRcTlp(=bE@kz1d~BMItlb61`;wpiLL%R zhiWinA@jyYFVMPtR^hLjA3izc8CxMp+cdA(eWz;@=vJdRNQWdNQ5#NUDXnxZtvJ<- zvE~ayPsbFomS!wj)1Q=A*^)dF5j7+otKX4Xh_SLFT$%O2_$Z#}+j@*}{tm5uOrEK& zVv|+nQd-6S`%U}MsD0Jo!J4hSbmzsMaYSqnLjb8UE>-n4J=vx~WNdgbF;(8%zU~(> z&W$z--OSMghNRM}n5rIEql|Q9_)`<J!#9I+*|{NEpF2EFZo3E|?g80mHFCG|8Ip`7N z2;q&qrTSouYG9mjb70|Xdj1Abi2o8F*Z39bPF_qwt=t3H=@%g>C6`VK4av^W%94Eb zg=?tZFjNgqMAJ$Qz3aY64MW7uN)5BCL5^~(fU!&rWpM0aqg4Kz#uNlZA!}J6sP{DP z+Atqq*ZI!9Av~PCjVmK0L?OFD;46tgUlU_n;$Ihh=WAmA>vQ=CeF%>~OW$Xk7M4Cb zd^a=c0!+wS_U}n3HSB&?*({{8HeP@e=F_`iCeq`(n7yHkDZH$tMmBI;!e-JL$tbn# zemZ*7fD?RX(mB5le^O131TNwNR+)@)uq$X5rn6iy5@>6a1wb;D1e{RZ#Yo@A-FIN5vDpO}XVjAbegI?4|q#jJ+)dyf$mK%$OSFrBj^i#p-lgpVoz{ z#VBVbqSW&mnQUeHmr3B%!O*7Bl(MuJWX7!p2eKmlB*m0A~A%;15Zvv<;~ zNx_6L@wdeM+wX7FM)y6D?00mPho8|iJBPd+ay_HU71%iZOV4J^)A(qLJhggTJbu}a zU#818W+MpjIDE8(EhYAK92Ze1gZI$z`~dt6?Y`XjC4M%p>vCx(1l$=lg;)*QRy zkU4OATjA_O>@sv3t`|y|c1xHf3Dznq(^I*=`xc~W^5wG$&6_OLEnGYFDP|hDWk_28NJhFQb^0iEB_3yls%L7&Vh!RQ?yDP8826z8*I?~2LOE4tPP>@Cd{sq0b!mu8_=aW&Kxb50>;-uDKWgpQC!Uy-%k_g z$W2VC_nhvIY>rGTDUjW}+U_gru90XEb`Ozd?o03RaaX}8Ntroi2;6=*@S(hkv}~Lw zU_&q%&Ak0K2Spk>z9i{uE%KTxwpQE==V2jX#adyyP2HYx3Y+)0Hm5&Y!>Bi?~+Ic9eURTtH1+F2;h zn2mvj>!H%oM1(8OysdUrri!vNsp&IfK67``bsb*lGqHPK4YGjmO!*)i}&-IKVT``*5dBF`o(E07Cz}*A)$v4?YJnSU&~C^L#yF8>qqHVHk)`H zI4e>NTZRO&6~H_O?rAxSFF4Pjjmva>~59lW*_^fgh4 zbkc-aS0*IL;hltJ3Wp1>=V$J*D5po>z~v|Hk@dp(bl-$T=>U5~!>JxBDZ^(TaY=!E z!B1olnl#m40_rdfgP$~X$xoiVE$g&URd2+PQ6+ zujeq`dzpyMYLmxiP&fNB7Tet6+}xx>G!r>Uq}66(i-qe3KTjH@FSaQ_4k{lrfV zV(p~{C8xM=u7h8MGOP!)TfrXp0ULVZA!K;M0T|8-S5vH0Rq{~?i-nz;!G;lIdtULif30gGSvaCj-2S(H}HzPk_ zCmlg=?21fq=4r!A)!J zbl1t(l}5fytLdJ1UXjv4AZY6{Fvi`-K$*X_cpX#@CXMq^nss4$hfC;Mv#QmSaMODw zKOgthV?7q0U&DrUY^5hGpWKYMIv=A%H_j}*59IkBFzAO$z;yB=f|oN~1Bb{7LM3|k zhQfAGcIWJQ4_uE=QLL^KBWgCdCrv5o_ARsQRpT)&r$uCf;%)tML-MRW4o<7) z_-^pxoxhCQx0NQ}xeVMjjn4Wa^;YMh&Tq1kVjQac$~Yr8r@FP^`osHSD68hvkfpVa zm&o7?vik8!y2J8~6m!V7!56?ls1ZbB@-m|goWj64Rv2;&o83zvJsvKA-WpKW^94F7wWdMuL&}_a+#Wxf7KMpI1+% zj-bmO+f9FEo}%)@t#_YgOB(XHs1XhUA>VjAEk#CZnb`+k)5by0#J7%T#Pd_2gaK=B zT%t0$I7yIYP;UNeC3J7t%nEV$O0?bJS*d~Jw7F1@P zYqdw$lHqjiAwG9aWCbCj9VSorwDlGVQ!JTPA#RpW68xF~gFTiL-PZTOBUtFjFgk-T zJl*^a`el|X83+#ZcL!9Jks48f5_|Z%!-BW-IXKzGHj9#z^WE-bA0x8*n+J1X z+s2OZveF3Q$uzM}alq6!xKp9ZKy8vf#zJSUN;ZCoi>Ir;+X@Lonxz8mHovgrpZq-V zgl9%uw17@JI#O-pRieD{>W#W0Fm+Agr&+0ywMu{e$?x{<4zAUNHl2$$UIC6uGp*s~ z;ghPdir>&i>GnbSZB*o$&7-3VzfVR6>d38kkvk>ewcaPpmdRJ zxyzKOLklcu%yBWMj-(+@5AXC)H=XR0=H7qBIM{%7Y<9CYZ{t;_COqNt#@IwPAEb$oY^AVjyukSG-(jNR=PINUNKk+U;iCCZV5N*}> zyd;4dvsz{XpZeJbmhr(QLtL;Gcn17%D}s>QdT8{7e1 zA1nm(pRv7AztxxwekVk-?D;&@iiO+|OBGNu+>YXFEZw|Yn=zW{iaS9id=;b{P5IC)$o&(*x@-L-nT} z_|VA$vj?ycoc}$*WBdn4b17MqSt(_PVy4KYu*f|P8o!Th-3pj=LFwfT@3^*Fo@PQV zAsjf(0m5(QWdPeAXpfl%TxJjY>o^&eT{Y!>_*r;0LdpX{vOKnF#`@U$!^`7K^9<6; z>KxE_q|6KOaseY7!j_^Aah^VO?4-hRRV<@@`_6iJ{RN9EVSO=c(vsMf(1qq2qdmb{lx-0Mesj`ak zcsI178TzN6nMwou%IfrBIGtB1ZV0`@zlO8-dT~=UZQDgpv7140FOXzm-l$Uk`20|~ zv9EQr@LupqYQRzPAS%ic+anCx=t~K`aecs3!%JX_m}s9jFxr&Amg{KL^G{5}Cty4Y;DkI#Zb2mkyb|~q!bPFD z6bt6h@`+=|m+VJr;v=<6-&I2kM=p)^ifNDEcbRfa2|xzL!SxAxgQedVsC5=V#c$@7 z>y^YcMLkC*ET)OSswWou;8$GlBNS|I(v~sC5?DXC_1?|F{@-Y8IQp+N{aettlUU5l z9xov1ekHX+%A4ut_yq0Jlgv8f0;Q+5Pv3J6l}e*NE50}6>@qsuV~)PT!`v{qT8Kgq z@mSuo6$*S?4Nk!>=x{}u6{CwmQyoLt3|#VN3L~3%Oz{g&K&C`kF*wUiufh>e>u?#5 zFF;KGR5+PmPpv0 z94G4fc#!7u>Ps1jABbnHO$X(N!TsKcsXpaHudw7xy~mk*oQl{U`G$B$rTlWsHd9u& zouw<&%X+$xO~J$1ws)W*g z^Aa}qmddNtpP80Iq>OFJ2Ab9GW`gPpvgo9X$pZ5`*;z5#=gwr3UL_8VcH2T9Uny=l z`1dW9_TGGZS$RsAGO~}RhicUPmESu*D!M195$UnbRj1}9<8`!2b}2vqqjI=^*!upn zLP`k-1cdsRlW1e4V{M@S+1A?F{Hx7R#ZaO&CWFF<+LnCJ!{o9KW?CG`Z#MM3yW2Yu zk_$_qcg6UVj)UPsYR_h&90BG;6cl=80GSZ{r2rVJ(YgoWu(`{omSvrptV3Qv%vRgO z?$VjtS!<%$^^W8R1~@ZFq!b0+6*&@+N?}_cMzNiamnBUu@$O8ZqaOsAA7hdB$=nKy zm65{)KDg4_M~TPDQHiH}vP-HQt$b?u6#T1%G^ok3W)DHKl#LgHe z!1}J+jf@Ewz{rFnlHfPNF|Dt2j1A#PB|f2p-Qf2l3u($HfkVgMe{loRK`!7OXcrn2 zBrmVi1K5Bk2!&WwJR%B~V}|c%JS=C*kUioJL>V}_ju&`=@$o`>@enbzj8$b%CL{V0VKa4QRjktqos*S=dxg*ab<1l{vRQ$fSE$E2qFR$^T zpPMrHeQ&m27?P7>@WsAV9>=1C1xrx&HPe#BUIu-t-BiL1t607)Q`zfMQ9jEaRbj$j zozlMi*ai!`^zF4;Qw&Q*XL5~mz4ajV`#q~@iV7^-D2i@yG*vUrA&t05Vkd4ajS(2^ zav7-Ef!ToAVVH`ld*J7smFf@1UI%zwg&N9-ps5OU2c!)T$g8)uQXPz3Pe1qkO?Wmer)J&Ovts8Rk^G5*+NqcR>rDgLe zJ+hHT%O~yffR%mF`eoN00 zqc4%%P`O2H4oZw%xG~JilM+6Buc%1371tjHga2W#Qy5~Su%Aq;d%rKa8!l3gVwiCl zjFf&c0=YHG^=+j=0Y|tj-iHiS;haHOB3J3d5XBS;xup}Kl22E>Mn4E8=Af@)8F7bd zAqLv8wb`c%7)f>$rjVd(OcL-oo^oYFiXb#4TWKuCWHk(iAlqxh4&QDY2wBR$u0lEX z@3x`h=AqNocgLtqv012%O+c-2{WeKaPnI7jt1K6dK}Pb8tzC!g+b>$9NKG!O#LNq& z-zSCGbSN6<=#D6c_?>j?Yq-;y(|ccY^e2UU?(ktk)ra;{7_-!f5Z)ZpYWH}33Rg1; zG=Ls3Lx<<&QqHf7r6L1UlTlkV(rc-fhS*oieg}pMOQa|6~a9)p`%>IOT8? zg@_#E3X>#I^Q}d2wzF&(zv3p$@?*_*D~Rz?v3tyUDnlKml~z2Pq-5_nENUd@_wN&J zYo$rK9KLbU{$st=9kg7@G`rbv)P^x>mN~Ca1biLpX#Cx)z){2zWC>4u{c2*1-H-7N zqPFP6_p?1I{W;t*X(T=ECB8&wBm>4XvGc*GxYG?EL%47r%p1E#J*v()?%!y?J$-n= zZF~HB!^~F9JOcJ~=~ymiADU$xU0%OzSsxR}KZ$^Ni?52Cfj|&~Z{gOZ_Q{_9+Kfn8 zi`(t-aj)+SXnHxhcec{!o1_&7O5U$ZcDP1I0;!YAT}gNjN(4Yy0~bk!$t!)Bc4udz z!gJuJWlD!!t!PC`NZF?^rQG&x-|P4&Zt8rhK{!KebLby$OgKUel>@)|-7+z?0$+^u zr;kdmHK&Xkis?7s?pU+cmk^%ked@^H@=m4DI2b2;%{H0QUwnY7_^Wv}GyI%(kKTZFy z&O4v*4nU~^Rp<`%Rlw0Dde#?C;4>>xgW?{j?&BiFQhdZ6>WfP?uECF;9m}yDmgFbS zLL5W*NUG^35Z`S*45Ny3mqqG!zDl;kWmITt&Ip|;nzkfRX=(Amz6cdG*h*hH;up*= z_wI$tFzCVv?%f5kKqtC^hhUuXk|GncOD)J6TIt#|s%=D}BS)%OyLMNA=x_n0tw`t$p;KB0DhKH_h0TIuC-T~)BU7>z}%QFw?R`@Ty zC%=+oDgSb6fA*eGt$BYpn1bL_nkiFSkx;z3I!+)|sidz>4L6&4Ytw_0CFc?h{=uR* zb~QS`wRxI@#_kCyx06U^B_JF57V0-sAKY1l2j9i8jV%RHPVtMScT6 z;^gB$5?^#&+X-Qx@Z6bS>(+ zcJ~*7Bgg>o9pC4$7+`$pQxH+j3N0<2* zXm#m|3Qd-^p`sj*&8zAk+|W{-tXs=kO*9mNq_|Z?=!a46qL=kjK)g(Bl>#GInRhREpNn51Rrd`XQO*N$IXm{_Cw(Bk$7+@Qrvm*kiCm1wD zO8DImpSG|P1P2&`;}57wbkABQvL_eZEW6iTM3(O+E;O&TFlHs%eu=@aooR$RAUZ-6 zsz~zzsY7q)+%#&u&!e{!Kkbj1ZvaA1aP{0#g1Wg6l zu9T95|L6cCQx2vSDVj}Mkf>xjY>$#itR8u%l_`mV9KOVBG?MOei!EUK`D@rACG$D$ zt09k?sV(nl4t>QM<^jIHapw1z+Hap)6bU2t(${nE*4w>XWj;w!x`c+4W^q11T`04) zw&EGguA6<`P7qwG8Ks;zssHqec8rwVcR?JEj-+Z^#KQ5iXmm(SZ4_N#4w%jMm5KK4 z9h}c(8G_Y(!@Rc#E_zfuK*s-5`fc%m>81fLRW=~t`7hG{OY@~fFNOW;Jfpn9qgo?{ zh#P+gqpGMb)Xb_lvsJ6-r`^*#Z4bXxbhb(lj7%<%Lk%*feczr~*%$1et)!1ID>jA7 zlqMX*`$3XCS&FaSO;hTW+$xQgL^Zg?3GTA5j5}6#I~4vcMWPNy_}O~_ z$Rc+Z+mpovvj`qN79U3KLfpG36FlAnVSbviP`0j zY&jnNgKwO&31ZM_YvdkjDd9HhBOB1$dAIjpvAv)GD&WHeLyCy0fP42cIs5ewQ|zzC zF(i!Q-J?#~{-UkV#F8$Ai+q?eZ`1?M(2IOg&mxy)@fmo;2T}(;^N5-{9S6C0`(Kp1 zo6sJ9XEA(YHsHMoP<^#>FF>I3bV2LKC+93nOSNXYXO0{){Va1I^Y=bEB4CtFYK-nR z;_OvMPMtI+qUz}Doo>zin39eVPAh4Ev{UN-@svG4?8X$8#x3a|(o^zofyGd>KPUl@ zU#a&Pvx>sdtzU51FJdN5ZoYnvQ^tI?C`f@1mLf*%t-eP4f?B`8AI~9m#EC;GEyO?( z6}DEOoEjt@QKhYK(4%+pqn;{S4?k(<9D3#PvStH1758j?9qPcNlF&{3l>Pg;Z^8W& zJ>WxYj|Nq3id&B$GLoHMe%au`AiZo|9X;sW zYE((kVJgP?!C_@5JR{$fzXg)lX9L;J%fgpk*k&^Vh_<8gEcJ(+OVT%;)9v?=X~+m6 zs4(mt_g+SHMh$}g@nWpG3#MILvYVc3)Y7Xsp;Y}SdUL^cQB*Iss`NbWD!H#sW$5my zRkowEM1ag#3mC=CrUJh&EfC;`rnxgz|Bh; zA2RWwLxos(%RED@3J)Z=SI82WNtD8%w&idMwECz`Lp-4*zSfH6oah$s|8{CCd17Eo-{x$Ble*u3eDIU^E63_;M>Fv&PcQyw-YFG+FVYI& zn?it%Mf^MO=vZ3*FXI3>=3iS%bcgx$&!#!i7J+S-Ib%L*HTE)D*u(EZvGz+(>yj+! zVR%k06EtI;zM#k!KLYE41N*e23YMreX_gIl--q*zh0N^KS*iL*nx6ZzrS1?3SnwOa zG$A?^*OQhD3PZa>(>PLf!;5Jg?u|_o`JwAoiDJc{D+F-l+S8CEV&i0B4W-3WbVDFF zTTu%rs(R0Lm||axrR_X4cAN2Q={ilG!Uk1twn)6G*TCiNWk1c78EBV&sV}XDKyH^` zQ$qpur7)=1E|K|ucsw$j@!2{lFTp0z5XEfqKx3e=I1U2$%LQ5!h)BV<9`6dl^@+M? zXpUn1E?yF$#-%rvbKj=2Y*lLWi1DeU#@oTI0#W^VK z)=k+%whD$}1Nsmy3Ge5S%pc_nh3B{r*6C1Ad$h_uzP^YweN*1RM&^dQqbrDG7Nl}| zf7`VNIsI;oxv8yR@tu3WOs&DEi@k%XE7ez`J?iA{7}saL$A1o-$CoZS6ag%6 z4CvBD`a8?(Sy&tVFVFuE#{&VmM#)KZ(V_aTfxih1xFqNGNC_-`A56oAF(+&D-L{AQ z79Azn{NgfYUyK(N&bqf8ZbLJG?%xE{_CuvmF-#OS8whodzsM|%<;cJ>8007cxnvT? z+7>Jrz2`=;7iX~cJ4QARowV0GPBGQNWZaXKZ)Cl3XBmbpm+(71^2tf;JW15%m}}M4 z>%?JS8zB0?Y~UPzRA2?}`=GiCvZUu70(o<~jk$`w)2M(Lwdc^M)^3M1ccRm}C4= zB?Bo@SfN|tG<`kp7`BcDGRChYAJZIhkgGnDOPv{Uq$7@bW{tT$um@QH?(2UBF=enX zfz1G3q(TD%`Z5{Z*2R+8>XVk3;)w0_$wOnUCS&2x_(&oZiG{_tOWh5bxI?A+2vluP!tIIkvNlgN zib}pI%*LAH!hPDfxBJ?F3(F0UNGKR?9e|m>F@A?cY(HEOlu)2OJ^t~!u-$U^h8CM? zc>UQs(tPSM;6)+GnJ3qVrW3RA$&SygLh1lj=)fiHr0D4wv$|<%coRAJ(c188Y2ZL2 zU+QCUv{)(Yvm*IT7!=&v3|qVF0P&p3altbCb1$?~MThd2%uyQ}B7cTiS#2s2`pQw- zz7&ux12xL)caKho$gLnsC}*UUvqNR7#hF<5k#nEprVgDWkKWE@nY2aPFuF_U5kT4O zTjgk#a0*;nE2d<0nNG^8F3EgT>8d*G?u=eMs(0Wjz9!6`pJG(69Fyj)$l4C38s>){ z=^f3TT+jLP6n|9?nSuBw$}{u1aZn4}XvaeCHiidsl}A7QU<>NYq-xSJEB;f6H+m_4 zSR;Ps$hHTgSsA$AZk)>2r>0{K8i#@_1=3)wXhJX_PeeozeqJajU_yf52j8urID!7> z`2&Mc11fa?{Lc}9i~eoH$E4<;#DC6@{U&|@#P$Co{*P(0KT-Z1y!nj+0Vufq1In*4oIg?i zY@q**;sdCt{sYRdcKSb2{%i;Sjq;4~k0`&Iga1VNv*+(OiYD$als`KF{{;B6S>!i> z0ntA$<5%m*pD2G;m4Bmnef)*;A2sGb5&o=v{YD_5_zU6x*1`TH{WHV;o79Hp&!6y* z`R+df|4bPF2DGF76Yv+${YoGIiSlRS={JfE<3FPON<;mL^6x?0Zww$HH#Q)ke+c3J z1o(H){qF#c9Df7&mmmKp^}jnof2S_t`WyBCxI}-F|7o{=1F-S_x(EMXteC6>IACh@ SXUvKM1PkbIW#j*O^nU 0: + return recs[0].orgid + return None + + async def get_organization_quota(self, sor, orgid): + sql = """select a.* from ragquota a, kdb b +where a.orgid = b.orgid + and b.id = ${id}$ + and ${today}$ >= a.enabled_date + and ${today}$ < a.expired_date +""" + recs = await sor.sqlExe(sql, { + 'id': self.id, + 'today': curDateTime() + }) + if len(recs) > 0: + r = recs[0] + return r.quota, r.expired_date + + + async def file_uploaded(self, request, ns, userid): + pass + + async def file_deleted(self, request, recs, userid): + pass + +## usage +# mgr = RagFileMgr(fiid) +# await mgr.add_file(request, params_kw) +# await mgr.delete_file(request, file_id) +## diff --git a/rag/init.py b/rag/init.py index cd2ad78..c521412 100644 --- a/rag/init.py +++ b/rag/init.py @@ -4,7 +4,9 @@ import aiohttp from aiohttp import ClientSession, ClientTimeout import json from .file import file_uploaded, file_deleted +from .folderinfo import RagFileMgr from appPublic.registerfunction import RegisterFunction +from filemgr.filemgr import use_module_patches async def _make_connection_request(action: str, params: dict = None) -> dict: """ @@ -152,4 +154,6 @@ def load_rag(): env.fused_search = fused_search env.list_user_files = list_user_files env.list_all_knowledge_bases = list_all_knowledge_bases - env.docs = docs \ No newline at end of file + env.docs = docs + env.RagFileMgr = RagFileMgr + diff --git a/wwwroot/bricks b/wwwroot/bricks deleted file mode 120000 index 8563a23..0000000 --- a/wwwroot/bricks +++ /dev/null @@ -1 +0,0 @@ -/d/ymq/js/bricks/dist \ No newline at end of file diff --git a/wwwroot/conformed_delete.dspy b/wwwroot/conformed_delete.dspy new file mode 100644 index 0000000..e5be3e8 --- /dev/null +++ b/wwwroot/conformed_delete.dspy @@ -0,0 +1,6 @@ +try: + filemgr = RagFilemgr() + await filemgr.del_folder(request, params_kw.id) + return UiMessage(title='delete folder', message='delete success') +except Exception as e: + return Error(title='delete folder', message='delete failed({e})') diff --git a/wwwroot/delete_folder_or_file.dspy b/wwwroot/delete_folder_or_file.dspy new file mode 100644 index 0000000..0d01dfe --- /dev/null +++ b/wwwroot/delete_folder_or_file.dspy @@ -0,0 +1,29 @@ +orgid = await get_userorgid() +dbname = get_module_dbname('filemgr') +db = DBPools() +async with db.sqlorContext(dbname) as sor: + filemgr = RagFileMgr() + if params_kw.filetype == 'folder': + has_sub = await filemgr.has_sub(sor, params_kw.id) + if has_sub: + return UiComform(title='Delete Conform', + message='This folder has subitem, are you sure to delete it?', binds=[ + { + "wid":"self", + "event":"conformed", + "actiontype":"urlwidget", + "target":"self", + "options":{ + "params":{ + "id":params_kw.id, + "filetype": params_kw.filetype + }, + url: entire_url('conformed_delete.dspy') + } + } + ]) + await filemgr._del_folder(sor, params_kw.id, ownerid) + else: + await filemgr._del_file(sor, params_kw.id, ownerid) + return UiMessage(title='delete file', message='delete success') +return Error(title='delete file', message='delete failed') diff --git a/wwwroot/get_folder_subs.dspy b/wwwroot/get_folder_subs.dspy new file mode 100644 index 0000000..d3e1b9b --- /dev/null +++ b/wwwroot/get_folder_subs.dspy @@ -0,0 +1,5 @@ +# +debug(f'{params_kw=}') +filemgr = RagFileMgr() +f = await filemgr.get_subs( params_kw.id) +return f diff --git a/wwwroot/getallfiles.dspy b/wwwroot/getallfiles.dspy new file mode 100644 index 0000000..ffb1e0e --- /dev/null +++ b/wwwroot/getallfiles.dspy @@ -0,0 +1,9 @@ +kdbid=params_kw.id +filemgr = FileMgr +ret = [] +async for f in filemgr.get_subfiles(request, params_kw): + ret.append({ + "id":f.id, + "filename":f.realpath + }) +return ret diff --git a/wwwroot/upload_file.dspy b/wwwroot/upload_file.dspy new file mode 100644 index 0000000..554feea --- /dev/null +++ b/wwwroot/upload_file.dspy @@ -0,0 +1,6 @@ +fmgr = RagFileMgr() +try: + stat = await fmgr.add_file(request, params_kw) + return UiMessage(title='Add file', message='file add success') +except Exception as e: + return UiError(title='Add file', message=f'file add failed({e})') diff --git a/wwwroot/upload_file.ui b/wwwroot/upload_file.ui new file mode 100644 index 0000000..005db6a --- /dev/null +++ b/wwwroot/upload_file.ui @@ -0,0 +1,33 @@ +{ + "widgettype":"Form", + "options":{ + "fields":[ + { + "name":"folderid", + "uitype":"hide", + "value":"{{params_kw.id}}" + }, + { + "name":"fiid", + "uitype":"hide", + "value":"{{params_kw.fiid}}" + }, + { + "name":"upfile", + "uitype":"file", + "label":"上传文件" + } + ] + }, + "binds":[ + { + "wid":"self", + "event":"submit", + "actiontype":"urlwidget", + "target":"self", + "options":{ + "url":"{{entire_url('./upload_file.dspy')}}" + } + } + ] +}