# 2026-02-04 素材库模块实现 ## 变更描述 实现了素材库(Resource Library)后端功能,支持角色、场景、道具及实拍资源的统一查询。 ## 新增功能 - **API 接口**: - `GET /api/v1/projects/{project_id}/resource-library/characters`: 获取角色列表及其资源 - `GET /api/v1/projects/{project_id}/resource-library/locations`: 获取场景列表及其资源 - `GET /api/v1/projects/{project_id}/resource-library/props`: 获取道具列表及其资源 - `GET /api/v1/projects/{project_id}/resource-library/footage-resources`: 获取实拍资源列表 - `GET /api/v1/projects/{project_id}/resource-library/elements/{type}/{id}/tags-with-resources`: 获取特定元素的标签及资源 - **服务层**: `ResourceLibraryService` 封装了所有业务逻辑,支持跨项目资源查询。 ## 技术细节 - **权限控制**: 统一使用 `ProjectRepository` 检查项目权限,对不存在的项目返回 404,无权限返回 403。 - **数据一致性**: 在测试中解决了 `Screenplay` 和 `Project` 的约束冲突问题(如 `project.screenplay_id` 仅用于子项目)。 - **字段规范**: 统一使用 `meta_data` 字段,并在响应中正确映射元素标签信息。 ## 验证情况 - **单元测试**: `tests/unit/services/test_resource_library_service.py` 全部通过。 - **集成测试**: `tests/integration/test_resource_library_api.py` 全部通过。 - **环境**: Docker 容器 `jointo-server-app` 运行正常。