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

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。
  • 数据一致性: 在测试中解决了 ScreenplayProject 的约束冲突问题(如 project.screenplay_id 仅用于子项目)。
  • 字段规范: 统一使用 meta_data 字段,并在响应中正确映射元素标签信息。

验证情况

  • 单元测试: tests/unit/services/test_resource_library_service.py 全部通过。
  • 集成测试: tests/integration/test_resource_library_api.py 全部通过。
  • 环境: Docker 容器 jointo-server-app 运行正常。