Skip to content

feat(api): support targeted resource refresh and explicit request modes - #8046

Open
c121914yu wants to merge 6 commits into
labring:mainfrom
c121914yu:codex/api-resource-refresh-auth-unions
Open

c121914yu wants to merge 6 commits into
labring:mainfrom
c121914yu:codex/api-resource-refresh-auth-unions

Conversation

@c121914yu

@c121914yu c121914yu commented Oct 20, 2026 •

Copy link
Copy Markdown
Collaborator

保存资源协作者或权限后,原先的列表刷新会清空已加载数据并卸载权限弹窗。现在应用、知识库和 Skill 通过 ListV2 的 IDs 查询更新目标资源,保留弹窗、滚动位置及其他页缓存;取消编辑只关闭弹窗。

资源列表与局部刷新

  • Skill 和知识库 ListV2 保留 withAppCount 公共请求参数,分页与 IDs 模式均生效。管理列表及其局部刷新显式开启统计,选择器显式关闭以跳过聚合;只向非文件夹资源的 Owner 返回数量。沿用原接口默认行为:Skill 未传时统计,知识库未传时不统计。

  • 三类资源支持分页 / IDs 两种请求格式。传 IDs 时优先按 ID 查询,解析时过滤 parentId 和分页字段;单次最多 500 个 ID,保留公共筛选与权限过滤。

  • 局部刷新仅按 ID 替换实际返回的条目,未返回的 ID 保留原缓存,返回空列表时不更新缓存;列表总数、顺序和下一页 offset 不变。文件夹侧栏同步已缓存子资源,处理并发请求与过期响应。

  • 分页错误由 error 维护,IDs 后台同步错误由 refreshError 独立维护,互不覆盖;后台同步失败保留旧缓存,仍可触底加载后续页。重新初始化列表时清除旧的同步错误。

  • 移除旧 Skill list 接口并迁移调用方;应用和知识库旧 list 通过 deprecated 标记弃用,保留原接口名称。

  • 已知边界:保存请求在切换目录后才完成时,旧保存回调的局部刷新仍可能抢占新目录首屏请求;本次不调整该请求调度行为。

公共分页与鉴权合约

  • 已校验的分页参数由公共 normalizePagination 统一计算偏移;原有 parsePaginationRequest 委托该函数。主应用和 Pro 的资源列表、集合、工具、日志、成员、评估及账单等调用方同步收敛,保留业务 Schema 的默认条数与 IDs / 不分页模式。
  • offset / pageNum 使用具名 union,同时传入时优先 offset 并过滤 pageNum;pageSize 使用 Zod 默认值,各业务接口保留原有默认条数,分页调用方同步适配。
  • 知识库训练异常列表直接复用公共 pageSize / offset / pageNum 定义,默认每页 10 个集合、最多 500 个;删除原先独立的分页上限和服务端每页 20 个集合的截断。
  • 会话相关接口以应用 / Skill / 外链分支表达请求目标,分页模式嵌套在目标分支内。请求头 token 或 API Key 可与外链参数共存,仍按现有运行逻辑优先进行外链鉴权;受保护外链继续额外校验登录态。
  • 对话代理身份按 tmbId / username 分支解析,沿用 tmbId 优先级;内部 sourceType / sourceId 转换与前端类型同步调整。

OpenAPI 展示

  • union 显示语义化格式名称,统一提示“选择一种格式”,隐藏 never 字段。
  • 字段属性展示 Schema 的实际默认值;排序可选项补充说明,枚举区改为“可选值”并限制 200px 高度滚动。
  • 保留字段声明顺序,避免必填字段或字母排序拆散相关参数。

配套与验证

  • 后台同步错误隔离:Hook 的 16 个局部测试、相关 TypeScript、ESLint 和格式检查通过,覆盖隐藏分页按钮时同步失败后触底续载,以及两种错误互不覆盖。

  • 引用统计开关恢复后,6 个相关测试文件、108 个用例,以及主应用与 Pro TypeScript、ESLint 检查通过;测试验证了关闭开关时不调用统计函数,以及管理页两种查询模式均保留开启标记。

  • IDs 未返回条目保留缓存的调整:3 个相关测试文件、22 个用例及 ESLint 检查通过,覆盖部分缺失、空结果、分页位置、弹窗与并发刷新。

  • 分页计算收敛后,15 个相关测试文件、120 个用例通过;主应用与 Pro TypeScript、ESLint 和格式检查通过。

  • Pro 配套 PR: https://github.com/labring/fastgpt-pro/pull/1203 。子模块从 upstream/main 更新至该 PR 提交,主仓库合并前需与 Pro 最终合并提交对齐。

  • 40 个相关测试文件、507 个用例通过,覆盖 IDs 权限过滤、缓存/弹窗/并发刷新、分页选择及外链鉴权优先级。

  • 主应用与 Pro TypeScript 检查通过;ESLint 无错误,格式和 diff 检查通过。

  • 训练异常分页补充验证:2 个相关测试文件、56 个用例通过,覆盖默认 10 条、实际返回 21 个集合及公共分页约束的文档生成;共享包 TypeScript 检查通过。

  • Scalar 预览验证了 union 名称、默认值、字段顺序与枚举滚动;未运行全量测试。

Copilot AI balanced review requested due to automatic review settings October 20, 2026 07:57

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.

@github-actions

github-actions Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

Coverage Report

Status Category Percentage Covered / Total
🔵 Lines 53.87% 4953 / 9193
🔵 Statements 53.48% 5232 / 9783
🔵 Functions 49.94% 947 / 1896
🔵 Branches 48.34% 2598 / 5374
File CoverageNo changed files found.
Generated in workflow #4553 for commit b6de1ec by the Vitest Coverage Report Action

@github-actions

github-actions Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

✅ Admin Preview Image Ready!

ghcr.io/labring/fastgpt-pr:admin_b6de1ec2c5bbfd02f0bb5db212f8bdff3dfdf964

🕒 Time: 2026-10-20 17:28:00 (UTC+8)

@github-actions

github-actions Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

✅ Build and publish successful - Preview fastgpt Image:

ghcr.io/labring/fastgpt-pr:fastgpt_8a5c6258a3b2fb727f811670e494fc6b7c555838

🕒 Time: 2026-10-20 16:23:29 (UTC+8)

This branch has not been deployed

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants