完整设计 · 2026-08-07

店铺经营指标agent设计方案

这份设计覆盖 Amazon 与 Shopify 的 55 项经营指标,逐项写清计算、取值、展示、数据状态和操作边界,并给出卡片筛选与排序、跨市场展示、参数弹窗、洞察引擎、处理闭环、数据表和可交互页面原型。

指标池 55 项 Amazon 22 项 Shopify 33 项 同名异实 12 组 交互原型 6 类 洞察引擎 三层分工 第 12 章 可交互原型 官方来源 44 条
🧭0 · 店铺经营 Agent 的工作闭环
从数据到经营处理
平台字段与报表
独立指标合同 · Amazon 22 / Shopify 33
三层逻辑 · 计算 / 取值 / 展示
展示降级决策树
交互 + 参数弹窗
洞察引擎 · 三层分工
商家每天打开店铺页,需要先看清哪些问题值得处理,再确认数字的时间、范围与可信度,圈定涉及的 SKU、订单或客户,分配负责人和截止时间,最后用平台回读结果判断事情是否解决。指标、卡片、Skill 与报告围绕同一条经营链路工作,任何一步都不能靠一个脱离上下文的数字替代。
模块设计内容在链路中的作用
1设计目标与商家价值主张为什么做这个功能,商家凭什么会用
2指标池总览:55 项 · 分平台清单与命名规范我们到底会有多少指标池
3指标定义规范(Metric Spec Schema)每个指标要定义哪些字段才算设计完成
4Amazon 指标章节(22 项,逐项三层逻辑)计算逻辑 / 取值逻辑 / 展示逻辑
5Shopify 指标章节(33 项,逐项三层逻辑)同上,独立维护
6同名异实对照表(12 组)为什么必须分平台,不能合并
7展示决策管线(三道闸门 + 全静默兜底)没变化怎么展示?都没大变化呢?
8卡片交互:通用基础 + 6 类原型 + 逐指标矩阵每个指标的交互效果
9详情参数弹窗 GUI 规范参数选择、提示词编辑、确认发送
10洞察引擎(三层分工)事实、归因、动作分别由谁生成
11数据链路、表结构与双语(zh / en)工程落地
12可交互原型点击、展开和参数弹窗怎么操作
13完整交付合同、验收与运行校准怎样把整条链路做完并证明可用
第 12 章用可运行原型验证卡片悬浮、展开、参数弹窗、范围勾选和「飞入输入框」交互;原型中的构造数据只用于检查工作流,不作为真实店铺经营结论。
🎯1 · 设计目标与商家价值主张

这个功能如果只是「把数字搬到页面上」,商家没有理由多看第二眼——他们在平台后台就能看到数字。它要成立,必须回答商家真正的三个问题:我该操心什么为什么会这样现在该做什么。指标卡片负责第一问,洞察文案负责第二问,参数弹窗 + Skill 负责第三问。

😵
商家现状痛点
为什么后台数字不够用
平台后台是「全量报表」——几十个数字平铺,没有优先级、没有阈值判断、没有跨维度关联。商家要么每天花 30 分钟自己扫,要么干脆不看,等到断货/账号预警才发现问题。
🎁
我们提供的价值
从报表到「已经替你看过了」
打开店铺详情页,最多显示 6 张需要处理的卡片;有几项展示几项,没有经营 issue 时进入平稳摘要,不为填满页面制造卡片。商家的动作从扫描一排数字,变成处理几件具体事情。
🔗
与 Skill 的闭环
卡片是入口,不是终点
卡片完成问题发现和简要解释,完整核查交给两个经营 Skill。点击详情 → 参数弹窗 → 预填提示词 → Skill 直接进入分析,跳过澄清轮次。卡片是经营问题的入口,Skill 负责把证据、假设和动作展开。
1.1 五条设计原则
原则含义违反后果
① 风险优先于变化指标达到官方绩效阈值、商家目标或已配置的提醒线,即使环比没有变化也必须展示;阈值来源同时显示。长期问题因「没变化」被永久隐藏,商家误以为一切正常
② 分平台独立维护同名指标在两平台各有独立的 metric_id、口径、阈值、文案。禁止「一套逻辑加 if platform」。Shopify 净销售额与 Amazon 订购商品销售额不是同一字段,不能混用
③ 数字只有一个来源卡片数值一律来自 calculator 输出字段,不在前端二次计算、不由模型生成。卡片与 Skill 报告数字不一致,信任崩塌
④ 经营区永不空屏全静默、样本不足和拉取失败有明确页面状态;unsupported/not_applicable 不单独出卡,只在能力矩阵或平稳摘要中计数。既不能用空白让商家以为功能坏了,也不能让不适用能力占据经营注意力
⑤ 洞察可降级文案生成链路(事实层/行动层代码,或归因层模型/规则)失败时,卡片仍能渲染数值 + 状态 + 按钮。模型超时导致整页不可用
1.2 成功判定(不是「上线」,是「被用」)
指标目标为什么这个数能说明价值
卡片区曝光→点击详情率≥ 12%作为上线起始验收线;按卡位、指标和店铺类型分层观察并持续校准
弹窗打开→确认发送率≥ 55%低于此说明参数/提示词默认值不合理,用户放弃
发送→Skill 会话完成率≥ 80%验证预填契约是否真的让 Skill 免澄清
数值错误投诉率≤ 0.1%原则③的硬底线;超标即停止或回滚受影响指标的计算版本与卡片展示,模型归因不承担数字生成
7 日回访率(卡片区)≥ 40%验证「不是一次性新鲜感」——文案疲劳会直接打到这个数
🗂️2 · 指标池总览:55 项

指标池固定为 55 项,但每项能否运行取决于平台权限、报表、历史深度和外部连接器。每个 Metric Spec 都保存 capability 与 availability;缺权限、缺历史或数据源不满足时按第 3.4 与 7.6 节降级,不用近似字段冒充。

55
指标池总数
22
Amazon 独立维护
33
Shopify 独立维护
12
同名异实组
30
Tier-1 首屏候选
6
首屏卡位上限
为什么 Shopify 比 Amazon 多 11 项?两边可用的数据粒度不同。Shopify 能在权限与数据条件满足时提供客户、弃单、多仓、成本、会话与转化数据;Amazon 能提供 Sales & Traffic、Featured Offer、FBA 库存和财务交易,但不适合在店铺级做稳定的跨订单客户身份分析。页面按连接器能力逐店判定,不把 StoreClaw 尚未接入写成平台不支持。
2.1 metric_id 命名规范
格式
platform
·
dimension
·
metric_slug
示例:amz.rev.gmv_wow / shp.cust.repeat_rate / amz.prod.buybox_deficit_count
硬规则:同名指标在两平台的 metric_id 前缀不同即视为两个指标,各自拥有独立的阈值配置、双语文案键、卡片交互原型与预填契约。amz.rev.aov_changeshp.rev.aov_change 是两条互不影响的配置记录,改一边不动另一边。
platformdimension含义对应 Skill 维度
amzrev收入表现D1 Revenue Health / revenue
shpinv库存健康D2 Inventory Risk / inventory
prod商品表现D3 Product Performance / product
cust客户健康D4 Customer Health / customer(Amazon 无)
ops运营履约D5 Operations Efficiency
fin费用与利润D1 延伸(Amazon 费用结构 / Shopify 毛利代理)
2.2 分平台 · 分维度分布
维度AmazonShopify差异根因
rev 收入表现66数量相当但口径完全不同:Amazon 有会话/转化率,Shopify 有渠道/国家结构与折扣依赖度
inv 库存健康56Shopify 以 variant × location 和订单路由判断可履约性;Amazon 以 marketplace × sellerSKU/FNSKU × FBA 项目记录可售、占用与在途状态
prod 商品表现67Amazon 有 Featured Offer / Listing 健康;Shopify 有 5 类商品角色与毛利代理
cust 客户健康0 · design_na7Amazon 不提供买家身份数据,整维度设计性 N/A
ops 运营履约34Shopify 多「弃单漏斗」;Amazon 履约逾期仅对自发货部分成立
fin 费用利润23Amazon 费率结构来自 financial events;Shopify 依赖 unit_cost 是否录入
合计223355
2.3 指标池分层:不是 55 项都上首屏

55 项是指标池(可计算、可入库、可被弹窗参数引用),不是卡片位。首屏最多渲染 6 张卡片。三层定位如下。

🥇
Tier-1 · 首屏候选
Amazon 12 项 / Shopify 18 项 · 共 30 项
具备明确经营动作、官方绩效约束或可配置业务目标,参与首屏排序,最多显示 6 张。Tier 只是页面展示层级,不代表开发先后;55 项都属于完整指标合同。
🥈
Tier-2 · 展开区
Amazon 8 项 / Shopify 11 项 · 共 19 项
解释性指标,本身不构成告警,但为 Tier-1 提供归因线索(如折扣率解释 AOV 下滑)。默认折叠在「查看全部指标」内,或作为 Tier-1 卡片的次级行。
🥉
Tier-3 · 上下文
Amazon 2 项 / Shopify 4 项 · 共 6 项
结构分布类(渠道构成、国家构成、履约状态分布、弃单步骤分布)。不做阈值判断,只在详情弹窗与 Skill 预填参数中作为维度选项出现。
为什么要分层而不是全上:55 项同时平铺会把页面变成另一份后台报表。分层只负责把「后台计算范围」与「页面注意力」分开:全量计算、按需展示,不减少指标定义与数据验收范围。
📐3 · 指标定义规范(Metric Spec Schema)

第 4、5 章每一项指标都按这张表填满才算「设计完成」。这套 schema 同时是配置表结构——阈值、文案、交互原型、预填契约全部外置,不写进代码。

字段归属层说明
metric_id标识平台·维度·slug,全局唯一
issue_group / issue_scope_fields / merge_version标识声明可合并的经营主题、作用对象字段与合并规则版本。issue_group 为空时等于 metric_id;issue_key = hash(store_id, marketplace_id, issue_group, normalized_scope, merge_version),相同对象和主题才可合并。
tier标识1 / 2 / 3,决定是否参与首屏竞争
formula计算逻辑可执行的数学定义,含窗口与分母口径
window_start/end / date_basis计算逻辑完整日、[start,end)、事件日期口径与对比基准;销售/流量常用 7 日,库存销速 28 日,PFC 固定 7 日,LSR 固定 10/30 日,客户/退货按 cohort 成熟窗
unit / precision计算逻辑pct / pp / count / currency / days;小数位
higher_is_good计算逻辑决定 _change_class 的方向语义
source_pipeline取值逻辑产出数据的 pipeline 脚本
source_field取值逻辑calculator 输出 JSON 里的确切字段路径
availability_status取值逻辑ok / partial / estimated / insufficient_sample / permission_denied / unsupported / not_applicable / source_failed / stale。原始 pipeline outcome 先通过 outcome_map 映射:permission_missing→permission_denied,connector_error/failure_na→source_failed,design_na→not_applicable;unavailable 与 data_not_available 必须继续细分,不能作为最终状态。0 与任何不可用状态严格分开。
maturity / coverage取值逻辑每项指标独立保存 provisional / settling / final,以及 covered_count、eligible_count、coverage_pct、exclusions
comparison_status / reason_code取值逻辑comparison_status 只取 comparable / no_baseline / insufficient_history / incompatible;reason_code 保存 zero_denominator / cost_missing / no_velocity / window_incomplete 等具体原因。它们不进入 availability_status,也不与 maturity 拼成一个字符串。
comparability_key取值逻辑metric、source、date_basis、window、timezone、marketplace、currency、formula 与 threshold version 全部兼容才允许计算变化
outcome_map取值逻辑拉取失败时的 _outcome 取值与对应提示语
thresholds / threshold_type展示逻辑四态区间与来源:platform_hard / merchant_target / storeclaw_internal / adaptive_baseline / eligibility_gate;平台官方线永不被内部线覆盖
has_official_platform_threshold展示逻辑仅用于真正的官方绩效要求;卡片显示“官方绩效阈值”与来源链接,和 StoreClaw 提醒线分开
change_significance展示逻辑「算显著变化」的最小幅度,闸门 1 候选池判定用
delta_mode / delta_unit展示逻辑relative_pct / absolute_pp / absolute_value 与相应单位;change_significance 必须使用同一 mode,页面不得根据指标单位自行猜测
priority_key展示逻辑所有候选指标使用第 7.3 节同一 priority_vector;数值向量 DESC 后再用 stable_metric_id ASC,组成唯一确定性排序键
owner / due_at / task_status闭环负责人、截止时间与 unassigned / assigned / in_progress / blocked / verifying / done / reopened;验证通过前不能进入 done
copy_key展示逻辑双语文案键(zh / en 两套)
interaction交互6 类原型之一(见第 8 章)
prefill交互目标 Skill、维度、默认参数、默认提示词模板
3.1 三层逻辑的边界(避免串味)
🧮
计算逻辑
数字怎么来
纯数学 + 窗口口径。只在 calculator 里实现,页面与洞察层都不重算。争议点(分母是订单数还是已发货数、退货按订单还是按件)在这一层一次性钉死。
🔌
取值逻辑
数字取不到时怎么办
字段路径 + 缺失分类。核心产出是「这个 na 是哪种 na」:样本不足、平台不支持、权限不足、连接器故障、设计性 N/A——五种在页面上的说法完全不同。
🖼️
展示逻辑
要不要出现、长什么样
阈值着色 + 显著性判定 + priority_key 所需字段 + 文案键。这一层决定指标是否进入候选池;最终排序和卡位规则集中在第 7 章。
3.2 复用现有代码里已有的降级词汇

不新造一套状态机。两个 Skill 的 scoring / calculator 脚本已经在用下列字段,卡片体系直接沿用,保证卡片与 Skill 报告口径一致。

已有字段来源脚本在卡片体系中的用途
status: normal / watch / alert / naamazon_health_scoring · shopify_health_scoring直接映射卡片四态配色
_outcome: insufficient_data 等两平台 scoring属于 pipeline 原始结果;先经 outcome_map 归一为 canonical availability_status,再决定页面分支
_sample_count两平台 scoring填入「仅 N 单,低于 10 单最低样本」提示
_change_class(x, higher_is_good=)两平台 scoring变化方向的好坏判定,卡片箭头颜色
data_gap / velocity_onlyamazon_inventory_calculator库存类指标的部分可信状态
turnover_days_low_confidenceamazon_health_scoring周转天数卡片加「低置信」角标
conversion_available: Falseamazon_health_scoring · amazon_product_calculatorAmazon 商品级转化率指标不渲染而非显示 0
sessions_available: Falseshopify_revenue_calculatorShopify 会话/转化类指标不渲染
unit_cost_availableshopify_inventory / product calculator毛利代理类指标的前置开关
design_nastore-health-diagnostics 原始错误分类映射为 not_applicable;Amazon 客户维度整体不出现在页面,也不出现「不可用」提示
3.3 数据形态字段:settle_classchart_form

除了上面复用的降级词汇,Metric Spec 还需要两个新增字段。它们不描述指标算什么,而描述指标的数据行为——沉降方式与可视化方式,两者都由第 11.3 节的 A/B/C 分类推导。

字段取值决定什么
settle_classA_volume / A_ratio / B_point / C_longtail成熟度阶梯(settle_age 取值)、漏跑是否可自愈、对比基准选结算基准还是同龄基准。这是最根本的分类,其余两项都从它推导
chart_formrolling_window_sum / rolling_window_ratio / point_in_time / mature_cohort_weekly迷你图画什么、窗口如何计算、点数和末端虚线几段。window_days、numerator、denominator 与 history_days 由每项 Metric Spec 明确给出;末点必须等于卡片头条。
两个字段都不允许在渲染代码里按 metric_id 硬判断。这与第 6 章「独立配置行而非 if platform 分支」是同一条工程原则:加一个指标应该等于加一行配置,而不是在四个地方各加一个分支。
一条硬规则:原始 design_na 映射为 not_applicable 后不渲染(Amazon 无客户数据、Shopify 无 Featured Offer)。permission_denied 与映射后的 source_failed 必须给可修复提示。页面只消费 canonical 状态,不直接分支处理各 pipeline 的旧名称。
3.4 平台数据能力与取数边界

每项能力先判断数据属于平台直接事实、StoreClaw 可复算指标、外部系统补充,还是只能估算/人工核对。能力状态按店铺、市场、权限、角色和数据历史逐项保存,不用一份全局“支持/不支持”清单替代真实连接状态。

数据项平台字段或报告权限与前提粒度 / 时间StoreClaw 处理与页面标注
Shopify 销售、AOV、毛利ShopifyQL sales / profitabilityread_reports;毛利还需销售时历史 COGS销售/冲销事件、店铺时区、币种商品净销售、净收款、毛利、贡献利润分开;成本覆盖不足显示 partial,不给整店实际利润结论
Shopify 流量与归因ShopifyQL sessions;Order.customerJourney;GA4/Web Pixel报表/客户数据权限及外部连接器CustomerJourney 只描述已转化订单前 30 天路径完整 PV/UV/sessions/全站转化分母用流量源;订单路径不冒充全部访客
Shopify 广告成本与投放Meta Marketing API、Google Ads API、TikTok Ads API各广告账户分别授权;归因窗、时区、币种和账户范围必须登记campaign/ad/product 与各平台归因时间Shopify 本身不提供跨平台广告成本真值。只有对应连接器已授权才显示 spend、impressions、clicks、CPC、平台归因转化与 ROAS;广告归因销售不等于 Shopify 店铺总销售,未连接时状态为 not_connected/conditional,不用 0 补齐
Shopify 客户与 LTVCustomers、完整 Orders、cohortread_all_orders 与受保护客户数据批准可能需要customer/cohort,91/180/365 天或生命周期历史收入 LTV、历史毛利 LTV、预测 CLV 分开;API 近 60 天截断和分页不完整时降级
Shopify 订阅SubscriptionContract / billing attempts应用拥有合同、own subscription scope、平台批准、商家实际使用合同、扣款尝试、每日快照/webhookbilling attempt 不是变更史;没有历史快照时不计算新增/流失/平均订阅时长
普通网页 SEOSearch Console Search Analytics / URL Inspection站点验证与 GSC 权限query/page 与单 URL 索引状态Google Indexing API 只用于 JobPosting 或 VideoObject 内 BroadcastEvent,不用于普通商品/博客收录
Bing 与 AI 搜索可见性Bing Webmaster API;AI 搜索人工抽查或独立第三方监测Bing 需验证站点并授权;AI 搜索监测需登记 provider、查询、地区、时间与采样方法Bing 的关键词、流量、抓取与 URL 提交;AI 搜索按查询样本观测Bing 可通过官方 Webmaster API 补充。ChatGPT Search、Perplexity 等通用模型/搜索 API 不被当成站点级“已收录查询 API”;没有经过核验的官方站点收录接口时,只能写“本次查询样本中出现/未出现”,不能写成全局收录结论。这一能力属于外部监测,不纳入 55 项经营指标池
Amazon 销售与转化Sales & Traffic Business Report账号角色、市场和报表资格marketplace、ASIN、完整日Ordered Product Sales、Units、Order Items、Sessions、Unit Session Percentage 按官方字段对账;Orders API 不静默替代
Amazon 广告Amazon Ads API Reporting v3:impressions、clicks、cost、sales14d、purchases14d、acosClicks14d、roasClicks14d、searchTerm广告账户授权、profile/marketplace 与归因窗口SP / SB / SD;campaign、ad group、ad、keyword、search term广告归因销售/订单不等于店铺总销售;ACOS/ROAS 只在同一广告类型、归因窗、币种与市场内比较,不能与 Sales & Traffic 销售静默合并
Amazon 库存与费用FBA Inventory、Inventory Planning/Aged/Excess、Finances v2024-06-19对应市场、角色、报表与财务权限库存时点;财务 posted time历史库存靠每日快照;估算仓储费与实际扣费分开;无法归因费用单列
Amazon 综合利润自建:Ads cost + Finances + COGS/头程/履约;可选第三方:LingXing get_profit_report_msku多源授权、MSKU/ASIN/订单映射与成本覆盖;第三方连接需单独授权marketplace × MSKU/ASIN × 日期/订单当前 55 项池只把可匹配平台费率与退款金额率作为事实,不把它们称为净利润。启用综合利润时固定显示 provider、匹配覆盖率、广告归因窗和未分配费用;LingXing 聚合值与自建值是两条互斥来源,不能混加
Amazon 促销Promotion Performance / Coupon Performance reports相应角色、Brand Registry、市场和账户资格活动/优惠券、报表周期状态写 conditional,不笼统写“没有 API”
Amazon 自然排名SP-API 无官方精确自然位次;第三方 provider 可补充第三方授权与采样条件关键词、地区/邮编、设备、采样时间始终显示 provider 与 estimated;不与官方广告 search term 混写
能力状态进入指标合同:ok / partial / estimated / insufficient_sample / permission_denied / unsupported / not_applicable / source_failed / stale。能力表写“可取”不等于 StoreClaw 当前已接入:每个店铺还要保存 connector_status、provider、authorized_scopes、source_as_of 与 coverage;未接入的外部源显示连接状态,不生成经营数值。只有当前值和基准值的 source、date_basis、window、timezone、marketplace、currency、formula_version 与覆盖策略兼容时才计算变化。旧数据可以显示“数据截至……”,但会关闭补货、清仓、调价等强动作。
🅰️4 · Amazon 指标章节(22 项)

Amazon 的 22 项指标分别来自 Sales & Traffic、Orders、FBA Inventory、Performance、Finances 与商品状态数据。销售、库存、绩效和财务事件的时间口径并不相同,必须按 seller、marketplace、SKU/FNSKU、订单、币种和事件日期分别落库;页面只比较口径兼容的数据。

Amazon 数据链路
amazon_orders_pipeline
+
fba_inventory
+
sales_traffic
+
financial_events
+
listing_health
revenue / inventory / product calculator
store_daily_metrics
Amazon 全局口径合同
① 每个 marketplace_id、币种和时区独立计算,不跨币种直接聚合。
② FBA 库存按 API 返回的 marketplace、sellerSKU/FNSKU 与库存项目保存;只有拿到明确的跨境库存项目证据时才合并,不预设整个账号共用一池库存。
③ Sales & Traffic 与 Orders API 不是可静默互换的来源。缺少前者时显示对应数据状态;若另算 Order Total,必须另用字段名并说明税、运费、状态和日期口径。
④ 广告归因销售额不等于全店销售额;无法归因到订单或市场的账号级费用单列,不按销售额硬摊。
4.1 rev · 收入表现(6 项)
指标计算逻辑取值逻辑展示逻辑
amz.rev.gmv_wow
订购商品销售额变化
T1
稳定 ID;页面名对齐 Ordered Product Sales
delta_pct = (current_7d − previous_7d) ÷ abs(previous_7d) × 100%
金额只取 Sales & Traffic 的 orderedProductSales,同一 marketplace、币种、时区下比较两个完整 7 日窗;不把 Order Total 当作静默回退。
源:Sales & Traffic Business Report → orderedProductSales
保存 date_basis=order_date、窗口、币种、时区、marketplace、公式版本。前窗为 0 时写 comparison_status=no_baselinereason_code=zero_baseline;报表无权限、未同步或窗口不完整分别映射 availability_status 或 reason_code,不能当 0。
状态以店铺历史基线和商家目标判断;相对变化用 %,不是 pp。阈值类型固定显示 adaptive_baselinemerchant_target。排序由第 7.3 节唯一算法计算。
amz.rev.orders_trend
日均订单项数趋势
T1
daily_order_items = totalOrderItems_7d ÷ 7,与前一完整 7 日窗比较;断流检测使用逐日 totalOrderItems,连续 ≥3 日为 0 时还要结合历史活跃基线确认 源:Sales & Traffic 的 totalOrderItems 及逐日结果。若产品要展示去重订单数,必须另从同一 Orders cohort 按 AmazonOrderId 去重,不能与订单项数混用 连续 3 日为 0且此前活跃时置 forced_incident=1;其它变化按相对百分比判定,显著性写 |Δ%| ≥ 10%,不是 pp
amz.rev.aov_change
每订单项销售额变化
T1
稳定 ID;页面不把它称为客单价
sales_per_order_item = orderedProductSales ÷ totalOrderItems。若另做真正的每单金额,必须在同一 Orders cohort 内用商品销售额 ÷ 去重 AmazonOrderId,并使用不同 canonical 字段 取 Sales & Traffic 的 orderedProductSalestotalOrderItems。分母为 0 时 value 为空并写 reason_code=zero_denominator;口径不一致写 comparison_status=incompatible;样本不足写 availability_status=insufficient_sample,不使用笼统的 insufficient_data。 它是结构信号,不设置平台处罚状态;默认只在变化超过店铺历史噪声带时进入候选。相对变化用 %,页面同时显示分子、分母和口径名。
amz.rev.conversion_rate
转化率
T1
Unit Session Percentage = unitsOrdered ÷ sessions × 100%;优先直接读取官方 unitSessionPercentage。变化用 delta_pp=current_pct−previous_pct,绝不使用 orders ÷ sessions 冒充官方转化率。 源:Sales & Traffic Business Report。保存 unitsOrderedsessions 与官方百分比以便对账。报表无权限、同步中、市场不支持和样本不足分开显示。 默认用店铺历史基线识别异常,threshold_type=adaptive_baseline;StoreClaw 可配置观察线必须明确标为内部提醒。数据失败只出数据状态,不出经营判断。
amz.rev.sessions_trend
会话量趋势
T2
(sessions − sessions) ÷ sessions × 100%
page_views 作为辅助显示不单列指标
源:current.sessions / page_views
na 条件:同 conversion_rate(同一份报表)
作为 gmv_wow / conversion_rate 卡片的次级相关信号,不独立占卡位;相对变化显著性示例为 |Δ%| ≥ 10%
amz.rev.discount_rate
折扣金额率
T2
merchandise_discount_rate = matched_item_promotion_discount ÷ matched_pre_discount_merchandise_sales × 100%。运费折扣使用独立字段和运费基数,不进入商品折扣率。分子、分母必须来自同一 marketplace、币种和订单项集合。 只有能够按订单项匹配商品折扣与折前商品金额时才计算;缺字段或匹配覆盖不足时返回 partial/unsupported,不以运费折扣或账号级促销金额代替。0 与“没有数据”严格分开。 25% 等数值只能作为 storeclaw_internal 可配置观察线,不是 Amazon 绩效标准。它说明折扣金额占比变化,只能与商品结构、促销类型和利润一起作为排查线索,不能证明销售由折扣带来。
4.2 inv · 库存健康(5 项)
指标计算逻辑取值逻辑展示逻辑
amz.inv.stockout_risk_count
断货风险 SKU 数
T1
DoC = fulfillable_quantity ÷ daily_velocity_28。风险条件为 预计售罄日 < 最早可补到日 + safety_days;14 天只作为没有补货周期配置时的 StoreClaw 默认提醒线,同时输出命中数和有效 SKU 占比。 源:amazon_inventory_calculator → summary 中 critical_stockout + replenish_soon 计数
na 条件:SKU 行 status=data_gap(无库存数据)不计入分子也不计入分母;velocity_only 行只有销速无库存,单列提示
MFN/自发货 SKU 无 FBA 库存 → 排除并在卡片脚注说明排除数量
命中 SKU 集合、受影响销售占比或预计售罄日发生变化即重新排序。页面标注 marketplace、库存项目、销速窗口、在途阶段和补货周期;不能显示“账号级共享”这一未经逐项目确认的结论。
amz.inv.overstock_count
积压滞销 SKU 数
T1
优先读取 Amazon 的 days of supply、estimated excess quantity 与 sell-through;没有官方派生值时才用 DoC > configured_overstock_days 或“完整 28 日无销量且有可售库存”估算。90 天是 StoreClaw 内部默认,不是平台标准。 源:FBA Inventory/Restock 报告与库存快照。成本存在时计算成本库存价值;缺成本时只显示 retail_inventory_value,不得写成资金占用。新品、季节备货、受限商品和活动备货需要排除或单独标注。 按估计多余数量、成本价值、受影响 SKU 占比和持续天数排序;页面同时显示成本覆盖率、计算方式与提醒线来源。
amz.inv.turnover_days
平均周转天数
T2
Σ(fba_sellable) ÷ Σ(daily_velocity),按 SKU 销量加权;当 Σ(daily_velocity)=0 时不做除法,value 为空。 源:amazon_health_scoring → D2 turnover_days
na 条件:无有效销速写 availability_status=insufficient_samplereason_code=no_velocity;销速样本偏薄写 availability_status=insufficient_samplereason_code=low_velocity_sample。只有可计算且达到最低样本、但覆盖率偏低时才显示数值并加「低置信」角标。
StoreClaw 内部观察线:🔴 >120 天 | 🟢 30~120 天 | 🟡 <30 天(过低时与断货风险联合核查);StoreClaw 内部显著性线:|Δ| ≥ 15 天。三条都不是 Amazon 标准;排序按第 7.3 节统一字段。
amz.inv.inbound_coverage
在途补货覆盖
T2Amazon 独有
在断货风险 SKU 中,只有 预计断货日前可到仓数量 ≥ 到货前需求缺口 + 安全库存 才记为 covered。只有数量、没有 ETA 或阶段时只能记录 inbound_present 源:Working/Shipped/Receiving 等在途阶段、预计到仓日、数量、当前可售和补货建议。缺 ETA 或数量时写 availability_status=partial 与相应 reason_code;缺报表权限时写 availability_status=permission_denied,两种情况都不输出“已覆盖”。 作为断货卡片的证据行,显示“已覆盖 / 有在途但无法确认 / 无在途”三组;提醒线由商家补货周期与安全库存决定。
amz.inv.sku_data_gap
库存数据缺口
T3
data_gap SKU 数 ÷ 总 SKU 数;含 sku_cleaning 排除项统计 源:summary data_gap / velocity_only 计数 + sku_cleaningreturn_tracking_subsku / orphan_inventory / total_excluded 不做阈值告警。仅在其它库存卡片的数据说明 tooltip 内出现,用于解释「为什么这里 SKU 数和你后台不一样」——这条能显著降低数值争议投诉
4.3 prod · 商品表现(6 项)
指标计算逻辑取值逻辑展示逻辑
amz.prod.buybox_deficit_count
Featured Offer 占比不足 ASIN 数
T1Amazon 独有
count(ASIN where buy_box_pct < 80)
仅统计窗口内有销售或有流量的 ASIN
源:Sales & Traffic Business Report 的 ASIN 窗口数据,由 amazon_product_calculator 读取 buy_box_pct / buy_box_status。它是可按原窗口重拉的 A_ratio,不是只存在于采集当时的库存类时点值。
na 条件:sales_traffic 不可用 → 整项不渲染
Shopify 侧不存在此指标,不是置 0 而是配置表里根本没有这条记录
80% 仅为 storeclaw_internal 默认观察线;它会影响默认购买入口和转化机会,但不是平台处罚线,也不等于商品完全不能销售。ASIN 集合变化时重新进入候选;趋势按同一窗口的分子分母重算。
amz.prod.return_rate
FBA 退货率
T1
fba_return_rate_30d = 同一 FBA 发货 cohort 在发货后 30 天内的 returned_units ÷ shipped_units。30 天为 StoreClaw 默认观察期,写入 observation_horizon_days=30 与版本;若只能按退货发生日读取 FBA Returns,页面明确标注事件期视图,不能除以本期新订单。 源:FBA Customer Returns + 同批 FBA 已发货商品。保存 fulfillment_scope=FBA、原订单/订单项、ASIN/SKU、发货日、退货日、退货原因和处置结果;MFN 发货和排除件数常显。cohort 尚未成熟时写 maturity=settling;已发货件数不足时写 availability_status=insufficient_sample,不把两者拼成一个状态。 卡片和报告标题始终保留“FBA”范围。阈值优先使用店铺/品类历史基线;显示 returned/shipped 分子分母、30 天观察期、成熟度、MFN 排除范围和 Top 原因。与退款金额率同时触发时合并成一张卡,避免重复告警。
amz.prod.top3_concentration
Top-3 ASIN 集中度
T2
Top-3 ASIN 的 Ordered Product Sales ÷ 店铺 Ordered Product Sales × 100% 源:concentration_pct(health_scoring D3)或由 _by_asin 排序推导 60%/80% 只能作为内部观察线。集中度需结合店型、商品生命周期、利润、库存和自身历史判断;单品店或新品期不因高集中度自动判为风险。
amz.prod.listing_flag_count
Listing 异常数
T1Amazon 独有
count(SKU with 任一 listing_flag)
按 flag 类型分组计数
源:SKU 行 listing_flags,四类标签:listing_suppressed→suppressed、listing_quality_risk→quality-flagged、pricing_above_market→priced above market、buybox_loss_non_price→losing Featured Offer on non-price grounds
na 条件:listing_health_outcome != success → 不渲染;listing_health_covered_skus 需在脚注披露覆盖范围
🔴 有任一 suppressed(forced_incident=1)|🟡 有 quality_risk 或 pricing_above_market |🟢 无
suppressed 不受普通卡位配额阻挡,其余按统一 priority_key 排序
amz.prod.traffic_only_count
有流量零转化 ASIN
T2Amazon 独有
count(ASIN where sessions > 阈值 且 units_sold = 0)
阈值默认 50 sessions/窗口,避免长尾噪声
源:amazon_product_calculatortraffic_only: True 行 + summary traffic_only_skus / traffic_matched_skus
na 条件:sales_traffic 不可用 → 不渲染
🟡 ≥3 个 | 🟢 0~2 个
这是机会信号而非平台故障;按受影响访问量、持续时间和趋势字段进入统一排序
amz.prod.cancel_rate_note
商品级取消率
T3
源:SKU 行 cancel_rate_pct 恒为 None(Amazon 不在商品层给出取消数据) 永不渲染卡片。保留在指标池仅为文档完整性与弹窗参数说明,避免后续开发误以为遗漏。属 design_na
4.4 cust · 客户健康(0 项 · 设计性 N/A)
D4 Customer Health
design_na
页面上不出现任何客户维度卡片,也不出现「客户数据不可用」提示
Amazon 不提供可用于店铺客户分层的买家身份数据。amazon_health_scoring.py 中 D4 为 score: None, status: "na", conclusion: "N/A — Amazon does not provide customer identity data."。因此复购率、RFM 分层、客户流失、老客销售占比和客户生命周期价值不进入 Amazon 指标池。
为什么连提示都不给:提示「客户数据不可用」会让商家产生「去开权限就能有」的错误预期,进而产生工单。这条与 store-health-diagnostics 的 Caveat sourcing rule 第 3 条(design_na → 不在文字 caveat 中提及)完全一致。
唯一例外:若商家同时连接了 Shopify 店铺,Amazon Tab 下可放一条极轻量的跨平台引导——「客户复购分析需要买家身份数据,可在你的 Shopify 店铺查看」。这是引导而非缺失提示,语义完全不同。
4.5 ops · 运营履约(3 项)
指标计算逻辑取值逻辑展示逻辑
amz.ops.cancel_rate
发货前取消率
T1
PFC rate = 7日内卖家在确认发货前取消的 MFN 订单数 ÷ 7日全部 MFN 订单数 × 100%。排除 FBA、买家和 Amazon 发起的取消。 源:Amazon Account Health/相关绩效数据与可验证的订单取消发起方。卡片必须展示分子/分母;拿不到取消发起方时按实际原因映射为 permission_denied / unsupported / source_failed / partial / insufficient_sample,不得保留 unavailable,也不得用全部 cancelled 近似。 threshold_type=platform_hard:官方要求低于 2.5%;≥2.5% 为 official alert,2.0%–<2.5% 为 StoreClaw 预警。硬绩效项不因样本少而隐藏,但要显示样本量。
amz.ops.overdue_rate
迟发率(Late Shipment Rate)
T1
分别计算滚动 10 日与 30 日:晚于 expected ship date 才确认发货的 MFN 订单 ÷ 同窗全部 MFN 订单 × 100%,不含 FBA。 源:Amazon 绩效数据及订单的 expected/actual ship time。全 FBA 店铺为 design_na;混合履约只统计 MFN,并显示两个窗口的分子、分母和截止时间。 threshold_type=platform_hard:任一官方窗口 ≥4% 为 official alert;3%–<4% 为内部预警。不能保留泛化的 28 日或 5% 规则。
amz.ops.shipped_gap
发货缺口
T2Amazon 独有
overdue_unshipped_count = count(MFN open orders where LatestShipDate < as_of);如展示比例,分母是截至 as_of 已到应发日的 MFN 订单。 源:Orders 明细的履约状态与 LatestShipDate。按每单承诺日期判断,不统一扣除最近两日;预售、暂停和已取消订单按明确规则排除。 这是内部待办证据,不是 Amazon 绩效率。作为迟发率卡片的订单清单,包含逾期时长、订单金额、仓库/履约方式、负责人和处理状态。
4.6 fin · 费用与利润(2 项)
指标计算逻辑取值逻辑展示逻辑
amz.fin.fee_rate
综合费率
T1Amazon 独有
platform_fee_rate = abs(eligible_posted_fees) ÷ matched_merchandise_sales × 100%。销售与费用必须来自同一匹配交易集合;推荐费、FBA、仓储、服务费、退款、赔偿和调整分项展示。 源:Finances API v2024-06-19 listTransactions。按 seller、marketplace、order/orderItem、SKU/ASIN、currency、event time 关联;无法归因的账号费用放入 unallocated_account_fees,不按销售额硬摊。 卡片主数值为可匹配交易费率,并显示匹配覆盖率和未分配费用。它不是利润;贡献利润还需 COGS、入仓/头程、广告和其他可变成本。
amz.fin.refund_rate
退款金额率
T2
refund_amount_rate_30d = 同一原订单 cohort 在订单后 30 天内的 matched_refund_principal ÷ cohort_matched_merchandise_sales × 100%。默认 cohort_window_days=30observation_horizon_days=30,按同龄前一 cohort 比较并随 Metric Spec 版本化。财务事件发生期只展示 posted refund amount,不把本期退款直接除以本期新订单销售。 源:同一 Finances 交易集合;保存退款事件日期、原订单日期、币种、匹配状态、观察龄和覆盖率。无法回连原订单的退款单列,不进入 cohort 比率分子。 与 FBA 商品退货率同时触发时合并为一张卡片,分别写清“FBA 件数 cohort”和“退款金额 cohort”;30 天是内部运营观察期,不是 Amazon 官方退款期限,阈值使用商家目标或店铺历史基线。
Amazon 指标数量:rev 6 + inv 5 + prod 6 + cust 0 + ops 3 + fin 2 = 22。分层为 Tier-1 12 项 / Tier-2 8 项 / Tier-3 2 项;page views 是会话卡片的上下文,不另算指标。
🅱️5 · Shopify 指标章节(33 项)

Shopify 的 33 项指标来自销售事件、订单、Inventory Level、客户、退货、履约、弃单和利润数据。会话、转化与营销归因在权限和数据源满足时可取,不应写成平台天然缺失;订单的 CustomerJourney 只覆盖已转化订单路径,完整访客分母仍需 ShopifyQL sessions 或 GA4。Shopify 没有 Amazon 式的卖家绩效阈值,因此多数状态来自商家目标、店铺历史和 StoreClaw 明示的内部提醒线。

Shopify 数据链路
shopify_revenue_pipeline
+
inventory_product
+
customer
+
fulfillment
+
abandoned_checkouts
revenue / inventory / product / customer calculator
store_daily_metrics
Shopify 全局口径合同
① 商品毛销售额、商品净销售额、净收款、毛利和贡献利润分开保存;税、运费、支付退款和销售冲销不混成一个“净收入”。
② 金额统一到明确的 shop/presentment currency,保存销售事件日、店铺时区、渠道和 Markets 范围;跨币种不直接相加。
③ 库存按 variant × location × 可履约渠道计算,直接读取 available,不从 on_hand 与 committed 反推。
④ 历史利润只在销售时成本覆盖充分时成立;当前 unit cost 回填历史只能标为估算。
⑤ CustomerJourney、客户数据、订阅、ShopifyQL 报表和营销数据分别受权限、应用所有权与套餐约束,逐店保存 capability 状态。
5.1 rev · 收入表现(6 项)
指标计算逻辑取值逻辑展示逻辑
shp.rev.net_revenue_wow
商品净销售额变化
T1
稳定 ID;canonical name 为 net_sales_wow
net_sales = gross_sales − discounts − sales_reversalsdelta_pct=(current_7d−previous_7d)÷abs(previous_7d)×100%。按 Shopify 销售事件日比较两个完整 7 日窗。 源:ShopifyQL sales → net_sales。旧订单在本期发生的退货、取消或改单会在本期形成 sales reversal,卡片要披露事件口径。前窗为 0、权限不足、同步中和窗口不完整分别降级。 中文固定写“商品净销售额”,不是净收入或到账。状态以商家目标和店铺历史基线判断;相对变化用 %,排序引用第 7.3 节唯一算法。
shp.rev.gross_sales_wow
毛销售额周环比
T2
delta_pct=(current_7d.gross_sales−previous_7d.gross_sales)÷abs(previous_7d.gross_sales)×100%,比较店铺时区内两个完整 7 日销售事件窗;前窗为 0 时标 new_baseline,不计算无穷大。 源:ShopifyQL sales → gross_sales。权限不足、同步中、币种/Markets 范围不同、窗口不完整或销售事件口径不一致时不计算变化,并映射为相应 availability_status。 不独立占卡位。作为净销售额卡片的次级行:毛销售额基本持平而净销售额下降时,分别展示折扣与销售冲销的变化,供商家核查
shp.rev.orders_trend
日均订单量趋势
T1
daily_orders = count(distinct eligible order_id by createdAt, shop timezone);比较两个完整 7 日窗的 sum(daily_orders),页面可同时展示日均。连续 3 个完整日 daily_orders=0 且此前活跃才置 forced_incident。 源固定为 ShopifyQL orders 或同一 Orders cohort,不从 sales reversal 事件数组推断订单断流。默认排除 test orders,是否纳入已取消订单必须由 Metric Spec 明确并在两个窗口保持一致;权限不足、窗口不完整、订单数 <10 分别降级。历史活跃且连续 3 个完整日为 0 的断流检测先于普通样本门槛执行,不能被 <10 单规则压掉。 🔴 连续 3 日为 0且店铺此前活跃(forced_incident=1,不受样本门槛阻挡)|🔴 ≤ −25% |🟡 −25%~−15% |🟢 −15%~+15%
相对变化显著性写 |Δ%| ≥ 10%,不是 pp;订单少于样本门槛只关闭普通涨跌判断并写 availability_status=insufficient_sample
shp.rev.aov_change
客单价变化率
T1
AOV = (gross_sales excluding post-order adjustments − discounts excluding post-order adjustments) ÷ orders;后续退款与销售冲销不回写下单时 AOV。 优先直接读取 ShopifyQL average_order_value;同时保存订单数和金额分子。任一窗订单为 0 时 value 为空并写 reason_code=zero_denominator;样本不足写 availability_status=insufficient_sample,禁止用 net_sales/orders 代替。 AOV 是结构信号,不设平台处罚状态;相对变化用 %。页面同时显示商品/渠道结构和折扣金额率作为相关线索,不能直接写成因果。
shp.rev.discount_dependency
折扣金额率
T1
merchandise_discount_rate = (line_item_discounts + 分摊至商品的 order_discounts) ÷ gross_sales × 100%;shipping discounts 使用独立运费基数,单独计算和展示。 源:discount_rate_pct;health 侧 discount_dependency_pct 与布尔量 discount_dependency_high(>20 触发)
na 条件:无折扣字段置 na 不置 0
商品、订单和运费折扣分开显示。20% 等值只可标 storeclaw_internal 或商家目标;它说明折扣侵蚀程度,不证明销售依赖或由折扣驱动。
shp.rev.channel_mix
渠道结构
T3Shopify 独有
sales_channel_mix = 各 Shopify sales channel 的 net_sales ÷ total_net_sales;营销归因来源另列,不与销售渠道混用。 源:revenue_mix / channel_mix / country_mix 不做阈值。详情可限定销售渠道、国家与币种;营销来源只在有 ShopifyQL/GA4/广告平台归因数据时出现。CustomerJourney 只能解释已转化订单,不承担全站 sessions 与 conversion 的分母。
5.2 inv · 库存健康(6 项)
指标计算逻辑取值逻辑展示逻辑
shp.inv.stockout_risk_count
断货风险变体数
T1
按 variant × 可履约 location 计算:needed = velocity_28 × (lead_time_days+safety_days)gap=max(0,needed−available−confirmed_incoming_before_need)。缺补货周期时才用 DoC≤14 天作内部估算。 源:shopify_inventory_calculator → summary critical_stockout + replenish_soon
na 条件:tracked=False 的变体不参与计算(Shopify 允许不跟踪库存),排除数量由 untracked_variant_count 给出并在脚注披露
粒度是 variant 不是 SKU——同一 product 多变体各自独立
命中集合、预计缺口、受影响销售占比或预计售罄日变化时进入候选。页面显示仓库可履约范围、补货周期、已确认在途、排除的未跟踪变体和估算标记。
shp.inv.overstock_value
积压库存金额
T1
excess_units=max(0,serviceable_available+confirmed_incoming−target_cover_days×velocity_28)excess_cost_value=excess_units×historical/current unit_cost 源:Inventory Level、incoming/transfer ETA、销量与成本。缺成本时写 availability_status=partialreason_code=cost_missing,只可另列 retail_inventory_value=excess_units×current_price,不能冒充现金占用。 按成本价值、数量、持续天数和销售影响排序;新品、季节/活动备货、预售与下架商品按配置排除。目标覆盖天数显示为商家目标或 StoreClaw 内部线。
shp.inv.turnover_days
平均周转天数
T2
Σ(serviceable_available) ÷ Σ(daily_velocity),只纳入能服务当前销售渠道的 location,并保留 variant × location 分布。 源:Inventory Level、订单路由/配送配置和近 28 日销量;销速为 0 时 value 为空并写 availability_status=insufficient_samplereason_code=no_velocity,覆盖不足显示低置信。 30/120 天只可作为内部默认;页面优先采用商家库存目标或店铺历史基线,并同时展示主仓断货与长尾积压,不能只给全店平均。
shp.inv.transfer_opportunity
可调拨机会数
T1Shopify 独有
source_surplus=max(0,source_available−source_velocity×(source_safety_days+transfer_eta))dest_gap=max(0,dest_need−dest_available−confirmed_incoming)transfer_qty=min(source_surplus,dest_gap) 源:shopify_specific.transfer_opportunities / multi_location / locations
na 条件:multi_location=False整项不渲染(单仓店铺无此概念,属结构性不适用)
只有两仓都可履约该变体、ETA 能赶在缺货前且预计避免的损失高于调拨成本时才给建议;否则只展示库存不均衡事实。执行后回读 transfer 状态与目标仓 available。
shp.inv.committed_backlog
已分配库存占比
T2Shopify 独有
committed_inventory_share = committed ÷ (available+committed) × 100%,只说明库存已分配给未履约订单。 源:变体行 committed / on_hand / incoming
na 条件:untracked 变体排除
不设置固定经营红绿灯。它与订单年龄、承诺发货日、暂停/预售状态和 shp.ops.overdue_rate 联合解释;占比高本身不能证明仓库堵塞。
shp.inv.untracked_share
未跟踪库存占比
T3
untracked_variant_count ÷ 总变体数 源:summary tracked_variant_count / untracked_variant_count 不做阈值告警。仅在库存卡片 tooltip 内说明覆盖率,作用同 amz.inv.sku_data_gap——降低「数字和我后台不一样」的争议
5.3 prod · 商品表现(7 项)
指标计算逻辑取值逻辑展示逻辑
shp.prod.refund_rate
实物退货件数率
T1
return_rate_30d = 同一 fulfilled cohort 在履约后 30 天内的 returned_quantity ÷ fulfilled_quantity。30 天是默认观察窗,按 Metric Spec 版本化;退款金额率、销售冲销件数率和实物退货率分别计算。 源:ShopifyQL returns/sales 与原履约订单 cohort。若只有 reversed_quantity,指标只能显示“销售冲销件数率”;cohort 未成熟或样本不足时不着经营状态。 使用商家目标或店铺/品类历史基线;展开列出 Top 商品、退货原因、实际件数、损失金额、成熟度和成本覆盖。与 Amazon 退货事件口径不可直接比较。
shp.prod.no_restock_share
退款未回库决策占比
T1Shopify 独有
NO_RESTOCK quantity ÷ known-restock-type refund quantity × 100%,只表示退款处理时没有把数量补回库存。 源:变体行 no_restock_share_pct;店铺级由 restock_type_breakdown 推导
na 条件:退款件数 < 5 时不计算(比例失真)
不能据此直接推断商品损坏、不可再售或利润损失;需要结合退货处置、仓库记录和 COGS。固定 30%/60% 只可作为内部观察线。
shp.prod.top3_concentration
Top-3 集中度
T2
先合并 variants,再算 Top-3 product 的商品净销售额 ÷ 全店商品净销售额 × 100% 源:sku_gmv(health_scoring)排序推导 优先用店铺历史和商家目标解释;60%/80% 只是内部观察线。单品品牌、新品期和多品类店采用不同基线,集中度高不自动等于经营风险。
shp.prod.hero_dependency
爆款依赖
T2Shopify 独有
hero_net_sales_share = hero 商品净销售额 ÷ 全店商品净销售额,同时显示 hero_count;hero 定义由 calculator 的商品角色分类给出。 源:角色分类后的商品明细(product_id、role、net_sales),聚合得到 hero_counthero_net_salestotal_net_sales。只有 hero_count 而没有角色商品金额时,不计算金额占比。 与 top3_concentration 合并展示,不单独占卡位;作用是把集中度落到具体商品和变化方向
shp.prod.return_risk_count
高退货风险商品数
T1Shopify 独有
eligible product 必须满足最小 fulfilled units,且 30 天退货观察窗成熟;主判定只使用同一 cohort 的 returned_quantity ÷ fulfilled_quantity 相对店铺/品类基线。return_loss = 已退商品退款金额 + 不可回收历史 COGS + 已确认退货处理/标签成本 − 已确认回收价值,只有各项覆盖可披露时才参与影响排序。 源:成熟退货 cohort、退回商品对应退款、历史 COGS、处理成本与回收处置;分类器和 30 天窗口都版本化。样本不足时写 insufficient_sample;成本或处置缺失时 loss 为 partial,但不影响退货件数率本身。 列表先按退货率相对基线与 returned_quantity 判定风险,再按有覆盖的 return_loss 排序;退款金额只作辅证,不和实物退货率混成同一公式。与实物退货率合并为同一主题卡。
shp.prod.slow_mover_count
滞销商品数
T2Shopify 独有
统计 active + published、上架时间达到最低观察期、可履约库存>0,且 velocity_28 低于基线或 DoC 高于目标的商品。 源:商品上架时间、销售渠道、location 库存、近 28 日销量与活动配置;新品、季节品、预售和活动备货显式排除。 与积压成本金额合并为“库存处理”主题,按资金影响排序;不能只看商品个数。
shp.prod.listing_gap_count
信息缺失商品数
T2Shopify 独有
count(变体 归类为 listing_gap)——缺主图/缺描述/缺分类等 源:summary listing_gap_count 🟡 ≥3 个 | 🟢 0~2 个;这是资料待办,不是平台故障。对应 Amazon 的 listing_flag_count,但不与 suppressed 使用同一严重度
5.4 cust · 客户健康(7 项 · Amazon 完全缺失的维度)
指标计算逻辑取值逻辑展示逻辑
shp.cust.repeat_rate
复购率
T1
returning_customer_rate = 本期购买且本期首单前已有历史订单的可识别客户 ÷ 本期可识别购买客户 × 100%,变化用 pp。 源:完整订单史或 ShopifyQL returning customer 合同;游客订单单列 coverage。默认订单 API 只有近 60 天,未获 read_all_orders 时不能把截断历史当完整复购。 10%/20%/35% 只能作为内部冷启动线;稳定状态优先采用店铺自身历史或商家目标。页面显示可识别客户覆盖率、观察窗和历史范围。
shp.cust.churn_risk
流失风险客户与金额
T1
eligible customer 的历史订单数≥2;购买周期来自商家设置或同 cohort 历史间隔中位数;recency_days > expected_cycle × configured_multiplier 时进入风险池。 源:summary churn_risk_count / churn_risk_value;kpi churn_risk{count, value, delta_pct, direction} 主数值写“风险客户的历史商品净销售/历史毛利贡献”,不能写成可挽回收入。召回前必须检查营销同意与联系方式;任务回读实际触达、回购和毛利结果。
shp.cust.returning_gmv_share
老客商品净销售占比
T1
stable ID;canonical name 为 returning_customer_net_sales_share
order_index>1 客户的 net_sales ÷ 全部可识别客户 net_sales;游客销售单列 coverage。 源:summary returning_customer_gmv_share_pct / new_customer_gmv_share_pct;kpi returning_gmv_share 20%/65% 不是平台标准。新店、订阅、成熟品牌和 B2B 店的结构不同,采用商家目标或自适应基线;页面同时显示新客净销售、游客覆盖和获客数据可用性。
shp.cust.rfm_shift
RFM 分层迁移
T2
transition_count(from_group,to_group) 只统计同一 customer_id 在两个可比快照中的 RFM 组变化;不能把两期不同人群的聚合占比称为迁移。 迁移源:按 customer_id + snapshot_date + rfm_group + rfm_model_version 保存的客户级 RFM 快照,两期必须使用同一模型版本。segments_rich 只有聚合段(segment、customers、share_pct、total_gmv、avg_recency_days、action),只能展示“分层构成变化”,不能生成迁移矩阵。
na 条件:缺任一期客户级快照、模型版本不一致或客户数过小时不分层
展开区优先显示同一批客户的迁移矩阵;只有聚合数据时改为“分层构成变化”条形对比,不使用迁移措辞。不独立占首屏卡位,作为 repeat_rate 或 churn_risk 卡片的展开内容;action 字段只作为经审定的行动建议文案。
shp.cust.guest_share
未关联客户订单占比
T2Shopify 独有
stable ID 沿用 guest_share,展示名按真实数据口径修正
unlinked_customer_order_share = customer_id 为空的订单数 ÷ eligible orders × 100% 源:订单 customer_id 与 summary 的 guest_order_count / guest_share_pct。这些旧字段只按未关联客户解释;只有取得 checkout 登录/账号选择证据时,才能另算真正的 guest_checkout_share 仅说明无法按 customer_id 关联客户的订单占比,不等于顾客一定选择了游客结账、不等于不能营销,也不自动意味着必须强制注册;客户档案、账号状态和营销同意分别展示。
shp.cust.email_reach
邮件营销同意率
T2Shopify 独有
canonical name 为 email_marketing_consent_rate
有邮箱且 consent=SUBSCRIBED 的客户 ÷ 有邮箱客户 × 100% 源:summary subscribed_count / subscribed_share_pct / email_reach_low(布尔量,直接用) 它表示营销同意,不表示邮件可送达;真实触达率需要 ESP 的 delivered/bounced 数据。与流失风险联动时,未同意客户不能进入邮件召回任务。
shp.cust.ltv_proxy
客户价值 cohort 指标
T3
realized_revenue_ltv_180d = 首购 cohort 在首购后 180 天累计 net_sales ÷ cohort customersrealized_gross_profit_ltv_180d 同理用已覆盖历史成本的 gross profit。默认展示 180 天,允许切换 91/180/365 天且随 Metric Spec 版本化;预测值另名 predicted_clv_N 源:完整历史订单、首购 cohort、销售冲销与历史 COGS。预测 CLV 还需保存 prediction_as_of、horizon、训练窗与置信区间。total_lifetime_spend/customers 只能叫历史人均累计消费。 不做通用红绿灯;作为获客预算、客户分层和 cohort 分析的上下文。订阅数据只在应用拥有合同、权限获批且商家实际使用订阅时出现;billing attempts 不是合同变更史。
5.5 ops · 运营履约(4 项)
指标计算逻辑取值逻辑展示逻辑
shp.ops.cancel_rate
订单取消率
T1
cancellation_rate_7d = 近 7 日创建且在 7 日观察期内取消的 eligible orders ÷ 同窗创建的 eligible orders;默认观察窗为 7 天并随 Metric Spec 版本化,按取消原因分解。 只从一个权威订单 cohort 管线取值,保存 createdAt、cancelledAt、cancelReason 与观察成熟度。若按 cancelledAt 事件日展示,只能叫 cancellation events,不能除以当日新订单。 Shopify 没有统一处罚线;2.5%/5% 等只能是商家目标或 StoreClaw 内部线。样本不足时显示分子分母,不着经营状态。
shp.ops.overdue_rate
履约逾期率
T1
overdue_rate = fulfillBy 落在窗口且逾期履约或截至 as_of 仍未履约的订单 ÷ 同窗应履约订单 源:supporting 块 overdue_rate_pct,依赖 fulfillment_file
na 条件:fulfillment_outcome = design_na整项不渲染且不给提示(该店铺履约模式不产生时效数据);文件缺失 → 灰态可修复提示
阈值来自商家 SLA 或店铺历史基线,不是 Shopify 平台标准。预售、on hold 和商家配置的例外需排除;展开列具体订单、逾期时长、仓库、负责人和截止时间。
shp.ops.abandoned_gmv_at_risk
未恢复弃单商品价值
T1Shopify 独有
canonical name 为 open_abandoned_checkout_value
sum(current checkout merchandise amount),只纳入窗口内仍未 recovered/completed 的唯一 checkout ID;税、运费、折扣与商品价值分开。 源:shopify_abandoned_checkouts_pipelinetotal_gmv_at_risk / abandonment_type_distribution / step_distribution / inventory_unavailable_count / discount_code_count / shop_pay_count
na 条件:abandoned_checkouts_outcome != success → 不渲染;step_analysis_sampled=True 时步骤分布加「抽样」角标
它是潜在结账价值,不是已流失或保证可追回收入,不设通用 40% 线。展开显示唯一可联系客户、已恢复价值、步骤分布、数据抽样与当时库存证据;缺货原因只有在事件证据存在时才写。
shp.ops.fulfillment_distribution
履约状态分布
T3
各履约状态订单占比(unfulfilled / partial / fulfilled 等),并按 0–1、2–3、4–7、>7 天分龄。 源:fulfillment_status_distributionfulfilled_order_count 不做阈值。作为 overdue_rate 卡片的展开内容与弹窗参数选项
对应 Amazon 的 amz.ops.shipped_gap,但那是单一比率、这里是多态分布,属同名异实
5.6 fin · 毛利与利润(3 项 · 依赖历史成本覆盖)
指标计算逻辑取值逻辑展示逻辑
shp.fin.margin_proxy
实际毛利率与成本覆盖
T1Shopify 独有
covered_net_sales = 仅有销售时历史 COGS 的商品净销售额covered_gross_profit = covered_net_sales − covered_COGS_at_saleobserved_gross_margin = covered_gross_profit ÷ covered_net_salescost_coverage = covered_net_sales ÷ total_merchandise_net_sales。缺成本商品不进入毛利分子分母,也不把已覆盖 cohort 的毛利率外推到整店。 源:ShopifyQL sales/profitability 与销售时历史成本。当前 unitCost 回填历史只能另列 estimated_margin_current_cost;成本缺失必须写 availability_status=partialreason_code=cost_missing 页面同时显示 observed_gross_margin 与 cost_coverage;覆盖不足时标题明确为“已覆盖商品毛利率”,不为整店实际毛利着经营状态。贡献利润另扣支付费、平台费、实际履约/物流、广告、退货处理和其他可变成本;税不作为收入,客户运费收入与商家运费成本各计一次。
shp.fin.profit_drag_count
利润拖累商品数
T1Shopify 独有
统计历史成本覆盖达标,且商品 gross_profit<0 或 gross_margin 低于商家底线的商品。 源:商品净销售、销售时 COGS、毛利与贡献利润成本;按 product 聚合 variants,保存成本覆盖和公式版本。 列表按绝对毛利损失/贡献利润损失排序,主数值显示损失金额及销售占比,不用“商品个数≥3”决定严重度。
shp.fin.discount_gmv_share
折扣订单商品净销售占比
T2Shopify 独有
canonical name 为 discounted_sales_share
有商品/订单折扣的订单之 net_product_sales ÷ 全部 net_product_sales;运费折扣另列。 源:变体行 discount_gmv_share_pct / discount_driven 只说明多少商品净销售伴随折扣成交,不证明折扣带来这些销售。阈值只能来自商家目标、自适应基线或明示的内部观察线。
Shopify 指标数量:rev 6 + inv 6 + prod 7 + cust 7 + ops 4 + fin 3 = 33。分层为 Tier-1 18 项 / Tier-2 11 项 / Tier-3 4 项
Tier-1 明细:net_revenue_wow、orders_trend、aov_change、discount_dependency、stockout_risk_count、overstock_value、transfer_opportunity、refund_rate、no_restock_share、return_risk_count、repeat_rate、churn_risk、returning_gmv_share、cancel_rate、overdue_rate、abandoned_gmv_at_risk、margin_proxy、profit_drag_count。
Shopify 有 18 项 Tier-1 候选,首屏最多 6 张。候选指标各自计算 priority_vector,按 issue_key 合并并确定 primary_metric_id,再对 issue 排序,最后执行事件/官方项豁免、维度/正向配额和六卡上限。Tier-1 表示有资格竞争首屏,不表示全部同时展示。
⚖️6 · 同名异实对照表(12 组)

两边可以共享页面组件和经营主题,但不能共享指标口径。下面 12 组看似相同的经营问题,在数据来源、时间、粒度、分母或阈值性质上不同;跨平台视图只在 comparability key 兼容时比较,不用相同颜色掩盖不同定义。

#指标名Amazon 侧Shopify 侧合并后会犯的错
1收入环比 amz.rev.gmv_wow
Sales & Traffic 的 Ordered Product Sales,按下单日、marketplace 与币种。
shp.rev.net_revenue_wow
Shopify 商品净销售额,按销售/冲销事件日。
只比较各自趋势并并列口径说明;日期归属不同,绝对金额和百分比不能被解释成完全相同的经营事件。
2客单价 Sales & Traffic 可对账的是每订单项销售额;真正每单金额需去重 AmazonOrderId 后另算。 Shopify AOV = 下单时商品毛销售额减折扣 ÷ 订单数,不扣后续冲销。 页面分别使用“每订单项销售额”和“AOV”的准确名字,不做绝对值排名。
3退货 / 退款率 amz.prod.return_rate
FBA 成熟发货 cohort 的 returned units ÷ shipped units;MFN 明确排除。
shp.prod.refund_rate
成熟履约 cohort 的 returned quantity ÷ fulfilled quantity;退款与冲销另列。
只有 cohort 观察窗、成熟度和商品粒度一致时才比较;事件期视图不与 cohort 率混用。
4取消率 amz.ops.cancel_rate
7 日 MFN 卖家发货前取消率,官方阈值 2.5%。
shp.ops.cancel_rate
同创建 cohort 在观察期内取消的订单率,无平台处罚线。
Amazon 的官方状态单独展示;Shopify 只用商家目标、历史基线或明示内部线。
5断货风险 按 marketplace × sellerSKU/FNSKU 的 fulfillable、在途阶段与 28 日需求判断。 按 variant × 可履约 location 的 available、incoming ETA、订单路由与需求判断。 两边都按真实库存范围落库;不预设 Amazon 账号共池,也不把 Shopify 所有仓简单相加。
6可售库存定义 fba_sellable(FBA 仓可售)
另有 fba_inbound_total 在途
直接读取 available;committed、reserved、damaged 与 incoming 分开。 可售只使用平台定义的可履约库存;不从 on_hand 自行反推,也不把在途当可售。
7周转天数 Σ eligible fulfillable ÷ Σ对应市场销速,保存覆盖与低置信。 Σ serviceable available ÷ Σ对应渠道销速,保留 location 分布。 公式相似,但有效库存集合不同;全店平均必须能下钻到 SKU/variant 与仓库。
8折扣依赖度 amz.rev.discount_rate
商品促销折扣占商品销售基数,运费折扣单列。
shp.rev.discount_dependency
商品/订单折扣占 gross sales,运费折扣单列。
两边都只说明折扣金额占比;20%/25% 是内部默认,不作为平台标准或因果结论。
9商品信息异常 amz.prod.listing_flag_count
suppressed 是已验证的强制事件,其余状态分组展示。
shp.prod.listing_gap_count
仅信息不全(缺图/缺描述)
严重性:待办级,无红态
Amazon suppressed 可强制置顶;Shopify 信息缺失进入普通待办,不能共用状态与动作。
10发货 / 履约缺口 amz.ops.shipped_gap
已过 LatestShipDate 仍未发货的 MFN 订单及比例。
shp.ops.fulfillment_distribution
履约状态分布与订单年龄分桶。
Amazon 侧是到期订单待办;Shopify 侧是分布证据,逾期另按 fulfillBy 判断。
11履约逾期率 分母=自发货订单(不含 FBA)
全 FBA 店铺整项不渲染
分母=应发货订单
fulfillment_outcome=design_na 时不渲染
Amazon 使用官方 10/30 日 MFN 迟发合同;Shopify 使用商家 fulfillBy/SLA,两者阈值来源不同。
12退款金额率 amz.fin.refund_rate
来源 financial events,金额口径
依赖 financial_events_outcome
Shopify 退款现金、销售冲销和实物退货分开;退款金额可按发生期或原订单 cohort 计算。 两边都必须对齐财务事件与销售集合;同一笔退款可以解释净销售变化,但不能被当成两次独立损失相加。
每个平台、每个数据口径各有独立的 Metric Spec 配置行。共享的是渲染、数据状态、任务闭环和排序组件;formula、source、date_basis、cohort、threshold、copy 与 action 分别配置。稳定 metric_id 可用于兼容历史数据,页面名称与 canonical name 只保留准确语义。
跨平台视图的边界:可以并列展示两边各自的趋势、状态和口径,但不据此判断哪个平台更好。只有 source、date_basis、window、timezone、currency、formula、coverage 等 comparability_key 兼容,且 Metric Spec 明确 cross_platform_comparable=true 时,才计算归一化相对变化。其余只做并列说明,不排名;绝对值必须带各自口径和币种。
🌳7 · 展示与降级决策树

某个指标没变化时,不能统一隐藏。“没变化”有四种情况,只有健康且平稳的一类适合折叠,其余情况分别处理。

7.1 「没变化」的四种情况,四种待遇
#情况示例待遇理由
越界但平稳
常驻
退货率连续 6 周稳定在 9.2%
取消率稳定 6.1%
必须展示
红/黄态卡片
「稳定地在出血」比「突然出血」更危险。这类长期病灶正是商家自己扫报表最容易漏掉的——数字不动,眼睛就滑过去了。若因「无变化」隐藏,功能反而帮商家把问题藏起来了
健康且平稳
降级
退货率 3.1%(上周 3.0%)
断货风险 0 个
降级
折叠进「一切正常」摘要行
这才是真正该让位的一类。不占卡位,但不能彻底消失——商家需要知道「我们看过了,这些没问题」,这是信任来源。以「12 项指标正常」的单行摘要 + 可展开列表呈现
刚跨越阈值边界
优先
退货率 4.9% → 5.1%
(绝对变化仅 0.2pp,但跨了黄线)
优先展示
worsening_crossing=1
变化幅度小但状态发生了跃迁。纯按变化幅度排序会把它排到末位,而它恰恰是最佳干预时机——刚越线时纠偏成本最低
数据缺失导致「看起来没变」
区分
本周 sales_traffic 拉取失败,转化率与上周同值(都是旧值或都是 na) 灰态展示
说明数据状态
最危险的一类:把「没数据」误当成「没变化」。必须在取值层就区分——依据 _outcome 而非依据数值是否相等来判断有无变化
因此「只展示有变化的指标」这个降级策略不能直接采用。它会同时误伤情况①(长期越界)与情况③(小幅跨线),而这两类恰好是商业价值最高的告警。正确的降级维度是「越界状态 + 变化显著性」二维联合判定,不是单看变化。下面三道闸门就是这个二维判定的落地形式。
7.2 闸门 1:该不该上榜?—— 候选池两层判定

55 项先经过数据可用性与可比性检查,再按经营状态、显著变化、状态跃迁和未关闭任务进入候选池。数据不可信时只说明数据问题,不能继续给补货、清仓或调价动作。

入选标准①
越界
business_status ∈ {alert, watch}、刚发生 worsening crossing,或已有未关闭 task 的指标直接入选。官方绩效阈值单独判定;商家目标、自适应基线和内部提醒线显示各自来源。
入选标准②
显著变化
business_status = normal/positive 且变化超过该指标 change_significance 时入选。变化按每项 Metric Spec 的 delta_mode(relative_pct / absolute_pp / absolute_value)计算和展示;前窗为 0 时显示 new_baseline,不计算无穷大。
前置淘汰
(不算筛选层)
unsupported/not_applicable 不渲染;permission_denied/source_failed/stale 进入“待核对数据”区;partial/estimated 只有达到配置的 coverage gate 才能参与弱提示,且关闭强动作;Tier-3 只作上下文。current 与 baseline 的 comparability key 不同则不计算变化。
7.3 闸门 2:谁排前面?—— 唯一排序算法

每个候选指标先生成同一套排序键,再按 Metric Spec 声明的 issue_group 与 issue_scope_fields 计算 issue_key,合并同一经营主题和同一作用对象。每个 issue 选排序最高的成员作为主指标,其余成员进入证据层;issue 继承主指标的排序键。相同键时用稳定 metric_id 决定主指标,因此分组和顺序都能回放。

排序向量(数值字段逐项降序;stable_metric_id 单独升序 tie-break)
priority_vector = ( forced_incident, official_platform_breach, impact_band, urgency_band, severity_band, worsening_crossing, min(consecutive_breach_days, 7) ) tie_break = stable_metric_id ASC
priority_key = {vector: priority_vector, tie_break: stable_metric_id};实现必须显式写成 ORDER BY priority_vector DESC, stable_metric_id ASC,不能把字符串 ID 塞进整体降序 tuple。
取值判定合同
forced_incident1 / 0只用于已验证的经营事件,如 listing suppressed、此前活跃店铺的订单断流。授权失效属于 system_incident/data_banner_priority,进入数据横幅而非经营 issue 排序。
official_platform_breach1 / 0只用于 Amazon PFC 2.5%、LSR 4% 等官方绩效要求;StoreClaw 内部线不能占这一位
impact_band3 / 2 / 1 / 0受影响销售、订单、利润或 SKU 占比:≥20%、10–<20%、1–<10%、<1%/未知;跨币种不直接比原始金额
urgency_band3 / 2 / 1 / 0不可逆处理窗口 ≤24h、≤3d、≤7d、其余/未知
severity_band2 / 1 / 0alert / watch / normal-positive;状态依据相应 threshold_type
worsening_crossing1 / 0仅在两张可比快照由好转坏时为 1
consecutive_breach_days0–7长期未处理问题只加不减,不因卡片疲劳而降权
issue_group 的配置例子:return_health 合并退货率与高退货商品,inventory_overstock 合并积压价值与滞销商品,stockout_replenishment 合并断货风险与有效在途覆盖。只有 normalized_scope 相同才合并;合并后的 issue 保存 merge_version、全部成员及各自口径,主指标按排序键确定。
7.4 闸门 3:能占几个位?—— 六张卡怎么分

第三问:排序后的候选池,怎么变成页面上的 ≤6 张卡?两步——先强制,再约束。候选不足或全静默时另有兜底(见 7.5)。

先 · 事件强制
断流、listing suppressed 等强制事件占据最前卡位,不受普通配额约束,只对同类事件自身去重(多条 suppressed 合并为一张汇总卡)。
后 · 三条约束
第 7.3 节已经完成主题合并,这里只处理排好序的 issue:
合并结果校验——同一 issue_key 只能占一张主卡,成员指标只进证据层。
维度配额——普通 issue 的单一维度最多 3 张;official platform breach 与 forced incident 不受配额阻挡。
正向配额——正向卡最多 2 张,且在存在待处理问题时不占第 1 位。
边界 · 兜底
首页最多 6 张,不足时不硬凑。超过 6 张显示前 6 张与“另有 N 项”;所有 official platform breach 与 forced incident 在顶部摘要条完整列出,即使主卡位已满。0 张经营 issue 时进入 Steady State。
卡片最多 6 张,不要求凑满。健康店铺通常只有 0–2 张;有较多问题时才可能放满。如果大多数店铺天天都是 6 张,先查阈值是否过松,并持续记录满卡率。
7.5 全静默兜底:万一都没大变化呢

当候选池为空(无任何越界、无任何显著变化)时触发。这是健康店铺的常态而非异常,必须有正式设计——空屏或一句「暂无异常」会让商家认为功能坏了,而这类店铺往往是我们最该留住的优质用户。

全静默模式(Steady State)
本周经营状态 · 平稳
已检查且健康 14 项
连续 3 周无越界指标;另有 3 项数据待核对、5 项不适用。数据截至 8 月 1 日 06:12。
查看检查明细
页面说明检查范围和数据状态,不为了填满页面强行生成正向结论。
7.5.1 全静默模式的四段内容(固定结构)
段落内容规则数据来源
① 状态确认分别写「已检查且健康 N 项、数据待核对 M 项、结构不适用 K 项」。N 取实际成功检查数,不取空候选池数量availability + business status 计数
② 连续性「连续 N 周无越界指标」——从 store_daily_metrics 历史快照回溯计算。这句话把平稳从「没消息」变成「成绩」历史快照回溯
③ 数据边界显示数据截止时间、待核对数量、不适用数量和历史不足项,避免把“没有卡片”误解成“所有数据都正常”availability、coverage、maturity 与 source_as_of
④ 可选机会入口只有真的存在且数据充分的机会信号时才显示,例如有流量零转化商品或满足调拨约束的库存机会;没有机会信号时整段省略Tier-2 机会指标通过能力与数据闸门后的结果
历史位次只能在窗口完整、口径版本一致且成熟度可比时计算。“创近 N 周新高”必须写出 N,并保存参与比较的快照集合;数据不足时不缩短窗口、不显示该结论。
7.6 数据异常形态:四类合并(永不空屏的另一半)

指标有值但不正常渲染时,按「商家能做什么」归并为四类。核心原则:展示数据状态,不给编造的原因——每个状态只说事实,且只给商家真正能采取的行动。

类别触发条件卡片形态文案与行动(严格对齐 Caveat sourcing rule)
数据不可用 insufficient_sample / permission_denied 灰态卡
无数值(权限不足时带按钮)
样本不足显示 numerator/denominator 与最低门槛,不着经营状态;Amazon 官方绩效项仍显示官方状态并同时展示小样本。权限不足提供授权入口。unsupported/not_applicable 只走下方“不渲染”合同。
数据源故障 source_failed / stale;调度未产出、连接器故障、数据超过指标 TTL 单卡灰态 / 维度级横幅 / 整区降级 source_failed 显示失败原因与重试/授权路径,不沿用旧数装成当前;stale 可显示 last_success,并在主文案写“数据截至……”,同时关闭补货、清仓、调价等强动作。整维度失败合并为一条数据横幅,不逐项重复。
部分可信 partial / estimated;data_gap、velocity_only、低置信、覆盖不足或第三方估算 正常卡
+ 角标
展示数值、覆盖率、排除项、估算来源和截止时间;只有达到配置的 coverage gate 才允许弱经营状态。partial/estimated issue 进入“待核对数据”区,不进入强动作排序。
不渲染 not_applicable / unsupported 不渲染 不出现卡片,也不出现任何说明文字。平台天生没有的能力不值得占用注意力,提了反而制造「能开通」的错误预期
变化计算合同:只有 current 与 baseline 均为 ok(或满足同等覆盖策略),且 comparability key 完全一致时才算 delta。本期与上期都是旧值或失败不是“平稳”,而是未知;缺失日断线,不补 0。
7.7 Amazon 多市场的卡位模型

Skill 侧的规则是默认单一主市场(US 若活跃,否则清单第一个),只有商家明确点名才展开。但页面与对话不同——页面没有「商家点名了哪个市场」这个信号。一个五市场卖家打开店铺详情页应该看到什么,必须单独设计。

页面固定使用“市场概览条 + 默认市场 + 告警上浮”。概览条负责让所有活跃市场的严重状态可见,卡片区始终只展示一个市场的独立数据;不同币种、不同 marketplace 的金额不相加,商家点击市场后只切换物化行。

组成设计
① 市场概览条卡片区顶部一行,每个活跃市场一个小格,只显示该市场的告警数与最严重状态色(如「DE · 3 项告警」红点)。不显示任何金额,因此不构成跨市场聚合。当前市场高亮,点击即切换。
② 默认市场先比较各市场最高 priority_key,默认打开风险最高市场;都没有 issue 时打开商家设定的主市场。所有金额保留该市场币种,不跨币种相加。
③ 跨市场摘要顶部列出每个市场的最高状态与 issue 数;所有 official platform breach 和 forced incident 都可见。点击直接切换,不把不同市场金额聚合为一个经营数。
④ 切换为纯读取数据已按 marketplace_id 分行落库(11.2),切换市场不触发任何计算与 API 调用,只是换一行 JSON 渲染。切换动作应当是瞬时的。
读取合同:日批同时物化一条店铺级 market_overview,保存每个活跃市场的最高 priority_key、issue_count、source_as_of 与当前展示行键。首屏一次读取 overview 和默认市场行;切换时按 overview 中已解析的行键读取目标市场,不重新计算。Shopify 不生成这条多市场记录。
库存范围必须逐项目显示。卡片固定标注 marketplace、sellerSKU/FNSKU、FBA 项目、fulfillable 范围和销速范围。只有连接器证据确认跨境库存共享时才展示共享关系;默认按市场分别保存,不能用账号级假设替代平台事实。
Shopify 没有市场层。marketplace_id 为占位值,整个市场概览条不存在。Shopify 的多仓(multi-location)是库存维度内部的事(体现为 transfer_opportunity 指标与弹窗的 Location 参数),不是页面分区维度。这个不对称是第 6 章「分平台独立维护」原则在布局层的延续——不要为了两平台页面结构统一而给 Shopify 造一个假的市场切换器。
容量边界:所有活跃市场都要保持可判定的 freshness,作业数 = 店铺数 × 市场数。刷新频率由 store × market freshness_policy 决定:活跃市场日更;连续 14 天零订单的市场周更,并显示数据截止日;高风险事件的通知或轻量巡检始终独立运行,不随日批降频。平台限流时优先保留官方绩效、订单与 Listing 事件。
7.7.1 走查示例:一个 Amazon 店铺的一天

把 7.2 到 7.4 的三道闸门在构造数据上完整跑一遍。示例为 Amazon US 单市场;先对 Amazon 12 项 Tier-1 做能力与数据检查,再从可用指标形成 issue。

metric_id当日 status变化 / 影响证据priority inputs 与闸门
amz.prod.listing_flag_countalert1 个 suppressed;该 ASIN 近 7 日销售占比 24%;需 24h 内处理vector=(1,0,3,3,2,0,1);经营事件强制
amz.ops.cancel_rateofficial alertPFC 2.8%,14 / 500 MFN;刚跨过 2.5%vector=(0,1,1,3,2,1,1);官方阈值
amz.inv.stockout_risk_countalert3 SKU;影响销售占比 22%;最早 3 日内售罄;已持续 2 日vector=(0,0,3,2,2,1,2);昨日 watch→alert
amz.rev.gmv_wowalertOrdered Product Sales −23.4%;处理窗口 7 日内vector=(0,0,3,1,2,0,1);自适应基线告警
amz.rev.aov_changewatch每订单项销售额 −18.9%;影响分档 1vector=(0,0,1,1,1,0,1);结构信号
amz.prod.buybox_deficit_countwatch2 ASIN;近 7 日销售占比 13%;已持续 2 日vector=(0,0,2,1,1,0,2);内部观察线,不是官方处罚
amz.rev.conversion_ratewatchUnit Session Percentage −2.2pp;影响分档 2;昨日 normalvector=(0,0,2,1,1,1,1)
amz.inv.overstock_countnormal1 SKU,无显著变化不入选(闸门 1 两条标准均未达)
amz.prod.return_ratenormalFBA 退货率 6.2%,无显著变化;MFN 排除不入选
其余可用项normal在各自基线或目标范围内进入健康摘要
闸门 1 · 候选池
listing、PFC、stockout、ordered product sales、每订单项销售额、Featured Offer、Unit Session Percentage 共 7 个 issue 入选;数据状态均为 ok,comparability key 均可复现。
闸门 2 · 排序
priority_vector DESC 排序,向量相同时再按 full stable_metric_id ASC。上表已经给出每个分档输入与向量,可从影响占比、处理窗口、状态跃迁和持续天数回放。
闸门 3 · 卡位分配
listing 强制第一,PFC 官方绩效项不受维度配额;其余按排序键进入。首页放 listing → PFC → stockout → sales → conversion → Featured Offer;每订单项销售额进入“另有 1 项”,仍可在全部 issue 中查看。
结果 · 6 张卡
首页 6 张,顶部摘要显示“另有 1 项待处理”;没有任何硬告警被配额遮住。normal 项进入“已检查且健康”摘要,数据问题另进“待核对数据”。
当日首屏 6 卡位(示意)
Listing 异常 需关注
1 个链接被限制展示
含 suppressed,直接影响可售性,优先级高于其它事项。
处理 Listing 异常
断货风险 需关注
3 个 SKU
较昨日恶化:2 个 SKU 转入断货风险。剩余库存覆盖 8 / 12 / 5 天。
生成补货计划
发货前取消率 官方绩效
2.8%
7 日 MFN:14 / 500,高于 Amazon 2.5% 官方要求。
查看取消订单与原因
Unit Session Percentage 需关注
−2.2pp
会话量同期变化不大;价格、Featured Offer、库存和商品页是待核对线索,当前数据不能确定原因。
核对转化线索
订购商品销售额 需关注
−23.4%
Sales & Traffic 两个完整 7 日窗,金额与订单项变化需继续分解。
核查销售变化
Featured Offer 需关注
2 个 ASIN 低于目标
80% 为 StoreClaw 内部观察线,不是平台处罚标准;需核对价格、库存、配送和资格。
核对 Featured Offer
这个示例说明的三件事
① 官方绩效与强制事件不会被内部提醒挤掉:suppressed 固定第一,PFC 2.8% 因 official_platform_breach 排在普通经营波动前。

② 影响和时效决定普通 issue 的顺序:断货缺口比销售结果更紧急;销售下滑影响更大,仍会排在影响范围较小的结构线索前。

③ 排序可回放:每一位来自 snapshot 内的布尔值、占比分档、时效、状态、跃迁和持续天数,没有隐藏的人为小数权重。
示例数据只用于复现算法。正式运行时,status、impact、urgency、跃迁和阈值来源都写入不可变 snapshot;同一 snapshot 应能重算出相同卡片顺序。
🖐️8 · 卡片交互:通用基础 + 6 类原型

55 项指标共用卡片骨架与状态机,按数据形态落入 6 类交互原型;30 项 Tier-1 都在逐指标矩阵中声明展开内容和行动路径。实现复用交互结构,业务口径仍逐项独立。

8.1 通用基础卡片:五区结构
通用骨架 · 告警态示例
订购商品销售额 · 近 7 日 vs 前 7 日
持续 2 天 需关注
−23.4% $ 18,240
对比基准 $ 23,810(7/16–7/22)
订购商品销售额下降 23.4%;订单项金额和折扣金额率同时变化,是需要继续核对的相关线索,当前数据不能单独证明原因。
核查销售额变化趋势
五区职责
内容与硬规则
① 标题区指标名 + 窗口口径 + 状态标签。窗口口径必须常显不放 tooltip——「近 7 日 vs 前 7 日」是理解数值的前提
② 数值区主数值 26px/800 + 辅助绝对值 + 对比基准行(含基准日期)。基准日期必须可见,这是数值争议的第一道防线
③ 洞察区1–2 句结论。由洞察引擎生成(第 10 章)。此区失败时卡片仍完整可用——降级为纯阈值模板句
④ 行动区主按钮(打开参数弹窗 → Skill)+ 次按钮(原地展开趋势/明细)。健康态仅次按钮且视觉减重
⑤ 元信息区
(前置至标题行)
持续天数:watch ≥3 天或 alert ≥1 天显示。官方绩效徽标:只在 has_official_platform_threshold=true 时显示,并链接官方定义。阈值来源、覆盖率、估算、成熟度、数据截止日、负责人、截止时间和任务状态按需常显,不藏在 tooltip。
8.2 通用状态机:一张卡片的六种视觉形态
alert · 官方绩效告警
发货前取消率
官方绩效持续 2 天
2.8%
7 日 MFN:14 / 500,高于 Amazon 要求的 2.5%
查看取消订单
watch · 观察
断货风险 SKU
7 个
3~9 个区间,建议本周补货
查看补货清单
positive · 正向
复购率
22.4% ▲1.8pp
创近 8 周新高
查看客户分层
normal · 健康(折叠态)
取消率 1.8%−0.2pp
摘要行形态,12 项并列于「一切正常」区
na · 数据待处理
转化率
当前连接缺少报表权限 · 去授权
low-confidence · 部分可信
周转天数
低置信
142 天
销速样本较薄,仅供参考
交互动作通用行为禁止事项
hover卡片抬升 2px + 阴影加深;数值区显示 tooltip(完整公式 + 口径 + 排除项 + 数据来源 pipeline)禁止在 hover 时才暴露窗口口径与基准日期——这两项必须常显
click 卡片空白区原地展开次级内容(趋势/明细),不跳转不弹窗禁止整卡点击直接触发 Skill 会话——误触成本过高
click 主按钮打开参数弹窗(第 9 章),不直接发消息禁止「一键直接问」——参数不可见会让商家不信任结果
click 次按钮原地展开该指标 Metric Spec 指定的趋势或明细。序列由批处理提前写入当前行的滚动缓冲区,页面仍只读一次主记录页面不为趋势单独调用 pipeline,也不临时跨行拼接;窗口按单项指标合同执行,不设全局 28/91 日选项
键盘卡片区 Tab 可达,Enter 等价主按钮,Esc 收起展开区;状态标签带 aria-label 文字描述禁止仅用颜色表达状态——色盲用户无法区分红/绿,必须同时有文字标签
两类元信息徽标的视觉规则:
持续天数角标(暖黄圆角标签 / background:#f1f1f1; color:#525252):status=watch 且连续 ≥ 3 天、或 status=alert 且连续 ≥ 1 天时在标题行右侧紧靠状态标签左边显示。天数来自 store_card_state.consecutive_days,随日批或事件巡检原子更新。为什么要提到标题行:埋在洞察文案里(如「已持续 6 周」)商家扫视时容易跳过;放在标题行右侧,扫一眼就有「这件事拖了多久」的感知,与「今天才首次触发」产生视觉区分。
官方绩效徽标(深红底白字「官方绩效」):仅 has_official_platform_threshold=true 时恒显,并链接来源。商家目标、StoreClaw 内部线和自适应基线使用各自标签,不能借用官方徽标。
8.3 六类交互原型

分类依据是指标的数据形态,而非业务维度。同一形态共用展开区组件与趋势渲染逻辑,各指标只配置字段映射与文案。

📈
P1 · 比率趋势型
单一比率 + 双窗对比
适用:gmv_wow、net_revenue_wow、aov_change、conversion_rate、cancel_rate、overdue_rate、fee_rate、margin_proxy、repeat_rate、returning_gmv_share、discount_dependency、refund_rate、return_rate、no_restock_share、turnover_days 等比率/量值形态;同名 slug 在不同平台仍是独立 metric_id。
展开区:读取该指标预计算的 trend_buffer;7 日销售、订单和会话指标默认用 14 日原始历史生成 8 个滚动点,PFC 使用官方 7 日窗,LSR 同时展示 10/30 日,退货、退款与客户指标使用成熟 cohort。阈值带标明官方、商家目标、自适应基线或内部提醒来源。
卡内迷你图:形态按 chart_form 和 Metric Spec 的 window 取(第 11.3e 节)。量值按窗口滚动汇总;比率先分别滚动汇总分子、分母后再相除;末点必须等于卡片头条。
特殊分支:returning_gmv_share 只有在商家明确设置目标区间或自适应基线已经稳定时才显示区间带;高占比或低占比本身不自动判错。
🔢
P2 · 计数 + 清单型
命中个数 + 具体是哪些
适用:stockout_risk_count(双平台)、buybox_deficit_count、listing_flag_count、traffic_only_count、return_risk_count、slow_mover_count、listing_gap_count、profit_drag_count、transfer_opportunity 等计数与清单形态。
展开区:命中项表格(Top 10,可展开全部),列=标识 + 关键数值 + 建议动作;支持按列排序与勾选。
关键设计:勾选行后主按钮文案变为「分析选中的 3 个 SKU」,勾选结果写入弹窗的 focused_identifier 参数——这是 Skill 侧 request_scope 的直接输入,让商家自己圈定分析范围。
💰
P3 · 金额影响型
主数值是钱
适用:overstock_count(Amazon,主数值取金额)、overstock_value、churn_risk、abandoned_gmv_at_risk(共 4 项)
展开区:金额构成条形分解(按 SKU、客户分层或开放结账步骤)+ 当前受影响金额及其证据状态。
关键设计:金额必须带相对参照,例如“相当于本周商品净销售额的 34%”。无法证明会恢复成交或能挽回时,只写开放金额、历史贡献或受影响金额,不写可追回承诺。
🥧
P4 · 结构分布型
多态占比
适用:rfm_shift、channel_mix、country_mix、fulfillment_distribution、restock_type_breakdown、top3_concentration、hero_dependency(共 7 项)
展开区:本窗 vs 上窗的并列堆叠条,标出变化最大的两个分段。
关键设计:结构类指标不做单一阈值告警(占比高低无普适好坏),只做「结构位移检测」——某分段占比变化 ≥5pp 时提示。这类指标主要作为其它卡片的归因展开层,很少独立占卡位。
🪜
P5 · 漏斗型
分步流失
适用:abandoned_gmv_at_risk 的展开视图、shipped_gap、committed_backlog(共 3 项,Shopify 弃单为主)
展开区:三段漏斗(进入结账 → 填写信息 → 支付),每段标注开放结账数与金额;单列 inventory_unavailable_count 记录出现库存不可用状态的结账,供库存核查。
关键设计:step_analysis_sampled=True 时必须加「抽样」角标,抽样数据不得用于精确金额承诺。Amazon 侧无真正的漏斗数据,P5 基本是 Shopify 专属原型。
🚨
P6 · 事件告警型
非连续、需立即处理
适用:orders_trend 的断流分支(连续 3 日为 0)、listing_flag_count 的 suppressed 分支(共 2 类事件)
展开区:事件时间线(哪天开始、已持续多久)+ 影响范围(涉及哪些 SKU/市场)+ 排查清单(3–5 条 checklist)。
关键设计:这两类允许强制置顶并使用红色横幅,对应 7.4 的事件强制;不受普通卡位配额阻挡。排查清单是固化内容,不由模型生成。
8.4 逐指标交互矩阵(Tier-1 · 30 项)
#metric_id原型展开区内容主按钮文案(zh)
1amz.rev.gmv_wowP1滚动 7 日订购商品销售额折线 + 订单项数/每订单项销售额双辅线核查订购商品销售额变化
2amz.rev.orders_trendP1P6滚动 7 日订单项数趋势;断流时切 P6 逐日时间线排查订单项数下滑 / 排查订单断流
3amz.rev.aov_changeP1每订单项销售额折线 + 商品折扣金额率叠加核查每订单项销售额变化
4amz.rev.conversion_rateP1转化率折线 + 会话量柱状双轴分析转化率下降
5amz.inv.stockout_risk_countP2风险 SKU 表(DoC / 库存 / 销速 / 补货建议日),可勾选生成补货计划
6amz.inv.overstock_countP3积压 SKU 按 estimated excess quantity 分解;有成本时显示成本价值,缺成本只显示零售库存价值核查滞销与清库方案
7amz.prod.buybox_deficit_countP2ASIN 表(Featured Offer 占比 / 状态 / 报价与库存证据),可勾选核查 Featured Offer 缺失
8amz.prod.return_rateP1FBA 退货率折线 + FBA 退货 Top SKU 表;常显 MFN 排除范围排查 FBA 退货原因
9amz.prod.listing_flag_countP2P6按 flag 分组的 SKU 表;有 suppressed 时切 P6处理 Listing 异常
10amz.ops.cancel_rateP1卖家自配送预配送取消率折线 + 官方绩效阈值带排查卖家取消订单
11amz.ops.overdue_rateP1逾期率折线(仅自发货口径,标注分母订单数)排查发货延迟
12amz.fin.fee_rateP1费率折线 + FBA/佣金/服务费三段堆叠条拆解费用结构
13shp.rev.net_revenue_wowP1净销售额折线 + 毛销售额、折扣与销售冲销对照核查净销售额变化
14shp.rev.orders_trendP1P6同 #2排查订单量下滑 / 排查订单断流
15shp.rev.aov_changeP1AOV 折线 + 折扣依赖度叠加分析客单价变化
16shp.rev.discount_dependencyP1折扣金额率折线 + 含折扣净销售额占比对照评估折扣策略
17shp.inv.stockout_risk_countP2风险变体表(含 location 列),可勾选生成补货计划
18shp.inv.overstock_valueP3积压金额按变体分解 + 成本价覆盖率标注分析滞销与清库方案
19shp.inv.transfer_opportunityP2调拨对表(源仓 / 目标仓 / 建议数量 / 可避免断货天数)生成调拨建议
20shp.prod.refund_rateP1退款率折线 + 退款 Top 5 变体 + 回库类型分解排查退款原因
21shp.prod.no_restock_shareP1退款未回库决策占比折线 + restockType、商品/变体与仓库记录核查退款回库决策
22shp.prod.return_risk_countP2高风险商品表(退款率 / 销量 / 角色标签,可展开到变体证据)核查高退款商品
23shp.cust.repeat_rateP1复购率折线 + RFM 分层迁移条(P4 嵌入)分析复购与客户分层
24shp.cust.churn_riskP3风险客户的历史商品净销售/历史毛利贡献分层 + 客户清单 + 邮件营销同意率;实际送达需 ESP 数据制定合规召回方案
25shp.cust.returning_gmv_shareP1老客/新客商品净销售占比双面积图;只有商家目标或稳定自适应基线存在时才画区间带核查新老客结构
26shp.ops.cancel_rateP1取消率折线 + 取消个数柱状(Shopify 有绝对数)排查订单取消原因
27shp.ops.overdue_rateP1逾期率折线 + 履约状态分布(P4 嵌入)排查发货延迟
28shp.ops.abandoned_gmv_at_riskP5三段漏斗 + 库存不可用的开放结账单列 + 弃单类型分布分析开放弃单
29shp.fin.margin_proxyP1毛利率折线 + 按商品毛利分布直方(可展开到变体)+ 历史成本覆盖率核查毛利结构
30shp.fin.profit_drag_countP2拖累商品表(销量 / 毛利率 / 净销售额占比,可展开到变体),可勾选核查低毛利商品
30 项如何复用 6 套交互:主原型分配为 P1 19 项、P2 7 项、P3 3 项、P5 1 项;P6 是 orders/listing 的高风险事件分支,不额外增加指标桶。P1 + P2 = 26 / 30 = 86.7%。逐指标差异落在 Metric Spec 的字段映射、窗口、展开列、文案键与阈值参数,稳定 metric_id 不变。
主按钮文案逐项维护。上表 30 条文案不能用「查看详情」统一兜底。商家需要在点击前知道下一步会核查什么、会得到什么;30 条文案 × 2 种语言(zh/en)= 60 个独立文案键。
8.5 从卡片到处理完成

卡片发现问题,Skill 帮助核对和分析,经营任务负责把事情做完。点击、发送或报告生成都不是成功;只有平台回读或后续指标证明问题恢复,任务才算完成。

发现问题
核对数据截止日与覆盖
圈定 SKU / 订单 / 客户
同一 snapshot 进入 Skill
建立任务与指定负责人
记录处理证据
verifying 回读;passed→done,failed→reopened
字段合同页面行为
task_statusunassigned / assigned / in_progress / blocked / verifying / done / reopened处理证据提交后进入 verifying;验证通过才 done,失败自动 reopened,不可比继续 verifying 或 blocked
owner / due_at负责人、分配时间、截止时间与优先级无负责人或已逾期的 issue 在任务层提示,不改动经营指标事实
evidence / resolution_note平台回读、截图/链接、变更记录、处理说明只记录用户实际提交或系统实际回读的证据,不用“已打开页面”冒充完成
before_snapshot_id / after_snapshot_id处理前后不可变快照用相同口径比较;口径变化时标不可比,不制造恢复率
verification_metric / window进入 verifying 后观察什么、观察多久补货看库存/入仓,Listing 看状态恢复,履约看订单队列与绩效率,召回看实际触达与回购;before/after 不可比时不得完成
🪟9 · 详情参数弹窗 GUI 规范

点击主按钮不直接发消息,而是打开参数弹窗。三个理由: 参数不可见的分析结果商家不信任——「它到底按哪个时间段算的」是第一个疑问; 默认参数猜错就要浪费一整轮对话,而弹窗把纠正成本从「一轮 Skill 执行」降到「一次下拉选择」; 商家真正想调的东西(分析范围、对比基准、关注哪几个 SKU)恰好是 Skill 澄清轮次里最常问的,前置到 GUI 就能整轮省掉。

弹窗布局 · 订购商品销售额下滑核查示例
核查订购商品销售额下滑
Amazon · 美国站 · 近 7 日
① 上下文
订购商品销售额 −23.4%($18,240 vs $23,810);订单项数 −4.1%,每订单项销售额 −18.9%,折扣金额率 +6.2pp
② 参数
分析窗口近 7 日 由指标口径限定 对比基准前一等长窗口 去年同期 市场US + DE + UK 关注维度收入 + 商品 + 库存
③ 提示词(可编辑)
核查我 Amazon 美国站近 7 日订购商品销售额下降 23.4% 的关联变化,对比前一等长窗口。结合订单项数、每订单项销售额与折扣金额率,列出可验证的原因假设和处理建议。
128 / 800 字 · 修改参数会自动更新此内容
确认发送取消 ④ 高级选项 ⌄
五区职责与硬规则
规则
① 上下文只读,复述卡片的指标、数值、对比基准与结论。作用是让商家确认「我要问的正是这件事」,同时这段文字会作为消息的一部分发出,Skill 因此不必重新计算即可知道触发场景
② 参数按交互原型给出可调项(见 9.2)。全部有默认值且默认值即最佳猜测——弹窗的目标是「看一眼就能点确认」,不是让商家填表
③ 提示词可编辑 textarea;参数变化可以重新生成提示词,手工修改不反向解析参数(见 9.3)。上限 800 字
④ 高级默认折叠:目标 Skill(可见但一般不改)、输出深度(快照 / 趋势简报 / 完整诊断)、回复语言(zh / en)
⑤ 操作确认发送 / 取消 / 恢复默认。Cmd/Ctrl+Enter 等价确认,普通 Enter 保留为提示词换行,Esc 等价取消;确认后弹窗关闭并进入会话,不在弹窗内等待结果
9.1 参数项全集(跨指标共 10 类)
参数控件取值范围默认值规则与约束
分析窗口单选段由该指标的 Metric Spec 给出;必要时允许自定义默认等于触发卡片的口径,不提供一套全局窗口。销售与流量常用 7 日,库存销速常用 28 日,Amazon 预配送取消率固定滚动 7 日,迟发率固定 10 日或 30 日,退货与客户指标使用成熟 cohort 窗口。自定义值必须满足平台可回溯范围、成熟度和可比性约束
数据模式单选段解释当前快照 / 刷新后分析默认 explain_snapshot,不重新取数;refresh_and_analyze 会重新取数、生成新 snapshot,并在报告并列旧新时间与差异。选择多个市场时强制切为刷新后分析。
对比基准单选段前一等长窗口 / 去年同期 / 无对比默认「前一等长窗口」。「去年同期」仅在 store_daily_metrics 有足量历史时可选,否则灰掉并提示「历史数据不足」——不允许静默降级为前一窗口
市场 / 站点多选该账号 active marketplacesAmazon 专属。默认=当前视图所在市场(即 7.7 的概览条高亮项),而非全选、也非账号主市场——商家从 DE 视图的卡片点进来,默认就该是 DE。多选时走 Skill 的 multi-marketplace-mode(一次 pipeline 调用带全部 marketplace_ids,不做 Agent 侧循环),弹窗需提示「将分别输出每个市场的独立结论,不做汇总」
渠道 / 国家多选channel_mix / country_mix 的键Shopify 专属。默认全选。这里直接复用 Tier-3 结构指标作为选项来源——T3 指标的主要价值就在这里
Location多选shopify_specific.locationsShopify 库存类专属。默认全选;multi_location=False 时整项不显示
关注维度多选收入 / 库存 / 商品 / 客户 / 运营 / 费用利润默认=卡片所属维度。关键约束:勾选 4 个及以上时,弹窗提示「将切换为完整店铺诊断」并把目标 Skill 自动改为 store-health-diagnostics——这条与两个 Skill 的既有路由规则一致,不能让弹窗产出违反路由约定的请求
分析对象范围勾选列表展开区中命中的 SKU / 变体 / ASIN / 客户P2、P3 原型专属。默认=命中项 Top 10;商家在展开区勾选的结果直接带入。上限 50 项,超出时提示改用完整诊断。此值写入 focused_identifier → Skill 的 request_scope
输出深度单选快照 / 趋势简报 / 完整诊断高级区。默认「趋势简报」。对应 store-health-diagnostics 的三档窗口模式(Health Snapshot / Health Trend Brief / Full Store Ops Diagnostic)
回复语言单选中文 / English高级区。默认跟随界面语言。仅这两种(第 11 章)
参数项不是每个卡片都全给。10 类参数不应同时铺开;数据模式常显,其余由 prefill.params 声明,通常再给 2–4 项。P1 主要给窗口、基准、市场/渠道与关注维度,P2/P3 额外给分析对象范围,P5 给弃单步骤筛选。
9.2 各交互原型的参数配置
原型暴露的参数提示词模板骨架
P1分析窗口、对比基准、市场/渠道、关注维度核查我 {平台}{市场} {窗口} {指标名} 的 {变化描述},对比 {基准}。{维度侧重句}。分开列出已知事实、相关信号、待验证假设与处理建议,没有事件或实验依据时不得给确定原因。
P2分析窗口、分析对象范围、市场/Location核查我 {平台}{市场} 这 {N} 个{对象类型}的{问题描述}:{标识列表}。逐项列出已知事实、相关信号、待验证假设与处理优先级;没有事件或实验依据时不得输出确定原因。
P3分析窗口、分析对象范围、金额口径(成本价/售价)我 {平台}{市场} 有 {金额} 的{问题描述}(占{参照}的{占比})。分析构成、证据覆盖与优先核查顺序;不得把开放金额或历史金额写成可追回收入。
P4分析窗口、对比基准、结构维度选择分析我 {平台}{市场} {窗口}{结构名}的变化,重点说明占比变化最大的分段及其影响。
P5分析窗口、开放结账步骤、是否只看出现库存不可用证据的记录分析我 Shopify 店铺 {窗口} 的开放结账金额与步骤分布,单列出现库存不可用证据的记录,并给出可验证的处理动作。
P6分析窗口、影响范围(只读)我 {平台}{市场} 出现 {事件描述},从 {开始日期} 起已持续 {天数},涉及 {范围}。请排查原因并给出恢复步骤。
9.3 参数生成提示词,手改不反向解析
初始
按 metric 的 prefill.prompt_template + 默认参数渲染出提示词全文。模板渲染在前端完成,不经过任何模型——保证同样的参数永远得到同样的提示词,可复现。
改参数 →
提示词自动重渲染。若商家已手动编辑过提示词,先确认「继续会按新参数重新生成提示词;取消会保留当前参数与手写内容」。只有确认后才同时改变参数并重生成,避免结构化参数与可见提示词互相矛盾。
改提示词 →
不反向解析,参数区保持不变但加标记「提示词已手动修改」。理由:从自然语言反解参数必然出错,而出错的方向是「商家以为改了参数其实没改」,比不解析更糟。
发送时
发出的消息 = ①上下文摘要 + ③提示词全文 + 结构化元数据(隐藏,见 9.4)。参数不作为自然语言重复出现两次,避免 Skill 读到矛盾指令。
9.4 发送内容与预填契约

发送的消息体分「可见文本」与「结构化请求」两部分。浏览器只提交 snapshot_id 和用户选择;服务端按登录租户重新读取并校验不可变快照,再构造给 Skill 的可信元数据。

可见文本(商家在会话中看到)
[来自店铺指标卡片]
Amazon 美国站近 7 日订购商品销售额 $18,240,环比 −23.4%(基准 $23,810,7/16–7/22);订单项数 −4.1%,每订单项销售额 −18.9%,折扣金额率 +6.2pp。

核查我 Amazon 美国站近 7 日订购商品销售额下降 23.4% 的关联变化,对比前一等长窗口。结合订单项数、每订单项销售额与折扣金额率,列出可验证的原因假设和处理建议。
关键:数值由卡片带入。Skill 拿到的是已经算好的数字,它的工作是解释与建议,而不是重算一遍。这既省一轮 pipeline,也保证卡片与报告的数字必然一致(第 1.1 节原则③)。
结构化元数据(隐藏传递)
{ "source": "metric_card", "mode": "explain_snapshot", "snapshot_id": "snap_amz_ATVPDKIKX0DER_20260729_01", "metric_id": "amz.rev.gmv_wow", "platform": "amazon", "marketplace_ids": ["ATVPDKIKX0DER"], "window": {"days": 7, "baseline": "prev_equal"}, "target_skill": "store-operation-analysis", "dimensions": ["revenue"], "request_scope": null, "output_depth": "trend_brief", "lang": "zh" }
元数据字段作用与硬规则
connection_id不信任浏览器传值。服务端根据已登录 tenant/store 和 snapshot 所属连接重新解析 connector-precheck 原值,再作为 Skill 的 _connection_id;卡片体系不得自行生成或从会话文本推断。
target_skill由「关注维度」数量决定:1–3 个维度 → store-operation-analysis;≥4 个或选了「整体概览」→ store-health-diagnostics这条映射直接照搬两个 Skill 已有的路由规则,弹窗不发明新路由
dimensions2–3 个维度时 Skill 走 combined-mode 并追加跨维度洞察合成步骤。弹窗需在勾选第 2 个维度时提示「将额外输出跨维度关联分析」——这是卖点不是副作用
request_scopeP2/P3 勾选的对象标识列表,映射到 Skill 的 focused_identifier。为 null 时 Skill 走全店范围
snapshot_id默认模式是 explain_snapshot:Skill 读取指定不可变快照,不重新拉数;报告的数值、窗口、币种、市场、成熟度与 source_as_of 必须逐项一致。客户端展示用 snapshot preview 不作为事实来源。
mode上下文区常显“解释当前快照(默认)/ 刷新后分析”。选择 refresh_and_analyze 时,客户端不提交任何市场的 source_snapshot_id;服务端按已登录店铺和每个 marketplace 解析各自当前快照,先登记 previous_snapshot_ids,再重新取数生成新 snapshot,报告逐市场并列旧、新取数时间与差异。不允许解释旧卡片时静默换数。
多市场选择explain_snapshot 只允许当前市场。勾选多个市场会明确切换为 refresh_and_analyze,为每个市场分别生成新 snapshot 并独立输出;不能把 US snapshot_id 配给 DE/JP。
服务端校验是可信边界:服务端只把 snapshot_id 与用户选择当请求,按已登录 tenant/store 读取不可变快照,验证 payload_hash、store/connection/market 归属、schema_version、request_scope 是否为快照成员子集、target_skill 是否在允许路由内。explain 模式可读授权范围内的历史快照;refresh 模式还必须确认当前连接有效。任一校验失败都不得把客户端文本或数字当事实继续分析。
弹窗不做的三件事:不在弹窗内展示分析结果——结果一律在会话中呈现,弹窗只负责发起;② 不做参数校验之外的智能推荐(不猜「你可能还想看库存」),推荐会让默认值变得不可预测,反而降低确认率;③ 不缓存商家上次的参数选择作为下次默认值——默认值必须由当前卡片状态决定,上次选择与本次问题无关。唯一例外是「回复语言」,它跟随界面语言而非上次选择。
🧠10 · 洞察引擎(事实层代码 · 归因层模型 · 行动层代码)

事实数字由代码生成,归因文字由 DeepSeek 生成并用规则兜底,下一步动作由代码查表。三层各自负责一件事,详细规则都放在本章。

洞察引擎链路(日批异步 · 页面直读 <200ms)
日批调度 · 凌晨低峰
Pipeline 拉数
Calculator 计算
闸门 1 · 候选池判定
事实层(代码槽位填充)
归因层(DeepSeek + 规则兜底)
行动层(代码查动作库)
store_daily_metrics.insights
页面直读 <200ms
常规洞察在批处理或事件巡检中生成并落库,页面渲染时不触发平台 API 或模型调用。这样模型超时、平台限流和重试都不会阻塞页面;页面只显示最近一次成功结果及其数据截止时间。
10.1 三层分工总览:谁生成什么、谁对什么负责
实现职责铁律
L-事实层
必有
代码:槽位填充 + 阈值判定 + status 分类 数字、变化量、基准、方向、状态——全部事实陈述 模型不得改动一个数字。status 由配置表判定后作为输入给模型,模型不得自行判断「9.2% 算高」
L-归因层
模型主生成 · 规则兜底
DeepSeek 主生成(一次调用一店一天),规则引擎兜底(模型失败 / 闸门拦截 / 服务不可用时回退) 相关信号与待验证假设:哪些指标同步变化、接下来核查什么 模型只负责措辞与关联,不产出任何新数字,也不能把相关性写成因果;证据不足时省略解释句
L-行动层
必有
代码:metric_id + status(+ 命中规则)查固化动作库 CTA 按钮 + 预填深度分析提示词 + 跳转 Skill 行动层不交给模型。行动建议错了比说得不好听危险得多;同指标同状态必须给出相同的、可审计的动作
行动层由代码查表。商家要的是正确且稳定的操作入口。给定 metric + status,下一步通常就是查库存、查订单、看广告或进入深度分析,动作范围有限,可以逐条核对。llm_scope 因此只保留 attribution_only(第 10.6 节)。
10.2 三层文案结构:示例与交互样式

卡片洞察区是 1–2 句话,由三层拼成:事实句(必有)→ 归因句(尽力而为)→ 行动入口(必有,表现为按钮而非句子)。行动层在视觉上不是文案行,而是卡片底部的主按钮(第 8.1 节五区结构的④行动区)。

生成方式示例(订购商品销售额下滑场景)
L-事实层
必有
纯槽位填充,一定能生成。模板:{指标名} {当前值},{方向} {变化量}(基准 {基准值}) 订购商品销售额 $18,240,环比下降 23.4%(基准 $23,810)
L-归因层
模型 / 规则
DeepSeek 生成一句相关信号或核查假设;规则引擎命中时使用已审定文案;两者皆不可用则省略 同期订单项数下降 4.1%,每订单项销售额下降 18.9%,折扣金额率上升 6.2pp;先核查商品结构和促销记录
L-行动层
必有
代码查固化动作库,渲染为按钮 + 预填提示词,不渲染为句子 [核查销售额变化](主按钮,点击打开参数弹窗 → 发起 Skill 深度分析)
卡片示例 · 归因层由模型生成(正常态)
订购商品销售额环比 · 近 7 日 vs 前 7 日
需关注
−23.4% $ 18,240
对比基准 $ 23,810(7/16–7/22)
同期订单项数下降 4.1%,每订单项销售额下降 18.9%,折扣金额率上升 6.2pp;先核查商品结构和促销记录。
核查销售额变化趋势 已持续 2 天
降级态 · 模型失败,规则兜底或省略归因
订购商品销售额环比 · 近 7 日 vs 前 7 日
需关注
−23.4% $ 18,240
对比基准 $ 23,810(7/16–7/22)
未命中归因规则,已省略归因句——仅事实 + 行动,卡片仍完整可用。
核查销售额变化趋势 已持续 2 天
三层之间怎么拼接:事实句与归因句之间用「,」或「 — 」连接(示例见上),行动层不参与拼接——它是按钮。归因句缺失时卡片直接省略该句,不渲染占位符。每条归因句落库时记录 source: "rule" | "llm" | "none"(第 10.6 节),这是 A/B 效果对比与事后排查的唯一线索。
10.3 归因层:模型主生成 + 规则引擎兜底

归因层是三层里唯一由模型生成的部分,也是唯一「尽力而为」的部分——拿不到好的归因,宁可省略,不给错的。模型与规则引擎的关系是主备而非并行:默认走模型,模型不可用时规则引擎顶上,两者都不可用时省略。

10.3a 规则引擎(兜底):组合规则库与反疲劳
🧩
规则的形式与首批 18 条
规则形式为 IF 条件组合 THEN 相关信号 + 核查动作。18 条规则覆盖常见的经营核查场景(Amazon 8 条 / Shopify 10 条,完整表见下)。规则只复述输入中可以证明的同步变化,再给出需要核查的对象;不直接宣称某一项造成了另一项。多条规则同时命中时按 priority_key → 受影响金额或数量分档 → 规则编号 排序,单张卡片最多采用 1 条解释句。
🔄
文案模板与反疲劳
· 同义模板轮换:每条规则配 3–4 个措辞不同、语义等价的模板,按 hash(store_id + metric_id + stat_date) 稳定选取——同一天刷新页面文案不变,避免被当成 bug。
· 持续天数表述切换:第 1 天「退货率 9.2%,高于 8% 阈值」;第 3 天起「退货率已连续 3 天高于阈值,仍在 9.2%」。
· 数字格式化统一:复用 scoring 脚本的 _fmt_int / _fmt_currency / _fmt_pct / _fmt_pct_change / _fmt_pp_change,卡片与 Skill 报告数字格式必然一致。
· 双语并列维护:模板 zh / en 各一份,en 独立撰写而非直译,由 tools/i18n.py 管理键完整性。
规则执行只认稳定 metric_id。执行器先把本次可比的 member_metrics 按 metric_id 建成索引,再读取 value / baseline / delta_pct / delta_pp / change_band / business_status / threshold_value / maturity / components。表里的 change_band=steady 由该指标版本化的稳定带计算;components 只保存同一指标已经定义的分子、分母或明细计数。找不到 stable metric_id、口径不可比或字段为空时,规则不命中,不能用名称猜字段。
#平台触发条件归因文案行动建议
R1AMZamz.rev.gmv_wow.delta_pct ≤ −15%abs(amz.rev.orders_trend.delta_pct) < abs(amz.rev.gmv_wow.delta_pct) ÷ 2,且 amz.rev.aov_change.delta_pct < 0订单项数降幅较小,每订单项销售额同步下降核查商品结构、促销设置与折扣叠加记录
R2AMZamz.rev.gmv_wow.delta_pct < 0amz.rev.conversion_rate.delta_pp < 0,且 amz.rev.sessions_trend.change_band = steady流量规模基本持平,官方转化指标同步下降检查 Featured Offer、价格和库存可售状态
R3AMZamz.rev.gmv_wow.delta_pct < 0amz.rev.sessions_trend.delta_pct ≤ −15%销售额和访问量同期下降有 Ads 数据时核查投放;无 Ads 数据时只检查自然流量、Listing 与库存记录
R4AMZamz.prod.buybox_deficit_count.value > amz.prod.buybox_deficit_count.baselineamz.rev.gmv_wow.delta_pct < 0Featured Offer 缺失与销售额下降同期发生优先核查报价、价格竞争力与库存可售状态
R5AMZamz.prod.listing_flag_count.components.suppressed_count > 0有链接被平台限制展示,直接影响可售性立即处理 suppressed 链接,优先级高于其它事项
R6AMZamz.fin.fee_rate.delta_pp ≥ 2amz.rev.gmv_wow.change_band = steady匹配到订单或订单项的费用率上升,销售额基本持平拆解费用交易,核查 FBA 尺寸分段与服务费变动
R7AMZamz.inv.stockout_risk_count.value ≥ amz.inv.stockout_risk_count.threshold_valueamz.inv.inbound_coverage.value < 30%多数断货风险 SKU 的确认在途数量与 ETA 尚不足以覆盖缺口按预计断货日、补货周期和安全库存下发采购
R8AMZamz.prod.traffic_only_count.value ≥ 3amz.rev.conversion_rate.delta_pp < 0存在有流量零转化的链接核查这些链接的价格、主图与库存状态
R9SHPshp.rev.net_revenue_wow.delta_pct < 0shp.rev.gross_sales_wow.change_band = steady毛销售额基本持平,折扣或销售冲销金额同期增加分别核查折扣明细、退货、取消与订单修改
R10SHPshp.cust.repeat_rate.business_status ∈ {alert, watch}shp.cust.guest_share.value > 50%回头客比例偏低,同时未关联客户的订单占比较高分别核查账户注册、营销同意和完整客户历史
R11SHPshp.cust.churn_risk.business_status ∈ {alert, watch}shp.cust.email_reach.business_status ∈ {alert, watch}历史高价值流失风险客户中,营销同意覆盖有限按同意状态拆分可执行召回对象;送达能力另行核验
R12SHPshp.ops.abandoned_gmv_at_risk.business_status ∈ {alert, watch}shp.ops.abandoned_gmv_at_risk.components.inventory_unavailable_count > 0开放结账中存在库存不可用记录核对相应商品库存,并跟踪这些结账是否随后恢复成交
R13SHPshp.inv.stockout_risk_count.value > 0shp.inv.transfer_opportunity.value > 0;后者已通过源仓余量、目标仓缺口、ETA 与调拨成本约束部分断货风险存在可执行的仓间调拨方案核对源仓安全库存、目标仓需求与预计到达时间后执行
R14SHPshp.prod.refund_rate.maturity = finalshp.prod.refund_rate.delta_pp > 0,且 shp.prod.no_restock_share.value > 60%实物退货件数率与退款未回库决策占比同期偏高分别核查退货原因、restockType、仓库处置与商品记录;不能仅凭 NO_RESTOCK 推断损坏或实际损耗
R15SHPshp.fin.margin_proxy.components.cost_coverage ≥ coverage_gateshp.fin.margin_proxy.delta_pp < 0,且 shp.fin.discount_gmv_share.delta_pp > 0有历史成本覆盖的商品毛利率与含折扣商品净销售占比同期恶化按商品核对折扣、历史成本和毛利变化
R16SHPshp.fin.profit_drag_count.value > 0shp.fin.profit_drag_count.components.net_sales_share_pct ≥ 15%净销售额占比不低的商品处于低毛利或负毛利重定价、停用无效折扣或调整推广资源
R17SHPshp.ops.overdue_rate.delta_pp > 0shp.inv.committed_backlog.value > 40%逾期订单增加,同时较多库存处于已分配状态核查逾期订单、仓内状态和承运交接记录
R18SHPshp.cust.returning_gmv_share.value > 65%shp.rev.net_revenue_wow.delta_pct < 0老客商品净销售占比较高,整店商品净销售额同期下降分别核查新客订单趋势、老客贡献和获客渠道数据
规则库需要一套回归测试:每条规则配 2–3 个构造样本(命中 / 边界不命中),保证新增规则不改变既有规则判定——这套测试也是模型归因的抽检基线。
10.3b 模型(主生成):请求结构、职责边界与成本
设计点做法理由
调用粒度一个店铺(Amazon 为一个 marketplace)一天一次,把该店当日候选池全部指标一次性送入,一次返回全部卡片归因句逐指标调用会丢掉跨指标关联能力——那是模型相对代码的唯一实质优势;一次调用还把 system prompt 开销从「× 指标数」摊薄到「× 1」
输入内容代码先完成 issue 合并、排序与选卡;模型输入包含店铺元信息、全量候选事实,以及 selected_issues[{issue_id, primary_metric_id, member_metric_ids}]。每个 metric 只给当前值、基准、变化、status、阈值、单位、构成字段和已核验事件。一张卡可能合并多个 metric_id,模型必须围绕最终 issue 写一句解释;节日、促销和广告只有输入有明确证据时才能引用。
输出格式强制 JSON:{issue_id: {related_signal, hypothesis_to_verify, evidence_metric_ids, confidence}},另加店铺级 cross_metric_noteevidence_metric_ids 必须是本次 payload 中该 issue 的成员;输出不含 action,动作仍由审定动作库提供。
长度约束单条归因句 ≤ 60 字(中文)/ ≤ 140 字符(英文),硬截断卡片洞察区只有 2 行空间。让模型写长了再截断会断在句子中间,必须在 prompt 里就约束
双语一次调用同时产出 zh 与 en,不做两次调用也不做机器翻译同一次调用里两种语言共享上下文,语义一致性更好;成本上仅增加输出 token
温度temperature 取低值(0.2–0.3)这是「把事实写成句子」的任务,不需要创造力。低温同时降低幻觉概率与文案漂移
模型允许做的三件事
① 措辞与语气——把「gmv_delta_pct: −23.4, aov_delta_pct: −18.9」写成商家读得懂的中文,语气随 status 调整(告警态克制、正向态肯定)。
② 跨指标关联——指出同一店铺同一天哪些指标同步变化,并把结果写成待验证假设,不把同步变化写成因果。
③ 已知事件背景——只有输入里提供了核验过的活动日历、促销或广告数据时,才把事件作为背景;不能仅凭日期猜测。
🚫
模型禁止做的五件事
① 产出任何新数字——归因句中每个数字必须能在输入 payload 中原样找到(10.5 闸门强制执行)。
② 判断状态或阈值——status 由配置判定后作为输入。
③ 解释数据缺失原因——na 文案来自第 7.6 节固定语库。
④ 提及未提供的数据——不得说「你的广告投放可能有问题」,我们没有广告数据。
⑤ 承诺结果——不得说「照此执行可提升 15%」。
💸
成本:不是决策变量
成本按真实候选数、输入输出 token、调用成功率、重试率和部署时的供应商价格实测,不在设计稿中写死金额。长期成本主要来自提示词维护、回归测试、抽检和日批失败运维。
三条成本杠杆:① 全静默店铺走固定模板不调模型;② 只有 attribution_input_hash(候选事实、相关信号、事件证据、窗口、schema/prompt/rule/model version 与语言)完全相同才复用整条产出;只有数字变化时仅可复用无数字规则模板,以当前 payload 重渲染并重新通过五道闸门;③ 日批在当地低峰时段运行。
10.4 行动层:代码查固化动作库

行动层由代码生成,不交给模型。实现方式是一张纯映射表。

设计点做法示例
查询键full metric_id + status(+ 命中的组合规则)amz.rev.gmv_wow + alert →「核查订购商品销售额变化」;禁止用裸 slug 作为动作键
动作库内容每个键 1 个主按钮(打开参数弹窗 → Skill)+ 1 个次按钮(原地展开趋势/明细),另配预填提示词(第 9 章参数弹窗)主按钮「核查销售额变化」→ 预填「核查订购商品销售额近 7 日下降 23.4% 的关联信号」
兜底动作未配置专属动作的 metric_id + status 一律落入通用兜底:「进入深度分析 / 查看完整报告」「深度分析」主按钮 → 打开该指标的完整 Skill 会话
一致性保证同键同文案,纯查表,可单测、可审计、可解释任何结论都能回溯到具体规则与阈值,逐句解释
行动层与归因层解耦:归因层模型失败时,行动层不受影响照常渲染——整张卡片在模型完全不可用的情况下依然「事实 + 行动」完整可用。这正是行动层留代码的额外红利:模型不可用只是少一句解释,不是少一个下一步
10.5 校验闸门:模型输出的五道机械校验(归因层能否上线的决定性组件)

模型输出不直接入库,必须通过五道机械校验。任一条失败则对应 issue 回退到规则引擎;规则也未命中时省略该 issue 的归因句。事实层与行动层由代码生成,不受影响。

闸门 1
数字白名单校验——用正则抽出归因文本中所有数字,逐个检查是否存在于输入 payload 的数值集合中(允许四舍五入到配置精度)。出现任何 payload 之外的数字 → 直接丢弃。这一条能拦住绝大多数幻觉,因为洞察类幻觉几乎总是表现为编造数字。
闸门 2
方向一致性校验——文本中的方向词(上升/下降/改善/恶化)必须与 _change_classhigher_is_good 推出的方向一致。「退货率下降」在 higher_is_good=False 下应被判为改善,若文本说「情况恶化」则不一致 → 丢弃。
闸门 3
禁用词校验——命中禁用词库即丢弃。词库包括:承诺类(保证、必然、一定能提升)、越权归因类(广告、竞品、平台算法——我们没有这些数据)、编造原因类(权限、授权,除非该指标确为 permission_denied)、以及所有绝对化断言。
闸门 4
结构与长度校验——JSON 可解析、issue_id 集合与 selected_issues 一致(不多不少)、evidence_metric_ids 均属于对应 issue 且存在于 payload、zh/en 双语齐全、长度在限内、无 markdown 残留。
闸门 5
跨指标引用与因果措辞校验——解释句提到的每个指标必须在本次 payload 中且数值引用正确;出现“导致、主要来自、必然因为”等因果断言时,除非输入带有明确实验或事件证据,否则直接丢弃。
监控指标目标处置
闸门整体通过率≥ 95%低于 90% 触发告警并暂停模型归因,全量切规则兜底(开关级切换,见 10.6)
闸门 1 拦截率≤ 2%持续偏高说明 prompt 未有效约束数字来源,需修 prompt 而非放宽闸门
日批完成时间页面首次访问前完成超时则该店当日归因走规则兜底,不阻塞页面
人工抽检合格率≥ 98%(每周抽 200 条)闸门是机械校验,抓不住「话说得对但没价值」。抽检覆盖这一层
解释句还要通过“是否增加核查价值”的人工抽检。例如“订购商品销售额下降 23.4%,建议关注销售表现”只是重复事实,应判为不合格。合格的解释至少要指出一个输入中可核对的同步变化,或给出一个明确的核查对象;这部分靠抽检和回归样本持续约束。
10.6 失败与降级路径 + 灰度开关
失败点表现降级动作
模型 API 不可用调用超时或报错批内重试 2 次(间隔递增),仍失败 → 该店全部指标归因走规则引擎。页面无感知
单 issue 未通过闸门闸门 1–5 任一失败该 issue 单独回退规则归因,其余 selected issue 保留模型归因;回退粒度与最终卡片单位一致。
规则引擎也未命中模型不可用 且 规则无匹配省略归因句,卡片呈现「事实层 + 行动层」。绝不猜测归因
日批部分完成data_status = partial成功维度发布当前数值和与当前 payload_hash 对齐的洞察;失败维度写 canonical availability、raw_error 与修复入口,不无标识继承旧维度值。
日批整体失败data_status = failed整区可显示上一成功 snapshot,但必须标 stale,常显 last_success_at/source_as_of,并关闭补货、清仓、调价、召回等强动作;旧洞察只有与展示的旧 snapshot hash 一致时才出现。
数据过旧仍展示重拉失败,旧数据继续展示页面标注「数据截至 X 月 X 日」,商家自行判断时效(第 11.2b 节修订流水记录)
洞察与数值不匹配同日重跑后 insight 仍引用旧 payloadinsight 与 card snapshot 必须同一事务发布,并校验 snapshot_id、display_run_id 与 payload_hash;只比 stat_date 不足以识别同日重跑。不一致时只渲染事实层与行动层。
质量事故(说错话)抽检或客诉发现全局开关一键切规则兜底(分钟级生效),同时该文案模式进入回归测试集
开关粒度作用
insight_engine全局rule_only | rule_plus_llm。总闸,异常时一键切回纯规则
llm_scope全局固定为 attribution_only。模型只管归因层单句
llm_store_allowlist店铺灰度名单。内部店铺与试点商家先进
llm_rollout_pct店铺(hash 分桶)hash(store_id) 稳定分桶,保证同一店铺不会在两种归因风格间来回跳
llm_metric_blocklist指标指定指标永不交给模型。默认包含所有金额型指标(P3)与事件告警型指标(P6)——这两类的错误代价最高
gate_strict_mode全局闸门拦截后的行为:fallback(落回规则归因,默认)| drop(丢弃归因层只留事实与行动)
落库时在 insights 里记录每条归因句的来源(source: "rule" | "llm" | "none")与命中的规则号或闸门结果。这是做 A/B 效果对比的前提,也是事后排查的唯一线索。不记录来源就无法回答「点击率提升到底来自模型还是来自同期的规则扩充」这个问题。
🗄️11 · 数据链路、表结构与双语(zh / en)

卡片系统的性能与可靠性几乎完全取决于这一章。页面渲染时不得触发平台 API;常规指标由每日批处理生成,高风险事件由平台通知或高频巡检触发增量计算,页面只读取已经落库的结果。

11.1 每日批处理与高风险事件巡检
每日批处理时序(单店铺单市场为一个作业单元)
连接器清单
市场展开
Pipeline 拉数
Calculator 计算
闸门 1 · 候选池判定
洞察生成(B 或 B+A)
写入 store_daily_metrics
要点设计
作业粒度一个店铺 × 一个市场 = 一个独立作业。Amazon 多市场店铺展开成多个作业,互不影响——这与 Skill 的「不跨市场聚合」规则一致,也保证单市场失败不污染其它市场。
市场数放大效应第 7.7 节的「跨市场告警上浮」要求所有活跃市场都跑日批,否则无法得知非默认市场是否有 alert。因此作业数 = 店铺数 × 活跃市场数,五市场卖家的成本是单市场卖家的五倍。
缓解:对长期零订单的市场降频(连续 14 天零订单 → 改为按周更新,概览条上标注「数据截至 X 月 X 日」)。不少卖家开通了市场但无实际销量,这类市场每天拉数纯属浪费。但不能只跑默认市场——那等于放弃告警上浮能力。
执行时点按店铺所在市场的本地时区错峰调度,在当地凌晨完成,保证商家早上打开页面看到的是完整的前一日数据。错峰同时避免所有作业挤在同一小时打平台 API。
高风险事件Listing 被限制展示、账号绩效越界、订单临近或超过最晚发货时间等经营事件不能等到次日日批;连接授权失效属于 system_incident 数据横幅,不混入经营 issue 的 priority_key。通知或轻量巡检命中后,可以只重拉受影响数据源,但必须把新指标与其余当前缓存指标一起重跑该市场完整候选池、issue 合并、排序、配额与 display。随后在同一事务中 upsert 当日 store_daily_metrics 的 metrics/insights/display/computed_at/observation_count,更新 store_card_state 与店铺级 market_overview,并建立新的 display_run_snapshotcard_snapshot。任一步失败整笔不发布,页面继续读取上一成功 run。
Amazon 特殊性Reports API 是 submit → poll → download 的异步流程,单次可能耗时数分钟到数十分钟。作业需支持长轮询与断点续跑,且遵守 Skill 的规则:同一 pipeline + 市场在一次运行内不重复调用。原始 failure_na 先保留在 raw_error,再映射为 canonical source_failed,其它维度继续运行。
失败隔离维度级隔离。某个 pipeline 失败只把该维度的指标标记为不可用(对应第 7.6 节的异常卡形态),其它维度照常落库。data_statuspartial
重跑策略失败作业进入重试队列,间隔递增(30 分钟起)。重跑覆盖同一 stat_date 的行而不是插入新行,由主键唯一约束保证。当日多次重跑成功后 data_status 可从 partial 升级为 ok
重跑无法覆盖的部分A 类按各自原始历史窗口重拉,C 类重算未达到 settle_age 的 cohort/自然周,因此漏跑可在后续观测中自愈。Sales & Traffic 中的 Featured Offer 占比属于可重拉的 A_ratio。B 类时点指标(库存水位、实时在售状态、店铺评分)只回答“现在”,漏跑的历史点永久不存在;B 类作业失败必须单独告警。
与 Skill 的关系卡片、Skill 与报告通过 snapshot_id 对齐。默认 explain_snapshot 读取卡片当时的不可变快照;用户明确选择 refresh_and_analyze 时才调用 pipeline 生成新快照,并把旧、新取数时间和差异一并写入报告。
容量合同:作业数 = 店铺数 × 市场数,每个作业要调用 3–5 个 pipeline。刷新频率只由 store × marketplace × source freshness_policy 决定:有交易市场的常规报表日更;连续 14 天零订单市场的重报表降为周更并常显 source_as_of,B 类时点趋势因此变稀疏时必须披露;高风险通知与轻量巡检始终运行。店铺级不再另设一套隔日规则。
11.2 store_daily_metrics 表结构
字段类型说明
store_idstring主键组成。对应连接器解析出的店铺
connection_idstring写入时记录的连接 id。不作为主键——连接重建会换 id,但历史指标应保留。用于校验数据归属与缓存隔离
platformstringamazon | shopify。决定读哪套指标配置
marketplace_idstring主键组成。Amazon 为实际市场 id;Shopify 为固定占位值(保持表结构统一,避免 nullable 主键)
stat_datedate主键组成。统计日期而非计算日期——两者可能因重跑而不同
metricsJSONB指标主体。以 metric_id 为键,每项保存 Metric Spec 的运行时输出以及独立的 source_as_ofobserved_age_daysmaturitycoverageavailability。不同指标不能共用一条成熟度结论
insightsJSONB存归因层最终产出(rule / llm / none)、issue_id、evidence_metric_ids、zh/en 句子、payload_hash 与闸门结果。事实层和行动层在读取时由代码模板渲染,不写入此字段。
displayJSONB三道闸门筛选后的展示结果:首屏卡位顺序、摘要行指标、Steady State 标记。筛选在日批完成,页面不做排序计算
display_run_idstring指向本行当前已发布的不可变 display run;事件重算只有在整个事务成功后才切换该指针
data_statusstringok | partial | failed。复用 Skill 已有的同名字段语义
failed_dimensionsJSONB每项同时保存 canonical availability_status 与 pipeline 原始 raw_error。页面只按 permission_denied/source_failed/stale 等 canonical 状态渲染;data_not_available 等原始名称必须继续细分并保留,不能直接成为页面分支。
computed_attimestamp本行最后一次成功计算的时刻,即认知时间(第 11.3 节)。页面用它显示「数据更新于」
metrics.*.observed_age_daysint每个指标自己的观测龄,由该指标的 source_as_of、事件窗口和认知时间计算;用于选择同龄或结算基准
metrics.*.maturitystringprovisional | settling | final。按平台 × 指标 × 数据源分别判断,不能因为同一行中的销售已定稿,就把退款、退货或费用也标成 final
observation_countintstat_date 被重复观测的次数。持续为 1 说明滚动窗口没有生效,是一个可监控的健康信号
schema_versionint指标配置版本号。阈值或公式变更时递增,避免拿新口径的今天和旧口径的上周做对比
🔑
主键与读取路径
市场行主键为 (store_id, marketplace_id, stat_date)。Amazon 首屏用一次数据库 round-trip(CTE 或批量查询)读取店铺级 market_overview 与其 current_display_row_key 指向的默认市场行;Shopify 只读当前行。切换市场按 overview 已解析的行键读取目标行,不触发计算。目标首字节 <200ms;为 latest row 建索引 (store_id, marketplace_id, stat_date DESC)
📦
为什么用 JSONB 而不是宽表
55 项指标各有 5–8 个运行时字段,展平成列会是数百列的宽表,且每次加指标都要改表结构。JSONB 让加指标等于加配置,与第 6 章「独立配置行而非 if platform 分支」的思路一致。
代价是无法直接对单个指标建索引——但页面读取只按主键查,不需要按指标值筛选,这个代价不成立。
11.2b 修订、卡片、快照、任务与报告运行表

这些记录的写入条件和生命周期不同,不能全部塞进 store_daily_metrics。指标主表保存可重算的日度结果;其它表分别承担漂移审计、展示状态、不可变取证、执行闭环和报告回放。

store_metric_revisions设计
字段observation_id, old_observation_id, new_observation_id, metric_id, drift_pct, created_at
写入条件它是从完整观测流水派生出的漂移摘要;同一 stat_date 漂移超过配置线(冷启动可用 0.5%)时写入,用于告警、聚合和运营排查。它不承担完整审计或同龄取值。
用途提供超过配置线的显著漂移告警、运营排查索引和摘要报表;完整漂移分布与 settle_age 校准只读 store_metric_observations,避免阈值筛选造成样本偏差。
保留90 天,服务近期显著漂移排查;完整观测流水按校准与审计所需窗口单独保留。
store_metric_observations设计
字段observation_id, store_id, marketplace_id, stat_date, metric_id, observed_at, observed_age_days, value, maturity, source_as_of, comparability_key, payload_hash
写入条件首次及每次有效观测都写,不以漂移大小过滤;所有用于卡片、比较或报告的版本必须可定位。商家实际看到的内容由 card_snapshot 取证,同龄基准和 settle_age 校准读取此表。
C 类重算未达到 settle_age 的 cohort/自然周每次日批都重拉并按 key 生成新 observation;final 点锁定。B_point 只追加当前时点,漏跑形成永久缺口。
store_card_state设计
字段store_id, marketplace_id, stat_date, slot, issue_key, primary_metric_id, layer_variant, status, consecutive_days, task_id
性质记录的是我们自己的输出,不是平台数据。因此它没有成熟度、没有认知时间、没有准确性问题,也不需要修订流水——这是它必须独立成表的根本原因
用途一:抗疲劳第 10.3a 节的同义模板轮换需要知道「上次用的是哪个 variant」,连续告警计数需要知道「这是第几天」。没有这张表,同一张告警卡会连出六天一字不变
用途二:跨日连续性保存 issue_key、primary_metric_id、上一展示 variant、连续天数与关联 task_id,供持续角标、文案轮换和 reopened 判断。当前 run 的主题合并只按当次候选 issue_key 完成,不能因为昨天展示过就隐藏今天的问题。
用途三:满卡率监控6 是上限,不是每天必须填满的目标。系统持续记录实际出卡数、各卡位点击和主题分布,用真实使用数据校准阈值、卡位数与主题合并规则
保留30 天。轮换与连续计数都只回看近期
display_run_snapshots设计
字段display_run_id, store_id, marketplace_id, stat_date, config_version, schema_version, candidate_issues, member_metric_ids, priority_keys, merge_result, quota_result, final_slots, created_at, payload_hash
性质不可变。它保存整次候选池、issue 合并、排序与卡位结果;页面顺序从这里回放,事件重算成功后才切换主表的 display_run_id。
card_snapshots设计
字段snapshot_id, display_run_id, slot, issue_key, primary_metric_id, member_metrics JSONB, priority_key, schema_version, copy_version, layer_variant, action_key, rendered_copy JSONB, created_at, payload_hash。member_metrics 每项保存 metric_id、value、baseline、delta_pct、delta_pp、change_band、business_status、window、currency、source_as_of、maturity、coverage、availability、comparison_status、reason_code、comparability_key、threshold_value、threshold_type、threshold_version 与 components;rendered_copy 固化商家当时看到的 fact_text、insight_text、action_text、labels 与 locale。
性质不可变。卡片出现在页面、用户点击分析或任务建立时固化当时的完整口径和数值。任何刷新都会新建 snapshot_id,不能覆盖旧快照
用途单卡内容由 snapshot_id 回放;整页顺序由其 display_run_id 回放。卡片、Skill、报告和处理前后对比引用同一不可变证据。
action_tasks设计
字段task_id, snapshot_id, status, owner, due_at, resolution_note, evidence, before_snapshot_id, after_snapshot_id, verification_metric, verification_window, verification_due_at, verification_status, verified_at, completed_at, reopened_at, reopen_reason
状态unassigned / assigned / in_progress / blocked / verifying / done / reopened;verification_status 为 pending / passed / failed / not_comparable。只有 evidence 存在、before/after comparability_key 兼容且验证通过才能进入 done;失败进入 reopened,不可比继续 verifying 或 blocked。
report_runs设计
字段run_id, mode, input_snapshot_ids, output_snapshot_ids, skill, status, started_at, completed_at, report_uri, error_type
用途记录报告究竟解释了哪份快照、是否主动刷新、是否成功交付。报告只引用这里登记的快照,不从当前主表临时取一个“最新值”替换
11.3 历史快照的数据语义与消费方

快照的一行不是「那天的真相」,是「我们在某个时刻对那天的认知」。这个区分是整章的语义基础。如果一行是那天的真相,真相就不该每天变;可它确实每天在变——所以只有后者能自洽。

🕐
两条时间轴,不是一条
事件时间 stat_date:事情发生在哪天。
认知时间 computed_at:我们哪天知道的。

store_daily_metrics 保留每个事件时间的最新认知;store_metric_observations 保存每次有效认知;store_metric_revisions 只是显著漂移摘要。同一个 stat_date 在不同时刻有不同的值,是认知在收敛。
📉
为什么这件事非解决不可
Amazon 的 7 月 20 日订购商品销售额,7 月 21 日观测时部分订单仍是 Pending,退款和费用也未完整进入;随后订单状态与财务事件会继续变化。

如果只留最后一次观测且不记每个指标的成熟度,卡片就可能拿 1 天龄的本期与 8 天龄的上期比较,制造不存在的经营波动。
由此得到本章唯一的正确性铁律:只在相同成熟度之间做对比。「拿最新值比最新值」看起来自然,但比的是 1 天龄和 8 天龄,是错的。
指标按数据沉降行为分三类 —— 这不是三个人为的桶,是两条时间轴关系的三种情况
类别例子两条时间轴的关系后果
A 可重算聚合订购商品销售额、净销售额、订单项数/订单数、会话量、每订单项销售额/AOV、转化率、Sales & Traffic 的 Featured Offer 窗口占比认知时间可以晚于事件时间,且认知快速收敛可按原窗口重拉,漏跑能自愈。settle_age 按平台与指标的实测漂移配置
B 时点观测FBA 可用库存、实时在售状态、店铺评分认知时间只能等于事件时间。平台只回答「现在」不可重拉,漏跑即永久缺失。天生 final,无成熟度问题
C 长尾结算退款率、退货率、费用结构、Reimbursement认知时间可以晚很多,收敛很慢可重拉,但成熟期按月算。settle_age = 30 天
B 类为什么补不回来,到这里不再是一句「平台没这个接口」的经验之谈,而是语义上的必然:你没法在今天获得关于上周某一天库存水位的认知,因为那个认知只在那一天存在过。这正是快照表存在的根本理由——它是我们对 B 类指标唯一的认知留存手段。A 类和 C 类漏跑了,明天的滚动窗口会补上,快照表只是省了重拉成本;B 类不是。
五个消费方 —— 谁在读快照,不存会缺什么
#消费方需要跨行历史不存会怎样
1A 类趋势迷你图
P1 原型
不需要不缺。每天拉的 14 天本身就是一条序列,日批算好塞进当天行的 metrics 即可。这一项常被误认为需要快照表。画什么形态见第 11.3e 节
2B 类趋势迷你图
库存 / 实时状态
必须每次拉取只返回一个时点值,历史只能靠逐日观测。跨行读取只发生在日批,页面读取物化 trend_buffer。Featured Offer 的 Sales & Traffic 窗口占比不走这条路径。
3历史位次
「创近 N 周新高」
必须只有积累满 N 周且口径、成熟度可比时才可生成;否则 Steady State 只陈述检查范围、连续性和数据边界
4卡片状态延续
store_card_state
必须第 10.3a 节抗疲劳完全失效。读的是自己的输出,不是平台数据,所以独立成表(第 11.2b 节)
5漂移审计
内部
必须settle_age 只能拍脑袋,无法用实测漂移率验证
B 类趋势和卡片状态从系统启用当天开始积累;历史位次只有在积累满所声明的窗口后才可展示。没有足够历史时明确标记“历史数据不足”,不缩短窗口冒充完整比较。
对比基准的两种实现
基准做法代价适用
结算基准两期都取 final 值,窗口整体后移 settle_age首屏最新一天是 T-4 而不是 T-1金额与费用类。数字准确性优先于时效
同龄基准本期取当前值,上期从完整 store_metric_observations相同观测龄时的值依赖完整观测流水,卡片需标注口径订单数、会话量等沉降快的量值。可正常展示 T-1;store_metric_revisions 只做显著漂移摘要,不能承担同龄回读
商家看到什么,商家看不到什么

上面这套机制里,只有四样东西会浮到界面上

商家看到实际含义要防的误解
迷你图上的断点那天我们没有采到数据误解成「那天是 0」。所以断开而不连线,不插值——插值会造出一个从未存在过的数字
「数据更新于 X 月 X 日」这一行的认知时间误解成「数据完整到 X 月 X 日」。它只说明我们算到哪天
最新一天标「初值」这个数还会小幅变动四样里唯一真正重要的一条,见下方
「创近 12 周新高」当前值在已有且满足成熟度要求的 12 周历史分布中的位次误解成「历史最高」。文案必须带明确窗口;历史不足 12 周时不展示
页面把成熟度简化为“初值 / 结算中 / 已定稿”,并常显数据截止时间和必要的覆盖率;observed_age_dayssettle_ageobservation_count 与修订流水留在内部。商家需要看到会影响判断的状态,不需要理解内部计算细节。
商家其实只需要理解一件事:最近一天的数字会小幅变动,不要拿它对账。
这条必须主动标出来,原因不是技术,是信任。商家迟早会发现某个数字变了,这在 Amazon 上无法避免,Seller Central 自己也是这样。区别只在于他是从我们的标注里知道的,还是自己发现后怀疑我们算错的。前者是专业,后者是 bug 报告。所以这条标注不能做成鼠标悬停才出现的小字。
11.3e 迷你图形态规格
迷你图画的量必须和卡片头条数字是同一个量。如果卡片写“近 7 日订购商品销售额 $18,240,环比 −23.4%”,迷你图末点也必须是该 7 日窗口的销售额,不能改画日度原值。
类别画什么点数理由
A 类量值
销售额·订单项·会话
按 Metric Spec 窗口滚动求和由 history_days−window_days+1 决定,页面上限 127 日指标在 14 日缓冲区得到 8 点;其它窗口按自己的合同执行。末点就是头条数字,日度原值只能放在详情中。
A 类比率
转化率·AOV·毛利率·费率·Featured Offer
按指标窗口滚动;分子、分母分别汇总后再相除由窗口与历史长度决定,页面上限 12末点必须等于卡片头条;PFC 使用 7 日,LSR 同时展示 10/30 日,Featured Offer 使用 Sales & Traffic 的同一窗口,其余读取 Metric Spec,不能用日度比率冒充窗口比率。
B 类时点值
库存·实时在售状态·评分
日度时点值14滚动求和对存量值无语义。缺失日断线,不补 0,也不回填不存在的历史时点。
C 类长尾
退款率·退货率·费用
成熟 cohort 周度点8–12每点只使用达到相同成熟度的 cohort;日度过稀且未结算,不用假精度制造波动。
形态、窗口、分子分母和历史长度都属于 Metric Spec。渲染层不按 metric_id 猜,也不能为了图形更顺滑而改画另一种量;改变窗口或 chart_form 必须递增 schema_version。
7 日量值指标为什么是 8 点而不是 14 点
拉取窗口 14 天: T-14 ─────────────────────── T-1 7 日窗口的末点只能落在: T-8 ──────────── T-1 = 8 个点 末点 = sum(T-1 .. T-7) ← 与卡片头条数字完全相同 首点 = sum(T-8 .. T-14) 要 14 个点需拉 20 天 → 不做,成本换来的只是更密的锯齿
这是 7 日指标的计算例子,不是全局窗口。8 个滚动窗口正好覆盖 14 天日历;其它指标按自己的 window_days 与 history_days 生成点数。对比基准必须能在图上找到对应端点。
两条横切规则
① 末端表达成熟度滚动 7 日和的末点包含 T-1,所以尾部会随结算轻微上移。最后 settle_age − 1 个点用虚线或降透明度画:Amazon A 类 settle_age=3 → 末 2 点虚线;Shopify settle_age=1 → 全实线。这是唯一能让「线会变」在图上被看见的方式,与「初值」标注是同一套语义。
② 跨行读取只在日批B_point 读取昨天缓冲区并追加当前时点,缺口永久保留;C_longtail 每次重拉并重算尚未达到 settle_age 的历史 cohort/自然周,按 key 覆盖 provisional/settling 点,final 点锁定。每次有效变化写 observations,显著漂移另写 revision。日批把生成后的 trend_buffer 物化进今天的 metrics,页面只读当前物化行。
三个必须一起处理的边界
缺失日的传播
滚动和里任一天缺失,包含它的 7 个窗口全部失效——不是补 0,是这 7 个点画成断点。A 类的缺口是暂时的(明天滚动窗口会补回该日并重算),B 类的缺口是永久的(第 11.1 节)。
比率的滚动算法
比率型的滚动值必须分子分母各自求和后再除,不能把 7 个日度比率取平均——后者在日订单量差异大时会得出错误结果。这条与 calculator 现有的加权口径一致。
C 类周度点的边界
周度点按自然周切(与 window 的 7 倍数对齐),不足一周的当前周不出点,避免用半周数据和整周数据并列比较。
11.4 阈值、窗口与对比方式配置
设计
配置来源阈值不硬编码在计算代码里,而是从指标配置表读取,键为 (metric_id, scope)scope 支持 global / platform / marketplace / store,按由细到粗回退
默认值来源默认阈值必须与 Skill 的 references/defaults.md 保持同一份真值。卡片说「高于 8% 阈值」而 Skill 报告用 10% 判定,是这套系统最容易出现也最伤信任的不一致
店铺级覆盖支持商家设置经营目标,但官方绩效阈值不可被覆盖。内部提醒值的修改要显示作用范围、即时预览和审计记录,避免通过调松阈值掩盖问题
变更留痕阈值变更必须递增 schema_version 并记录生效日期。历史行不回溯重算——回溯重算会让商家昨天看到的告警今天凭空消失
样本量门槛_MIN_ORDERS_D1_D5 = 10_MIN_SHIPPED_D3 = 10 同样外置,与 Skill 共用同一配置
settle_age平台 × 指标类别配置,初值 Amazon A 类 3 天 / Shopify A 类 1 天 / C 类 30 天 / B 类不适用。这些初值都是推测,上线后从完整 store_metric_observations 按平台 × 指标 × 观测龄计算漂移分布:某平台某指标在观测龄 N 天后漂移率稳定低于 0.5%,则 settle_age 收敛到 N。store_metric_revisions 只保留超过配置线的摘要,用于告警和排查,不能作为校准的唯一输入。
指标窗口窗口属于单项 Metric Spec,不设全局白名单。日度销售、订单、会话和转化通常使用 7 日或其它 7 的倍数;库存销速使用 28 日;Amazon 预配送取消率按官方滚动 7 日,迟发率按官方 10 日或 30 日;退货、退款、LTV 与客户指标使用各自成熟 cohort。任何比较都必须同时满足同市场、同币种、同口径版本和成熟度可比;窗口不足写 comparison_status=insufficient_history,不把它塞进 availability_status。
采集保持日粒度,高风险事件另做通知或高频巡检。日度数据可以按各指标合同上卷成 7、10、28、30、91 天或成熟 cohort,周度采集却无法还原日内与日间变化。
11.5 双语(zh / en)文案键管理
设计
语言范围仅中文与英文两种。卡片系统不跟随 Skill 报告的多语言范围——卡片文案需要逐条人工撰写与审校,扩语种的边际成本远高于报告渲染层的机器翻译
键命名card.{platform}.{dimension}.{slug}.{layer}.{variant}layer ∈ fact / attribution / action / button / label;variant 用于同义模板轮换(第 10.3a 节)
规模估算30 项 T1 指标的按钮文案 60 键(第 8.4 节)+ 55 项指标的事实层与标签 + 18 条规则 × 3–4 个同义模板 × 归因与行动两层,合计约 700–900 个键 × 2 语言。这是一次性投入,但不是小投入
完整性校验复用两个 Skill 已沉淀的 tools/i18n.py 体系做键完整性检查。缺键必须在构建阶段失败,不允许运行时回退到键名——商家看到 card.amz.rev.gmv_wow.action.1 比看到英文更糟
en 独立撰写英文不是中文的直译。中文习惯「客单价环比下降 18.9%」,英文更自然的是 "AOV down 18.9% WoW"。直译会让英文商家一眼看出这是翻译过来的产品
数字与日期本地化货币符号、千分位、日期格式、百分号位置按语言处理。数字格式化统一复用 scoring 脚本已有的 _fmt_* 系列,保证卡片与 Skill 报告完全一致
语言选择来源默认始终跟随当前 UI language preference;弹窗可仅对本次请求覆盖,关闭后不单独记忆。若产品持久化,持久化的是用户 UI 语言设置,不是卡片参数。
两种语言同时产出,任何时候都不做运行时翻译。归因层的一次模型调用同时产出 zh 与 en 并落库(第 10.3b 节);事实层与行动层的代码模板本身就是双份,在读取时按界面语言渲染。两条路径都避免出现「中文有归因句、英文没有」的不对称,也避免切换语言时需要重新生成洞察。
🎬12 · 可交互原型:操作效果与示例

下面的可操作原型演示悬浮、展开、参数弹窗和发送动作。卡片放在左栏输入框下方,让经营信号与后续对话处于同一条操作路径;右栏保留低频配置。动效总时长不超过 1.4 秒并响应 prefers-reduced-motion,只用于说明状态变化和引导视线。

原型(可直接操作)
操作指引:① 鼠标悬浮或点击卡片空白区看展开 ② 点「查看 12 个 SKU」等次按钮看明细 ③ 点「核查销售额变化」等主按钮打开参数弹窗 ④ 在弹窗里改参数,看提示词联动 ⑤ 点确认发送看飞入输入框动画 ⑥ 点市场概览条体验市场选择状态 ⑦ 点右上「收起」看让位折叠条。
数据为 FULUPET Store 的构造样例,用于演示布局与交互,非真实经营数据。本原型只装载 US 卡片数据;切换 DE/JP 只演示选择状态,不伪造其它市场数值。正式页面按 7.7 节读取目标市场物化行。
My storeFULUPET Store

FULUPET Store

How can I help you today?
🎙
今日经营信号 数据截至 7 月 29 日 · 7 月 30 日 06:12 更新
US · 4 项告警
DE · 2 项关注
JP · 正常
UK · 数据截至 7/26
订购商品销售额环比告警 近 7 日结算中
$0↓ 23.4%
同龄基准 $23,810(7/16–7/22,observed_age=1)
滚动 7 日和 · 8 点 · 末 2 点虚线=结算中(observed_age=1 / settle_age=3)
订单项数下降 4.1%,每订单项销售额下降 18.9%,折扣金额率上升 6.2pp;先核查商品结构和促销记录。命中规则 R1
收入 · priority_key 已回放
7/16–7/22$23,810−1.2%
7/23–7/29$18,240−23.4%
同主题另有 2 项:每订单项销售额变化、商品折扣金额率
链接受限强制置顶
0个链接
suppressed · 影响可售性
有链接被平台限制展示,直接影响可售性,优先级高于其它事项。R5
B08XK2P宠物自动喂食器图片缺失
B09QW1M猫砂盆除臭剂类目受限
B07TT4L狗狗牵引绳标题违规
勾选项将写入 focused_identifier
断货风险告警
0个 SKU
其中 9 个的确认在途不足以覆盖缺口
结合 ETA、在途数量、补货周期与安全库存生成待核对的补货量。R7
B08XK2P自动喂食器4 天
B09HH8N宠物饮水机6 天
B07RR2K猫抓板9 天
按 US marketplace × sellerSKU/FNSKU 的可售、在途与销速测算
发货前取消率官方绩效滚动 7 日
2.8%14 / 500
Amazon 官方要求 <2.5% · 仅 MFN
卖家发起的预配送取消率高于官方要求;分子、分母和取消发起方均已核对。
Unit Session Percentage关注近 7 日
8.6%↓ 2.2pp
unitsOrdered ÷ sessions · 会话量基本持平
官方转化指标与销售额同期下降;价格、Featured Offer、库存和商品页是待核对线索。R2
Featured Offer关注内部观察线
0个 ASIN
2 个 ASIN 低于 80% StoreClaw 内部观察线 · 不是平台处罚
缺失与销售变化同期发生;需分别核对报价、库存、配送与资格,当前数据不确定原因。R4
B08XK2P宠物自动喂食器62%
B09HH8N宠物饮水机74%
近 7 日 Sales & Traffic 窗口占比 · 勾选 ASIN 写入 request_scope
8 项指标在各自基线或目标范围内 · 会话量趋势正常、平均周转天数 42 天、退款金额率在历史基线内…
Brand Profile

FULUPET Store 是一家在亚马逊平台上运营的店铺,专门销售宠物相关产品。

Generated from Amazon · Updated Jul 8, 2026

Plugins
🅰 Amazon: FULUPET Store
Scheduled

No tasks linked

原型数据边界:① 数据为 FULUPET Store 的构造样例,非真实经营数据;② 飞入动画落点是演示输入框,接入会话时需处理已有草稿;③ 卡片只加载 US 构造数据,选择其它市场会强制刷新并按市场生成独立快照;④ 骨架屏与 partial/failed/stale 降级按第 7.6 与 10.6 节合同实现。
🗺️13 · 完整交付合同与验收

这套能力要作为一个完整经营闭环交付:数据接得上、公式算得准、卡片排得出、分析说得清、任务有人接、处理结果能回读。任何一环缺失,都不能把“生成了一张卡片”当成完成。

13.1 完整交付工作链路

从数据合同到经营闭环,一条链路完成

  1. 锁定 55 项 Metric Spec。Amazon 22 项、Shopify 33 项分别定义数据源、公式、窗口、分母、币种、市场、成熟度、覆盖率、阈值性质和不可用状态;metric_id 作为稳定运行键,页面使用准确业务名称,语义别名在 Metric Spec 中登记。
  2. 打通取数、日批和事件巡检。常规指标按市场本地时区每日计算;Listing、绩效、订单逾期和授权异常通过通知或高频轻量巡检触发。失败按维度隔离,不让单个数据源拖垮整页。
  3. 保存可追溯结果。store_daily_metrics 保存日度运行值,修订流水记录漂移,card_snapshots 固化不可变卡片证据,卡片状态表记录连续天数和展示历史。
  4. 用唯一算法生成当天卡片。先过可用性、成熟度、样本量和可比性闸门;候选指标各自计算 priority_vector,再按 issue_key 合并并以最高键成员确定 primary_metric_id 与 issue key;随后对合并后的 issue 排序,执行事件/官方项豁免、维度/正向配额和六卡上限。55 项都计算,不按指标批次拆开。
  5. 完成卡片与详情交互。30 项 Tier-1 使用 6 类可复用交互,Tier-2 进入展开区或摘要,Tier-3 提供结构背景;数据不足、无权限、不适用、处理中和全店平稳都有明确页面状态。
  6. 让卡片、Skill 和报告使用同一快照。默认解释 snapshot_id,不静默重拉;用户主动刷新时生成新快照并展示差异。事实、相关信号、待验证假设和动作分开呈现。
  7. 把建议变成任务。建立 action_tasks,指定负责人、截止时间、处理证据和验证指标;处理后先进入 verifying,验证通过才 done,验证失败进入 reopened。
  8. 上线前做端到端验收。从平台样本、公式边界、排序回放、快照一致性、双语文案、浏览器交互到任务回读逐项验证。模型解释只在五道校验、回归测试和灰度开关都可用时启用;否则用规则解释或只保留事实与动作。
  9. 运行中持续校准。根据真实漂移、误报、点击、认领、完成、恢复和重开数据调整内部阈值、卡位数、图表形态和解释规则。官方绩效阈值与历史快照不随校准被改写。
B 类时点指标无法回填从未观测过的历史。库存水位、实时在售状态、店铺评分等在累计到足够天数前只显示当前水位和数据积累进度;达到声明窗口后才展示趋势。这是数据事实,不用插值或缩短窗口掩盖。Sales & Traffic 的 Featured Offer 窗口占比属于可重拉的 A_ratio,不在此列。
13.2 验收标准
类别指标验收线说明
正确性
最高优先级
卡片数值与 Skill 报告数值一致率100%同一口径同一窗口下必须逐位一致。不一致即阻塞发布,无例外——这是第 1 章「数字只有一个来源」原则的验收方式
解释文案中出现输入快照之外的数字0 例事实层只做结构化槽位填充;解释层由数字白名单闸门校验
阈值判定与 defaults.md 一致率100%用构造样本覆盖每个阈值的上下边界与等值点
商家反馈的数值错误投诉率≤0.1%按周活跃店铺数计。超线即回滚相关指标
可用性页面卡片区首字节时间<200ms一次数据库 round-trip 读取 market_overview 与默认市场物化行,不含前端渲染
日批当日成功率(data_status = ok≥95%Amazon 因 Reports API 异步特性预计低于 Shopify,需分平台单独看
空屏率0%包含全链路失败、全店平稳、新店无数据三种极端情况。第 1 章「永不空屏」原则
使用价值
进入日常工作
卡片曝光 → 点击详情≥12%作为起始运营线;按卡位、指标与店铺类型分层观察,长期偏低时重新审视指标、文案和排序
弹窗打开 → 确认发送≥55%低于此值指向参数设计过于复杂或默认值不合理
发送 → Skill 完成并交付报告≥80%主要失败源是 pipeline 失败,与卡片系统本身无关但会被商家算在这个功能头上
7 日回访率≥40%与任务认领和完成数据一起判断功能是否进入商家日常工作流
处理闭环
真正完成
需处理卡片 → 建立或关联任务≥60%无任务的卡片只能证明被看见,不能证明有人处理
任务在 24 小时内认领≥80%按事件严重度分层,官方绩效和 Listing 事件单独看
任务按时完成率≥75%以 due_at 和 completed_at 计算,blocked 单列,不混入完成
处理后指标恢复率按指标设目标必须使用可比的 before/after snapshot;不同指标验证窗口不同
已完成任务重开率≤10%偏高说明完成定义过松、处理动作无效或验证窗口设置错误
模型归因专属闸门通过率 / 拦截率≥95% / ≤2%通过率过低说明 prompt 有问题;拦截率过高说明模型在越界
人工抽检合格率≥98%每周抽样,重点看「正确但无用」这类闸门无法识别的问题
13.3 运行校准与容量保护
对象固定合同允许怎样用运行数据调整
内部提醒阈值官方绩效阈值固定;内部提醒值配置化并标明来源。每 4–8 周查看触发频次、误报和任务恢复。某指标在绝大多数适用店铺长期告警时,调整内部阈值或适用条件,并递增版本;不改写历史快照。
首屏卡位桌面上限 6 张,移动端可单独配置;候选不足时不凑满。按位次看曝光、点击与任务建立率。第 5、6 位长期无使用价值时可收缩,官方绩效与强制事件仍优先。
Amazon 客户维度Amazon 没有可用于本设计客户分层的稳定买家身份数据,D4 不生成指标和空占位;只有存在同一商家的 Shopify 连接时才给跨店入口。商家反馈只影响说明文案和入口,不改变数据能力事实,也不用估算客户身份补空。
Shopify 成本覆盖observed_gross_margin 只在有销售时历史 COGS 的 cohort 内计算,并常显 cost_coverage;覆盖不足不外推整店毛利。折扣销售占比不依赖成本,照常计算。监控历史 COGS 覆盖率和补齐完成率;只改数据补齐入口和 coverage gate,不把当前 unitCost 静默回填历史。
18 条解释规则未命中且模型不可用时省略解释句,事实层与行动层照常工作。按真实候选组合、命中率与人工抽检价值扩充高频规则;每次修改版本化,不按条数凑覆盖。
主题合并与配额issue_group、merge_version、维度上限和正向卡上限全部外置;官方绩效与强制事件不受普通配额阻挡。根据候选集、卡位点击和被合并指标展开率调整主题粒度与限制,旧 display_run_snapshot 保持可回放。
万级店铺容量本地时区错峰、按数据源配额排队、长期零订单市场降频;高风险事件走轻量通知或巡检。超出配额时先保留官方绩效、订单和 Listing 事件,不减少指标定义,也不静默漏掉市场。容量测试持续记录平台配额、单作业耗时、失败率和活跃市场数分布,用它调整 freshness_policy 与低风险源刷新频率。
移动端布局卡片布局响应式,P4 结构分布型与 P5 漏斗型在窄屏使用纵向明细,不压成不可读小图。按真实访问端和阅读完成率调整展开形态与卡位数,数据口径不随端变化。
移动端趋势点只允许减少可见标签或抽稀展示点;必须保留头条对应末点和对比基准端点,不能改变 rolling_window_sum/ratio 结果。按真实屏宽、交互与阅读完成率决定抽稀密度,原始趋势缓冲和快照保持完整。
能调整的是内部阈值、卡位、刷新频率和表现形式;不能调整的是官方阈值、数据口径、历史快照和证据边界。所有运行调整都写版本和生效时间。
13.4 最终运行合同
项目运行合同
指标池规模55 项,Amazon 22 / Shopify 33。每项按能力表声明权限、报表、外部依赖和降级状态;缺权限或数据源时明确返回不可用,不伪造替代值
分平台策略两平台完全独立配置。跨平台视图可并列展示各自趋势与口径;只有 comparability_key 兼容且 Metric Spec 声明 cross_platform_comparable=true 时才计算归一化相对变化,其余不排名。
无变化处理越界但平稳仍展示;健康且平稳进入摘要;刚跨越阈值由 worsening_crossing 进入唯一 priority_key;数据缺失显示明确灰态
全店平稳Steady State 显示已检查且健康的指标数、数据待补数、不适用项和数据截止时间;只有真的存在机会信号时才给机会入口,不强行制造正向结论
卡片交互6 类原型覆盖 30 项 T1 指标;P1 19 项、P2 7 项,合计 26 / 30 = 86.7%。逐指标差异下沉到配置,按钮文案仍逐条维护。
迷你图形态图上的量必须等于卡片头条数字。量值按各自窗口滚动求和;比率按各自窗口汇总分子、分母后相除;时点值画日度点;长尾指标画成熟 cohort 周度点。点数由窗口与缓冲区决定,末端未成熟区用虚线表达。
点击详情参数弹窗,10 类参数按卡片选择性展示 + 可编辑提示词 + 结构化请求。默认解释同一 snapshot_id;用户选择刷新后分析才生成新快照。
洞察引擎分工事实层永远代码、归因层模型主生成 + 规则兜底、行动层永远代码查表(第 10 章)。行动层不交给模型——行动错了比说得不好听危险得多。模型只在归因层创造增量价值,且受五道闸门约束;模型不可用只是少一句解释,不是少一个下一步
这套系统的价值不在指标多,而在于每天只让商家看到真正需要处理的内容。55 项是后台计算范围,不是让页面全部展示。
📎14 · 官方口径与来源

本附录记录平台官方统计口径,并把官方绩效阈值与 StoreClaw 内部提醒值分开。14 天、20%、50 Sessions、80%、90 天等内部参数必须标明来源和适用条件,不能包装成平台规定。

平台页面用词官方统计口径在这份设计里要分清的事
AmazonOrdered Product SalesSales & Traffic 报表里的订购商品销售额。若改取 Orders API 的 OrderTotal 或已发货销售额,必须另写名称,并说明税费、运费和日期口径。
AmazonUnits Ordered窗口内订购的商品件数。它不是去重订单数,也不是订单项数。
AmazonTotal Order Items窗口内的订单项数。用它做每订单项销售额时,不能再把结果称为每张订单 AOV。
AmazonUnit Session Percentage订购件数相对 Sessions 的比例,即 Units Ordered ÷ Sessions。不是 Orders ÷ Sessions;要与 Seller Central 对账时直接用官方字段。
AmazonFeatured Offer商品详情页默认 Add to Cart 对应的报价。80% 只能作为内部提醒值;没有 Featured Offer 也不等于商品绝对不能销售。
AmazonFBA fulfillable当前可以拣货、打包和发出的 FBA 可售库存。按 marketplace、SKU/FNSKU 与履约项目核对;不能先假设整个账号只有一池共享库存。
AmazonFBA inboundWorking、Shipped、Receiving 等不同在途阶段。inbound > 0 只说明有货在流程中,不能证明数量够或能在断货前到仓。
AmazonPre-fulfillment Cancel Rate7 天内卖家自配送订单中,由卖家在确认发货前取消的比例;要求低于 2.5%。不含 FBA,也不能把买家或 Amazon 发起的取消一并放进分子。
AmazonLate Shipment Rate10 天或 30 天内,卖家自配送订单晚于预计发货日确认发货的比例;要求低于 4%。判断必须落到每张订单的 expected ship date,不能使用统一固定天数代替。
AmazonFBA Customer Returns运营中心接收的退回商品、件数、原因和处置结果。是商品退货事件,不是 Orders 状态里的现成“退货订单”;分母要和同一批已发货商品对齐。
AmazonFinancial transactions费用、退款、赔偿和调整等财务交易按财务事件时间返回。和下单日销售直接相除会错窗;当前简式只能叫估算净回款,不是利润。
ShopifyGross sales折扣和销售冲销前的商品销售额,不含税、运费、关税和费用。不是到账金额,且可能包含待付款、未付款和取消订单。
ShopifyDiscounts商品折扣及分摊到商品的订单折扣;运费折扣另算。Compare-at price 与售价的差不是报表折扣。
ShopifySales reversals退货、取消和订单修改等造成的销售冲销。不等于支付退款金额;2026-07 字段已与实际退货件数分开。
ShopifyNet salesGross sales − Discounts − Sales reversals。中文应写“净销售额”,不是已扣物流、支付、广告和成本的“净收入”。
ShopifyAverage order value(Gross sales − Discounts)÷ Orders,不扣下单后的调整。不能用 Net sales ÷ Orders 冒充 Shopify AOV。
ShopifyReturned quantity实际退回的商品件数。判断商品质量时应优先看这项及退货原因。
ShopifyReversed quantity退款、退货、取消或改单造成的冲销件数。不能全部叫退货件数。
ShopifyAvailable当前可以销售的库存状态。直接读取,不用 on_hand − committed 反推。
ShopifyCommitted已分配给已下单但尚未履约订单的库存。不等于逾期,也不能单独证明仓库拥堵。
ShopifyOn handAvailable、Committed、Reserved、Damaged、Safety stock、Quality control 等状态合计。不是可售库存。
ShopifyIncoming正在采购、调拨或入库流程中的库存。还不能卖,不能并入 Available。
ShopifyDays of inventory remaining期末库存 ÷ 最近 28 天平均日销量。14 天只是查询示例或内部提醒线,不是所有店统一补货标准。
ShopifyReturning customer rate依据客户此前完整订单历史区分回头客。不等于“当前窗口内下过两单的客户占比”。
ShopifyRFM按本店客户相对分布计算 R、F、M 五分位并分成 11 个客户组。StoreClaw 自算分组必须写清与 Shopify 的差别及实际执行对象。
ShopifyEmail marketing consent客户是否同意接收营销邮件。不是邮件送达率,也不代表可以忽略退信与地址有效性。
ShopifyAbandoned checkout客户留下联系方式但没有完成购买的结账;之后可能恢复成交。开放结账金额不是已损失或保证可追回的销售额。
ShopifyGross margin(Net sales − Cost)÷ Net sales。不能用当前 price 和当前 cost 代替历史实际毛利;成本覆盖不足时不能给整店红绿灯。
14.1 Amazon 官方来源
编号官方页面本文使用位置
A01Sales & Traffic Business ReportOrdered Product Sales、Units、Order Items、Sessions、Unit Session Percentage、Featured Offer 百分比。
A02FBA report typesFBA 库存、补货、All Orders、Customer Returns 报告及字段范围。
A03FBA Inventory APIMarketplace、SKU/FNSKU、可售与库存查询边界。
A04Amazon terminologyFeatured Offer 现行名称与含义。
A05Notification type valuesPricing Health、Featured Offer 与不同通知来源。
A06Pre-fulfillment Cancel Rate卖家自配送、卖家发起、7 天、低于 2.5%。
A07Late Shipment Rate卖家自配送、10/30 天、低于 4%。
A08Finances API FAQ财务交易、费用、退款、赔偿、调整与时间口径。
A09Finances v0 removal noticeFinances v0 于 2026-08-28 移除,改用 v2024-06-19。
A10Performance report typesGET_PROMOTION_PERFORMANCE_REPORT 与 GET_COUPON_PERFORMANCE_REPORT;可用性受 seller/vendor、Brand Registry、角色、市场资格及报表刷新/请求限制约束。
14.2 Shopify 官方来源
编号官方页面本文使用位置
S01ShopifyQL overviewShopifyQL 能力范围。
S02ShopifyQL schemas销售、客户、库存、履约等官方数据域。
S03shopifyqlQueryread_reports 权限。
S04Sessions and behaviorSessions、漏斗与转化率。
S05Sales schemaGross sales、Net sales、AOV、Sales reversals、毛利。
S06Sales reports销售报表日期、订单与销售冲销记录方式。
S07Finance reports净销售额、退款和财务报表。
S08Sales discrepancies退货、退款和报表数字差异。
S09Analytics fieldsAOV 等报表字段定义。
S10Sales reversals field change2026-07 销售冲销字段变化。
S11Returns schema退货商品、原因、状态、日期和实际退货件数。
S12RefundLineItemRestockTypeNO_RESTOCK 的准确含义。
S13Refund and cancel orders退款、退货与取消订单操作。
S14Inventory quantity statesAvailable、Committed、On hand 等状态关系。
S15Inventory states商家端库存状态说明。
S16Inventory reports库存剩余天数、Sell-through 与库存价值。
S17Inventory schema库存剩余天数与库存查询。
S18Inventory by location按仓库存与缺货。
S19Order routing多仓履约与订单路由。
S20Inventory transfers调拨与在途库存。
S21Customer reports新老客、回头客率、Cohort 与 RFM。
S22Customers schema客户订单史、累计消费、RFM 和订阅字段。
S23Managing customers客户档案与游客结账。
S24Email marketing consent营销同意状态。
S25Abandoned checkouts弃单定义、恢复与限制。
S26Profit reports成本、毛利、毛利率和历史成本限制。
S27Profitability schema订单利润分析字段。
S28InventoryItemUnit cost 与读取权限。
S29Access scopes订单历史范围和 read_all_orders
S30Protected customer data姓名、地址、电话和邮箱的访问要求。
S31Order object取消时间与取消原因。
S32Fulfillment timeFulfill by date 与商家承诺时间。
S33Fulfillments schema履约、发货和送达时长。
S34Bing Webmaster API已验证站点的排名、流量、关键词、抓取信息,以及 URL/Sitemap 提交能力。
14.3 页面证据标注合同
常显字段页面合同
来源与证据状态每张卡常显 source_type(platform_fact / storeclaw_derived / merchant_target / internal_threshold)、availability、source_as_of、coverage、market/currency 与 order/SKU/cohort scope。
弱证据与强动作estimated / partial / stale 和“待核对”不得伪装成确定结论;coverage/freshness gate 未通过时禁用补货、清仓、调价、召回等强动作。
阈值来源“官方绩效阈值”与“StoreClaw 内部提醒线/商家目标”使用不同徽标、文案和来源链接,任何内部线不得借用官方样式。