Skip to content

feat: 实现项目中心与项目资产工作区 #118

Description

@huyanxius

问题

#112#113 已通过 Vibe Coding 验证 Project → Character → Outfit → Action → Frame 的页面层级,但该实现只用于交互验证,明确不合并。

当前 main 中的 Projects 仍停留在模块骨架阶段。项目中心、项目工作区、角色资产库和角色详情没有形成可用于正式工程的完整功能,也尚未通过 Project / Character 领域接口读取后端资产。

目标

按照 main 现有架构实现 Projects 模块的正式项目中心与项目资产工作区,覆盖项目浏览与删除、项目导航、角色资产库、角色详情,以及造型、动作和帧的浏览层级。

页面只展示后端能够提供的真实字段;生产代码与生产构建不保留 Mock、livedemo 资源或装饰性演示数据。

范围

包含:

  • 项目中心的真实项目列表、分页、空状态、错误状态和删除确认。
  • 项目工作区的常驻项目导航与项目规格。
  • 项目级角色资产库及分页。
  • 角色详情中的造型切换、堆叠动作卡和完整帧展开。
  • ProjectApis.list/get/create/remove 的正式实现。
  • CharacterApis.listByProject/get/create/update/remove 的正式实现。
  • Project 与 Character DTO 的 snake_case → camelCase 映射。
  • Character → Outfit → Action → Frame 完整资产树的读取与更新。
  • 复用 feat(frontend): add shared API client infrastructure #117 的 HTTP、响应外壳、分页和错误处理能力。
  • 为后续登录模块保留 access token provider 注入边界。
  • 使用测试环境 HTTP 服务替身覆盖接口映射、分页、路由和页面行为。
  • 更新前端架构、API 契约和模块说明。

不包含

  • 新建项目流程;页面只保留禁用入口,后续单独实现。
  • Workflow Editor 与角色、动作生成流程。
  • 登录、Token 保存、刷新和注销逻辑。
  • ActionTemplate 后端能力。
  • 资产导出接线。
  • 独立 Wearable 层级。
  • 后端未提供的 GIF、关键帧、root motion 等字段。
  • Project 更新接口;后端 feat:backend dev #75 当前未提供该端点。

验收标准

  • /projects 展示 Project API 返回的真实项目数据。
  • /projects/:projectId/assets 只展示当前项目下的 Character 资产。
  • /projects/:projectId/assets/:characterId 可以查看角色的造型、动作和帧。
  • Character、Outfit、Action、Frame 使用后端稳定 ID,不使用数组位置作为业务标识。
  • 分页数据超过单页容量时可以完整翻页,不发生静默截断。
  • Character 更新通过 PATCH Character 提交完整 character_data
  • 没有 GIF 字段时使用排序后的第一帧作为动作预览,不伪造 GIF。
  • 业务 API 通过统一 Token provider 获取认证信息,页面不硬编码 Token 或 API 地址。
  • ActionTemplate、导出、新建项目和生成入口均明确标记当前能力边界,不执行伪业务。
  • 生产源码和构建产物不包含 Mock 数据、测试域名或 livedemo 资源。
  • format:checklinttypechecktestbuild 全部通过。

前置依赖

后端的资源归属隔离、Project 删除级联以及创建 Character 时的 name 转发问题由后端处理,前端不通过 Mock 或降级逻辑规避。

相关工作

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestmile3Milestone 3

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions