3.7 KiB
3.7 KiB
2025-12-21 功能修复记录
修复背景
用户反馈:收藏/点赞/编辑/下载功能一个有用的都没有,且素材详情页面的图片展示方式也是和正式系统的不一样。
修复原则
- 逐字逐句对比反编译文件和当前代码
- 只参考项目根目录的反编译文件(
shadow_page_full.js等) - 确保与正式环境表现完全一致
已修复的问题
1. 下载功能优化
问题:下载成功后调用fetchMaterials()刷新整个列表,导致页面跳动和性能问题
修复:
- 文件:
app/page.tsx - 修改:下载成功后直接更新本地状态的
downloadCount,而不是重新请求整个列表 - 与反编译文件一致:
// 反编译文件中的实现 h((t) => t.map((t) => t.id === e ? { ...t, downloadCount: (t.downloadCount || 0) + 1 } : t))
2. 素材列表previewUrl fallback逻辑
问题:当素材没有previewUrl时,没有正确fallback到videoCoverUrl或displayImages[0]
修复:
- 文件:
app/api/materials/route.ts - 修改:添加previewUrl的fallback逻辑
- Fallback顺序(与反编译文件一致):
material.previewUrlmaterial.videoCoverUrlmaterial.displayImages[0](如果存在)
代码:
// 处理previewUrl的fallback逻辑(与反编译文件一致)
let previewUrl = material.previewUrl || material.videoCoverUrl || '';
if (!previewUrl && material.displayImages) {
const displayImagesArray = parseDisplayImages(material.displayImages);
if (displayImagesArray.length > 0) {
previewUrl = displayImagesArray[0];
}
}
3. 单个素材查询previewUrl fallback逻辑
问题:单个素材查询(通过uploadId)时也没有正确的fallback逻辑
修复:
- 文件:
app/api/materials/route.ts - 修改:在单个素材查询时也添加相同的previewUrl fallback逻辑
已验证的功能(之前修复)
1. 收藏功能 ✅
- 前端使用正确的字段名
isFavorited - 后端使用
findFirst而不是findUnique查询收藏状态 - 数据库表结构:
id主键 +@@unique([materialId, userId])唯一约束
2. 点赞功能 ✅
- 后端使用
findFirst而不是findUnique查询点赞状态 - 数据库表结构:
id主键 +@@unique([materialId, userId])唯一约束
3. 详情页布局 ✅
- 所有素材类型统一使用左右布局
- 详情页/模特类型:显示多张
displayImages - 其他类型:显示单张
previewUrl
4. 首页滚动 ✅
- 使用
useCallback优化fetchMaterials - 支持
append参数控制是追加还是重置数据 - 懒加载时不会返回顶部
待测试的功能
1. 编辑功能
- API已存在:
PUT /api/materials/[id] - 前端路由:
/edit/[id] - 需要测试:编辑后是否正确更新素材信息
2. 详情页图片展示
- 需要测试:详情页/模特类型是否正确显示多张
displayImages - 需要测试:其他类型是否正确显示单张
previewUrl - 需要测试:previewUrl fallback逻辑是否生效
部署状态
- ✅ 已部署到影子系统(192.168.58.20:5320)
- ⏳ 待测试所有功能
- ⏳ 待部署到正式系统(192.168.58.20:4320)
下一步
- 在影子系统测试所有功能:
- 收藏/取消收藏
- 点赞/取消点赞
- 编辑素材信息
- 下载素材
- 详情页图片展示
- 如果测试通过,使用
deploy-shadow-to-prod.ps1覆盖正式系统 - 验证正式系统的数据完整性(98用户、1,525素材等)
参考文件
- 反编译文件:
shadow_page_full.js - 正式数据库报告:
正式环境数据库完整报告.md - 部署方案:
影子系统覆盖正式系统部署方案.md - Steering文档:
.kiro/steering/项目配置与开发规范.md