From 4101a46ce35ac2e395c9d0b843cfb7a0c20d7142 Mon Sep 17 00:00:00 2001 From: zstar <65890619+zstar1003@users.noreply.github.com> Date: Wed, 9 Apr 2025 23:58:17 +0800 Subject: [PATCH] =?UTF-8?q?feat(management):=20=E7=AE=A1=E7=90=86=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E6=9B=B4=E6=96=B0=E8=87=B3v0.1.2=E7=89=88=E6=9C=AC?= =?UTF-8?q?=EF=BC=8C=E4=BF=AE=E5=A4=8D=E8=8B=A5=E5=B9=B2=E9=97=AE=E9=A2=98?= =?UTF-8?q?=EF=BC=9A=20(#19)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1.新建用户模型配置不全问题 2.用户为空时,添加用户异常问题 3.用户配置界面点击未刷新问题 4.管理员账号密码无法修改问题 5.前后端API调用访问不畅问题 --- README.md | 9 +- assets/management.png | Bin 25912 -> 48250 bytes assets/ragflow-plus.png | Bin 0 -> 11735 bytes docker/.env | 72 +-------- docker/docker-compose.yml | 26 +++- management/.env | 5 + management/docker-compose.yml | 21 ++- management/nginx.conf | 11 ++ management/server/app.py | 53 ++++++- management/server/database.py | 18 ++- management/server/requirements.txt | 4 +- management/server/services/users/service.py | 146 +++++++++++------- management/web/.env | 6 +- management/web/.env.production | 2 +- management/web/package.json | 2 +- management/web/src/http/axios.ts | 2 +- management/web/src/pages/login/index.vue | 4 +- .../web/src/pages/user-config/index.vue | 10 ++ 18 files changed, 236 insertions(+), 155 deletions(-) create mode 100644 assets/ragflow-plus.png create mode 100644 management/.env diff --git a/README.md b/README.md index 4874d0e..c835ca2 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,7 @@ -# Ragflow-Plus + +
+ Ragflow-Plus +
## 项目介绍 @@ -11,7 +14,7 @@ Ragflow-Plus 是一个基于 Ragflow 的开源项目,主旨是在不影响 Rag 移除原登陆页用户注册的通道,搭建用户后台管理系统,可对用户进行管理,包括用户管理、团队管理、用户模型配置管理等功能。 ### 二. 文档撰写功能 -新增文档撰写全新的交互方式,支持直接导出为 Word 文档 +新增文档撰写全新的交互方式,支持直接导出为 Word 文档。 ## 使用方式 @@ -104,7 +107,7 @@ docker cp dist ragflow-server:/ragflow/web/ ## 交流群 -如果有其它需求或问题建议,可加入交流群进行讨论 +如果有其它需求或问题建议,可加入交流群进行讨论。 由于群聊超过200人,无法通过扫码加入,如需加群,加我微信zstar1003,备注"加群"即可。 diff --git a/assets/management.png b/assets/management.png index 34f42f83f01f457c5d43118631420b65ed1a21d3..ce90957920c75ca85ecdf3ae555bfc8941fe6c7d 100644 GIT binary patch literal 48250 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 uFz35R^o#vl&w(^<<7&t5z57G6;sw2_ zf}THs!ezY$0m+`J_Ljw$Xg~+N@4}*-Do_6bKfN#yo(T<$W+>#&6b z%H`+Jul&_QO8}X$i?CkY%gCj0*VR4T^)A}gNgJBGf8ctv?%CajTgtS(OoM2KW)yni zFOGV2SxSRsa2=JZX1sPpOJ>5Jk960Z|1GZa%)}FQ@+b8h0;HR4OkR=sg$&%8Ig^8pC?5tnJnCZaUB}^= z_i!@nr~8Ldt}e>^(pqmqQX7O*yPNg{cdy|tX1}hnc4D>c8|*{t(9&`k5+dQFYv!xS zb^N%vK6eiv%zM7oUghBnAn;mcU?t+kJ<~mwpDF#(7 zwWyx=&f8!_n-Ij|VK!1#{U=!h)-#6Jz^8y+oTX`gr~vxgfdd!&MI@E*tVSdiR_E{6 z{a)lwI>k6}#=AiJ*s_=ZJBU?a!Ig!R!Po%xgt$}6vKuQ?-mWZ}awM$yTS~vmx@t*y z)mJnA&?oZqymgCNxzH7RHvd94a>SLjPH*wXc3^mI#IfTiS4Idx=reTliQsA8#5 zr;BSm(%O;}j$lbt3CR2AYp~teM`?C{lQO8fV?swHfHPI!$^p3;GO^99D7fO`-+YJX zq)EcMlUDVTtj8SSju{;*mBDj&Yqx_SQ8rNsI*ieaVuyoM z6oP1-hv-vRc)@6X8>{Q|s7_w>TR4u&w0SP`(xKAinHTO08d6wABPP`9vuQLqd zlm;_^c=%Y zVicY_#w@p5RwWfBIJaD){$`C-!DtY z;?ovL-E0EfAB*4yfpgqxwv4M2({!v3R720S6$u7I@sD)h(B#7wdtFKu*s|>gIvOTC z|JttmyS%e=vGs@yP zZ6hfNLZT-dyO{{2XaW0Wx9}+|OY;q?)4FfH#d2WBw)oiR)|`$5`pPd1N-#J-;oAA| z0`aMS#x_`CEO4c65E~oTAU;@ztb1onPg$G?*sEW%H$qHy8e(-rfQKWf#*#;a{-wbd z1bKf1w735GbB-7FpU(+C6M*s3Yl1tE|7dUp2sH5m-;f(HU}_Q&5I*~JV%>l3Uq374 zKOji&Td^BgpaPKaX9QP!`^l(TJjYFI=|g^e*?`DD5^Dm2|G&3D@Y(MZ&}^Y4jN5IU z`9!q;y{|< zVa3~J?3dM-fcf6AR+q49+iU;1P#cN%iD*v2Rt2fAxRwpVD7c83tal zW&x{JMk8D$sGi|9+=7S0lhaK9q1l<)jxqCVSGoMK#qwj^C^Cj7FH z*H+zn-PG+>9JHh&#hIwHM5a6Z)u<|Lx4PDngOZ9wxfr5ripHV1+|?qw!x4)qTin%i z^twrrdBeW7wC&<1n*sd^`sz8>8w;O(+MwNxzp_5|2zt5mxj2+_9IoYwh$g1jO&IAl zriM($;0r_~hwS>in)cQxF70z6p<&2~-^v{H`83!3?VvHy-n;(yg>g+$91B}LTtN}s z6Odc1bbwUou5^%{gVQ9Wz_^zwho4^JGI^BkY;&zXvpaFmv@dawjBJ)Ql&1?^K2 zdLCoQO3{{l%b9sn9l z6ItnR3#VtuqOQW;xpmq3EZFhnSrLCWhiB+nCCxt82c4to)vT~ z^mB)Y;^4%n0J+q5{oW;r2UkwQn=cJxWS43C0~f@P1_yy5Lu(qJ$i>Y)|H=#t80{!2 z%#4u{#9=5JnDfsz5yq2>wYRc+6cxaAJ%P5=iC8U1T{!2VPW!MCQ^Z0_Cav@(*0(BS zt$O_+_=yAQANlqplo`kecscKb=M9+=hkxz{ym3xd(6tlx^c zuoJwM=HoVT2+|QsSB8mnQrgtc*C_UM8UC%KXrE9;DqSnU@WVGKvAVh?L7m5@AY$7o zeY?J|fdNTCMZ8Gl%RxXe{gFI57r3J}_8X41Wp3_|lQZQ%hVv6Seua}JU~zi&Fa!F# zTx@x+oF)3m#m^RjZygBbD-FlT76cx({iB*gzP~q6d4cE%+kO?eMhOfDr8H>;(j-e{ zvXf`(Pmwio$_--3^^qhu;@jplba>F*%G*Db@Pk~b_mGDs=d1a`+Ql9l>4jb~W!?+~ z^?*);sLY+IXpEX#TADO&-u3#bvfl5*DC13nwZ8dXbug;m;_c9hJ9L$7wCASC^vX`5 z*a%yw>ik~<8b2RitQ`xKN70T?_iLfVCx};#Sh?-hFm0}$B!mrKM}@aXo@ns$7S^pL zP`A`yI%XXak;+@}l|6}E$jxj&IhzRe{Sf0a^QwKh-+3P8%bJ@B)s+(ei$DsIzzA==MAyz^B;4fMuW@l$N5zz*G>xm~&$F1}T%p6|1yu1U z@s%L*=#trMHtiahf^D&D2)LMrE)KO#f*;%(D2!!#| zC6ZwUjRn8J=1`n9d7I>>z^?=@Dm%ov{Z-G2EqU_pRh!_a2V4%ka?mR#Enr(8gI@)- zY=pdDa!*pwiqH@i-By&~M*a+!Q(Py~Nw@1$ zQ4CamWoTf(J>zM$+sJU$%32JS#)48CZae8>5xUs=Lmzsv#UOaNOm=ua>(~36T@e%q zm(?m#klo;MK9S;}dyFKYHni$Sg(Z0=y_x6^Lk!z8-70n~`2dn0MjfOW-my__$ZvJl_}xakXMps~7a zi@WzrhbylrRkx~&rR&PT+T;X0U+@n}e7(OqG18%eTNXp@UgkT8F|Nf0yRV##$o5P6 zEV-Y5_&GfSaach+4fdU5JwPCLuiq$8=uc)}HBg%4O#_MkY#CLc3dXjiOX>Qn(z;Ojv ztFDDIJe2a_6`DY!K2MXCH}t+&m%c8j;0qL{)$Op0fyDRpWI&dTBtc`b6;}!C!*^s~ zoBTIQD}Q;)&v*JS)<=J+!@UqHl9^R~J@b93q=N_e3YF{NxmEzuP!afo3iOW9J4KA*%>HZ4^4_6?u9_9o~3)dk@i14*cU zj0qi;VhYDPf5*|nk?fo~VjV1b*&lqki`)oKcf=(zlO&XV@1g~_hN@IL$h8xWi zj=>4~GNdGDVXy!e#)v*eEuS6MIz}B;mF<=={9}@<09bHA2{*y9Jpw_GHS`3 zsC1OCToHfV{%WCM=*FuQ?j#AiM^%1t<-^l$_)uDoo9UrIg6v!aw0C(DwHFi77u#F5 z4(C4H&Zc2#(Z1U&dp}mzmrICfGvnQIxkAuR2RjIug@+ODSBK`q8FTIHlEFTUP3t%k zl7!RK?X^f;?dvv>Mt@n=H;p?hlb46zbkB18?q1knbTzZU!|S!u~$?6Y)biBI{n5m5yD(}M!w4%mpr$3z&d^l z#Zxb#QJVb7)uMWlj!+!@(45DpFf+BGFxKPe`ym^(lV!RpTjIUQuF+_GJUCBzQ&TI^=VXg6dV z(n$>=JV|K^^5vVp%tZBh2X23q+|{>wp_tgAnTA z_CwEeIOx-tzllj0Av{F-f+aFc-NcaW61fDHroHFg@6QCCA+LZ0`#1e{o9@bo(;3Xg9Cl-D3N}7a14q zBXO{WR?&6`Xo}Kg?vdh_HDDCj`QXV#i?SEEixG6tLDwo^<>EvADbE;hh@5vuu?Jn$ zmf}AS=x-3@SqcqK3D-#*0S*h@@h|=5FcM@QDA6XLEXBhGZGPZijq8*N5n z;auDHotn_okHT&`BQ^g@6V5Na&0I?cD;p~D^lr)r&GoE{l905ted6CZ>dI2Dr^w{a z(??*Kp|=q?cN8z;3Ql>EJ~bNc6+`@zfifCZzHiz@ShwXK#tTSx;TpPB{%N6u!;X$;@H&IXsox*rm2 zB?aBdQ&OZ>sD@x?kHzPC_Xcf56cXmO$5AqHzh4%%xgMfU9GHWZ27qCvHaf8u9{YTq zI#ZaiCcPIzk0%hGFTfaowmb}|*1qT!wkag&xhVR!{Aug6NYkH@yunXU=}ltIoO)KO z908EdgTdeg9W=JQ8zR{vQF2w-r16?d&#Sl4mv&ZxDY88Ko#y)+MxWiCF%4crcG2?g z^bf>Sp*O1^v4VDUG*umcL`zT3>~2*)1U7EC_Zf_rgbZ-?$B#^tlw^%JsQ*WF%1R*t z&_<-t6~M9bk`l#iSt;I@4mMXDnX~omN85O}VORp-2C44;rk6{QK=t4o_#xy^9(E~~uII{1nvQI2eQVqb7n zpu;@#x+<;H0Mh>dy$s93hJ<_4jq4AsyCS-Qg_2vu?m1O3Z;0;X>A_M zQfFvzZq|h$g)8wZ6iH&1o-({C7}2!+I=11a1Tk&-`^3`Ee`sfeXa2xqSfIjsBisGs zu8o8k!uYN$s&?Baik0T@VTq-BH>BL)=g}}#1oSjQ%)VoVCfB&F3Bbej3`tzZZ0-{i zdaA;Ou%RbUL4s>X2ucG3bbc)uQSM|)jOOPyo}hM1nivDAI=bVT&`ahMpQ~g(0sC=z z0NzvNoWOga#<5TsJydamR)+iCVr=UlT2jk0`lgqw48c9$PIN5*i-!CKCDR-ZW9)tc`2 z0hMni4a6a#KtuvBE3_b*tBiG)cxZSrdS&rZb|#=g$kj<#Pc5oLmU=^0mkRs)OTq>k-R zm$Ah!nzr}RdNxqehQ2j0*^#IELRvPYNuf(VnF76CR`8j^s_n+Xan;u94rMX&-NYZl zY5uV{e>ABnHou!@FPb}I4fj63RGDPA4OkL~xxBKgh<{%Wam;_)GFDum7-j~veKh5^ zS5fNwZw;k?e1-6}XH3)h_i_EBW3G&}`?@JxnG1ULq;#pBALjwk-`c)`h*k_dN2Qy; zr8RyJHlcw7AxpEg8J=YcPOLiy`%rNB|A^h40Y5&^5= z66HKs1X&nqBxQQHOK?dEmv-5~gVFvwEoxl=|4z6V(b+fBdU|t8?9TvT0np7q85^qn zJ}DWZ&azvKCudTNAuBvX2uwnCVfVh8&-j3tjW?>Afmj7qG?4RjVMEzfAQ4r9f#}xt zL}r`&5ckqkPH*yUDoq<;A?LKUjq3iD1&;M&vtB)XB~759{xdrxkq9Dz8`?YycdW~M z&_Mo#K%nDYON9`A`~3eK3jJ?URJs^G0t-+QT#e2Y&t8*Cf1gh&`U9pr{-m$N0(gfb z{NG}$|1BE(-@1kW4g+=)#ve#$Au|r$Ljy>`<8&Y+gC>8VhA%lS&2<(xgLO7Wx%dW@ z>|btm4qjH-+S=JM`j+75lQR#d@zXE46_jj3JNMxkTG5#1$7M+Wd*4^w^h7qF#!XY-wzhi zE_Y~uApr)HJn77$+t%v*hMi-7X_mQpSLWo z_DdYDb0Yvyo<2P|7(LtLUrx5Vx@t>zOgt`leL7JWJW^OG0$hQ>k>Wq4>eYZRu#ndB zYfamEyX?JdBe-(Jnt2g7n;Q5NkE16xe96;{+yKW&l~Sl3l;-6Icl@b3d|>Ies|q9#DX_+JXxYo_ybA=xb7vHxnPVG!{VN@YLt& z_2yb;%C(N;{7@Fkdv8H=%=oGVH}L4JjZ3YA2Q6JxwC{v&E(Li7bZ7QAO@4oI;JJCBF;};r0FXQ?agG1^f+`jY?O`ao`6mgCVh0u_`!$7k9dGMPeXuvBk2!g` z+`RNBAUK6cGc|l2hVkQblQf67S#(Q%P`%qO$H$Dd1;9U?AKh{6wv>y(E}yqp69Qp# zv(S(*&#tUY+ZDVWS@xrJ6kWenIZ#orB!Y<+Mgzb0bN=CarPdO!>la&(ncyV0@r1vN0iB zRRQRVa^{Sw{;~DQu9k}~x;pbiawoXU z<99yX5qNw6m%8v=Jh=XSd|otNsed^eEYciuXC*$Fc*%Wf`;gzC@OK}p2D1_7otd2D z4Co`2{jq17Nq*G_Id>s8jbdA@*nxA*sK%hC7vR-4)_Zc8@Tq6lPZGcg z^ztNwhKR}p!U);Y@S|WExZqxj@2lnj%#7*9X8mZZFloo(Pb%}5*G>1``+6C#d*bQc zm+;H*qVT|9W2Z5~)^^@NtW@cETcd_?7ge+tsWi?Rx?Vzc$(J^jZ`^Nn18;pP6Jf1x z-Pl8isJ@eT9sC01VBt?=PJJS)7-1PQjxtx7aF_={wo7%wUsueNtwqc2} zwYjHjw}Cx(=A3;*=F*ih5QqQiKCXk!5bcOGzsf9vU#$TRu(li*d~`gH5pL#TJqhOP zzW%-Gn(BUdp64e&c5PEko-y8^k@2HlD~a`G*;w;7iHQvp&;p;EH9yK(ko-y4zQAbh zA2r0Stw-V}1=gKxUiks>3n>GQvSPx@M!K-5B#WJGlv0DfwYre1ZY38LWrxn zvE$oCT4h8-dP_-`EXA^oQsRc~RiONuOHQiMqv?+Y1v~sAraOOs&{2$HooukTpQN%H zCUPn9`cNAeRAo+A74$q!10r~YwrXoH7OtNPlU{tb)#>5Q)w-F^``)^|OxRM1$k4h< ziOZiuT46e&Q&58gAhZAsS_Y04lb*Be?bUapd4|7>K;^2G5@W0BKk4*iA9U_2Vg6X^ z-U$jeb(;xf>6Swz{z3-DZr??~8?{}xo~dZ;juNcbb7&w%Z0Z=BzUcA;2-eON+kQ`r zG>{ArNp+#Yl;iU)28czvV@a?H)|NzM;iuOrjqpw96#w&0S9Oi5C}n1Uy6dRd#`J4Q zQTTnCcLU|}bD35tbGBe0UBkV9V0*_|#@z-;StG_DkFVMgUt{MxIvgwbPROVT z%6f2ZjG#FIx5=gzCYnE4Y&XE@*-jG=!QULdYN5KmDB5BSTqZ&7r#y0fCUx2Cv}uws zyUOdl*O+WcC(hTg^>T-aEBJixl7e?^YAEaPN7qLbdr9Y1s3w{HCF^$24A%lt46_g& z7!C)nFf+HR;<@S)U94Xx(N2mPS9HmJK{I?NG^n7KtGy_ks>XtxQ>;-B@1Dz5|F7}S=hkln19rBy(R|&0!a_pY zX6i!sqb&c80EP_M2ngb9Y>uq7%@;)QQ34R7pqzpRH?%Cg1pW;K@Lw?Kc+pUytv%k6 zl_`2AG+l3PYr6)tCh!iBh%w#rANZDv6q^#{yINT*Foh_uH8pC&r=13I(x$^0kNf|I zT_1}pj2}_`yPnSye9djA#>LN%sX0S3m}62)ajdg-NZgga5H~W|)6j6XFh(B!81*O~ zA8q|Dl@{z?TlYu+y)Hs06s(bUbZT;Qr-8`hH40c7htz-g6ZjIO-~LZSmH!9rK*%-m YTZSpyyqZyb{X_y~d3A8*3yXLE1E9+PBme*a literal 25912 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%0Ag1;+9qBWj)Kghj{Da0>-Lhc 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 0: + # 查询最早创建的tenant配置 + query_earliest_tenant = """ + SELECT id, llm_id, embd_id, asr_id, img2txt_id, rerank_id, tts_id, parser_ids, credit + FROM tenant + WHERE create_time = (SELECT MIN(create_time) FROM tenant) + LIMIT 1 + """ + cursor.execute(query_earliest_tenant) + earliest_tenant = cursor.fetchone() + + # 查询最早创建的用户ID + query_earliest_user = """ + SELECT id FROM user + WHERE create_time = (SELECT MIN(create_time) FROM user) + LIMIT 1 + """ + cursor.execute(query_earliest_user) + earliest_user = cursor.fetchone() + + # 查询最早用户的所有tenant_llm配置 + query_earliest_user_tenant_llms = """ + SELECT llm_factory, model_type, llm_name, api_key, api_base, max_tokens, used_tokens + FROM tenant_llm + WHERE tenant_id = %s + """ + cursor.execute(query_earliest_user_tenant_llms, (earliest_user['id'],)) + earliest_user_tenant_llms = cursor.fetchall() # 开始插入 user_id = generate_uuid() @@ -169,13 +184,23 @@ def create_user(user_data): %s, %s, %s ) """ - tenant_data = ( - user_id, create_time, current_date, create_time, current_date, username + "'s Kingdom", - None, str(earliest_tenant['llm_id']), str(earliest_tenant['embd_id']), - str(earliest_tenant['asr_id']), str(earliest_tenant['img2txt_id']), - str(earliest_tenant['rerank_id']), str(earliest_tenant['tts_id']), - str(earliest_tenant['parser_ids']), str(earliest_tenant['credit']), 1 - ) + + if user_count > 0: + # 如果有现有用户,复制其模型配置 + tenant_data = ( + user_id, create_time, current_date, create_time, current_date, username + "'s Kingdom", + None, str(earliest_tenant['llm_id']), str(earliest_tenant['embd_id']), + str(earliest_tenant['asr_id']), str(earliest_tenant['img2txt_id']), + str(earliest_tenant['rerank_id']), str(earliest_tenant['tts_id']), + str(earliest_tenant['parser_ids']), str(earliest_tenant['credit']), 1 + ) + else: + # 如果是第一个用户,模型ID使用空字符串 + tenant_data = ( + user_id, create_time, current_date, create_time, current_date, username + "'s Kingdom", + None, '', '', '', '', '', '', + '', "1000", 1 + ) cursor.execute(tenant_insert_query, tenant_data) # 插入用户租户关系表(owner角色) @@ -194,39 +219,44 @@ def create_user(user_data): ) cursor.execute(user_tenant_insert_owner_query, user_tenant_data_owner) - # 插入用户租户关系表(normal角色) - user_tenant_insert_normal_query = """ - INSERT INTO user_tenant ( - id, create_time, create_date, update_time, update_date, user_id, - tenant_id, role, invited_by, status - ) VALUES ( - %s, %s, %s, %s, %s, %s, - %s, %s, %s, %s - ) - """ - user_tenant_data_normal = ( - generate_uuid(), create_time, current_date, create_time, current_date, user_id, - earliest_tenant['id'], "normal", earliest_tenant['id'], 1 - ) - cursor.execute(user_tenant_insert_normal_query, user_tenant_data_normal) + # 只有在存在其他用户时,才加入最早用户的团队 + if user_count > 0: + # 插入用户租户关系表(normal角色) + user_tenant_insert_normal_query = """ + INSERT INTO user_tenant ( + id, create_time, create_date, update_time, update_date, user_id, + tenant_id, role, invited_by, status + ) VALUES ( + %s, %s, %s, %s, %s, %s, + %s, %s, %s, %s + ) + """ + user_tenant_data_normal = ( + generate_uuid(), create_time, current_date, create_time, current_date, user_id, + earliest_tenant['id'], "normal", earliest_tenant['id'], 1 + ) + cursor.execute(user_tenant_insert_normal_query, user_tenant_data_normal) - # 插入租户LLM配置表 - tenant_llm_insert_query = """ - INSERT INTO tenant_llm ( - create_time, create_date, update_time, update_date, tenant_id, - llm_factory, model_type, llm_name, api_key, api_base, max_tokens, used_tokens - ) VALUES ( - %s, %s, %s, %s, %s, - %s, %s, %s, %s, %s, %s, %s - ) - """ - tenant_llm_data = ( - create_time, current_date, create_time, current_date, user_id, - str(earliest_tenant_llm['llm_factory']), str(earliest_tenant_llm['model_type']), str(earliest_tenant_llm['llm_name']), - str(earliest_tenant_llm['api_key']), str(earliest_tenant_llm['api_base']), str(earliest_tenant_llm['max_tokens']), 0 - ) - cursor.execute(tenant_llm_insert_query, tenant_llm_data) - + # 为新用户复制最早用户的所有tenant_llm配置 + tenant_llm_insert_query = """ + INSERT INTO tenant_llm ( + create_time, create_date, update_time, update_date, tenant_id, + llm_factory, model_type, llm_name, api_key, api_base, max_tokens, used_tokens + ) VALUES ( + %s, %s, %s, %s, %s, + %s, %s, %s, %s, %s, %s, %s + ) + """ + + # 遍历最早用户的所有tenant_llm配置并复制给新用户 + for tenant_llm in earliest_user_tenant_llms: + tenant_llm_data = ( + create_time, current_date, create_time, current_date, user_id, + str(tenant_llm['llm_factory']), str(tenant_llm['model_type']), str(tenant_llm['llm_name']), + str(tenant_llm['api_key']), str(tenant_llm['api_base']), str(tenant_llm['max_tokens']), 0 + ) + cursor.execute(tenant_llm_insert_query, tenant_llm_data) + conn.commit() cursor.close() conn.close() diff --git a/management/web/.env b/management/web/.env index 4d97a03..f06f271 100644 --- a/management/web/.env +++ b/management/web/.env @@ -1,7 +1,9 @@ -# 所有环境的环境变量(命名必须以 VITE_ 开头) - ## 项目标题 VITE_APP_TITLE = Ragflow Plus ## 路由模式 hash 或 html5 VITE_ROUTER_HISTORY = hash + +# 默认登录凭据 +VITE_DEFAULT_USERNAME= +VITE_DEFAULT_PASSWORD= diff --git a/management/web/.env.production b/management/web/.env.production index 7e59a62..ffed50e 100644 --- a/management/web/.env.production +++ b/management/web/.env.production @@ -1,7 +1,7 @@ # 生产环境的环境变量(命名必须以 VITE_ 开头) ## 后端接口地址(如果解决跨域问题采用 CORS 就需要写绝对路径) -VITE_BASE_URL = http://localhost:5000 +VITE_BASE_URL = "" ## 打包构建静态资源公共路径(例如部署到 https://un-pany.github.io/v3-admin-vite/ 域名下就需要填写 /v3-admin-vite/) VITE_PUBLIC_PATH = /v3-admin-vite/ diff --git a/management/web/package.json b/management/web/package.json index 86b5289..50f8091 100644 --- a/management/web/package.json +++ b/management/web/package.json @@ -7,7 +7,7 @@ "repository": "https://github.com/un-pany/v3-admin-vite", "scripts": { "dev": "vite", - "build:staging": "vue-tsc && vite build --mode staging", + "build:staging": "vue-tsc && vite build --mode production", "build": "vue-tsc && vite build", "preview": "vite preview", "lint": "eslint . --fix", diff --git a/management/web/src/http/axios.ts b/management/web/src/http/axios.ts index a186324..8970ba5 100644 --- a/management/web/src/http/axios.ts +++ b/management/web/src/http/axios.ts @@ -55,7 +55,7 @@ function createInstance() { const message = get(error, "response.data.message") switch (status) { case 400: - error.message = "请求错误" + error.message = "账号密码不正确" break case 401: // Token 过期时 diff --git a/management/web/src/pages/login/index.vue b/management/web/src/pages/login/index.vue index c73bbbf..c572c4a 100644 --- a/management/web/src/pages/login/index.vue +++ b/management/web/src/pages/login/index.vue @@ -28,8 +28,8 @@ const loading = ref(false) /** 登录表单数据 */ const loginFormData: LoginRequestData = reactive({ - username: "admin", - password: "12345678", + username: import.meta.env.VITE_DEFAULT_USERNAME || "admin", + password: import.meta.env.VITE_DEFAULT_PASSWORD || "12345678", code: "" }) diff --git a/management/web/src/pages/user-config/index.vue b/management/web/src/pages/user-config/index.vue index 2577949..97cd423 100644 --- a/management/web/src/pages/user-config/index.vue +++ b/management/web/src/pages/user-config/index.vue @@ -99,6 +99,16 @@ function handleSelectionChange(selection: TableData[]) { // 监听分页参数的变化 watch([() => paginationData.currentPage, () => paginationData.pageSize], getTableData, { immediate: true }) + +// 确保页面挂载和激活时获取数据 +onMounted(() => { + getTableData() +}) + +// 当从其他页面切换回来时刷新数据 +onActivated(() => { + getTableData() +})