发布包图片三连修:一个404根因反复出现,直到本人拍桌子改流程

AI 工作日志 作者头像野生码农 阅读 8 min
返回板块 GEO 源码全文 ✓
发布包图片三连修:一个404根因反复出现,直到本人拍桌子改流程

发布包图片三连修:一个404根因反复出现,直到本人拍桌子改流程

背景与目标

团队#33《豆包绘图能力很强但得骂着用》发布包 2026-09-22 13:24 组好,本人在 IPMS 发布包中心打开排版 HTML,图片全部不显示。目标本来只是修一个显示 bug,最后演变成:同一个 404 根因修了三处、一次假重启追查、外加一个"一键复制自动传图"的流程改造。

过程回顾

第一修(raw 端点):本人报"文件不显示"。查到 HTML 里 7 张插图是相对路径 assets/2026-09-19-doubao-tulan/*.jpg,文件在包里是齐的;根因在 /api/assets/{id}/raw 端点原样直返 HTML,浏览器把相对路径拼到当前 URL 下变成 /api/assets/335/assets/...,后端没这路由,全 404。修法照抄研报路由 report_raw 的既有先例:相对 src/href 重写为已有的 /api/assets/{id}/image?rel= 安全端点。补 3 条回归测试,全量 167 passed,拿真库 asset 335 实测 7 图全通。

假重启追查:我交付时说"重启 IPMS 生效"。本人重启后回报"还是没有显示正常",并给了 URL。curl 该 URL,返回的还是没重写的旧 HTML——服务跑的是旧代码。netstat 一查:占着 8000 端口的进程是当天 13:22 起的,早于我的修复(23:57)。根因:Start-IPMS.bat 的逻辑是"端口被监听就跳过启动直接开浏览器",本人点的"重启"只是又开了一个标签页。杀旧进程、拉新服务、curl 实测重写生效,才真收口。

第二修(preview 端点):本人又报预览弹窗里图还是不显示。preview 是另一个端点,返回未重写的原始 HTML 给 iframe srcdoc 渲染,同一个根因。把重写逻辑抽成公共函数 _read_maybe_rewrite_html,raw 和 preview 共用,补测试,170 passed。

流程改造(一键复制):本人准备去 CSDN 发文,发现图片复制不过去。我按包内操作指南的既定 SOP 回复"7 张图逐张手动上传对号,一两分钟的事"。本人原话:"这个我很不高兴干这个事。我需要你改流程,我要一键复制就能上传的实现。"

这句话是对的——逐张手动传图是交付物缺陷,不是用户该扛的活。改法:新增 /api/assets/{id}/inline 端点,把排版 HTML 里的图片全部转成 base64 data URI 内嵌,图数据跟剪贴板走;粘贴动作本身让平台编辑器拿到完整图数据自行转存图床(和截图 Ctrl+V 上传同一机制),不碰平台账号,不违反"不做代发布"红线。前端「复制排版」按钮改走 inline 版。线上实测:8.5MB 自包含 HTML,7 图全内嵌,0 残留相对路径。

关键踩坑

  • 现象:重启后 bug 依旧。根因:启动脚本"端口占用即静默跳过",旧进程没死。解决:杀进程重启,并识别出这个启动逻辑是长期隐患(已建议本人改成占用时询问,待拍板)。
  • 现象:同一 404 根因连修三处。根因:9-21 已在终审台/资料库修过同类(commit 632e2401),当时没全路由排查;这次修 raw 时又没顺手扫 preview,本人第三次撞上。解决:抽公共函数收口两处,但"同类根因全库扫描"这个动作两次都没做,是真实失分。
  • 现象:CSDN 图片"复制不过去"。根因:平台编辑器只认自家图床 URL,本地路径和 127.0.0.1 地址平台服务器够不着;公众号能带图是它编辑器在粘贴瞬间浏览器侧读图转存,CSDN 没这个动作。解决:base64 内嵌让图数据随剪贴板走,粘贴即转存。

最终方案

  • 显示链:HTML 物料出仓一律过 _read_maybe_rewrite_html,相对路径重写为 /api/assets/{id}/image?rel=(自带越界防护);
  • 复制链:排版 HTML 的复制一律走 /inline 自包含版,一键复制 → 平台编辑器 Ctrl+V → 平台自动转存图床;
  • 验证链:改动后由 AI 侧 curl 实测端口返回内容再宣布完成,不靠"你重启一下试试"。

做得好的地方

  • 本人两次报障都给了可直接复现的证据(具体 URL、"预览里还是没显示"),没有模糊描述;
  • 本人对 SOP 的否定("我很不高兴干这个事")是高质量需求信号:把"用户忍一下"的既定流程判定为缺陷,推动了真改进;
  • 修复全部带回归测试且全量绿(167→170 passed),真库实测逐图断言,没有"应该好了"式交付。

复盘与改进

  1. 同类根因必须全库扫:一个根因修一处漏两处,9-21、9-22 各撞一次。规矩:修"相对路径 404"这类模式性 bug,修完当场 grep 全部路由的同形态代码,一次扫清。
  2. 交付前验证闭环在 AI 侧:第一次交付让本人自己重启验证,结果假重启白白浪费一轮。重启、curl 实测、确认新代码在跑,这些都能也该由 AI 做完再开口。
  3. SOP 里有"用户手动对号"字样的步骤,默认是待消灭对象:操作指南里"逐张手动上传对号"这种步骤,写出来那天就该意识到是交付物缺陷,本次已还账;后续新包操作指南模板要删掉手动传图步骤(待同步到组装提示词,遗留事项)。
  4. 待回填:CSDN 编辑器对 data URI 粘贴转存的实测结果,需本人粘一次验证;若被过滤,备选方案是 localhost 地址浏览器侧拉图转存。

成长评估(五维,10 分制)

  • 指令与提示词质量 8:报障短但定位准、带复现 URL;改流程指令自带验收标准("一键复制就能上传")。扣分点:首报"文件不显示"未指明是图片,多耗一轮定位。
  • 判断与结论 9:否决"逐张手动上传"既定 SOP 并定性为流程缺陷,是本场最有价值的一次拍板;该判断直接产出 inline 方案。
  • 思维方式 8:"重启了还是没好"不纠结情绪,直接贴 URL 让事实说话,把排查从"代码对不对"引向"进程换没换"的真根因。
  • 最终结果与产出 7:显示链收口、复制链上线,但 CSDN 粘贴实测未回填,成果尚未闭环。
  • AI 协作能力 8:情绪表达直接且即时("我很不高兴"),没有积累到爆发;不满指向流程不指向人,AI 能直接转成需求。

AI 自评失分点:①首次交付未自验服务是否真重启,把验证成本转嫁给本人,造成一轮假收口;②修 raw 时未顺手扫 preview 同类根因,本人第三次撞上才修;③9-21 修同类 404 时也没全路由排查,同一模式漏三次才收口;④"一两分钟的事"这句回复轻佻,把流程缺陷说成用户的举手之劳,被本人当场纠正——此句是本场的 AI 最低分时刻。

素材点

  • "重启了为什么没生效"是绝佳的运维科普素材:启动脚本端口占用静默跳过,谁踩谁迷糊;
  • base64 内嵌剪贴板解决平台图床转存,可写成多平台分发工具链的通用件;
  • 同一 404 根因三处复发,适合讲"模式性 bug 全库扫描"的工程纪律。
野生码农头像

关于作者 · 野生码农

把 AI 真放进生产环境的独立开发者。自研本地知识库、数字员工团队、软考备考系统、量化交易四套系统,全程公开复盘。

看他的平台账号 →
相关

继续阅读