Skip to content

✨ feat(ai-providers): add homepage quick-link icon to provider base url - #507

Open
nasamio wants to merge 2 commits into
seakee:mainfrom
nasamio:feat/provider-homepage-link
Open

✨ feat(ai-providers): add homepage quick-link icon to provider base url#507
nasamio wants to merge 2 commits into
seakee:mainfrom
nasamio:feat/provider-homepage-link

Conversation

@nasamio

@nasamio nasamio commented Aug 11, 2026

Copy link
Copy Markdown

Summary

AI 提供商页的地址(baseUrl)前面新增一个外部链接图标,点击即可在新标签页打开该提供商的主站,无需复制地址或使用网址收藏夹。Closes #480

Scope

  • apps/web 前端:AI 提供商列表页(ProviderTable)的地址单元格

Changes

  1. 新增工具函数 resolveProviderHomepageProviderTable/homepage.ts):从 baseUrl 推导主站域名
    • https://sharedchat.cc/v1https://sharedchat.cc(取 origin,去路径)
    • 无协议地址自动补 https://(如 sharedchat.cc/v1https://sharedchat.cc
    • 空 / 非法地址返回 null,不渲染图标
  2. ProviderTable 地址单元格:baseUrl 前渲染外部链接图标(IconExternalLink),target="_blank" rel="noopener noreferrer";点击 stopPropagation,不触发行详情抽屉
  3. 新增 i18n key ai_providers.open_homepage(简中 / 繁中 / en)

User Impact

用户可直接从提供商列表一键打开对应主站(如签到页、统计页),无需复制地址或维护收藏夹。地址无效时不显示图标,不影响现有交互。

Compatibility / Runtime Notes

纯前端改动,无 API、配置结构或数据存储变更;不依赖 issue 中提到的"可配置主站链接"字段(需扩展配置结构并跨 CPA 存储,留作后续功能,当前按"未配置时默认访问地址域名"实现)。

Data / Security Notes

无数据处理变更。链接使用 rel="noopener noreferrer" 防止新页面反向引用;仅基于配置中已有的 baseUrl 推导,不引入新数据源。

Risk / Rollback

低风险:改动局限于地址单元格的展示层,图标可独立移除;不触发行点击(详情抽屉)、编辑、删除、启停等现有交互。

Verification

  • 新增 homepage.test.ts 纯函数单测:路径剥离、端口 / IP、无协议补全、非法地址
  • 新增 ProviderTable.test.tsx 组件测试:图标链接渲染与 href/target/rel 断言、空 / 非法 baseUrl 不渲染
  • npm run type-checknpm run lint 通过
  • 全量 npm test 通过(唯一失败为既有 flaky 的 demoPersistIsolation.test.ts,单独运行通过,与本次改动无关)
  • demo 模式浏览器实测:各提供商行图标渲染正确;点击后新标签页打开推导的主站(https://gateway.example.com/v1https://gateway.example.com),原页面不跳转、不打开详情抽屉

Screenshots / Recordings

无(demo 模式浏览器验证已通过,可自行在 AI 提供商页查看效果)。

Docs

无需文档变更。

Related

@nasamio

nasamio commented Aug 12, 2026

Copy link
Copy Markdown
Author

你好,这是我在该仓库的首次贡献,PR Template 工作流需要 maintainer 批准后才能运行(我这边界面没有 Approve and run 按钮)。已按仓库 PR 模板补齐了 body 的 section(## Summary / ## Scope / ## Changes 等),方便时麻烦批准一下 workflow 运行,谢谢!

@seakee

seakee commented Aug 12, 2026

Copy link
Copy Markdown
Owner

感谢提交。这个功能方向本身没有问题,但当前 PR 整体还没有达到可合并状态,建议先把流程、范围和实现边界整理完整后,再进入下一轮代码审查。

目前主要有以下几个需要处理的问题:

  1. 请将 PR 目标分支调整为 dev,并基于最新 upstream/dev 整理分支。
    CPAMP 的功能/修复类 PR 都先合入 devmain 只接受仓库自身 dev -> main 的 promotion PR。当前直接提交到 main 不符合项目贡献流程,也因此触发了 Main Promotion CI 失败。后续请不要继续 merge main 到 feature branch,而是基于最新 upstream/dev rebase / 整理。

  2. 请按照当前 PR Template 完整填写。
    目前 PR Template CI 已经失败,主要是 Scope 没有使用模板要求的 checkbox。请同时检查 Verification、Docs 等部分,按照模板实际勾选和填写。

  3. UI 变更请补充截图或录屏。
    这个 PR 修改了 AI 提供商列表中的可见 UI 元素,因此需要提供实际截图或录屏作为审查依据。“可自行在 demo 模式查看”不能替代 PR 中的可视化变更说明。

  4. resolveProviderHomepage() 需要限制为 HTTP / HTTPS。
    当前实现会接受任意带 :// 的 scheme。这里作为“访问主站”的外部链接,只应该允许 http:https:,其他协议应直接返回 null,并补充对应测试。

  5. 需要重新明确与 [Feature]: AI 提供商页增加 “访问主站” 按钮 #480 的关系。
    [Feature]: AI 提供商页增加 “访问主站” 按钮 #480 原始需求还包含“可配置主站链接”,而当前 PR 只实现了从 baseUrl 推导主站地址的 fallback。既然这部分明确留待后续实现,那么当前 PR 不适合直接使用 Closes #480。如果 [Feature]: AI 提供商页增加 “访问主站” 按钮 #480 的范围不调整,建议改为 Refs #480 或类似表述。

目前 Frontend 的 type-check、lint、test、build 本身是能通过的,所以并不是实现方向完全不可行。主要问题是当前 PR 还比较像一个可运行的初版,尚未整理到符合项目合并标准的完成态。

请先把上述流程、PR 描述、UI 证据、URL 校验和 issue scope 一并整理完成,再进行下一轮 review。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature]: AI 提供商页增加 “访问主站” 按钮

2 participants