---
name: merchant-catalog-preflight
description: 对商家主动提供的已成形商品目录做发布前字段与行级一致性检查，识别阻断项、警告和整表替换风险；不负责列映射、写回、上传或发布。
display_name: "Kiwi 商品目录发布预检"
display_name_en: "Kiwi Product Catalog Publish Preflight"
description_zh: "预检商家提供的完整商品目录字段与行级一致性，提示阻断项和整表替换影响。"
description_en: "Preflight a merchant-provided complete catalog for field and row consistency, blockers, and full-replacement impact."
category: writing
version: 0.1.0
author: harrylabsj
---

# 商品目录发布预检

审核商家提供的拟发布完整目录或导出表，找出会造成拒绝、错误公开或下架影响的问题。此技能针对已经整理好的目录做检查，不替商家映射原始表格、不生成或上传导入文件，也不发布商品。

## 检查范围

按 Kiwi 工作台当前商品表字段检查每行：
- 必填：sku、title、currency、unit、price、valid_until。
- price 必须是明确的有限非负数，并且可无损表示到两位小数；0 是合法值，不因数值为 0 本身判阻断。若精度无法无损表示（例如 1.001），标为阻断并请商家修正，绝不自行四舍五入。币种必须是明确的三字母代码或已识别中文币种。
- stock 若提供，必须是非负整数；未提供表示库存未知，不能改成 0。
- updated_at 若提供，应能解析为日期或 ISO 时间；缺少时注明“原商品更新时间未提供”。导入系统可能写入导入时刻，但那不是原商品更新时间或来源事实观察时间。不要仅因该可选字段缺失而称平台拒绝。valid_until 必须能解析为日期，已过期行标为阻断，不用默认期限替换。
- trade_platform 与 platform_product_id 必须同时提供或同时留空。平台仅支持 jd、taobao、tmall；ID 必须是文本形式的 ASCII 正整数，不能是公式、科学计数、URL、前导零或有空格的值。
- 同一 SKU 多次出现时逐行报告并标阻断，不自行合并或选择保留行。
- 检查是否混入底价、成本、进价等私有列；在报告中指出列名并要求移出，不复制数值。

## 判定

每行分别标为“可继续人工核对”“阻断”或“警告”。缺必填字段、负值/非有限数/无法无损表示为两位小数的价格、非法日期/币种、重复 SKU、成对平台字段不完整或非法平台 ID 均为阻断项。零价符合非负价格规则；若业务意图不清，可列商家确认提醒，但不能把零价本身报成平台校验错误。库存未提供、原商品更新时间缺少或部分可选字段空缺是信息限制，不能擅自补值，也不能概括成平台一律拒绝缺少可选字段。不能从标题或供货说明推断币种、单位、库存、SKU 或有效期。

## 输出格式

**目录范围：** 文件/版本、行数、导出时间（未提供则注明）。  
**整表影响提醒：** Kiwi 导入会以整表替换；本次材料是否明确包含全部仍在售 SKU：是 / 否 / 未知。

| 行号 | SKU | 状态 | 问题字段 | 问题说明 | 商家需要做什么 |
| --- | --- | --- | --- | --- | --- |

**汇总：** 阻断行数、警告行数、重复 SKU、疑似私有列。  
**结论：** 仅表示材料按上述规则是否具备进入商家人工预览的条件，不代表已通过平台校验、已发布或已上架。

## 正反例

SKU B-2 有价格 10 但币种栏空白：标阻断，请商家补币种；不默认 CNY。价格为 0 可按非负值继续人工核对，不因零本身阻断；价格 1.001 无法无损表示到分，标阻断并请商家给出可验证的精确值，不四舍五入。库存空白：标未知库存，可作为信息警告；不将空白改成 0。updated_at 空白：标原商品更新时间未提供；导入时系统时间不能替代该源事实。平台为 taobao 但 ID 是完整 URL：标阻断，要求商家提供纯文本商品 ID。
