From c73a750e60479eca32e7d7321fc6a5eb80eaf43a Mon Sep 17 00:00:00 2001 From: Jeason <1710884619@qq.com> Date: Thu, 2 Apr 2026 16:57:01 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=9F=A5=E8=AF=86=E5=BA=93=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=88=86=E7=A7=9F=E6=88=B7=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加按钮始终可见(不再在租户列表视图隐藏) - 在租户详情视图添加时,自动关联当前租户,弹窗标题显示租户名 - 在租户列表视图添加时,弹窗显示租户选择器让用户选择目标租户 - 分类选项统一添加 OTA升级 --- data/tsp_assistant.db | Bin 217088 -> 217088 bytes src/web/static/js/modules/knowledge.js | 45 ++++++++++++++++++------- src/web/templates/dashboard.html | 11 ++++-- 3 files changed, 41 insertions(+), 15 deletions(-) diff --git a/data/tsp_assistant.db b/data/tsp_assistant.db index 33745c56b3377841a8b680f4fa0879b43d436ee8..46b1d5fae61535b6d126a9d6fa60b9a1d3540063 100644 GIT binary patch delta 4609 zcmcgw3v3hj8NWNnN&JXSc#MWbA<%)sBjz5yv(KX|h^f;$C}nMdwPO$B-|`%%>nolv;D+>QA=i_KK51brG+{9^ z28J=>1ViE^Q-&MMaI%DeJEVmq3#pjygR7f$+|^?As9JJQS(#GAuocMH9J?fGLn-=ea9xt-)^0-cbaF1t z29~A?hDuB2Xc!Y|N+y7_mZ0}gwIsDs7FcXX$z558X8V7*4&AEc4sSyLgz6;xV@1Y= z34WN9+5Vo*XjPq33w7S)*Lu-^+)--oA)0%TGeNVeF;BY!L7r&I-x={f^W=qVQQOeHk4--xH@sDMT}hI0}j4FI2&$> zg+|`D^~=|{yl;Cw76=N10X|w2Z?EU0ZvjGVnB<%LV!<}J74IAq8vTN^JvQApbG=)z zjmAQL!IQAm5R_DpUghh3Lf4cq)cAqTp;pH`CqOhlFd};Dd6#)wXPxJpKNfMtqCQnqV18V&Krcid zAMcdhqtfolc7>Zwyt7$owh8?n-suo7d%*%<=eI)61y^e<(l2?I$ZEWAQfM3Dzc(g& zhGPLqtt=J`2KkO|a6LZcjzwSR8|vW;)FM&Xxf1j@34N2G85GZtTDUPRM%!k3odS20 z?`Rf1O;F+4@UBFm!@ayW0<_`-Zoc{ZP)N|Zpn;QzkIBqXPyU=rymok_+FWAeU2ftx z*!9)Y!IA9BJm>-pyN{^s*nMb|S(8AjKT&b` z*r{_>XV+Uw2+nTB3cEf-l__nR%-NHts(?i66QOZ06l1GgKiboopb7WXT5NTK6{ojhTmM^vfvm)+ zA@7C1bi8~f!KlReBA-J3e?_qoE&3g<<6Uh32GfQIW1~n5#TtyXnWa+0RQ1Uvp+<%! zh~xoR{qmAfk|h~q3VLEmC}ARTa|&81L7yvSaRa;1UBW_{4HS!$IF&+IWI~&0l1!tI zC(u=o)@_zXwxn+9053rX5q%xZhfdwfyq>&b?Nx25W?Vz6{p#(iw^dK&{v`L=oL}U; zn0+VvxN=5WmG#%G^NLRu4n+>ug5{%KXdyD#(Qy!~K90gyN-jzmy40nC5x%ViHXl$c28JEfj4a%&>=~b$|17p$}$4Gb}R~ z<$+9S(nQl~PxdF#_~Lw zb$^5NXi>5m3q=`l%EX$|A@0in#pkp>yCjsLSSIbj-X)UbesfFa(fpPRG+SV)iyx;9q_l`v}u! zVFwV+iEJV3Hg*6e%&%fawP#eYh!xbM^B1u~zO@D>KJM@DVP#f%_mL(;XFE)pFkQh+ zDFdWUE3x>9(={+o#oe~}<&osn6}lmh+kyVkNjS*Q7Z~i**50?c&$Q%{~K~& B$x8qL delta 1469 zcmZwFTTC2P90u??XJ?o0vdk<{BDb)+(3)Pj%x&jFCER?l70QE^U`@)cSfjPX6w*XY zV7F<5+!olvkroR`u{4HD-8KVVDj0o{WU&|xzO_l2*(H6znt&Q=>MS7X7Edw{^FQA? z$@%4L8jNZhjOt8^YQQkep?%5PXX!d1fQH)@H)_q0T-OFz2Dw45%a%t_CB5s71VsRH zBQ(z>Hw?e(ro1te4@op>1-K_`+Th)oHRchx$&ZoIM1+|$`OQCgqisHu#dR8w#+)V2 zgP4$DbT|RBl0ZPSMsNt_M1qfyhX6_FlnLac2s21D(`+_PXR?$)(W0DT21_~uCx$U{ zn*5kF5yNDec54@bUP}R0vfc^+*xRTxR_;kNtYVE|9_JCIqwIAr^tbKseN4h9oELP}p?2j;_W*b=W%pZ$KwRS*+ z4iU)K1NNc;JBTsYxw2s_cGOiEO3v89Z=TxYHq>he7MvFtVJ8`33jLn0d9SkmEGj<; zo&Ym?lm_A<$D>X=h||*)FG@RcgWPuroV%naHQ;pFJPH1OsK=Kud`Ww*A18WWjgQ8# z-b&Zu{D|&yMK%Y;!-}AW1>1ndYy}#1m6c`#0j^9u}YgPO21ul*ST+`~^*5E`>z~@n~ht4Wr zxl}Z$_B1QaeQJwGarbK1sAxo)MN0E!^?D~mF??)Ej6|^v;}9vHbI?4^rrT2M&sUzQDX*@rKUbHUZ4>07WcVgX6$Fl! zSO+JvqCiQ!xI2inpjFODfh@4RoJQ_XVLIx64p=BjXt5kx6Yu6Ml;ZJMF4R<=udV*D zrY=eo26_XgH)yoaaH8izLWq`iHiT$pjdlg1TSl0q(f;%Sd~2JQr|IsbY+bpSke6HF@E_O*!NOF~yi;Q@5&CN#=($uI+uY}n#9_hoHg0%-0ZfZM~iS#B4* z5MoaZwT;m+6onQWp_TL&yB;VN1^?N~&nMuB85~1h3-AP5^}_@?#t;91CLQj_BF`99 s+^?C>;%BbvJ@jrwMh|)N=eRHE(pq6H;EY>LRIs0huWRg#Z8m diff --git a/src/web/static/js/modules/knowledge.js b/src/web/static/js/modules/knowledge.js index e0ee71d..ff71f0e 100644 --- a/src/web/static/js/modules/knowledge.js +++ b/src/web/static/js/modules/knowledge.js @@ -20,7 +20,6 @@ Object.assign(TSPDashboard.prototype, { tenantListEl.style.display = ''; tenantDetailEl.style.display = 'none'; if (searchBar) searchBar.style.display = 'none'; - if (addBtn) addBtn.style.display = 'none'; if (uploadBtn) uploadBtn.style.display = 'none'; // 显示加载中 @@ -345,21 +344,19 @@ Object.assign(TSPDashboard.prototype, { } try { - // Task 7.3: 添加知识条目时自动设置 tenant_id - const body = { - question, - answer, - category, - confidence_score: confidence - }; + const body = { question, answer, category, confidence_score: confidence }; + // 确定 tenant_id:优先用当前租户详情视图的,否则用弹窗里的选择器 if (this.knowledgeCurrentTenantId) { body.tenant_id = this.knowledgeCurrentTenantId; + } else { + const selectEl = document.getElementById('knowledge-tenant-select'); + if (selectEl && selectEl.value) { + body.tenant_id = selectEl.value; + } } const response = await fetch('/api/knowledge', { method: 'POST', - headers: { - 'Content-Type': 'application/json' - }, + headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(body) }); @@ -368,14 +365,13 @@ Object.assign(TSPDashboard.prototype, { this.showNotification('知识添加成功', 'success'); bootstrap.Modal.getInstance(document.getElementById('addKnowledgeModal')).hide(); document.getElementById('knowledge-form').reset(); - // Task 7.3: 刷新当前视图 if (this.knowledgeCurrentTenantId) { this.loadKnowledgeTenantDetail(this.knowledgeCurrentTenantId, this.paginationConfig.currentKnowledgePage); } else { this.loadKnowledgeTenantList(); } } else { - this.showNotification('添加知识失败', 'error'); + this.showNotification('添加知识失败: ' + (data.error || ''), 'error'); } } catch (error) { console.error('添加知识失败:', error); @@ -383,6 +379,29 @@ Object.assign(TSPDashboard.prototype, { } }, + async prepareAddKnowledge() { + const titleEl = document.getElementById('addKnowledgeModalTitle'); + const selectGroup = document.getElementById('knowledge-tenant-select-group'); + if (this.knowledgeCurrentTenantId) { + // 在租户详情视图里,直接添加到当前租户 + if (titleEl) titleEl.textContent = `添加知识 — ${this.knowledgeCurrentTenantId}`; + if (selectGroup) selectGroup.style.display = 'none'; + } else { + // 在租户列表视图里,显示租户选择器 + if (titleEl) titleEl.textContent = '添加知识'; + if (selectGroup) selectGroup.style.display = ''; + // 填充租户选择器 + try { + const resp = await fetch('/api/tenants'); + const tenants = await resp.json(); + const selectEl = document.getElementById('knowledge-tenant-select'); + if (selectEl && Array.isArray(tenants)) { + selectEl.innerHTML = tenants.map(t => ``).join(''); + } + } catch (e) { console.warn('加载租户列表失败:', e); } + } + }, + async uploadFile() { const fileInput = document.getElementById('file-input'); const processMethod = document.getElementById('process-method').value; diff --git a/src/web/templates/dashboard.html b/src/web/templates/dashboard.html index 02514f6..2c0fb65 100644 --- a/src/web/templates/dashboard.html +++ b/src/web/templates/dashboard.html @@ -900,7 +900,7 @@ -