合并受阻
变更摘要
本 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」。


欢迎来到 openJiuwen 社区
Hey @wang_cheng_zhao , 感谢你对社区的贡献.
机器人使用手册
有关指令的使用,可以点击 此处 查看详情。开发人员可以在每个PR或Issue下方评论特定指令来触发机器人任务。


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


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 体量与改动匹配;标签修复单独成提交、不动产品行为,也干净。
可合


✅ 流水线 beeefd0dec464a4dbc63a7859435b718 执行成功。
可在 https://gitcode.com/openJiuwen/sciencediscovery/pull/143/check 查看完整构建日志。
在 PR 评论中发送 rerun 可重新触发 CI 流水线。
| 任务名称 | 子任务 | 状态 | 详情 |
|---|---|---|---|
| 代码检查 | SCA(开源合规) | PASSED | 点此跳转 |
| Anti-poison(防投毒) | PASSED | 点此跳转 | |
| CodeCheck(静态检查) | PASSED | 点此跳转 | |
| Blacklist(禁用词) | PASSED | 点此跳转 | |
| UT | host tier | PASSED | 公开日志 |
| guest tier (QEMU TCG sandbox) | PASSED | 公开日志 | |
| ST | - | PASSED | 公开日志 |
| Binary | x86_64 debug package | PASSED | binary · SHA256SUMS |
| aarch64 debug package | PASSED | binary · SHA256SUMS |


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:
http://127.0.0.1:4310/#token=<local-service-access-token>。令牌在#片段里,不会作为查询参数发给服务器。README 中英、快速开始教程中英、部署指南中英同步同一形态。仓库内不含真实令牌。/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:hostpnpm --filter @sciencediscovery/web testnode test/check-e2e-meta.mjsjourney-local-token-onboarding.spec.tsjourney-first-run(干净数据目录)E2E 总判定:PASS
#token=示例(中/英)?token=/settings/models仍停在 Connection修复前后:未给
openSystemSettings加守卫时,会话内失效旅程在点击「打开模型注册表」后找不到本地令牌输入框(界面已被带到模型注册表)。补上reachableSettingsGroup后该断言通过。Self-checklist:(请自检,在[ ]内打上x,我们将检视你的完成情况,否则会导致pr无法合入)