01 / 场景说明
导出失败,但不一定是导出代码坏了
内部报表页突然有人反馈“CSV 下载不了”。页面没报错,接口也返回了 200。你手上没有完整开发环境,不想把一大段前后端代码直接扔给 AI,让它列二十种可能。
现在更需要的是一轮小实验:换账号、换数据范围、直接打开下载地址。每次只改一个条件,先把问题卡在哪一层说清楚。
02 / 原始材料
目前知道的现象
- 生产环境的“销售报表”页,运营账号点击“导出 CSV”后没有文件下载。
- 页面会显示“文件已生成”,控制台没有报错。
- 网络面板里
POST /api/export返回 200,并带回一个下载地址。 - 同一位同事换 Chrome 和 Edge 都失败,无痕窗口也一样。
- 管理员账号导出同一份“本月华东”报表可以成功。
- 运营账号导出数据更少的“上周华东”仍然失败。
- 还没试过直接打开下载地址,也没对比两个账号拿到的响应。
- 目标:先确定问题在哪一层,再决定要看哪段代码。
03 / 失败提示词
一上来问“怎么修”,只会收获猜测
我们的 CSV 导出功能坏了,接口返回 200 但文件没下载,应该怎么修?
信息还不够时,AI 往往会从浏览器拦截、跨域、文件流、响应头一路猜到前端事件。建议听起来都像那么回事,但你不知道先查哪一个,也不知道查完能排除什么。
04 / 修改理由
先问“问题只发生在哪里”
把观察和判断分开
“接口 200”是观察,“后端没问题”是判断。200 只说明请求被处理,不代表下载地址可用。
优先利用成功对照
管理员能成功,是现成的对照组。先比较账号相关差异,比盲查整个导出链路省事。
每次只改变一个条件
同时换浏览器、账号和数据范围,即使成功了,也不知道究竟是哪一项起作用。
让每个实验都能排除假设
不是堆一张排查清单,而是写清“看到 A 说明什么,看到 B 下一步查什么”。
05 / 最终提示词
让 AI 当排查搭档,不当猜谜选手
你是一名协助排障的资深工程师。先不要给修复代码,也不要假设“接口返回 200 就代表后端正常”。请根据我提供的现象,帮我定位问题边界。 请按下面格式回答: 1. “已确认”:只写现象直接支持的事实; 2. “仍未知”:列出会改变排查方向的关键信息; 3. “当前假设”:最多 3 个,按可能性和验证成本排序,并注明各自依据; 4. “下一轮实验”:最多 5 步,每步只改变一个条件,写清操作、预期观察,以及不同结果分别能排除什么; 5. “需要查看的最小材料”:实验后如果还不能定位,再告诉我只需提供哪一段响应、日志或代码。 要求: - 优先使用已有的成功案例做对照; - 不要泛泛列出所有可能原因; - 不要让我一次执行多项改动; - 涉及令牌、Cookie、下载地址时提醒我先脱敏; - 如果信息不足,明确说不足,不编造系统实现。 目前观察: [粘贴环境、操作步骤、成功与失败对照、接口响应和已做实验]
06 / 真实输出节选
范围先缩到账号与下载授权之间
故障与浏览器类型、无痕模式和报表数据量的相关性较低;同一报表存在管理员成功、运营账号失败的稳定对照。
两个账号拿到的下载地址是否同类;运营账号直接访问该地址时的状态码;下载请求是否携带身份信息。
复制运营账号响应中的下载地址,在同一登录窗口直接打开。若返回 403,边界落在文件访问授权;若能下载,则优先检查页面触发下载的前端逻辑。
分别导出同一报表,只对比两份已脱敏响应的字段名、地址形式和有效期。若运营账号缺少签名参数,继续查生成下载凭证的权限分支。
两类账号的脱敏导出响应、直接访问下载地址的状态码与响应头;暂时不需要整个导出模块代码。
07 / 人工检查结果
403 找到了边界,还没找到根因
运营账号直接打开下载地址确实返回 403,管理员返回 200。人工检查后,把结论停在“文件访问授权链路”这一层,没有直接照抄 AI 提到的“缺少签名参数”。参数到底是没生成、过期,还是文件服务拒绝该角色,还要结合日志确认。
勾选进度会保存在这台设备上。