# Changelog: 修复时间轴资源导入错误 > **日期**: 2026-01-26 > **类型**: Bug 修复 > **影响范围**: 时间轴资源轨道 --- ## 问题描述 在重构剧本资源数据结构后(RFC 132),`timeline.ts` 仍然从旧的 `./resources` 导入 `getResourceById` 函数,导致 404 错误: ``` GET http://localhost:6160/src/mocks/resources.ts?t=1769394078482 net::ERR_ABORTED 404 (Not Found) ``` ## 修复内容 ### 1. 更新导入路径 **修改文件**: `client/src/mocks/timeline.ts` ```typescript // ❌ 旧的导入 import { getResourceById } from './resources'; // ✅ 新的导入 import { getResourceById } from './project-resources'; ``` ### 2. 当前数据流 ``` 分镜 (storyboard) └─ resources.characters[].resourceId └─ 项目素材 (project_resources) └─ 显示在时间轴资源轨道 ``` ## 业务逻辑说明 ### 当前实现(临时方案) 分镜直接引用项目素材 ID: ```typescript // storyboards.ts { id: 'storyboard_001', resources: { characters: [ { resourceId: '018e1234-5678-7abc-8def-200000000001', displayOrder: 0 } ] } } // timeline.ts 查询素材 const resource = getResourceById('018e1234-5678-7abc-8def-200000000001'); // 返回:孙悟空-青年形象1 ``` ### 理想实现(未来改进) 分镜应该引用标签,标签再关联素材: ``` 分镜 (storyboard) └─ resources.characters[].tagId (引用标签) └─ 标签 (screenplay_element_tags) └─ 项目素材 (project_resources.elementTagId) └─ 显示在时间轴资源轨道 ``` **优势**: 1. 更符合业务逻辑(分镜选择角色的某个状态,如"孙悟空-青年") 2. 支持标签切换(如从"青年"切换到"少年") 3. 自动使用标签的默认素材(`isDefault = true`) ## 未来改进计划 ### Phase 1: 数据结构调整(下周) 修改 `storyboard.resources` 结构: ```typescript // 当前结构 resources: { characters: [ { resourceId: string, displayOrder: number } ] } // 目标结构 resources: { characters: [ { tagId: string, // 引用标签(如 "tag_char_002" = 孙悟空-青年) resourceId?: string, // 可选:覆盖默认素材 displayOrder: number } ] } ``` ### Phase 2: Timeline 查询逻辑调整 ```typescript // 当前逻辑 storyboard.resources.characters?.forEach((charRef) => { const resource = getResourceById(charRef.resourceId); // ... }); // 目标逻辑 storyboard.resources.characters?.forEach((charRef) => { // 1. 通过 tagId 查询标签 const tag = getTagById(charRef.tagId); // 2. 获取素材(优先使用指定的,否则使用默认的) const resource = charRef.resourceId ? getResourceById(charRef.resourceId) : getDefaultResourceForTag(charRef.tagId); // 3. 显示在时间轴 // ... }); ``` ### Phase 3: UI 交互改进 1. **分镜编辑器**:选择角色时,显示标签选择器(如"孙悟空-少年"、"孙悟空-青年") 2. **时间轴**:右键点击资源,可以切换标签或更换素材 3. **属性面板**:显示当前使用的标签和素材信息 ## 相关文档 - [RFC 132: 剧本资源数据结构重构](../rfcs/132-screenplay-resources-refactor.md) - [RFC 131: 分镜资源 Mock 数据](../rfcs/131-storyboard-resources-mock-data.md) - [剧本标签管理服务](../../requirements/backend/04-services/project/screenplay-tag-service.md) ## 测试验证 - [x] 时间轴页面加载正常 - [x] 资源轨道显示正常 - [ ] 分镜资源数据结构调整(待实施) - [ ] Timeline 查询逻辑调整(待实施) --- **变更日期**: 2026-01-26 **修复人员**: AI Assistant **审核状态**: 待审核