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 契约和模块说明。

不包含

验收标准

  • /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 request

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions