MarketAgent · PRD 详解稿 亚马逊美国站选品市场洞察 Agent · 第 3 层(设计)· explainer 单栏档
D9 视角

第 0 节

这份稿子是给你拍板用的,不是给你验收界面用的

读者是产品负责人。读完这一份,你应该能对第 4 节里的 九个决策 逐条说出「选哪个」。 界面长什么样不在这一份里——那是并行产出的交互稿design/mockups/marketagent-prototype/)的事。 两份稿内容同源,但各自自包含,不互相引用文件。

四层声明:这份稿子站在哪一层,缺哪一层

第 1 层 · 事实
✅ 已提供,且过了独立对抗性验证
字段契约表 docs/96 + 4 份独立复核 docs/97-*。凡 96 与 97 冲突,一律以 97 为准(97 推翻/修正了 96 的 20+ 处)。
第 2 层 · 需求
✅ 已提供(PRD docs/98
但本项目没有原始 PRD,所以场景出处大面积是「反推」。反推项天然待你确认,不得当成已确认需求往下做。
第 3 层 · 设计
⚠ 本稿在做,但只做「说法」这一半
本稿覆盖:叙事、决策论证、覆盖对照、红线自查。不覆盖屏级形态——那半边在交互稿里。
第 4 层 · 验收
⚠ 部分:本稿回填了对照矩阵
第 7 节把 PRD §6 的 41 行逐条回填了「本稿落点 / 交互稿落点」。用户验收不由本稿标注。
天然待确认

7 条「反推项」和 6 条「需求有事实无」是天然待你确认的,本稿一条都没有替你定案。 「反推」的意思是:这条需求的出处只有「从界面/代码倒推」,没有任何人写下来说过要做它。 逐条见第 7 节覆盖表的「状态」列。

⚠ 派单原文写的是「8 条反推项」,而 PRD §6 矩阵里逐行数出来是 7 条。 这是 PRD 内部统计与表体的一处出入,第 8 节 Q13 已报出。不影响任何结论——41 行本稿一行没漏。

顶上那个「D9 视角」开关是干什么的

第 4 节的 D9 问的是:产品要不要在界面上主动说出自己的能力边界(「这个数我拿不到」「这块只能参考」)。 它是贯穿性的——选了它,其余八条的答案会自动收敛。所以它不适合用文字描述,得让你看见。

顶栏那个开关切换的就是它。整份稿子里10 处「按 D9-X · 界面这里该说的话」区块会随之出现或消失: A 全部 10 处展开 · B 只留标为 critical 的 4 处 · C 全部折成一行灰字。 现在就切一遍——你会看到这三条路在信息密度上的真实差别,比读任何一段文字都快。

那 4 处 critical 是:D2 —— 配额耗尽必须并进错误可区分性一起做; D3 —— VOC 是规则不是 AI;D6 —— 认证类问题的「我不知道」; 第 5 节 —— 配额耗尽的独立形态与文案。判据是同一条: 不说这句,用户会照着现有信息做出一个具体的错误动作。 而「哪些算 critical」正是选 B 之后每一次都要重新争论的东西——这也是 PM 不建议 B 的理由。

未经拍板

本稿默认展示 D9-A,那是 PM 的推荐,不是你的决定。 凡受 D1–D9 影响的地方,本稿都做成可切换对比,并在每张决策卡底部写明「当前展示的是哪个选项 · 未经用户确认」。 没有任何一处替你挑了答案。

怎么把意见留在稿子上

右下角的批注入口可以点任意元素 → 写意见 → 贴图 → 一键复制成 Markdown, 导出的每条自带页签、选择器、元素文字,我们这边能精确定位到你说的是哪一块。 比起「第 3 节那个表不对」,这个能省掉一整轮来回。

本稿的边界:不做什么
  • 不画屏——没有一处是界面稿。屏级形态在并行的交互稿里。
  • 不替你拍决策——九个决策全是可切换对比 + 带理由的推荐,没有一处按某个选项定稿。
  • 不画事实层里不存在的字段——拿不准的一律进第 8 节待澄清,不用「合理推断」填空。
  • 不改产品代码——market_agent 全程只读。

第 1 节

这个产品在解决什么

一句话:帮人判断「亚马逊美国站上,这个类目值不值得我做」。 你填一个商品编号、一条类目路径或一个关键词,等大约 19 秒, 拿到一份 9 个模块的市场报告,右侧还能接着追问 AI。

用户是谁,他在什么处境里

  1. 他要在几十个候选类目里筛掉大部分,只对少数几个深调研。所以他要的不是「一份完美的报告」, 是「快速判断这个类目值不值得继续看」。
  2. 他做的是要花钱的决策——备货、开模、认证、广告预算。所以「数据可不可信」对他比「数据齐不齐全」更重要。 一个标着「不确定」的空白,远好过一个看起来确定但是错的数字。
  3. 他不是工程师。 他分不清「上游没这个字段」和「这次网络抖了」,也不该被要求分清—— 但他必须知道「我要不要重试一次」

⚠ 这三条是从界面与代码反推的,本项目没有原始需求文档。第 8 节 Q10 请你确认使用节奏(粗筛 vs 深调研)—— 它会实质改变 D2 与 D7 的答案。

先把几个词说成人话(后面全篇会用)

人话是什么对用户意味着什么
ASIN亚马逊给每个商品的 10 位编号,形如 B0 开头 + 8 位你想「照着某个竞品查市场」时填的就是它
类目路径
nodeIdPath
类目树上一路走到这层的编号串,真实数据长这样:1055398:1063306:1063314:8529229011冒号分隔「我要看哪个市场」最精确的写法
SellerSprite
(卖家精灵)
本产品唯一的数据来源,通过 MCP 协议提供 45 个数据查询工具它给不了的,本产品就给不了;它被限流,你的报告就缺块
版块section报告里的一个分析模块,固定 9 个(市场容量、品牌格局、价格带、产品体验、VOC、流量格局、上架时间、产品迭代、全球市场)左栏那 9 行就是它们
版块状态三档 complete / partial / unavailable你判断「这块数据能不能信」的第一眼依据。⚠ 同一个状态左右两栏用了两套中文说法(Q9)
口径链路lineage每个数字附带的「从哪个工具、哪些原始字段、按什么公式、在什么样本上算出来」的说明页头「来源和口径可追溯」这句承诺的载体
缺失项清单
missingDataLog
结构化的「这次缺了什么」列表,每条带优先级「数据质量与缺失项」面板里那几行
决策可用度
decisionReadiness
每个版块一条判断:够用 / 谨慎参考 / 不能用直接告诉你「这块结论能不能拿去拍板」——目前界面不显示
取数诊断
dataSourceDiagnostics
后端记录的「这次哪些工具可用、哪些失败了、为什么」目前界面一个字都不显示
限流SellerSprite 说「你这一分钟问得太多了」,原文是中文的「每分钟访问已达上限」你的报告会静默缺几块,而当前界面几乎无法让你知道是因为这个
哨兵值上游用一个特殊数字表示「没有」,比如用 -1 表示「没有 Prime 价」程序不认识它,界面就会把 -1 当真价格显示出来(现状:$-1
兜底类分类规则一条都没命中时,评论被塞进的默认桶:其他负面 / 其他正面 / 中性待判定你看到的 VOC 分类里,71% 落在这三个桶里
VOCVoice of Customer,从评论里提炼「用户在抱怨什么、想要什么」报告第 5 个版块
主张接地
claim-grounding
一道校验:AI 说的每句结论必须能在报告里指到证据,指不到就丢弃它防编造,但它会把认证/知识产权类问题整条丢掉(见 D6)

第 2 节

它现在的真实状况:不是「功能不够」,是「说话不算数」

四份独立验证报告一共坐实了 20 多条问题。摊开看,绝大多数不是「少做了一个功能」, 而是「界面说了一句系统兑现不了的话」。 这个区别决定了本轮该修什么—— 补功能很贵,把话说准很便宜,而且后者才是这批问题的根。

七句对不上的话(每条都有代码行号级证据)

界面说:「统计窗口:近 12 个月」下拉框标签就叫「时间范围」
系统做的:三次不同选择产生逐字节相同的数据请求F1 / 97-fake-controls §V2-a
界面说:某版块「完成」SkillRail 左栏状态
系统做的:背后有一次被静默吞掉的限流失败F2 / 97-ratelimit §V1-b(7 个实例)
界面说:「已获取 2/5 字段:price、primePrice」价格校验覆盖度
系统做的:primePrice 的值是 -1(哨兵值),界面显示成 $-1,26/30 行F6 / 97-voc §c-2
界面说:「判断 Query、Listing 和自然/广告流量集中程度」左栏模块描述
系统做的:广告成本永远是「暂缺」,且上游 45 个工具里没有任何广告类工具G6 / 97-capability §5.1
界面说:「分析完成度 78%」左栏进度条
系统做的:分母恒为 9,其中 2 个版块结构上不可能算完成,100% 永远到不了F7 / 97-capability §1
界面说:「来源和口径可追溯」页头徽章,产品核心卖点
系统做的:中文计算说明躺在数据里不显示,界面显示的是英文公式串;取数时间戳、指纹全部零渲染F10 / 97-voc §b-5、§b-6
你问:「这个类目有认证要求吗」右侧 AI 追问
系统做的:拿当前选中版块的内容答一段无关文本,外加一条把责任推给「外部 Agent 引用无法回溯」的误导性告警F8 / 97-capability §5.4

归成四类,好记也好排优先级

类型它长什么样为什么危险典型条目
假控件 控件能点、能选,但对系统行为零影响 用户拿着一个他以为选过的口径去做判断。这是最接近「功能性欺骗」的一类 时间范围下拉框(S7)、站点下拉框(S10)
假完成 状态标「完成」,而背后有失败被吞掉 用户根本不知道有缺失——比「看到缺失但不知道原因」更坏 版块状态只看指标不看告警(S11)、价格带刻意排除校验指标(S18)
假可用 用一个哨兵值撑出「这个字段有值」的声明 唯一一条界面显示了错误数值的缺陷,其余都是诚实降级 primePrice 显示 $-1,并据此宣称 2/5 字段可用(S19)
答非所问 系统答不了,但它假装答了 本文所有问题里潜在损失最大的一条:用户可能带着毫无依据的认证判断去投产 认证 / 知识产权类追问(S24)
按 D9-A · 界面这里该说的话

每一条「说话不算数」在界面上都对应一句该说而没说的话。举三个:

  • 假控件 → 「本报告的统计口径:2026 年 7 月单月截面。当日 <15 号取上月,否则取当月。」(这句所需的数据已经在界面上了,就摆在假控件旁边)
  • 假完成 → 「本版块 4 个指标已算出,但有 1 次取数因每分钟访问上限失败,重试可能补齐。」
  • 答非所问 → 「认证与知识产权不在本报告的数据范围内,本次没有相关证据可引用。」
按当前 D9 视角,这三句边界说明不会出现在界面上——用户继续按现有信息判断。
图 1|五种完全不同的失败,共用同一句话;而其中两种的正确动作是相反的。 这是当前最大的单点信息损失:用户拿到的那句话,恰好是唯一一句无法帮他决定下一步的话。
上游限流ERROR_VISIT_MAX
账号配额耗尽secret_no_remaining → ERROR_UNAUTHORIZED
上游超时withTimeout 30s
平台 60 秒超时route.ts:7 maxDuration
数据源密钥失效secret_expired
▼ ▼ ▼ ▼ ▼
用户看到的同一句话 「报告生成失败,请稍后重试。」 MarketInsightDashboard.tsx:130-135 兜底文案;504 的 body 不是本产品的 JSON 错误体
▼ ▼ ▼
稍后重试限流:等一分钟就好正确
停止重试配额耗尽:重试永远无效,要补额度与上一条方向相反
联系管理员换密钥鉴权失败:用户自己解决不了正确
待确认/可缓解 阻塞:正在发生,且退避重试无效 正确动作 三种颜色。
这张图为什么画了:逐条对 skill §7b 的两个测试

正向测试(画成图会不会出现文字里没有的箭头或框中框)——。 文字只能顺序描述「S12 限流、S29 鉴权、S30 平台超时、S31 配额耗尽」四个分散的场景; 图上出现的是文字里没有的「五进一,再一分三,且其中两支方向相反」的收束—发散结构。 「相反」这件事,只有把两支画在同一层才看得见。

反向测试(删掉图,读者要不要反复回看)——。 这五种失败在 PRD 里分属 S12 / S29 / S30 / S31 四个场景 + §3.2 一张表, 「哪几种压成了同一句话」和「各自该做什么」不在同一处,一遍读下来拼不出来。

量化线:方框 9 个(5 + 1 + 3),远超「少于 3 个就别画」。

一张想画但判定不该画的图,以及理由

候选:D9 如何收敛其余八条决策。 形状是 D9 一个框扇出到 D1–D8 八个框。

正向测试不通过:图上不会出现文字里没有的箭头或框中框——它只是把「D9 会影响其余八条」这一句话装进九个方框, 关系是单层扇出,没有任何交叉、回路或层级。

反向测试也不通过:删掉它,读者一遍读下来就懂。所以不画。 改用顶栏那个 D9 开关——它让你直接看见密度差别,比一张扇出图有用得多。

第 3 节

贯穿主张:诚实优先于完整

系统拿不到的,界面必须明确说拿不到、为什么拿不到、以及用户下一步该做什么。
系统拿得到的,必须让用户看得见它是怎么来的。

在补数据源之前,先把「说话算数」补齐——这是本轮「把体验做好」里最高性价比、也最不可跳过的一段。

为什么这条主张在这个产品上特别成立:成本已经付过了

「自曝边界」听起来像是要新做一堆东西。在这个产品上不是。 后端为「自曝边界」设计的四套机制已经全部做好并落进每一份报告了,只是前端没接

机制它回答用户的哪个问题后端产出情况前端消费情况
missingDataLog
缺失项清单
「缺了什么,那我该怎么办」 每条带 7 个字段:缺哪个字段 / 该从哪个源拿 / 为什么缺 / 关联指标…真实报告 21 条每条都带全 面板只取其中 4 项,把「该怎么办」那几个字段全丢了
dataSourceDiagnostics
取数诊断
「这次为什么缺:是这次没给,还是永远没有」 failedTools 存着结构化三元组 工具名 + 所属版块 + 中文原因,原因就是人话「每分钟访问已达上限」 grep -rn dataSourceDiagnostics app0 命中
lineage
口径链路
「这个数字是怎么算出来的」 中文人话计算说明 calculationNotes、取数时间 retrievedAt、请求指纹 中文说明零命中;界面显示的是英文公式串;时间与指纹全部零渲染
decisionReadiness
决策可用度
「这块结论能不能拿去拍板」 每个版块一条:够用 / 谨慎参考 / 不能用,带 summary 与阻塞项 id 目前无处展示(红线 10:要用属于新增前端能力,须显式立项)
这一条直接决定 D9 该怎么选

选「自曝边界」不是引入一个新方向,是把已经付过的成本兑现出来。 本产品自己早就选了这条路,只是没走完——四套机制的后端全做好了,前端一套都没接。 这也是为什么第 1.3 条事实很反直觉但很省钱:「让失败原因可见」主要是接线,不是采数。

按 D9-A · 这四套机制接上之后,界面会多出什么
  • 缺失项每条后面多一句「该从哪儿拿」——比如「广告成本 · 本产品未接该数据源 · 建议去 Amazon Ads 查」;
  • 报告里多一个取数诊断面板:本次可用工具数、失败工具名与中文原因;
  • 点开任何一个数字,看到的是中文计算说明而不是英文公式串,外加取数时间;
  • 每个版块头部多一枚决策可用度标记:够用 / 谨慎参考 / 不能用。
按当前 D9 视角,这四套已经做好的后端机制继续不出现在界面上——成本照付,用户看不见。

三条最容易照着抄错的地方(照抄 96 会出事)

事实层有两份文档(96 字段契约表、97-* 对抗性验证)。 凡两者冲突一律以 97 为准,因为 97 推翻/修正了 96 的 20+ 处。下面三条是最容易踩的:

红线 11 · 本轮新增,也是最直接会复现「14 类虚构字段」的一条

lineage.rawFields[] 不是「上游返回了这些字段」的证据,是 section builder 里写死的字符串常量。 price-band.ts:105 是字面量数组,:252/:342 追加的正是价格校验字段的标签—— 所以 rawFields 里赫然写着 buyBoxPrice / coupon / variantMinPrice而这三个字段在所有真实取样里一个非空值都没有

渲染它本身无害(只是显示一串常量),但把它当字段可用性依据,就是上一版「14 类虚构字段」的同一条路。 96 与 97-voc 都把它列进了「白送能力」清单而漏了这个前提。 判断上游到底给不给某字段,只认三类 A 级证据availableTools(真实工具快照)、 failedTools(真实失败原因)、price_validation_coverage(由真实样本算出的覆盖度)。

红线 8 · 反向修正

sampleSummary.warnings 不是「零渲染」。 它的文本经 report-service.ts:66-68 并入 report.warnings,再挂到容量版块,partial 时会被渲染出来。 照抄「零渲染」会设计出重复告警——同一句话在页面上出现两次。

红线 9 · 反向修正

TrendMeta 不是「零消费」。 它的 reason 已经渲染成洞察卡、 sourceKind 决定告警等级,只有 sourceTool 一个字段未用。别整体列进白送清单。

红线 1 · 上一版最容易踩的一处

页面上已经有一个进度条(左栏「分析完成度」+「N/9 完成」+ 百分比),语义是数据完备度,报告返回后才有数据。 而生成过程的进度、步骤、ETA、排队位置、单步耗时一个字段都不存在。 新画一个生成进度条 → 页面上两个百分比互相打脸;误把既有那个当虚构字段删掉 → 删掉一个真实功能。 两个都错。

第 4 节 · 本稿最重要的部分

九个决策:每个都请你拍一次

每张卡的读法固定四问:这是在选什么 · 选错的代价 · 推荐哪个 · 为什么。 选项标签可以点,点了就切换到该选项的优缺点、业务影响,以及「选了它,界面会变成什么样」本稿默认停在 PM 推荐的那一项,但那不是你的决定。

建议先拍 D9(在最下面那张卡,也可以直接用顶栏开关试)。它是贯穿性的—— 定了 D9,其余八条的答案会自动收敛一大半。当前顶栏视角:A · 明确自曝边界(PM 推荐,未经你确认)。
D1
那个「时间范围」下拉框怎么办
最接近「功能性欺骗」 选项 A 依赖待澄清 影响场景 S7 · S8
这是在选什么
界面上有个下拉框标签叫「时间范围」(近 30 天 / 近 6 个月 / 近 12 个月),报告里对应那行叫「统计窗口」。 三次不同选择产生逐字节相同的上游请求——它从校验之后就再没被任何取数逻辑读过一次。 你要决定:把它接上真的、删掉、还是置灰。
选错的代价
用户拿「近 12 个月的市场规模」去做年度备货判断,而他手上其实是单个最近完整月的截面。 对选品来说,这是一个会直接改变结论的差别。
无论选哪个,这三处清理都必须做
  • 已落盘的历史报告——每一份都带着一个与数据无关的窗口声明;
  • AI 推理上下文——report-context.ts:165/:241 把含假窗口的样本规则喂给了 AI。 这不是文案层欺骗,是把假口径喂进了推理层,AI 会读到「本报告统计窗口 = 近 12 个月」并据此措辞;
  • sections/voc.ts:91——硬编码「近 30 天」,你选「近 12 个月」时这一格连文案都是错的。
优点

用户真正拿到他想要的能力。这是唯一在功能上前进的选项。

缺点

前提未知。当前主取数工具暴露的参数只有返回字段与分页,上游是否支持时间窗参数在本仓库内零证据。这不是前端接线,是数据源能力调研。

业务影响

上游若支持 → 产品能力实质提升;若不支持 → 这个选项根本不存在,会白白拖住其余选项的决策。

选了它,界面会变成什么样

下拉框保留且真的生效;报告里「统计窗口」那行随之变化。但在探针结论回来之前,这一屏画不出来—— 我们不知道上游接受什么参数,画出来就是虚构。本稿因此不为该选项画任何形态。

优点

立刻消除欺骗。而且真口径已经在界面上了——真实月份与「当日 <15 号取上月」的判定原因就摆在假控件旁边,复用成本极低。

缺点

用户会感到「能力被拿走了」——他之前以为有的东西没了。

业务影响

短期体感是功能减少,换来的是「这个产品说的话可以信」。对花钱的决策,后者长期价值更高。

选了它,界面会变成什么样

输入区少一个下拉框;报告顶部那行从可选的「统计窗口:近 12 个月」变成只读的 「统计口径:2026 年 7 月单月截面(当日 <15 号取上月,否则取当月)」; 趋势类卡片另标「以该月结尾回溯 13 个点」。用户不会失去信息,只是从错的窗口换成对的窗口。

优点

保留了未来接上的位置,改动最小。

缺点

一个永久置灰的控件是一种新的困惑——用户会一直问「什么时候能用」;且它仍占着「统计窗口」这个语义位。

业务影响

把一个明确的欺骗换成一个长期的悬念。置灰控件在真实产品里通常会被永久遗忘。

选了它,界面会变成什么样

下拉框还在,灰的,旁边一行小字「当前仅支持单月截面」。 页面上会同时存在一个不能用的窗口控件和一个真实的窗口声明,两者语义打架。

PM 推荐 · B,并把 A 作为探针回来后的独立轮次

① 「数据口径可信」是选品决策的地基,比「能选窗口」更基础——一个错的窗口标注比没有窗口标注更有害; ② B 的真口径素材已经在界面上,用户不会真的失去信息; ③ 现在选 A 等于承诺一件还不知道能不能做的事,而这正是上一版产生虚构字段的同一类错误; ④ B 与 A 不冲突——删掉假控件后,探针确认上游支持时再把真控件加回来,是干净的增量,不需要回滚。

未经用户确认 当前展示:B · 删掉控件,改成只读展示真口径(PM 推荐) · 选项 A 依赖第 8 节 Q1–Q4 的共同前置:上游能力调研,当前被账号额度耗尽硬阻断
D2
限流怎么办:本轮最重要的取舍
3/3 报告全部命中 不依赖实采,可照常推进 影响场景 S12 · S28 · S30 · S31
这是在选什么
限流不是风险,是现状:3 份真实报告全部命中「每分钟访问已达上限」。 单份报告要打 59±2 次上游请求、峰值约 30 并发,而限流窗口是分钟级——结构上必然触顶。 你要决定:只把它说清楚,还是同时把它变少,还是两件一起。
选错的代价
用户的报告完整性目前是随机的:同一个关键词跑两次,缺的版块不一样,而两份都标着「完成」。 他不知道该信哪一份,也不知道重试有没有用。
两个必须先说清的事实

① 仓库内没有上游 QPS 阈值,也没有任何请求计数、失败率、耗时埋点—— 我们连「哪个方案有效」都没有测量依据。这本身就是一条需求(Q6)。

② 缓存与重试在项目自己的设计文档里早就写过(含建议 TTL、任务队列/重试/超时/进度清单)。 所以这不是「新需求要不要做」,是「既有设计什么时候补齐」。

图 2|一次报告的取数形状:一波并发把当分钟配额吃光,然后才轮到串行尾链。 这解释了一件光看文字看不出的事——为什么偏偏是 review 每次都失败, 以及为什么「给它加退避」是已被精确定位的最小修复点
① 解析输入关键词 / ASIN / 类目路径 → 一条类目路径市场定义 + 候选打分
② 主并发波约 30 个请求同时发出分布类 · 趋势类 · 品牌 · 价格 · 上架时间…
此刻:当前这一分钟的上游配额已经被吃光 限流是 HTTP 200 + payload 里带错误码,任何基于状态码的重试中间件都不会被触发;应用层零重试、零退避、零并发闸。 失败被就地吞成 warning,不抛不重试
③ 串行尾链:review ×13两条串行链,逐个取评论3/3 报告的必败工具
④ 两个版块被打伤产品体验 + VOC 未满足需求5 个 P0 版块里的两个
最小修复点:只给串行尾链加退避 前面的并发波已经过去,等一等配额就回来了——救回来的正好是上面那两个版块。 D2 选项 B
主干链路 结构性触顶点 阻塞:必败工具与受害版块 已定位的修复点 四种颜色。
图 2 为什么画了:逐条对 skill §7b 的两个测试

正向测试 —— 出现文字里没有的东西:图上有一个时间序上的因果(并发波在前 → 配额耗尽 → 串行尾链在后必败), 而 PRD 的文字是分散的三句陈述(「59±2 次」「峰值 30 并发」「review 是串行尾链」)。 「前面吃光了后面的」这条箭头,文字里根本没有。

反向测试 —— 要反复回看:不画的话,读者必须自己把 §3.4 的并发数字、 S12 的失败清单、D2 选项 B 的「最小修复点」三处拼起来,才能理解为什么退避只加在一个地方就够。 方框 6 个,过量化线。

优点

素材已经全在手上——失败原因带工具名、版块、中文原因,只差接线。再前进一小步:既然限流是本次波动,就把「重试」这个正确动作直接给用户

缺点

用户手动重试仍会重打 59 次全量请求,不配合缓存时重试会加剧限流

业务影响

信任度上升(诚实了),用户第一次有了「我能做点什么」的选项。筛选效率暂时不变。

选了它,界面会变成什么样

缺失项每条从「这块不能判断」变成 「广告成本 · 本产品未接该数据源 · 建议去 Amazon Ads 查」「上架节奏 · 本次撞上每分钟访问上限 · 重试可能补齐」+ 一个可点的重试按钮」—— 同一个位置给两句方向完全不同的话,因为一类重试无用、一类重试就好。

优点

最小修复点已被精确定位(见图 2):给串行尾链加退避即可救回两个 P0 版块

缺点

显著拉长当前的 18.7 秒。

业务影响

报告完整性大幅提升。60 秒不是物理墙,是一行常量(平台默认已是 300 秒),所以「拉长」不必然撞上限。

选了它,界面会变成什么样

界面本身几乎不变,变的是等待时长——所以它必须和 D7 一起看:等更久而界面一个字不变,是负分。

优点

唯一能同时改善速度和限流的选项:同关键词的第二次查询、历史报告复用都不再打上游。

缺点

缓存意味着「数据可能不是最新的」,要在界面上说清;且当前报告存储无「查询 → 报告」索引,要新建。

业务影响

用户体感最好(第二次瞬间返回)。对选品场景特别合适——用户本来就在几十个类目间来回比较,重复查询是常态。

选了它,界面会变成什么样

报告顶部多一行「本结果取自 8 分钟前的缓存 · 立即重新取数」。 ⚠ 仓库里已有一个真实的持久磁盘缓存(缓存的是翻译结果),所以稿子里不许写「本产品零缓存」, 新缓存层要与它区分。

优点

改动最小,不引入任何取数行为变化,零回归风险。

缺点

用户仍然每次拿到不完整的报告,跨次结果仍然不可比。相当于把问题从「看不见」改成「看得见但解决不了」。

业务影响

适合作为第一步,不适合作为终点。

选了它,界面会变成什么样

和 A+D 一样,但没有那个重试按钮——用户看清了一个他解决不了的问题。这在体验上是负分。

PM 推荐 · A+D 先做(同一轮),B 与 C 一起作为第二轮,按 C → B 的顺序

「知道为什么缺 + 知道该怎么办」优先于「缺得少一点」——前者让用户立刻做出正确动作,后者只是把概率改善一点; ② C 排在 B 前面,因为 C 同时解决「慢」和「限流」,而 B 只解决限流且会让「慢」变差;先 C 后 B,B 拉长的等待被缓存命中大量抵消; ③ 不推荐单选 A;④ 拉长等待不构成拒绝 B 的理由——选品决策的时间尺度是天,不是秒

配套必做(不是选项,是前提):补请求计数 / 失败率 / 耗时埋点(Q6)。没有它,任何方案的效果都无法验证。

按 D9-A · 这里必须一起做的一条边界

「限流」和「账号配额耗尽」共用同一个用户入口,但正确动作相反(见图 1)—— 一个「稍后重试」,一个「停止重试并补额度」。把它并进 D2 的错误可区分性一起做, 修法在错误分类,不在文案层。这条被标为 critical:D9 选 B 时它仍然保留。

按当前 D9 视角,「配额耗尽 vs 限流」的区分不会出现在界面上——用户看到的仍是同一句「请稍后重试」。
未经用户确认 当前展示:A+D · 可见性 + 可点重试(PM 推荐) · 依赖第 8 节 Q6(补埋点是否立为前置)与 Q10(粗筛还是深调研)。
D3
VOC 分类:接 AI,还是明示这是规则
方向变更,不是修 bug 不依赖实采 影响场景 S20
这是在选什么
版块名叫「VOC 未满足需求」,描述是「用评论原文归纳用户痛点」。用户的期待是AI 读完评论帮我总结实际是关键词正则匹配——而且这是 README 里明文声明过的架构选择,不是「写好了忘了接」。 你要决定:把它接成 AI,还是诚实说明它是规则
选错的代价
真实数据里 71% 的评论落进兜底类(21 个分类槽位里 15 个是「其他正面」)。 而这个版块叫「未满足需求」,三份报告里负面分类总共只出现过 1 条换句话说:这个版块目前几乎没有在产出它名字承诺的东西,而用户不知道。
兜底率高的根因不是规则少,是三条用户看不见的隐含规则
  1. 短文本直接消失——少于 5 个词的评论连兜底类都进不去。
  2. 情绪先于关键词,而情绪纯按星级判定(不看文本)。所以一条 5 星评论里写 “it leaks”, 因为情绪是正面,「漏水」规则根本不参与匹配,最终落进「其他正面」。 这一条最致命——「高星低满意」恰恰是选品最想找的机会点。
  3. 中性评论 100% 兜底——10 条规则里没有一条是中性的,3 星与无星级评论必然全落进「中性待判定」。
优点

兑现用户对「AI 读评论」的原始期待;能处理星级与文本情绪不一致(当前最大的漏判源)。435 行分类器 + 109 行任务队列已经写好了。

缺点

① 这是架构方向变更,README 的声明要改;② 死代码要重新接线并清理孤儿分支;③ 把 LLM 成本与延迟引入报告生成主链路(当前 AI 只在追问侧);④ 评论池只有 5–10 条——接了 AI 也只是更准地分析 10 条评论。

业务影响

版块从「关键词计数」变成真正的用户声音归纳。但若不同时解决评论池太小,收益有限。

选了它,界面会变成什么样

分类名从固定 13 个桶变成 AI 归纳的自由标签;「分类方式」那行改写成「AI 归纳」。 但样本量下限提示仍然要保留——10 条评论上的任何「用户未满足需求」结论都不该做成强断言。

优点

诚实且低成本:加一行「分类方式:关键词规则匹配(非 AI 归纳)」,配合已有的中文计算说明就能落地;再把三条隐含规则告诉用户,他就能自己判断该不该信

缺点

用户的原始期待仍然没被满足;改进规则能降低兜底率,但天花板仍是关键词

业务影响

期待被正确管理,用户不会被误导。但这个版块的竞争力不会提升

选了它,界面会变成什么样

版块头部多一块口径说明:「分类方式:关键词规则匹配,非 AI 归纳。情绪按星级判定,不读文本——5 星评论里的抱怨会被归入正面。少于 5 个词的评论不参与分类。本次样本 7 条,结论仅供参考。」 这四句话就是这个选项的全部产物,它们让用户去点开证据看原文,而不是直接采信分类结论。

优点

零改动。

缺点

用户带着「AI 归纳」的预期,拿到 71% 落兜底类的关键词计数,而且不知道自己拿到的是这个。这是本文期待落差最大的一条。

业务影响

用户第一次仔细读这个版块时就会失去信任。

选了它,界面会变成什么样

和现在一模一样。

PM 推荐 · 本轮做 B(含改进规则 + 样本量下限提示),把 A 立成独立的方向变更决策

「知道这是规则匹配」能让用户自己校正判断——他会去点开证据看原文;现在他连「这是规则」都不知道,无从校正; ② A 是真正的方向变更,不该被夹在一轮体验优化里顺手做掉; ③ B 不是 A 的替代,是 A 的前置——即使将来接了 AI,「分类方式是什么」这句说明也该保留(届时改成「AI 归纳」)。

提请注意(不是能替你决定的):若选 A,请一并考虑「评论池只有 5–10 条」这个更上游的约束。 而扩大评论池会直接加剧 D2 的限流review 是调用次数最多的工具)。D2 与 D3 在这里是耦合的。

按 D9-A · 界面这里该说的话(本条标为 critical)

VOC 版块头部那四句口径说明就是这条决策的全部产物: 分类方式是规则不是 AI · 情绪按星级判定不读文本 · 短文本不参与分类 · 本次样本量。 标 critical 的理由:不说这四句,用户会把「负面分类只有 1 条」读成「这个类目用户没什么痛点」, 而真相是规则没命中——这直接导致一个错误的选品判断。

按当前 D9 视角,「这是规则不是 AI」不会告诉用户——他会按 AI 归纳的预期读这个版块。
未经用户确认 当前展示:B · 明示这是规则 + 改进规则(PM 推荐) · 与 D2 耦合;「扩大评论池」本期不做(第 6 节 8-9)。
D4
进度条口径怎么定(那个到不了 100% 的「分析完成度」)
口径缺陷,不是数据源天花板 不依赖实采 影响场景 S14 · S15
这是在选什么
左栏「分析完成度」进度条结构上永远到不了 100%:分母恒为 9,而其中两个版块(流量格局、全球市场) 恒不 complete。理论上限 78%,实测常见 67%。你要决定这个百分比的分母该怎么算
选错的代价
「分析完成度」是用户对「这份报告能不能用」的第一眼判断。永远不满的进度条会被读成 「这个工具不行」或「我操作错了」——他会反复重跑、换输入,而每次重跑就是 59 次上游请求。
必须先纠正的一个成本预期

不是「数据源不可逾越的限制」,是口径缺陷。 没有任何地方硬编码 partial:一个是被一条硬编码「不可用」的广告成本指标污染了判定, 另一个是 5 条指标的状态表达式里根本没写 complete 分支所以不要因为「看起来是天花板」而选择维持现状。

优点

100% 变得可达,进度条恢复信号意义。

缺点

用户会问「那另外两个模块算什么」;而这两个模块并非无用,从分母里消失等于暗示它们不重要。

业务影响

进度条可信了,但「9 个模块」的叙事被削弱成「7 个真模块 + 2 个附属」。

选了它,界面会变成什么样

进度条文案从「N/9 完成」变成「N/7 完成」,其余不变。那两个模块仍然在左栏列着,但不在计数里,也没解释为什么。

优点

与 A 数学等价,但叙事更诚实:明确告诉用户「这两块是参考级,本产品的数据源支撑不到判定级」。而且这句话是真的——广告成本上游确实没有,权威报告与海关数据确实无数据源。

缺点

要在界面上引入「参考级 / 判定级」这个新概念,是信息架构改动。

业务影响

用户第一次清楚知道「哪些结论能拍板、哪些只能参考」——这恰好是选品用户最需要的分层。顺带解决了那 3 条常驻缺口的归属问题。

选了它,界面会变成什么样

左栏 9 个模块分成两组:「判定级 · 7」「参考级 · 2」,进度条只算判定级; 参考级那两个模块下方常驻一行「本产品未接该数据源,属固有边界,不随本次取数变化」那 3 条永远亮着的「需关注」从警告位挪到这里,警告位就腾出来给真正随次变化的限流失败了。

优点

100% 可达,9 个模块保持平等,表面最好看。

缺点

那条硬编码「不可用」的广告成本指标是真实的能力缺口,把它移出状态计算等于用口径掩盖缺口—— 这正是价格带版块已经犯过一次、而本轮要修的那个错(S18)。

业务影响

实质是制造两个新的「完成的谎言」,与本轮「诚实优先」的主张直接冲突。

选了它,界面会变成什么样

进度条能到 100%,9 个模块全标「完成」。而广告成本那一格仍然是空的。

优点

零改动。

缺点

用户反复重跑追求 100%,且会认为工具不行或自己填错了。

业务影响

持续产生困惑且完全无收益。

选了它,界面会变成什么样

和现在一模一样:进度条停在 67% 或 78%,没有任何解释。

PM 推荐 · B

① 选品用户真正需要的不是「进度 100%」,而是「哪些结论能拿去拍板」——B 直接给了他这个分层,A 只是让数字好看; ② B 的叙事是有事实支撑的真话,不是话术; ③ C 必须明确拒绝——它会重复价格带那个错误,而那个错误正是本轮要修的。不能一边修一边再犯一次。 ④ B 顺带解决「需关注永远亮着」:4 条结构性常驻缺口里有 3 条正好属于这两个参考模块。

按 D9-A · 界面这里该说的话

参考级那两个模块下方常驻一行: 「本产品未接该数据源(广告成本 / 权威报告 / 海关编码),属固有边界,不随本次取数变化。」 这句话把 4 条结构性常驻缺口里的 3 条从「需关注」警告位挪走, 警告位才腾得出来给真正随次变化的限流失败。不说这句,那个警告就会继续常亮,然后被永久忽略。

按当前 D9 视角,「哪些只能参考」不会标出来——9 个模块看起来一样重,进度条继续停在 67%。
未经用户确认 当前展示:B · 参考级 / 判定级分层(PM 推荐) · 依赖第 8 节 Q11(这个分层要不要贯穿整个产品,还是只用在进度条上——那是架构级决定)与 Q7
D5
primePrice 显示成 $-1 怎么办
唯一一条「界面显示了错误数值」 影响场景 S18 · S19
这是在选什么
界面在 26/30 行上显示 $-1 作为 Prime 价格,并据此宣称「已获取 2/5 字段:price、primePrice」。 上游用 -1 表示「没有 Prime 价」,而显示逻辑只判「没返回」,没判哨兵值。 你要决定:归一化成「暂无」,还是标注它的真实语义
选错的代价
用户可能真的把 $-1 当数据读(「负价格?打折?」),更可能的是他会认为整个产品的数据质量不可信—— 一个显示负价格的产品,其他数字他也不会信了。而「2/5 字段可用」这句声明也是假的,实际只有 1 个字段真可用。
优点

消除错误显示;顺带修正「2/5 字段可用」这句假声明(会变成 1/5,那是真实值)。

缺点

它把两件不同的事压成了一件:「这个商品确实没上 Prime」「我们没取到这个字段」都显示成「暂无」。

业务影响

「价格校验覆盖度」会显示为更低的真实值。这不是退步,是把一直存在的真相显示出来。

选了它,界面会变成什么样

价格校验表里 26 行的 $-1 全部变成「暂无」;覆盖度文案从「已获取 2/5」变成「已获取 1/5」。

优点

保留了「这个商品确实没有 Prime 价」这个信息,比「暂无」更精确——「暂无」混淆了「没取到」和「确实没有」。

缺点

要区分「上游返回 -1(确实没有)」与「上游没返回(没取到)」两种情况,实现上比 A 复杂。

业务影响

信息量最高:用户能区分「这个商品没上 Prime」和「这个字段我们拿不到」。但必须同时修正可用性声明,否则 -1 仍会撑出一个假的「2/5」。

选了它,界面会变成什么样

那 26 行显示 「无 Prime 价」(灰字,与真实价格明显不同的排版), 剩余没取到的行显示「暂无」;覆盖度文案变成 「已获取 1/5 字段:price。primePrice 上游明示无此价; buyBoxPricecouponvariantMinPrice 当前取数路径稳定拿不到。」

优点

零改动。

缺点

用户看到负价格,会对整个产品的数据质量失去信任。

业务影响

PM 的原话:这条我认为不构成一个真实选项。

选了它,界面会变成什么样

和现在一模一样:26 行 $-1

PM 推荐 · B,并把「可用性声明必须按真实可用字段计算」作为 B 的必要组成部分

① 「这个商品没有 Prime 价」和「我们拿不到 Prime 价」对定价判断是两件完全不同的事——B 保住了这个区分; ② A 与 B 在诚实度上等价,但 B 的信息量更高; ③ 无论选 A 还是 B,「可用性声明由哨兵值撑出来」这半个问题必须一起修—— 光改显示不改可用性判定,界面还是会说「已获取 primePrice」。这是同一个缺陷的两半,拆开修等于没修。

按 D9-A · 这条修完,界面上会多出一个更难看的真数字

价格带版块的「可用字段覆盖度」会公开显示为一个更低的数字(2/5 → 1/5)。 如果同时接受了 D4 的「参考级 / 判定级」分层,这个更低的数字正好落进正确的位置这是「诚实优先」在这份稿子里最具体的一次代价,请你在拍板前先看一眼。

按当前 D9 视角,覆盖度下降这件事不会被主动说明
未经用户确认 当前展示:B · 标注语义(PM 推荐) · 「补齐另外三个价格字段」本期不做(第 6 节 8-4),依赖 Q1 / Q3,当前被额度耗尽硬阻断
D6
认证 / 知识产权类追问怎么办
潜在损失最大的一条 选项 A 依赖待澄清 影响场景 S24
这是在选什么
「这个类目要不要 FDA/CE 认证」「有没有专利风险」是选品的一票否决项,用户一定会问。 而系统当前的行为不是「诚实说缺失」,是答非所问:拿当前选中版块的内容答一段无关文本, 外加一条把责任推给「外部 Agent 引用无法回溯」的误导性告警。你要决定:接上游的商标类工具,还是在路由层直接说边界
选错的代价
用户可能带着一个毫无依据的认证判断去投产。 这比诚实缺失更难被识别为数据缺口——他可能以为系统答的就是认证问题。
为什么会「答非所问」:完整失败链(五步)
  1. 问题路由函数顺序短路,含「认证 / 知识产权 / IP」的问题永远命中「选品顾问」技能,进不到「数据缺口解释」技能;
  2. 而只有「选品顾问」会开启全局最严格的证据校验——认证问题被路由进了最严的通道;
  3. 该校验要求引用的证据文本命中认证/IP 关键词,而对 5.0 MB 全量真实报告扫「认证|专利|知识产权|合规|certification|patent|license」→ 0 次命中
  4. 于是主张被整条丢弃,落到「拿当前选中版块内容生成一段确定性回答」+ 那条误导性告警;
  5. 而上游确实有 4 个商标类工具全仓零接入
优点

上游确实有这 4 个工具(真实工具快照实证),这是一条真实可行的接入路径,能真正回答用户的问题。

缺点

依赖待澄清 Q2:这 4 个工具的返回字段在本仓库内完全未知——只有工具名,没有结构。在探针结论回来前,任何字段级需求都不能写。

业务影响

若探针确认可用 → 补上一个一票否决级的能力;若不可用 → 这个选项不存在现在不能承诺。

选了它,界面会变成什么样

本稿不为该选项画任何形态。 我们只知道 4 个工具名,不知道它们返回什么。凭工具名推断能力,正是上一版产生 14 类虚构字段的同一类错误。

优点

立刻消除「答非所问」这个最危险的行为。修法明确:在路由层就识别这类问题并直接返回边界说明,而不是放进证据校验让它被丢掉

缺点

用户拿不到答案——但他会知道自己拿不到,并去别处查。

业务影响

用户损失一个功能,但避免了一个可能造成真实金钱损失的误导。「我不知道」是一个用户能处理的答案,「答非所问」不是。

选了它,界面会变成什么样

追问「这个类目要认证吗」,回答区直接给一段边界说明: 「认证与知识产权不在本报告的数据范围内。本产品的数据源未接入商标/认证类数据,本次报告里也没有相关证据可引用。建议去目标类目的亚马逊合规页面或官方认证机构核实。」 并且不再出现那条把责任推给「外部 Agent」的告警。

优点

零改动。

缺点

用户拿着无依据的认证判断投产。PM 原话:这是我在整份 PRD 里唯一会明确反对的选项。

业务影响

潜在损失不可控。

选了它,界面会变成什么样

和现在一模一样:一段关于价格带或市场容量的文字,加一条误导性告警。

PM 推荐 · 立刻做 B;A 作为探针结论回来后的独立评估项

「明确说不知道」的价值远高于「看起来答了」——尤其在一票否决项上。 一个知道自己缺认证信息的用户会去查官方渠道;一个以为系统答过的用户不会; ② B 是 A 的前提:即使将来接上商标工具,也会有它答不了的认证问题(比如具体品类的 FDA 要求), 那时仍然需要 B 这条边界说明的通路。所以 B 不是过渡工作。

顺带必须处理的一处(最低成本、最高优先级):AI 的方法论提示词里在指示 AI 去读一批永不存在的字段 (自然/广告流量占比、Query 集中度、CPC/CPS、广告费)。这比前端文案更危险——它在引导 AI 编造。 它和左栏那句「判断自然/广告流量集中程度」应当一起改。

按 D9-A · 界面这里该说的话(本条标为 critical)

这是整份稿子里最该说、也最难说出口的一句「我不知道」。 标 critical 的理由:认证与知识产权是一票否决项—— 用户可能带着一个毫无依据的认证判断去投产,这是本文所有问题里潜在损失最大的一条。 即使 D9 选 B(只在会造成错误决策处自曝),这一条也必须留下

按当前 D9 视角,系统继续拿别的版块内容答认证问题,并附一条把责任推给「外部 Agent」的告警。
未经用户确认 当前展示:B · 路由层直接返回能力边界说明(PM 推荐) · 选项 A 依赖第 8 节 Q2,当前零观测、被额度耗尽硬阻断
D7
等待体验:18.7 秒干等,超时则全部丢弃
不依赖实采 影响场景 S2 · S30
这是在选什么
报告生成是同步请求,用户原地等约 18.7 秒,界面从第一秒到最后一秒一个字都不变,没有取消按钮。 超时(60 秒)则已完成的 7 个版块全部丢弃。你要决定:只改文案 / 放宽时限 / 中途落盘 / 做成异步任务。
选错的代价
用户会刷新页面(按钮已禁用,刷新是他唯一的动作)。刷新即丢弃——中途死掉不留任何部分结果。 他会重打一次,于是再打 59 次上游请求,更容易撞限流
两个必须先纠正的成本预期

60 秒是一行常量,平台默认已是 300 秒——这不是需要架构改造才能突破的物理墙; ② 这个时限在本地开发时不生效,这解释了为什么它可能一直没被当成问题。

优点

改动最小,无架构风险。

缺点

用户仍然完全不知道进展;超时仍然全丢。

业务影响

体感略好,问题未解。

选了它,界面会变成什么样

那两行静态文案换成有信息量的等待说明,比如 「正在向 SellerSprite 取 9 个模块的数据,通常 20 秒左右。期间请不要刷新——中途刷新会丢弃已取到的部分。」不得画进度、步骤名、剩余时间、排队位置——这些数据一个都不存在(红线 1)。

优点

覆盖一大批当前会超时的情况,成本极低(一行常量)。

缺点

用户可能要等 5 分钟且期间仍然什么都不知道——把「失败得快」换成「卡得久」。单独做可能是负分。

业务影响

成功率上升,等待体验可能更差。必须与 C 或 D 组合。

选了它,界面会变成什么样

界面完全不变,只是那一行「正在生成报告」可能停留 5 分钟。

优点

用户不再「白等」——哪怕只拿到 7 个版块也比 0 个好;也与限流的现实吻合(本来就常缺块)。放宽时限与它组合后是纯收益。

缺点

这是新增服务端能力(当前唯一落盘发生在全部完成之后,无兜底),要按新功能估。

业务影响

用户价值最高的一项:把「全有或全无」改成「有多少给多少」。对「先粗筛再深看」的选品流程尤其合适。

选了它,界面会变成什么样

超时不再是一句「报告生成失败」,而是一份标着「本次未取全」的部分报告: 已完成的 7 个版块正常可读,未完成的 2 个显示「本次生成在第 N 个模块被时限截断,可重试补齐」。 ⚠ 这里复用既有的「数据完备度」进度条表达完整度,不新画第二个百分比(红线 1)。

优点

彻底解决;仓库里已有可抄的先例(一套 5 态任务状态机)。

缺点

最大的改动量;且必须沿用既有词汇,不得新造术语(红线 2)。

业务影响

体验最好,且为将来「批量跑多个类目」打开了门。

选了它,界面会变成什么样

生成变成一个可离开的任务,回来看结果,可取消。 真进度只能用代码里已有的四个中间态词汇resolving_input(解析输入)/collecting_sample(取样本)/calculating_metrics(算指标)/saving_report(保存报告)。 ⚠ 但这四个词目前全仓零赋值——要做必须先让后端产出中间态,所以本期不做(第 6 节 8-1)。

PM 推荐 · C + B 一起做(C 为主、B 顺带),D 作为独立的下一步

「给我已完成的部分」击中的是真实痛点——用户等 18.7 秒的目的是拿数据,而当前设计让他有可能等满 60 秒拿到零数据; ② B 单独做是负分,与 C 组合后是纯收益; ③ D 是正确的终局,但它是架构级改动,不该被压进一轮体验优化里——而且它的价值有一大半(不白等)已经被 C 拿到了; ④ 取消按钮的价值低于「中途落盘」:用户想取消,通常是因为「我等太久了什么都没有」。有了 C 之后这个诉求会大幅下降,所以取消可以放到 D 里一起做。

按 D9-A · 界面这里该说的话

部分报告顶部要有一句 「本次生成在时限内只取到 7 / 9 个模块,其余可重试补齐。」 以及等待期间那句「期间请不要刷新——中途刷新会丢弃已取到的部分。」 后一句尤其便宜:用户现在唯一能做的动作恰好是最坏的那个,而没人告诉他。

按当前 D9 视角,等待期间与超时之后都不额外说明——用户继续按「报告生成失败,请稍后重试」处理。
未经用户确认 当前展示:C+B · 中途落盘 + 放宽时限(PM 推荐) · 依赖第 8 节 Q10(粗筛 vs 深调研会实质改变这条的答案)。
D8
「白送能力」包做多少
零外部依赖 不依赖实采 影响场景 S8 · S9 · S12 · S13 · S17 · S25 · S27
这是在选什么
后端已产出、前端零渲染的能力共 7 项确认 + 8 组补充。这批需求的特点是: 数据已经在报告里了,不依赖任何上游改动、不增加任何请求。 它们是本轮「把体验做好」里唯一完全没有外部依赖的一块。你要决定做多少、分几轮。
选错的代价
做少了,「可追溯」这个核心卖点继续停在一句承诺上;一次全做, 信息架构最难的那三项会被赶工做粗(比如 191 条类目候选怎么展示而不淹没用户,是一个真实的设计问题)。
两条必须避开的坑 + 两条有前置条件的
  • 坑 1sampleSummary.warnings 不是零渲染,照抄会做出重复告警(红线 8)。
  • 坑 2TrendMeta 只有一个字段未用,别整体列进来(红线 9)。
  • 前置 1:同比/环比结构化值确实零消费,但当前趋势数据不足导致它恒为空——先验证再画,否则又是一个永远显示不出来的组件。
  • 前置 2:评论有用票数是后端需求不是 UI 需求(解析后在序列化前就蒸发了),别混进 UI 包。
优点

一轮之内把「可追溯」这个卖点真正兑现;边际成本低(同一批面板改动)。

缺点

单轮改动面大,设计层要同时处理 6 个面板;P2 那三项需要更谨慎的信息架构设计,赶在同一轮里容易做粗

业务影响

用户体感变化最大的一个选项。

选了它,界面会变成什么样

下面 P0 + P1 + P2 三档一次性全部落地。

优点

每档都能独立交付并验证。P0 三项直接回答用户「我该怎么办 / 这是哪一份 / 这是什么时候的」。

缺点

分轮会让「可追溯」的兑现拖长。

业务影响

收益节奏更稳,风险更低。

选了它,界面会变成什么样

P0 + P1 合并做(本轮):

  • 缺失项每条从 4 项信息补到 7 项:缺哪个字段 / 该从哪个源拿 / 为什么缺
  • 历史列表 6 条不再长得一样——补上创建时间(那里已经有一个时钟图标,旁边恰恰没有时间)与各版块状态
  • 指标卡补上统计窗口(否则 $7,713,411 是哪 30 天的没人知道);
  • 新增取数诊断面板:本次可用工具数、失败工具及中文原因;
  • 口径详情里的英文公式串换成中文计算说明(数据里本来就有中文);
  • AI 引用从 metric: market_revenue 这样的机器 id 换成人话标签(人话就在同一个对象上)。

P2 放下一轮:决策可用度全文、类目判定的 191 条候选与打分、取数时间与请求指纹。 它们是追责级信息——价值真实但触发频率低,用户只在怀疑时才看。

优点

最小。

缺点

P1 里的取数诊断面板正是 D2 推荐方案的载体——不做它,D2 的可见性需求就没有落点。

业务影响

会让 D2 的推荐方案落空。

选了它,界面会变成什么样

只有上面 P0 那三项;用户知道「缺什么」,但仍然不知道「为什么缺」。

PM 推荐 · B,但 P0 与 P1 合并为同一轮

① P1 的取数诊断面板是 D2 推荐方案的实现载体,它和 P0 是同一件事的两半 (P0 说「缺什么、该怎么办」,P1 说「为什么缺」),拆开会让用户看到半个答案; ② P2 三项是追责级信息,放到下一轮不损失日常体验; ③ 不推荐一次全做,不是因为成本,而是因为 P2 需要更谨慎的信息架构设计。

按 D9-A · 界面这里该说的话

白送包里每一项都是一句自曝边界的话—— 这正是 D8 与 D9 的关系:D9 决定说不说,D8 决定这一轮说多少。 所以 D9 若选 C,D8 的 P0+P1 有一多半会失去意义(面板还在,但没什么可写)。 这是九条决策里耦合最紧的一对,建议一起拍。

按当前 D9 视角,白送包大部分内容没有落点——数据继续躺在报告里不显示。
未经用户确认 当前展示:B · P0+P1 合并本轮,P2 下一轮(PM 推荐) · 与 D2 强耦合(取数诊断面板是 D2 的载体)。
D9
贯穿性取舍:产品要不要在界面上自曝能力边界
建议先拍这一条 成本已经付过 影响:全部九条
这是在选什么
本产品当前的界面策略是隐性乐观:拿不到就显示「暂无」、状态算不出就算「完成」、 数据源没接就说「判断自然/广告流量」、AI 答不了就拿别的内容顶上。 「诚实优先」的主张要求反过来:明确说出边界。你要决定的是这条原则本身。
选错的代价
选错的代价不在某一屏,在整个产品的信息密度——这就是顶栏那个开关存在的理由。 现在就切一遍试试:A 全部展开 / B 只留会造成错误决策的 / C 全部折起。
这条决策有一个别的决策都没有的特点

选「自曝」不是引入一个新方向,是把已经付过的成本兑现出来。 第 3 节那张表已经列清:missingDataLogdecisionReadinesslineagedataSourceDiagnostics 这四套机制全部是为「自曝边界」设计的,后端全都做好了,只是前端没接。 本产品自己早就选了这条路,只是没走完。

优点

用户能校正自己的判断;「可追溯」这个卖点第一次成立避免用户拿错的判断花钱

缺点

产品看起来「能力更少了」——会出现「参考级 / 判定级」分层、更多的「我拿不到」、更低的字段覆盖度数字。

业务影响

短期功能感知下降。长期:这是从「看起来能用」变成「真的能用来做决策」的唯一路径。对花钱的决策场景,可信度就是核心竞争力。

选了它,这份稿子(和界面)会变成什么样

把顶栏切到 A:全文所有「按 D9-A · 界面这里该说的话」区块展开。这就是它的信息密度。

优点

平衡感知与诚实:只在「会造成错误决策」的地方说,其余保持乐观。

缺点

「哪里算会造成错误决策」没有客观边界,实际执行会退化成逐条讨论;不一致的诚实度本身会让用户困惑(这块说不知道、那块又不说)。

业务影响

中间态往往最难维护。执行成本最高的选项。

选了它,这份稿子(和界面)会变成什么样

把顶栏切到 B:只有标为 critical 的边界块留下,其余折成一行灰字。 请注意折起来的那几条——判断「它们算不算会造成错误决策」,就是选 B 之后每一次要做的争论。

优点

产品看起来更强。

缺点

本文列出的 20+ 条问题没有一条能真正修好——因为它们的根都是「不肯说不知道」。

业务影响

短期感知好,直到用户第一次发现某个数字是错的。在花钱的决策场景,这个发现迟早会来,而且是一次性的信任崩塌。

选了它,这份稿子(和界面)会变成什么样

把顶栏切到 C:所有边界块折起。页面清爽了很多——这正是它的诱惑,也正是它的代价。

PM 推荐 · A

① 用户的处境决定了这个答案——他做的是要花钱的决策,而「一个标着不确定的空白,远好过一个看起来确定但是错的数字」; ② 本产品自己已经选了这条路,只是没走完,选 A 是兑现已付成本; ③ 不建议 B:它听起来稳妥,实际会让每一条决策都要重新辩论一次「这条算不算会造成错误决策」, 而已经证明这个判断在具体条目上极难达成一致(比如 $-1 明显算,但「进度条到不了 100%」算不算?)。 一条明确的原则比九次个案讨论便宜。

未经用户确认 当前展示:A · 明确自曝边界(PM 推荐,同时也是顶栏视角的默认值) · 拍了这一条,D1 / D4 / D5 / D6 的答案会自动收敛一大半。

第 5 节

一个坏消息:数据源账号额度用完了,而且它被报成「超时」

这不是假设,是当前状态

MarketAgent 的 SellerSprite 密钥于 2026-08-26 配额耗尽: 工具列表只返回 1 个工具 secret_no_remaining(描述「当前没有可使用的次数」),4 轮 ×90 秒轮询结果一致; 强行调用一律回「未授权」。也就是说:此刻打开这个产品,用户会看到「超时」,而真相是「额度花完了」。

为什么「额度用完」会变成「超时」

数据源账号其实有三种状态,而代码只预判了两种:可用(45 个工具)/密钥失效/余额为 0。 校验函数只拦「密钥失效」,「余额为 0」直接通过校验,于是取数照常发起, 每次调用回一个代码里没有登记过的错误码,落到兜底分支被归成「超时」。

一条能救掉一次错误排查的提醒

以后再遇到本产品报「超时」,先跑一次工具列表看是不是 secret_no_remaining, 不要先去查网络或调时限——那三件事一件都救不了它,只有补额度能救。 这本身已经被立成一条需求(并进 D2 的错误可区分性)。

它挡住了什么,没挡住什么

开放项本轮结论它决定什么
Q1(U1)
优惠券专用工具的返回字段
未能验证 工具确实存在于上游且零接入,返回结构零观测 价格带的 5 个校验字段能不能补齐(D5 的后续)
Q2(U2)
4 个商标类工具能否支撑认证/IP 结论
完全未能验证 只确认了工具名存在,字段、入参、能不能回答问题全部未知。四项里最空的一项 D6 选项 A 是否存在。这是一票否决级能力,不能靠推测立项
Q3(U3)
上游是否永远不返回 Buy Box 价 / 优惠券 / 变体最低价
部分验证 4 次未被限流的成功取样里,这三个字段连同全部别名一次都没有值。 但「上游没这个字段」还是「上游恒为空」尚未区分 措辞只能写「当前取数路径稳定拿不到」,不能写「SellerSprite 不提供该字段」
Q4(U4)
流量来源结构能否拿到
部分验证 3 次真实运行中这两个工具调用成功、未报错、返回 0 行—— 「因为限流所以空返」的解释被证伪;但字段名清单仍是零观测 流量格局该不该被标成「参考模块」(D4 选项 B 的依据之一)
好消息:九项决策里六项完全不受影响

D2 / D3 / D4 / D7 / D8 / D9 六项完全不依赖实采——它们的依据全部是代码层面的结构性事实。 建议不要为了等额度而搁置整轮,先推进这六项。 受阻的只有:D1 选项 A、D5 的后续补字段、D6 选项 A。 而这三项的推荐方案(B)恰好都不依赖实采。

需要你做一件本稿做不到的事补充 SellerSprite 账号额度(续费 / 换套餐 / 换一把有余量的密钥)。

按 D9-A · 界面这里该说的话(本条标为 critical)

配额耗尽需要一个与限流完全相反的独立形态: 「数据源账号的调用额度已用尽。这不是网络问题,重试不会有帮助——请联系管理员补充额度。」 标 critical 的理由:这是唯一一处「按现有提示行动会让情况更糟」的地方—— 用户照着「请稍后重试」反复重试,既救不了自己,也让运维一直查错方向。

按当前 D9 视角,配额耗尽继续被显示成「超时」——用户与运维都会被带向错误的排查方向。
探针顺手推翻的一条前提,以及一处必须报出的数字冲突

被推翻的前提:「那 3 次真实取数样本全部撞上限流」不准确—— 那 3 次里,Q3 / Q4 相关的调用是成功的。 所以不能再用「那 3 次都限流了所以不算数」来解释这两项的空值。

数字冲突:派单原文写「193 份历史数据带着假窗口标注」,但 96 与另外三份 97 报告都说 3 份,只有一份写 193—— 而 193 在同一份报告里有另一个明确定义:去重后的类目路径条数本稿按 3 份采用,并列为待澄清 Q12。

为什么要单独报这一条:派单要求「凡 96 与 97 冲突一律以 97 为准」, 但本例是 97 内部四份之间冲突。照抄一个与三份独立报告矛盾的数字,会把一个已知错误固化进设计稿它不阻塞任何决策——无论 3 份还是 193 份,「落库的窗口声明与数据无关」这个事实都成立,清理动作都必须做。

第 6 节

本期明确不做的 12 条,以及为什么

规矩是:漏掉不算漏,写明「本期不做 + 理由」才算数。 以下每一条都在第 7 节覆盖表里有对应行,没有一条是静默漏掉的。

#不做的理由
8-1真进度条(步骤名 / 剩余时间 / 排队位置 / 单步耗时) 剩余时间、排队位置、单步耗时三类数据完全不存在,任何依赖它们的界面都是虚构。步骤名虽有 4 个词,但全仓零赋值。⚠ 且页面上已有一个「数据完备度」进度条,新画会打脸(红线 1)。
8-2接真实时间窗参数(D1 选项 A) 上游主取数工具是否支持时间窗参数在本仓库内无证据。这是数据源能力调研,不是前端接线。待探针。
8-3接商标类工具补认证/IP(D6 选项 A) 4 个工具确认存在且零接入,但返回字段完全未知(Q2)。把未验证的推测写成字段级需求,正是上一版产生 14 类虚构字段的同一类错误。⚠ 且探针当前被额度耗尽硬阻断
8-4补优惠券 / Buy Box 价 / 变体最低价 请求与解析路径本来就完整(不是「没接」),问题在上游这几次没返回。「是否永远不返回」属无法验证(Q1/Q3)。⚠ 特别注意:不要拿 rawFields 里写着这三个字段当「上游支持」的证据——那是硬编码常量(红线 11)。
8-5同比 / 环比徽标 结构化差值字段确实零消费,但三份真实报告里它出现 0 次——当前趋势数据不足,它恒为空。先验证趋势数据可用性,否则会画一个永远显示不出来的组件。
8-6评论有用票数 它被解析出来后既没进证据表也没进证据卡,序列化前就蒸发了这是后端需求不是 UI 需求,不能混进白送能力包。
8-7多站点支持 后端三处硬约束只支持美国站,且非美国站时评论链接会整体消失。这是产品范围决策,不是本轮体验优化的范畴。
8-8离线 / 演示 / mock 模式 连接器注册表无任何开关,历史计划里引用了 12 次的 mock 文件根本不存在,README 已承认无 mock 模式。这是新增架构能力,不是接线。
8-9扩大评论池 与 D2 直接耦合——review 是调用次数最多(13 次)也是 3/3 报告必败的工具,扩大评论池会直接加剧限流。必须等 D2 的取数策略定下来。
8-10单条评论定位(「跳到这一条评论」) 依赖 Q5:解析出的评论 id 是不是亚马逊的 review id 未知。在确认前不许把该能力写进需求。本轮只做措辞约束——只能写「该商品的 Amazon 评论页」(红线 4)。
8-11为两个死错误码设计界面 这两个错误码声明了但全库无抛出点,是死码。
8-12为四个永不产出的枚举值设计界面 「低置信」徽标、「样本池回退」选择依据、official 可信等级、低/中成本等级。代码里已有两个走不到的死分支,设计照做会做出永远没人见过的形态(红线 3)。

第 7 节

覆盖对照:PRD 矩阵 41 行,逐条回填

PM 的要求是:「设计落点」列由 design 回填,回填时必须逐条对上,静默漏一条即视为未交付。 本节把 PRD §6 矩阵的全部 41 行列出,每行给两个落点—— 本稿落点(这一份把它讲在哪一节)与交互稿落点(屏级形态归并行的交互稿)。 没有一行是空的。

回填时发现的一处统计出入,如实报出

PRD §6 表尾统计写「✓ 22 · 反推 8 · 事实无 6 · 设计无 6(合计 42)」, 而逐行数下来是 41 行:✓ 23 · 反推 7 · 事实无 6 · 设计无 5。 另外 PM 移交要点第 3 条写「⚠ 需求有事实无的 5 条」,而矩阵里这一类是 6 行本稿按行取数,并把 6 行全部按「不要画数据、只画明确说不知道」处理(取更严的那一边)。 已列为 Q13。不影响任何结论——41 行一行没漏。

显示 41 / 41 行

场景状态本稿落点(这份 explainer)交互稿落点(屏级形态)
S1 空工作台⚠ 反推项§1 用户处境第 1 条(第一次打开的 3 秒)待交互稿:空态屏
S2 正在生成(同步等待)⚠ 需求有事实无§4 D7 选项 A / C+B / D,含红线 1、2 的逐条约束待交互稿:等待屏(不得画进度/步骤/ETA
S3 加载历史报告⚠ 反推项§4 D2 选项 C(复用历史是可消除的限流来源)待交互稿:历史列表 + 加载态
S4 自动识别猜错且不可见✓ 四层齐§2 假控件类;§8 Q8 命名一致性旁及待交互稿:提交前识别结果可见可改
S5 解析失败建议自相矛盾✓ 四层齐§2 图 1(可自行修复 vs 不可自行修复的失败要给不同动作)待交互稿:解析失败屏
S6 复制类目路径查不到✓ 四层齐§1 名词表「类目路径」逐字说明冒号格式待交互稿:类目路径输入与识别
S7 假的时间范围控件✓ 四层齐§2 七句对不上的话第 1 条;§4 D1 全卡待交互稿:输入区(按 D1 拍板结果定稿)
S8 真实取数口径要可见✓ 四层齐§4 D1 选项 B 的「界面会变成什么样」;D8 P0 指标卡补统计窗口待交互稿:报告头 + 指标卡
S9 类目判定的候选与打分✓ 四层齐§4 D8 选项 B 的 P2(191 条候选怎么展示是真实设计问题)待交互稿:P2 轮次,本轮不定稿
S10 站点占位控件✓ 四层齐§2 假控件类(危害低于 S7:只有一个选项,用户无法做出错误选择待交互稿:输入区。不与 S7 打包
S11 「完成」会说谎✓ 四层齐§2 假完成类;§4 D2 可见性的上游根因待交互稿:版块状态徽标。必须排在 S12 之前
S12 限流 vs 永久缺口✓ 四层齐§2 图 1;§3 四套机制表;§4 D2 全卡待交互稿:缺失项面板 + 取数诊断面板
S13 缺了该怎么办✓ 四层齐§3 missingDataLog 行;§4 D8 P0 第 1 项待交互稿:缺失项每条 7 字段
S14 恒亮的「需关注」✓ 四层齐§4 D4 选项 B 的「界面会变成什么样」(3 条常驻缺口挪去参考级)待交互稿:告警分层
S15 进度条到不了 100%✓ 四层齐§2 七句对不上的话第 5 条;§4 D4 全卡;§3 红线 1待交互稿:左栏进度条(复用,不新画
S16 面板只在一个版块可见⚠ 反推项§3 四套机制表(信息本就按版块组织,却只在一个版块可见)待交互稿:面板挂载位置
S17 口径链路可读性✓ 四层齐§2 第 6 条;§3 lineage 行;§4 D8 P1 中文说明替英文公式待交互稿:口径详情弹层
S18 价格带「完成」但 2/5✓ 四层齐§2 假完成类;§4 D4 选项 C 的拒绝理由(不能再犯同一个错)待交互稿:价格带版块状态
S19 primePrice = $-1✓ 四层齐§2 第 3 条 + 假可用类;§4 D5 全卡待交互稿:价格校验表
S20 VOC 是规则不是 AI✓ 四层齐§4 D3 全卡,含三条隐含规则待交互稿:VOC 版块口径说明块
S21 评论链接可回溯性⚠ 需求有事实无§6 第 8-10 条:本轮只做措辞约束(红线 4)待交互稿:只能写「该商品的 Amazon 评论页」,不得写「查看这条评论」
S22 译文恒「暂无」且静默失败✓ 四层齐§9 红线 6 自查:只画「暂无」态,需求是「能分清没开和挂了」待交互稿:中文对照列的「暂无」态 + 状态说明
S23 追问等待态⚠ 反推项§4 D7 边界(追问路径至少有工具轨迹可用,与 S2 素材前提不同)待交互稿:追问等待屏
S24 认证/IP 答非所问✓ 四层齐§2 答非所问类 + 第 7 条;§4 D6 全卡(含五步失败链)待交互稿:追问回答区边界说明
S25 引用是机器 id✓ 四层齐§4 D8 P1 第 6 项(人话标签就在同一个对象上)待交互稿:引用 chips
S26 失败提示是开发者话术✓ 四层齐§2 图 1 的反向:这一条要求把技术原因藏起来,与 S12 方向相反待交互稿:追问失败提示
S27 历史列表 6 条一样✓ 四层齐§4 D8 P0 第 2 项(时钟图标旁恰恰没有时间)待交互稿:历史列表项
S28 同关键词两次不同⚠ 反推项§4 D2「报告完整性目前是随机的」;本稿标注它是静态论证 + 强间接证据,非实测待交互稿:跨次可比性说明
S29 密钥失效整站不可用⚠ 反推项§2 图 1 第 5 支(联系管理员换密钥)待交互稿:鉴权失败屏
S30 60 秒超时全丢✓ 四层齐§2 图 1;§4 D7 全卡(含「60 秒是一行常量」的成本纠正)待交互稿:超时后的部分报告形态
S31 配额耗尽被误报成「超时」✓ 四层齐§2 图 1(动作相反的两支);§5 全节;§4 D2 的 critical 边界块待交互稿:配额耗尽独立形态(与限流文案相反
lineage.rawFields 当字段可用性依据⚠ 需求有事实无§3 红线 11 全块(本稿全文零处拿它当依据)待交互稿:只能渲染、不得当依据
「真进度条」(步骤/ETA/排队/耗时)⚠ 需求有设计无§6 第 8-1 条 + §4 D7 选项 D;§9 红线 1、2 自查本期不做
「接真实时间窗参数」⚠ 需求有设计无§6 第 8-2 条 + §4 D1 选项 A(明写不为它画形态)本期不做,待探针
「接商标类工具补认证/IP」⚠ 需求有事实无§6 第 8-3 条 + §4 D6 选项 A + §5 Q2 行本期不做,字段结构未知
「补优惠券 / Buy Box / 变体最低价」⚠ 需求有事实无§6 第 8-4 条 + §5 Q1/Q3 行 + §4 D5 选项 B 的措辞本期不做;措辞只能写「当前取数路径稳定拿不到」
「同比 / 环比徽标」⚠ 需求有设计无§6 第 8-5 条 + §4 D8「前置 1」本期不做,先验证趋势数据可用性
「评论有用票数」⚠ 需求有事实无§6 第 8-6 条 + §4 D8「前置 2」本期不做,属后端需求
「多站点支持」⚠ 需求有设计无§6 第 8-7 条 + §7 S10 行本期不做
「离线 / 演示模式」⚠ 需求有设计无§6 第 8-8 条 + §7 S29 行本期不做
「扩大评论池」⚠ 反推项§6 第 8-9 条 + §4 D3 的「D2 与 D3 在这里是耦合的」本期不做,等 D2 取数策略

第 8 节

待澄清:13 条,一条都没有替你假设答案

规矩是:待澄清可以为空,但必须显式声明「无待澄清」,不许自己假设答案继续画。 本清单非空——以下每一条本稿都没有自行填答案。

Q1–Q4 · 必须由探针回答(当前硬阻断

四项的具体结论见第 5 节表格。共同前置是一次非限流环境下的重采样 + 扩展探针, 而这需要你先补充账号额度

Q5–Q11 · 需要你或 tech-lead 回答

#问题为什么问 / 它会改变什么
Q5解析出的评论 id 是不是亚马逊的 review id(形如 R…)?能不能拼出单条评论的链接? 「跳到这一条评论」的能力完全取决于这个答案。id 是被解析并保留的,但它是不是亚马逊的 id 未知。在确认前不许把该能力写进需求。
Q6是否同意把「补请求计数 / 失败率 / 耗时埋点」立成 D2 的前置需求? 仓库内无任何耗时/失败率埋点。没有它,我们无法验证 D2 任何方案的效果,也无法回答「限流是不是最主要的失败模式」(当前只能说「唯一被观测到的」)。
Q7市场容量版块在报告级告警里被显式排除,与其余 8 个版块规则不对称。这是有意的产品设计,还是遗留? 影响 D4 的分母定义与告警分层。事实层只确认了「存在这个不对称」,没有确认它的意图。
Q8左栏模块名「市场容量分析」与版块标题「市场容量及趋势」不一致,哪个是准的? 同一个模块两个名字,用户会以为是两块内容。低成本修正,但改哪个方向属于产品命名决策
Q9版块状态的中文说法左右两栏不一致:左「完成 / 部分 / 暂缺」,右「已完成 / 部分完成 / 暂不可用」。统一成哪一套? 同一个状态两套说法会让用户以为是两种不同状态。统一是必须的,用哪套是产品决策。
Q10本产品的目标使用节奏是什么:单类目深调研,还是几十个类目批量粗筛 会实质改变 D2 与 D7 的答案。粗筛场景下缓存与中途落盘的价值远高于「报告完整」;深调研场景下相反。PM 按「先粗筛再深看」反推,但那是推断,需要你确认。
Q11「参考级 / 判定级」这个分层要不要贯穿整个产品,还是只用在进度条上? 若贯穿,它会成为整个信息架构的主轴(每个版块、每个指标都要标级),设计层的工作量与信息密度完全不同。这是架构级决定。

Q12–Q13 · 数字与统计口径

#问题影响
Q12已落盘的历史报告实际是 3 份还是 193 份 只影响 D1「历史数据清理」的工作量估算与是否需要迁移脚本,不影响 D1 的结论。本稿按 3 份采用。
Q13
本稿新增
PRD §6 矩阵的表尾统计(22/8/6/6,合计 42)与逐行数出的结果(23/7/6/5,合计 41)不一致;PM 移交要点又写「需求有事实无 5 条」而矩阵里是 6 行。以哪个为准? 不影响任何结论——41 行本稿逐行回填,一行没漏,且「需求有事实无」按更严的 6 行处理。报出来是为了不把一个已知的统计错误固化进设计层

三条显式声明的不确定性(不是问题,是诚实标注)

  1. 本稿所有场景的出处都不是「来自需求文档」——本项目没有 PRD。 docs/superpowers/ 下 10 份是实现计划,且其中 12 项标识符在代码里根本不存在。 反推项与本轮新提项一律待你确认。
  2. 有 4 条事实是转述实证,本轮无法复跑:报告生成 18.7 秒 / HTTP 201 / 485,741 字节;测试全绿; .env 的实际取值;本机 Codex CLI 可用性。下游若要基于它们做决策须自行复验。
  3. 那三份真实报告是同一批连着跑出来的,样本本身有系统性偏差。 凡「数据能力天花板」类结论,只有那些在代码里就能证明与数据无关的才可当地基 (两个版块不可完成、4 条结构性缺失、状态恒定、状态排除逻辑、文案与路由)。

第 9 节

11 条「不得画」红线:本稿逐条自查

这 11 条是事实层给设计层划的红线。逐条自查是交付条件,不是形式。 第 1、8、9 条是上一版最容易踩的三处;第 11 条是本轮新增,也是最直接会复现「14 类虚构字段」的一条

#红线本稿自查
1不得画依赖运行时进度数据的界面;但已有的「数据完备度」进度条不得重画、不得删 通过 本稿零处画进度条组件。D7 选项 C 明写「复用既有进度条表达完整度,不新画第二个百分比」;D7 选项 A 明写「不得画进度、步骤名、剩余时间、排队位置」;§3 单列一块说清「两个都错」。
2若要做真进度,必须沿用既有词汇,不得新造术语 通过 D7 选项 D 逐字列出四个既有中间态 resolving_input / collecting_sample / calculating_metrics / saving_report,并注明「全仓零赋值,所以本期不做」。本稿未新造任何进度术语。
3不得画四个永不产出的枚举值 通过 「低置信」徽标、「样本池回退」、official、低/中成本等级——本稿一处都没画,且在第 6 节 8-12 明写不做 + 理由。
4不得把评论证据的链接说成「跳到这一条评论」 通过 覆盖表 S21 行与第 6 节 8-10 都逐字写死措辞:只能写「该商品的 Amazon 评论页」。本稿正文中零处出现「查看这条评论」类表述。
5不得画 Buy Box 价 / 优惠券 / 变体最低价的真实值;也不得写成「上游恒 null」 通过 本稿零处出现这三个字段的任何数值。措辞统一采用探针给的精确说法「当前取数路径稳定拿不到」未写「SellerSprite 不提供该字段」(见 D5 选项 B、§5 Q3 行、第 6 节 8-4)。
6不得画中文标题/原文的真实译文——只能画「暂无」态 通过 本稿零处出现译文样例。覆盖表 S22 行明写「只画『暂无』态,需求是『能分清没开和挂了』」。
7不得把左栏「数据源 SellerSprite · Active」当成健康状态 通过 本稿零处把它当健康信号。§5 的排障提醒走的是另一条路径:「先跑一次工具列表看是不是 secret_no_remaining,而不是看那个徽标。
8不得把 sampleSummary.warnings 当「零渲染」 通过 §3「三条最容易照着抄错的地方」单列一块,明写它会被渲染、照抄会做出重复告警;D8 卡片的「两条必须避开的坑」再列一次。
9不得把 TrendMeta 整体列进白送清单 通过 §3 与 D8「坑 2」都写明只有一个字段未用,其余已在消费。本稿的 D8 白送包清单未包含 TrendMeta
10decisionReadiness 的 summary 与阻塞项目前无处展示,要用属于新增前端能力,须显式立项 通过 §3 四套机制表里该行的「前端消费情况」逐字写「目前无处展示(红线 10:要用属于新增前端能力,须显式立项)」;D8 把它放在 P2 轮次而非本轮,即为显式立项。
11🔴 不得把 lineage.rawFields[] 当成「上游返回了这些字段」的证据 通过 §3 用一整块红色提示写清它是写死的字符串常量,并列出只认三类 A 级证据;第 6 节 8-4 再警一次。 本稿全文零处拿 rawFields 作任何字段可用性依据——覆盖表里它单独占一行,标注「只能渲染、不得当依据」。

视觉与形态自查

本轮边界声明。 market_agent 全程只读——本稿未读取、未修改它的任何文件,未执行任何 git 操作,未运行它的 build / dev / test / deploy,未动用任何凭证发起真实请求。 唯一写入是 design/mockups/marketagent-prd/ 下的文件。 未画产品界面屏(那是并行交互稿的事)、未派发任何 run未标用户验收未新开子域名(本稿按托管硬规矩发布到 mockup.heyyys1.com 的目录卡片)。 稿内无任何密钥明文

数据出处。 事实层 docs/96 + 四份 docs/97-*凡冲突以 97 为准);需求层 docs/98;探针 docs/99。 本稿未引入任何这四份文档之外的字段名。