fix(web): 让 embed 模式可访问管理入口

This commit is contained in:
caoqianming 2026-08-28 13:37:15 +08:00
parent bff6125cd1
commit b6d0e34b51
3 changed files with 18 additions and 9 deletions

View File

@ -140,6 +140,17 @@ class StaticVendorTests(unittest.TestCase):
self.assertIn(":focus-visible", css)
self.assertIn("@media (max-width: 640px)", css)
def test_admin_entry_lives_in_main_conversation_panel(self) -> None:
html = DEV_HTML.read_text(encoding="utf-8")
header = html.split("<header>", 1)[1].split("</header>", 1)[0]
conversation_head = html.split('id="pane-mid"', 1)[1].split(
'id="chat-meta"', 1
)[0]
self.assertNotIn('id="hd-admin"', header)
self.assertIn('id="hd-admin"', conversation_head)
self.assertIn('href="/static/admin.html"', conversation_head)
def test_file_toolbar_keeps_hidden_toggle_and_groups_add_actions(self) -> None:
html = DEV_HTML.read_text(encoding="utf-8")
files_js = (JS_DIR / "files.js").read_text(encoding="utf-8")

View File

@ -1730,14 +1730,12 @@
header .who { display: none; }
header .brand { min-width: 0; flex-shrink: 1; }
header .title { font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* tab 行:order 让 tabs 换行到 header 末行,「管理」(order 更大)跟到 tabs 右侧
成小按钮 —— 首行只留 brand + 改密码/退出。flex-basis 70% 是换行开关:
首行剩余空间塞不下 70% → tabs 必换行;换行后 70% + 管理(~15%)同行放得下 */
/* tab 行换到 header 末行。flex-basis 70% 是换行开关:
首行剩余空间塞不下 70% → tabs 必换行。 */
.mobile-tabs { display: flex; order: 99; flex: 1 1 70%; }
.mobile-tabs button { flex: 1; }
#hd-admin { order: 100; flex-shrink: 0; padding: 5px 10px; font-size: 12px; }
#hd-chpw, #hd-logout { padding: 4px 8px; font-size: 12px; }
/* embed(企业微信免登)时 brand/改密码/退出已藏 → tabs +「管理」自然收成单行 */
/* embed(企业微信免登)时 brand/改密码/退出已藏 → tabs 自然收成单行 */
body.embed-mode header .spacer { display: none; }
/* 浮层菜单:加大触控目标(桌面 6px 高度在手机上难点准) */
@ -2132,8 +2130,6 @@
</div>
<div class="who" id="hd-who"></div>
<div class="spacer"></div>
<a id="hd-admin" href="/static/admin.html" target="_blank" rel="noopener"
title="管理后台(仅管理员)" style="display:none;">管理</a>
<button id="hd-chpw" title="修改登录密码">改密码</button>
<button id="hd-logout">退出登录</button>
<!-- 手机 tab(桌面 display:none):对话列表 / 对话 / 文件 / 软件作业 -->
@ -2218,6 +2214,8 @@
<div class="pane-head">
<span class="label">对话</span>
<span class="spacer"></span>
<a id="hd-admin" href="/static/admin.html" target="_blank" rel="noopener"
title="打开管理后台(仅管理员)" style="display:none;">管理</a>
<button id="mobile-software-results" class="small" type="button" hidden>软件结果</button>
<button id="btn-done" class="small" disabled>完成</button>
<button id="btn-task-menu" class="small dd-toggle" disabled title="更多任务操作(导出 / 清空 / 废弃 / 删除)"></button>

View File

@ -39,7 +39,7 @@ export function enterApp(initialTaskId = "") {
loadModels(); // 模型清单缓存:chat-meta 下拉 + 新建对话框 + 历史小标
loadFolderSuggestions(); // 灌 filter-wd select(modal 打开时会重拉,这里让左 pane 先有选项)
loadStorage(); // 顶栏存储用量(后台扫描快照,非实时)
loadRole(); // 拉 /v1/me,admin 才显「管理」入口(/static/admin.html)
loadRole(); // 拉 /v1/me,admin 才显对话面板的「管理」入口(/static/admin.html)
refreshProcs(); // 后台进程(bg proc):上个会话遗留的 running proc 恢复轮询/展示
initSoftwareJobs();
}
@ -53,7 +53,7 @@ function renderWho() {
}
// 当前用户身份 + 角色:/v1/me 返 {user_id, role, name, user_name, email}。
// admin → 显顶栏「管理」链接;并用服务端权威值校准顶栏用户名(platform_key 登录 / 老 token
// admin → 显对话面板「管理」链接;并用服务端权威值校准顶栏用户名(platform_key 登录 / 老 token
// 升级后,name/user_name 这一刻才到齐)。失败静默(增量功能,拉不到就维持登录时的兜底值)。
async function loadRole() {
const link = $("hd-admin");