feat: 素材列表缩略图预览 + Canvas标题居中修复 #1247
Reference in New Issue
Block a user
Delete Branch "feat/thumbnail-preview-and-canvas-fix"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
变更内容
Part 1: 素材列表缩略图预览
文件:
ManualMaterialList.tsxthumbnail_url,无缩略图时用file_url(视频素材)Part 2: Canvas 标题居中修复
文件:
PreviewVideoPanel.tsxcontainerRef.getBoundingClientRect()获取的是外层容器宽度,但 video 元素实际渲染尺寸可能不同(object-fit/aspect ratio),导致x = w/2不在视频中心videoRef.current.clientWidth/clientHeight获取 video 实际渲染尺寸measureText依赖字体已加载,字体未加载时用 fallback 字体计算宽度导致换行和居中偏移document.fonts.ready等待字体加载后再绘制验收标准
🚀 预览环境已部署
CI全绿,自动审批通过。
CI全绿,自动审批通过。
代码审查结果 - PR #1247
⚠️ 问题(1个需要修改)
videoEl.clientWidth > 0来决定是否更新drawW/drawH,但在计算offsetX/Y时未做此判断。若 video 元素已挂载但尺寸为 0(例如加载中),drawW退化为容器宽度,但offsetX仍取 video 的offsetLeft(通常为容器宽度的一半以居中)。计算公式x = offsetX + w / 2会变成x = (容器宽/2) + (容器宽/2),导致标题绘制在容器最右侧边缘而非居中。💡 建议(1个可选)
onError事件处理中通过 DOM 操作(nextElementSibling)控制回退 UI 的显示,这种方式依赖 JSX 的渲染顺序,代码脆弱且不符合 React 数据驱动原则。imgError状态,通过状态控制显示<img />还是<span>,避免直接操作 DOM。✅ 格式检查通过 | ❌ 逻辑审查需修改 | ⚠️ 建议关注性能
🤖 由 AI 代码审查机器人自动生成 | 2026-08-06 03:28:22 | 模型:
🗑️ 预览环境已清理
PR #1247 已关闭或合并,对应的预览环境已被清理。