已开启
连接页给出登录 URL 示例,令牌不可用时锁在 Connection #143
连接页给出登录 URL 示例,令牌不可用时锁在 Connection #143
已开启
wang_cheng_zhao创建于 15 天前
wang_cheng_zhao成员
15 天前

What type of PR is this?

/kind bug


What does this PR do / why do we need it:

#88 / #130 合入后的跟进:启动日志已经打印 Open to sign in 链接,但 Connection 页和上手文档仍只说「去终端找」,用户看不出链接长什么样;本地令牌缺失或被拒绝时,仍可通过设置侧栏、关闭对话框或 composer 里的「打开模型注册表」离开 Connection。

本 PR:

  1. 给出 URL 示例。 Connection 页按当前页面 origin 渲染完整示例,令牌用占位符,例如 http://127.0.0.1:4310/#token=<local-service-access-token>。令牌在 # 片段里,不会作为查询参数发给服务器。README 中英、快速开始教程中英、部署指南中英同步同一形态。仓库内不含真实令牌。
  2. 令牌不可用时锁在 Connection。 无可用本地服务访问令牌、或当前令牌被 401 拒绝时:其它设置分组与 Runner 条目禁用;关闭图标和「取消并关闭」撤下;Esc、点遮罩、浏览器后退、直接打开 /settings/models 都留在本页。composer 的「尚未配置模型」提示、模型选择器和 Skill 草稿入口也会被改写回 Connection,不能再切到模型/Skills。令牌校验通过后立即恢复导航。

另:#130 把模型表单标签改为「外部模型 API Key」后,J1 / J6 / J7 三条旅程仍按旧名取控件,在 origin/main 上已失败。本 PR 用单独提交只改测试标签字符串,产品行为不变。


Which issue(s) this PR fixes:

Fixes #88 (#88)


Test Plan and Test result:What scenarios were tested, and what were the verification results(Function, performance, reliability, etc.):

被测提交:8e87c7704e9a669e519451878774bbb3f3f7c645(与本 PR head 一致)。基线 origin/main @ cee1974d463136aa611234e3f8a915a7dc57ae88。隔离本机栈端口 4380/4381,未占用默认试用端口 4310。

命令 结果
pnpm ci:ut:host PASS,13/13
pnpm --filter @sciencediscovery/web test PASS,793/793
Web typecheck PASS
node test/check-e2e-meta.mjs PASS,44 spec、0 error
固定 Playwright:journey-local-token-onboarding.spec.ts E2E:PASS,6/6(中英各 3 条)
token onboarding + J6 + J7 PASS,8
journey-first-run(干净数据目录) PASS,1

E2E 总判定:PASS

场景 预期 实际
空令牌看到完整 #token= 示例(中/英) Connection 展示当前 origin 的占位示例,无 ?token= PASS
无令牌时尝试离开 其它分组禁用,无「取消并关闭」,Esc / 遮罩 / 直接打开 /settings/models 仍停在 Connection PASS
错误令牌 一处拒绝提示,仍锁定,错误值不落盘 PASS
保存正确令牌 设置关闭,刷新仍登录,可进模型注册表 PASS
会话内令牌失效 锁定期间点击对话框背后的「打开模型注册表」仍停在 Connection;单一拒绝提示,无 Unauthorized Toast PASS
J1 / J6 / J7 按「外部模型 API Key」标签找到控件 PASS

修复前后:未给 openSystemSettings 加守卫时,会话内失效旅程在点击「打开模型注册表」后找不到本地令牌输入框(界面已被带到模型注册表)。补上 reachableSettingsGroup 后该断言通过。


Self-checklist:(请自检,在[ ]内打上x,我们将检视你的完成情况,否则会导致pr无法合入)

likedislike
合并受阻
Wwang_cheng_zhao成员
15 天前 关联了issue:[Bug]: 首次打开未配置令牌时三处同时弹出 Unauthorized 红字,本地访问令牌易与模型 API Key 混淆
atomgit-bot
atomgit-bot
15 天前 评论:

变更摘要

本 PR 是 #88 / #130 合入后的跟进修复,围绕 Connection 设置页做两件事:一是给出可照着识别的完整登录 URL 示例,二是当本地服务访问令牌缺失或被拒绝时把用户锁在 Connection 页。为此新增了 signInUrlExample、signInUrlOrigin 与 LocalTokenSettings 组件,并引入 localTokenBlocked 状态与 reachableSettingsGroup 守卫,同时补齐中英文案与相应样式,另用单独提交更新 J1/J6/J7 三条旅程的控件标签字符串。

主要改动

  • 登录 URL 示例渲染: 新增 local-access-token.ts 中的 signInUrlExample / signInUrlOrigin,并在 App.tsx 抽出 LocalTokenSettings 组件,按当前页面 origin 渲染 [INTERNAL_URL] 形式的完整示例(令牌为占位符,位于 #` 片段而非查询参数),拒绝态继续保留该示例以便恢复。
  • 令牌不可用时锁定 Connection: 在 App.tsx 新增 localTokenBlocked = !token || tokenRejected 及其 ref,并新增 reachableSettingsGroup 统一把请求的分组改写到 connection;openSystemSettings、selectSystemSettingsGroup、浏览器前进后退处理均经过该守卫,cancelSystemSettings 在锁定时改为停留在 Connection,从而关闭图标、遮罩点击、Esc 与直接打开 /settings/models 都无法离开。
  • 导航树与底部操作的锁定表现: SystemSettingsLayout 新增 locked 参数,锁定时折叠其它分类、显示 settings.tokenLockNotice 提示、禁用其它分组与 Runner 条目及「添加 Runner」按钮;SystemSettingsFooter 新增 locked 参数,用 settings.tokenLockFooter 说明文案替换「取消并关闭」,仅保留保存类操作。
  • 保存流程与令牌校验调整: 锁定且未编辑时以已存令牌作为候选重试校验,空令牌返回 settings.tokenRequired 提示;新增 tokenUsable 标记,只有令牌可用(原本可用或本次校验通过)时 saveSystemSettings 才会在 closeAfterSave 下关闭设置。
  • 文案、样式与测试标签同步: i18n/messages.ts 中英新增 settings.tokenUrlExampleTitle、settings.tokenUrlPlaceholder、settings.tokenUrlExampleHelp、settings.tokenRequired、settings.tokenLockNotice、settings.tokenLockFooter、settings.tokenLockNavHint 并改写 settings.tokenHelp;dialogs.css 增加锁定导航、token-url-example 与 system-config-footer-note 样式;journey-first-run.spec.ts、journey-model-settings.spec.ts、journey-provider-model-catalog.spec.ts 将取控件标签由「LLM API 令牌」改为「外部模型 API Key」。
likedislike
不准确?
atomgit-bot
atomgit-bot
15 天前 评论:

代码审查

✅ 未发现问题

likedislike
不准确?
openJiuwen-bot成员
15 天前 评论:

欢迎来到 openJiuwen 社区

Hey @wang_cheng_zhao , 感谢你对社区的贡献.

机器人使用手册

有关指令的使用,可以点击 此处 查看详情。开发人员可以在每个PR或Issue下方评论特定指令来触发机器人任务。

likedislike
OopenJiuwen-bot成员
15 天前 添加了label:stat/needs-squash
OopenJiuwen-bot成员
15 天前 添加了label:openJiuwen-cla/yes
openJiuwen-bot成员
15 天前 评论:

CLA 签署成功

wang_cheng_zhao, 感谢您的代码贡献。 所有的代码贡献者都已完成了 CLA 签署。 👍

likedislike
openJiuwen-bot成员
15 天前 评论:

The pipeline(pipeline number:143) is running. Please wait a moment...

likedislike
OopenJiuwen-bot成员
15 天前 添加了label:ci-running
wang_cheng_zhao成员
15 天前 评论:

AI 自动检视,仅供参考,问题都需要人工评估分析.

改动摘要

跟进 #88 / !130:三笔提交分别完成(1)Connection 页与 README / 快速开始 / 部署文档给出完整登录 URL 示例,令牌用占位符写在 #token= 片段里;(2)本地令牌缺失或 401 时把用户锁在 Connection——侧栏其它分组与 Runner 禁用、撤掉关闭/取消、Esc / 遮罩 / 回退与直接打开 /settings/models 仍停在本页,并把 composer「打开模型注册表」、模型选择器、Skill 草稿入口经同一规则改写回 Connection;(3)独立提交把 J1 / J6 / J7 里仍用旧名「LLM API 令牌」的断言改成「外部模型 API Key」。

相对 origin/main(cee1974)ahead 3、behind 0;HEAD 8e87c77。

做法是否合理

登录示例与 loadLocalAccessToken 读的 fragment 形态一致,显式避开 ?token=,占位符也不会把真实凭据渲到页面上,和安全目标对齐。

锁定把两道门(设置树的 selectSystemSettingsGroup 与 composer 等走的 openSystemSettings)都收到导出的 reachableSettingsGroup,并补了「会话内令牌失效后点对话框背后打开模型注册表仍停在 Connection」的旅程断言——这正是上笔漏掉、且仅靠 localTokenBlocked 跃迁 effect 拉不回来的那条路径。组件测(布局禁用、页脚、URL 示例、两道门源码守卫)和 E2E 体量与改动匹配;标签修复单独成提交、不动产品行为,也干净。

可合

likedislike
openJiuwen-bot成员
15 天前 评论:

✅ 流水线 beeefd0dec464a4dbc63a7859435b718 执行成功。

可在 https://gitcode.com/openJiuwen/sciencediscovery/pull/143/check 查看完整构建日志。

在 PR 评论中发送 rerun 可重新触发 CI 流水线。

任务名称子任务状态详情
代码检查SCA(开源合规)PASSED点此跳转
Anti-poison(防投毒)PASSED点此跳转
CodeCheck(静态检查)PASSED点此跳转
Blacklist(禁用词)PASSED点此跳转
UThost tierPASSED公开日志
guest tier (QEMU TCG sandbox)PASSED公开日志
ST-PASSED公开日志
Binaryx86_64 debug packagePASSEDbinary · SHA256SUMS
aarch64 debug packagePASSEDbinary · SHA256SUMS
likedislike
OopenJiuwen-bot成员
15 天前 添加了label:ci-successful
OopenJiuwen-bot成员
15 天前 删除了label:ci-running
atomgit-bot
atomgit-bot
15 天前 评论:

AtomGit AI 助手使用指南

在 PR 评论中使用命令即可触发。支持在普通评论和代码行评论中使用。

功能 命令 说明
代码审查 /ai review 检查代码质量、潜在问题、安全风险
PR 摘要 /ai summary 生成 PR 变更内容的结构化摘要
代码解释 /ai explain 解释代码变更的逻辑和意图
自由提问 @atomgit-bot <问题> 询问关于本 PR 的任何问题
帮助 /ai help 显示此帮助信息

免责声明

AI 助手可能存在误判,请结合自身判断。可以对评论点 👍 或 👎 帮助我们改进。

likedislike
不准确?