## 问题与影响 没有对应画布节点的素材,被当前生成配置直接作为固定版本参考后,可能在生成完成时从资产列表消失,参考素材目录也将其标记为不可选择。此时原文件和有效参考仍然存在,生成面板仍能显示引用标签,造成素材状态不一致,影响查找、查看和再次复用。 ## 复现步骤 1. 通过 `artifact.publish` 登记一张图片素材,不为它创建画布节点。 2. 创建生成配置,通过 `binding=pinned` 将该素材作为有效参考。 3. 检查资产列表的“全部”“未显示”分类,以及 `reference-catalog` 返回值。 4. 完成一次使用该参考的生成,使结果素材的 `provenance.sources` 包含该图片。在隔离环境可使用模拟服务登记结果,无需调用真实模型。 5. 再次检查相同列表、目录、原文件和有效参考。 ## 预期与实际 - 预期:仍被当前配置有效引用的素材可以被查找和复用;没有画布节点时应表达为未显示,不能仅因成为结果来源而消失。 - 实际:生成前可列出,结果登记后从“全部”“未显示”列表消失。目录仍返回该素材,但为 `fileAvailable=true, available=false`;固定参考标签和文件仍存在。 - 本问题不要求所有参考都创建画布节点,也不要求将所有纯历史候选重新放进资产列表。 ## 定位与证据 基线:[`6c83d43f32b335c63a0a1bb314967d6da91ec7d3`](https://github.com/ThinkFlowLab/OpenDirector/commit/6c83d43f32b335c63a0a1bb314967d6da91ec7d3),Linux,Python 3.12。通过只读持久化快照调用现有应用服务确认前后列表变化,核对文件内容指纹和当前有效参考;没有新增生成调用。本轮为存储与应用服务层验证,未新增浏览器端到端复现。 - [`_inventory`](https://github.com/ThinkFlowLab/OpenDirector/blob/6c83d43f32b335c63a0a1bb314967d6da91ec7d3/packages/core/src/opendirector/application/creation_history.py#L452-L468) 将所有素材的 `provenance.sources` 加入 `historical`,但 `current` 未纳入当前有效固定参考。 - [`asset_list`](https://github.com/ThinkFlowLab/OpenDirector/blob/6c83d43f32b335c63a0a1bb314967d6da91ec7d3/packages/core/src/opendirector/application/creation_history.py#L470-L484) 过滤 `historical` 中不属于 `current` 的素材;即便查询“全部”也会遗漏。 - [`reference_catalog`](https://github.com/ThinkFlowLab/OpenDirector/blob/6c83d43f32b335c63a0a1bb314967d6da91ec7d3/packages/core/src/opendirector/application/creation_history.py#L107-L133) 复用相同分类,导致文件可读却被标记为不可选择。 删除依赖检查仍识别参考、任务和结果来源并阻止删除,因此不能将列表消失解释为文件被删除。 ## 验收标准 - [ ] 当前有效固定参考对应的素材,在结果登记前后均能通过资产列表的“全部”和适当的显示状态分类找到。 - [ ] 列表、目录、文件可用性及参考关系状态一致;真实文件缺失与仅未显示到画布分别表达。 - [ ] 覆盖无节点的固定参考、已有节点的参考及纯历史版本;保留合理的历史候选过滤规则。 - [ ] 通过 UI 与 Agent 创建的同等参考得到一致查询结果,重开工程后保持一致。 - [ ] 删除保护和旧任务输入快照保持有效,不因调整列表规则而放宽依赖校验。
Activity
[bugfix] assets: keep media used by live pinned references listed (Th…