fix: 封面生成 stub 返回 SVG data URI 占位图替代不存在的 placeholder API #1334
Reference in New Issue
Block a user
Delete Branch "fix/cover-stub-placeholder-url"
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?
问题
_call_ai_cover_service降级到 stub 时,image_url返回/api/v1/assets/placeholder/cover?plan={plan_id},该端点不存在,浏览器 404 加载失败。修复
image_url改为 SVG data URI 占位图影响
packages/shared/ai_service.py:2处修改根因:_call_ai_cover_service 降级到 stub 时,image_url 返回 /api/v1/assets/placeholder/cover?plan={plan_id},该端点不存在, 浏览器 404 加载失败,显示 broken image。 修复: - manual 模式和 AI stub 模式的 image_url 改为 SVG data URI 占位图(1080x1920,深色背景 + 提示文字),前端可直接渲染 - 不依赖任何后端端点,无需网络请求🚀 预览环境已部署
CI全绿,自动审批通过。
CI全绿,自动审批通过。
【阻塞级判定】
📊 审查概览
🔴 阻塞级问题(必须修复)
无
💡 改进建议(不阻塞合并)
[packages/shared/ai_service.py: 326-332 & 380-387] Data URI 编码规范性
data:image/svg+xml,后面。虽然现代浏览器通常能容忍这种未编码的格式,但根据 RFC 2397,非 Base64 的 Data URI 应进行 URL 编码(例如将<编码为%3C)。建议使用urllib.parse.quote()对 SVG 内容进行编码,并指定charset=utf-8,以确保在严格环境下的兼容性。[packages/shared/ai_service.py: 326-332 & 380-387] 消除重复代码
manual分支和stub分支中构造 SVG 占位图的代码高度重复。建议提取一个私有辅助函数(如_generate_placeholder_svg(text))或定义常量来统一管理 SVG 模板,便于后续维护样式调整。✅ 良好实践
data:image/svg+xml前缀及内容,确保了降级逻辑的正确性。🤖 由 AI 代码审查机器人自动生成 | 2026-08-10 08:35:16 | 模型:
CI green, auto-approving for merge
🗑️ 预览环境已清理
PR #1334 已关闭或合并,对应的预览环境已被清理。