You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1.5 KiB
1.5 KiB
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运行正常。