diff --git a/docs/content/docs/backend/http-api.mdx b/docs/content/docs/backend/http-api.mdx index 4ecd23d9b..3b772ca70 100644 --- a/docs/content/docs/backend/http-api.mdx +++ b/docs/content/docs/backend/http-api.mdx @@ -18,7 +18,7 @@ description: 信封、错误码与 OpenAPI 资源展示、播放、下载、复制地址和模型输入统一消费资源访问合同,不在客户端通过 `direct=1`、`proxy=1` 或存储厂商规则选择出口。 - `POST /api/resources/access` 要求登录,请求体为 1–100 项 `{ resourceId, purpose?, variant? }`。`purpose` 支持 `display`、`copy`、`download`、`browser-process`、`provider-input`;`variant` 支持 `original`、`playback`。每项独立返回 `access` 或结构化 `error`。 -- `access.delivery` 为 `cdn`、`origin`、`platform-local` 或 `platform-proxy`。配置了可用 CDN 时返回 CDN 地址;OSS 源站签名是源站直连,不等于 CDN。`requireCDN` 开启且 CDN 鉴权不完整时失败,不静默回源;私有源站只有 `allowPrivateProxy` 显式开启才允许平台承载正文。 +- `access.delivery` 为 `cdn`、`origin`、`platform-local` 或 `platform-proxy`。配置了可用 CDN 时返回 CDN 地址;OSS 源站签名是源站直连,不等于 CDN。`requireCDN` 开启且 CDN 鉴权不完整时失败,不静默回源。浏览器的展示、复制、下载和本地处理不允许使用 `platform-proxy`,云资源正文始终由 OSS/CDN 直接发送给浏览器;`allowPrivateProxy` 只允许服务端在 `provider-input` 场景向第三方模型提交参考素材时读取私有源站。 - `expiresAt` / `refreshAt` 只描述当前授权有效期。`provider-input` 默认 4 小时,其余签名访问默认 5 分钟;公开 CDN 可没有 `expiresAt`。签名地址不写入画布或服务端持久化内容。 - `GET /api/resources/:id/file` 仍是稳定平台入口,负责本地/平台代理字节流,云资源只返回 307 到 CDN 或对象存储;`?access=1` 只返回访问描述,不打开正文。`Range` 只影响字节流路径。 - 公共资源、画布分享、外观、公告、管理员资源和日志媒体复用同一个 HTTP 执行器。公共签名链接受自身到期时间和变体绑定限制,但已签发的外部 URL 不承诺立即撤销。 diff --git a/docs/content/docs/progress/pending-test.mdx b/docs/content/docs/progress/pending-test.mdx index 72c2ed6bc..83332121e 100644 --- a/docs/content/docs/progress/pending-test.mdx +++ b/docs/content/docs/progress/pending-test.mdx @@ -2694,3 +2694,30 @@ SSE 现在按 revision 变化发送紧凑快照,无变化只 heartbeat;客 入口精简与工具草稿复测:移除左侧工具菜单及图片节点提示词模板入口,保留图片风格 / 预设和其他节点模板入口。工具引用列表读取草稿改用空值判断,明确清空时不再从原始生成提示词回读旧标签。风格和预设的选择、替换、连续编辑、标签移除、全文清空及保存重载覆盖有图/空节点两种情况;5 个专项文件共 58 项通过,TypeScript 类型检查通过。实际页面仍需确认普通/放大编辑器均无图片提示词模板入口,以及风格和预设清空后重新聚焦不回填。 主分支提交前复测:前端 `bun run test` 全量 1925 项通过,生产构建、类型检查、UI 退场 lint 通过;构建仍有大分块提示。同步了技能/工具标签结构与多行连接菜单的源码守护断言。后端 `go test ./...` 全量通过,工具、迁移、资源引用、handler 及工具预览权限/项目封面专项通过。本轮未执行真实模型调用、PostgreSQL 实库迁移或登录态浏览器验收,这些项目继续保留待验收。 + +## 画布媒体交互与 Agent 循环止损复测(2026-09-23) + +本轮针对画布媒体节点、生成任务状态及云端 Agent 重复读取问题完成实现和复测。代码仍未提交,以下结论基于当前工作区的专项测试与隔离本地浏览器环境,不代表已部署生产。 + +- [x] 第三方 API 已提交后,前后端均拒绝取消:任务存在 `providerRequestId`、取消状态、媒体阶段、未知运行阶段或已进入媒体保存阶段时不再显示取消按钮,也不接受取消请求。 +- [x] 图片、视频、音频下载改为浏览器直接导航 OSS/CDN 签名地址;不再 `fetch → Blob`,平台只签发短时地址,不中转媒体正文。隔离浏览器下载的 Host 为 `cn-nb1.rains3.com`。 +- [x] 生成节点初始状态统一显示“作品创作中”;“正在准备参考素材”和“正在连接上游”等技术阶段也统一映射为该文案。没有上游真实进度时不显示 `0%` 或素材准备假进度,只有上游返回真实进度才显示百分比。 +- [x] 图片预览弹窗增加非纯黑加载占位、边框、虚线内框、Spinner、错误态和加载完成淡入;已用 2.5 秒图片响应延迟在浏览器中验证加载态可见。 +- [x] 视频节点无持久化 poster 时主动从 OSS/CDN 视频取首帧;已验证首帧静态预览真实显示,视频资源请求返回 Range `206`,持久化 poster 仍优先使用对象存储地址。 +- [x] 视频播放器不再因未知音轨默认静音;已验证视频解码音频字节持续增加,`muted=false`,播放期间 `paused=false`,音量滑块可操作并从 100% 调至 85%。 +- [x] Agent 只读工具增加同参数缓存、同结果重复回放护栏、跨参数累计 32 次安全上限;识图按画布版本和资源限制重复调用,并受本轮总识图预算约束,超过上限直接结束本轮,避免继续消耗模型调用和 Token。附件事件序列已解析确认事故主要是只读工具循环(`canvas_get_state` 6 次、`canvas_read_storyboard` 2 次、`agent_profile_read` 4 次),不是单一图片识别失败。 +- [x] Agent 媒体审批快照忽略节点位置和展示性变化;仅移动节点不会使已审批生成失效,提示词、资源、连接、锁定状态和任务状态等真实生成输入变化仍会使审批失效。 + +自动验证记录: + +- 前端 `bun run test:canvas`:37 项通过;媒体与生成显示专项:36 项通过。 +- 前端 `bun run typecheck`、`bun run lint`、`bun run build`:通过;构建仍有既有大 chunk 提示。 +- 后端 Agent 读取、识图、审批、媒体依赖专项:通过;资源/OSS、取消、上游进度专项:通过。 +- 后端全量 `go test ./...`:未通过,阻断点为既有 `TestPluginViewIncludesDocumentationForEveryOfficialProtocol` 插件视图数量断言(实际 99,对断言期望 97),与本轮媒体和 Agent 修复无直接关系;因此不能记录为后端全量通过。 + +仍待真实环境验收: + +- [ ] 使用真实生产渠道重新执行 Agent 图片识别和“识别多张图片后命名节点”流程;本轮未再次调用付费生产模型。生产渠道仍建议将“最大参考图片数”设为 `0`,不需要识图的渠道不要暴露图片识别能力。 +- [ ] 使用真实 Agent 会话完成审批后仅移动节点、再提交生成的端到端验收;后端回归已覆盖该语义,真实模型会话尚未执行。 +- [ ] 对含音轨视频做人工听觉验收;当前隔离视频已由浏览器运行时确认音频解码和音量控制可用。 +- [ ] 修复或单独核对插件视图数量断言后,再执行后端全量测试;本轮不修改与媒体/Agent 无关的插件注册逻辑。