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.
 
 
 
 
 
 

2.0 KiB

02 — 缩略图 API 读路径 + 占位图

What to build: 缩略图读取端点和按状态返回的行为。新增 FileApi.getThumbnail(String fileId) 方法返回 byte[]FileController 新增 GET /api/file/thumbnail?fileId=xxx 端点(信封例外:成功返回 image/jpeg 二进制流,失败返回 JSON 信封)。新建 ThumbnailPlaceholderService,按文件扩展名返回预置的文件类型图标占位图。getThumbnail 行为:查 FileInfo(查无/已删除 → 40401)→ thumbnail_status = READY 时从 MinIO 拉 thumbnails/{fileId}.jpg 返回二进制 + Cache-Control: max-age=86400UNSUPPORTED/FAILED/PENDING 返回占位图 + Cache-Control: no-cacheFileInfoDTO 新增 thumbnailStatus 字段(nullable,向后兼容)。可手动往 MinIO 塞缩略图并把状态设成 READY 来验证端到端。

Blocked by: 01 — 基础设施(prefactor)

Status: ready-for-agent

  • FileApi 接口新增 ThumbnailDTO getThumbnail(String fileId) 方法声明(原设计 byte[],实现时改为 DTO 以承载 202 与缓存语义,见 spec §7.1)
  • FileApiImpl 实现 getThumbnail:查 FileInfo → READY 拉缩略图对象返回 + max-age=86400;UNSUPPORTED/FAILED/PENDING 返回占位图 + no-cache
  • ThumbnailPlaceholderService 新建,按扩展名返回文件类型占位图(原设计预置静态资源,实现改为运行时 Graphics2D 绘制 PNG + 扩展名文字,见 spec §7.1)
  • FileController 新增 GET /api/file/thumbnail 端点,返回 ResponseEntity<byte[]>(信封例外)
  • FileInfoDTO 新增 thumbnailStatus 字段,from() 方法补充映射
  • 测试:READY 状态返回 MinIO 缩略图二进制 + max-age=86400
  • 测试:UNSUPPORTED 状态返回占位图 + no-cache,不触碰 MinIO 缩略图路径
  • 测试:FAILED 状态返回占位图 + no-cache
  • 测试:PENDING 状态返回占位图 + no-cache(本票不含同步生成)
  • 测试:文件查无/已删除 → 40401
  • 测试:fileId 非法格式 → 40401