fix(P0): 修复素材库删除后仍显示 + 成片库排序和时间显示 #528

Merged
auto-approve-bot merged 1 commits from fix/p0-delete-and-product-library into develop 2026-07-18 18:28:46 +08:00
Owner

修复内容

#526 素材库删除功能失效(前端兜底)

  • API层过滤deleted素材getAssets 返回时过滤掉 status=deleted 的素材,后端列表返回deleted状态的素材时前端自动隐藏
  • inferStatus补deleted处理:防御性处理,即使漏网也显示"已删除"而非误判为"待诊断"

#527 成片库展示问题

  • 列表按时间倒序:最新生成的排在最前面
  • 时间精确到时分:从 YYYY-MM-DD 改为 MM-DD HH:mm

待后端配合的问题(单独跟踪)

  • 素材库列表接口应默认过滤deleted状态 + 分页page/page_size无效 + status过滤参数无效
  • 成片库删除接口不存在(DELETE /generation/tasks/{id} 返回405)
  • 成片库/generation/tasks返回字段与前端预期不符(无name/created_at/file_url)
  • 成片库视频URL缺失导致无法播放
## 修复内容 ### #526 素材库删除功能失效(前端兜底) - **API层过滤deleted素材**:`getAssets` 返回时过滤掉 `status=deleted` 的素材,后端列表返回deleted状态的素材时前端自动隐藏 - **inferStatus补deleted处理**:防御性处理,即使漏网也显示"已删除"而非误判为"待诊断" ### #527 成片库展示问题 - **列表按时间倒序**:最新生成的排在最前面 - **时间精确到时分**:从 `YYYY-MM-DD` 改为 `MM-DD HH:mm` ## 待后端配合的问题(单独跟踪) - 素材库列表接口应默认过滤deleted状态 + 分页page/page_size无效 + status过滤参数无效 - 成片库删除接口不存在(DELETE /generation/tasks/{id} 返回405) - 成片库/generation/tasks返回字段与前端预期不符(无name/created_at/file_url) - 成片库视频URL缺失导致无法播放
xiaoxia force-pushed fix/p0-delete-and-product-library from 578092a4a2 to ff012a893a 2026-07-18 18:26:44 +08:00 Compare
xiaoxia added 1 commit 2026-07-18 18:27:41 +08:00
fix(P0): 修复素材库删除后仍显示 + 成片库排序和时间显示
CI Build & Deploy Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Production (pull_request) Has been skipped
CI Build & Deploy Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 31s
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 53s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 56s
Auto Approve CI PRs / Auto Approve on CI Green (pull_request) Successful in 1m5s
Auto Merge CI PRs / Auto Merge on CI Green + Approved (pull_request) Successful in 1m5s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 29s
AI Code Review / AI Code Review (pull_request) Successful in 2m35s
709a3ecaf3
- API层过滤status=deleted的素材(后端列表返回deleted,前端兜底)
- inferStatus补上deleted状态处理(防御性)

- 列表按created_at倒序排列(最新生成的在最前面)
- 时间显示精确到时分(MM-DD HH:mm)
xiaoxia force-pushed fix/p0-delete-and-product-library from ff012a893a to 709a3ecaf3 2026-07-18 18:27:41 +08:00 Compare

🚀 预览环境已部署

项目 详情
PR号 #528
预览链接 https://pr-528.preview.xiaoxiajianji.com
API环境 staging

💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。

🔄 每次提交新代码后预览环境会自动更新。

🗑️ PR 关闭或合并后,预览环境会自动清理。

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #528 | | 预览链接 | [https://pr-528.preview.xiaoxiajianji.com](https://pr-528.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
auto-approve-bot approved these changes 2026-07-18 18:28:45 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot approved these changes 2026-07-18 18:28:45 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot merged commit 2e9478bb18 into develop 2026-07-18 18:28:46 +08:00
auto-approve-bot deleted branch fix/p0-delete-and-product-library 2026-07-18 18:28:47 +08:00

🗑️ 预览环境已清理

PR #528 已关闭或合并,对应的预览环境已被清理。

如有需要,可以重新打开 PR 来重新生成预览环境。

🗑️ **预览环境已清理** PR #528 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Collaborator

代码审查结果 - PR #528

⚠️ 问题(2个需要修改)

  1. apps/web/src/pages/products/ProductLibrary.tsx 第555-564行:排序逻辑严重错误且存在副作用

    • 问题描述
      1. 数据丢失:代码先将日期格式化为 MM-DD HH:mm(丢失了年份),然后在排序时通过 new Date(date) 解析该字符串。这会导致年份信息丢失,排序结果完全错误(跨年数据无法正确排序,且解析非标准 ISO 字符串可能产生 InvalidDate)。
      2. 状态污染:直接对 apiProducts(React Query 缓存数据)进行 .sort() 操作会直接修改缓存中的数组,违反 React 不可变数据原则,可能导致其他组件出现异常或渲染死循环。
    • 修改建议:应直接基于原始的 ISO 时间字符串(item.created_at)进行排序,并在排序前对数组进行浅拷贝(如使用 .slice() 或展开运算符)。
  2. apps/web/src/api/products.ts 第165-171行:代码实现与注释逻辑不符

    • 问题描述:注释明确说明“优先从列表缓存取;如果没有则调详情接口”,但实际代码直接调用了 getProduct(productId) 发起网络请求,并未实现任何缓存读取逻辑。这会导致每次获取下载链接都会产生不必要的网络开销。
    • 修改建议:如果暂时无法实现缓存逻辑,请删除误导性注释;或者按照注释意图实现缓存逻辑(例如接受可选的 ProductItem 参数)。

💡 建议(1个可选)

  1. apps/web/src/api/products.ts 第120行:接口兼容性风险提示
    • 描述deleteProduct 调用了后端 /videos/{id} 接口,但注释明确指出后端暂未实现且会返回 405。请确保调用方(UI 层)已妥善处理 405 错误,避免用户点击删除后看到未处理的报错信息。

格式检查通过 | 逻辑审查需修改 | ⚠️ 建议关注性能


🤖 由 AI 代码审查机器人自动生成 | 2026-07-18 18:30:17 | 模型:

## 代码审查结果 - PR #528 ### ⚠️ 问题(2个需要修改) 1. **apps/web/src/pages/products/ProductLibrary.tsx 第555-564行**:排序逻辑严重错误且存在副作用 - **问题描述**: 1. **数据丢失**:代码先将日期格式化为 `MM-DD HH:mm`(丢失了年份),然后在排序时通过 `new Date(date)` 解析该字符串。这会导致年份信息丢失,排序结果完全错误(跨年数据无法正确排序,且解析非标准 ISO 字符串可能产生 InvalidDate)。 2. **状态污染**:直接对 `apiProducts`(React Query 缓存数据)进行 `.sort()` 操作会直接修改缓存中的数组,违反 React 不可变数据原则,可能导致其他组件出现异常或渲染死循环。 - **修改建议**:应直接基于原始的 ISO 时间字符串(`item.created_at`)进行排序,并在排序前对数组进行浅拷贝(如使用 `.slice()` 或展开运算符)。 2. **apps/web/src/api/products.ts 第165-171行**:代码实现与注释逻辑不符 - **问题描述**:注释明确说明“优先从列表缓存取;如果没有则调详情接口”,但实际代码直接调用了 `getProduct(productId)` 发起网络请求,并未实现任何缓存读取逻辑。这会导致每次获取下载链接都会产生不必要的网络开销。 - **修改建议**:如果暂时无法实现缓存逻辑,请删除误导性注释;或者按照注释意图实现缓存逻辑(例如接受可选的 `ProductItem` 参数)。 ### 💡 建议(1个可选) 1. **apps/web/src/api/products.ts 第120行**:接口兼容性风险提示 - **描述**:`deleteProduct` 调用了后端 `/videos/{id}` 接口,但注释明确指出后端暂未实现且会返回 405。请确保调用方(UI 层)已妥善处理 405 错误,避免用户点击删除后看到未处理的报错信息。 --- ✅ 格式检查通过 | ❌ 逻辑审查需修改 | ⚠️ 建议关注性能 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-18 18:30:17 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
Sign in to join this conversation.