手机分期 SKU 价格数据采集与导入 — 迭代需求

手机分期 SKU 价格数据分两类处理:Android 新机继续使用 Jumia 数据;二手 iPhone 使用 jiji.ng 数据跟踪。采集数据不直接改正式 SKU,先按版本生成线下导入文件,运营确认后导入后台;所有 SKU 价格更新必须记录 log。

1. 目标

  • Android 新机:从 Jumia 采集新机价格、型号、图片,用于维护 Android 新机 SKU。
  • 二手 iPhone:从 jiji.ng 采集 iPhone 11 起的二手手机信息,并按标准型号和规格聚合价格。
  • 后台不直接接入爬虫结果;爬虫结果通过线下导入文件进入后台。
  • SKU 价格每次更新都必须可追溯到导入批次、来源数据和操作人。

2. 数据来源与处理方式

品类来源采集对象处理方式
Android 新机jumia.ng手机分期 SKU 库内 Android 新机型号采集商品标题、型号、价格、图片,匹配到现有 Android SKU
二手 iPhonejiji.ngiPhone 11 及以上二手机采集标题、价格、图片、链接,对标题解析并聚合到标准 iPhone 型号和规格

不在 SKU 库或标准型号清单内的数据,只保留在采集明细中,不自动创建 SKU。

3. 二手 iPhone 聚合规则

jiji.ng 采集到的标题必须先解析为标准型号和规格,再做价格汇总。

3.1 标准型号

支持 iPhone 11 起的标准型号,包括:

  • iPhone 11 / 11 Pro / 11 Pro Max
  • iPhone 12 / 12 mini / 12 Pro / 12 Pro Max
  • iPhone 13 / 13 mini / 13 Pro / 13 Pro Max
  • iPhone 14 / 14 Plus / 14 Pro / 14 Pro Max
  • iPhone 15 / 15 Plus / 15 Pro / 15 Pro Max
  • iPhone 16 及以上按标准型号清单扩展

标题无法明确解析到标准型号的记录,标记为 UNMATCHED_MODEL,不进入聚合价格。

3.2 规格

规格至少按存储容量区分,例如 64GB128GB256GB512GB1TB

标题无法明确解析容量的记录,标记为 UNMATCHED_SPEC,不进入机型规格聚合,但保留在明细中供人工复核。

3.3 汇总指标

每个“标准型号 + 规格”输出一行汇总数据:

字段说明
标准型号iPhone 13 Pro Max
规格256GB
样本数参与统计的有效明细数量
平均值有效价格的平均值
最小值有效价格的最小值
中位数有效价格的中位数
最大值有效价格的最大值
数据来源固定为 jiji.ng
采集版本本次采集批次号

价格无法解析、价格为 0、明显非 NGN 价格、重复链接、非 iPhone 11 起机型的记录不参与汇总。

4. 明细输出

每次采集必须输出明细文件,便于运营核查。

字段Android 新机二手 iPhone
采集版本必填必填
来源站点必填必填
来源 URL必填必填
原始标题必填必填
标准型号必填必填;无法识别则标记异常
规格可选必填;无法识别则标记异常
原始价格必填必填
标准价格必填必填
图片 URL必填必填
异常标记可选可选

5. 线下导入后台

爬虫结果不直接写后台数据库。每次采集完成后生成线下导入文件,由运营确认后在后台导入。

导入文件分两类:

文件用途
Android 新机 SKU 导入文件用于更新 Android 新机 SKU 的价格、图片等字段
二手 iPhone 汇总导入文件用于导入各标准型号、规格下的平均值、最小值、中位数、最大值

后台导入时必须校验:

  • 导入批次号不能为空且不能重复导入。
  • SKU 或标准型号必须存在;不存在则整行失败。
  • 价格字段必须为合法 NGN 金额。
  • 二手 iPhone 汇总行必须包含平均值、最小值、中位数、最大值和样本数。
  • 同一批次部分行失败时,成功行和失败行要分别展示,失败原因必须可下载。

6. 存量数据处理

采用“匹配存量、生成差异、确认后覆盖”的方案,不允许导入文件直接新增正式 SKU 或静默覆盖存量价格。

6.1 匹配规则

数据类型存量匹配键处理结果
Android 新机SKU ID 优先;无 SKU ID 时使用品牌 + 标准型号 + 规格匹配成功后进入差异预览;匹配失败则整行失败
二手 iPhone 汇总标准型号 + 规格匹配成功后进入差异预览;匹配失败则整行失败

导入时不自动创建 SKU、不自动创建标准型号、不自动创建规格。缺失的 SKU、型号或规格必须先由运营在正式 SKU 管理中维护,再重新导入。

6.2 差异预览

导入文件校验通过后,后台先生成差异预览,不立即更新存量数据。

差异预览必须展示:

  • 当前 SKU / 型号规格;
  • 存量价格;
  • 本次导入价格;
  • 价格变化金额;
  • 价格变化比例;
  • 存量图片与本次图片;
  • 数据来源和采集版本。

价格未变化的行标记为“无变化”,不写正式价格表,但需要记录本次导入明细结果。

6.3 更新规则

  • 只有差异预览中状态为“可更新”的行,才允许确认导入。
  • 确认导入后,只覆盖本次导入文件中明确提供的字段;导入文件未提供的字段保持存量值不变。
  • Android 新机可更新 SKU 价格和图片。
  • 二手 iPhone 只更新对应标准型号、规格的价格参考数据;不直接改 Android SKU,不跨型号更新。
  • 任一行更新失败时,该行保持原存量数据不变,并记录失败原因。
  • 同一批次重复导入时,后台必须拦截,不允许重复覆盖。

6.4 存量快照

每次确认导入前,后台必须保存受影响记录的更新前快照。快照用于价格 log 展示和必要时回查,不依赖爬虫文件重新计算。

7. SKU 价格更新 Log

所有 SKU 价格更新必须记录 log。无 log 的价格更新视为不合格。

log 至少包含:

字段说明
更新批次号对应线下导入批次
SKU ID / 标准型号规格被更新对象
更新前价格原价格
更新后价格新价格
价格来源JUMIA_ANDROID_NEWJIJI_IPHONE_USED
来源版本采集版本号
操作人导入或确认人员
操作时间更新发生时间
更新结果成功 / 失败
失败原因更新失败时必填

价格 log 必须可在后台按 SKU、标准型号、批次号、来源和时间查询。

8. 异常处理

  • 采集失败、空结果、验证码页、页面结构变化时,只生成失败批次,不生成可导入更新文件。
  • Android 新机无法匹配现有 SKU 时,该行不导入正式 SKU。
  • 二手 iPhone 无法识别标准型号或规格时,该行只保留在明细,不进入汇总。
  • 同一型号规格样本数低于后台配置的最小样本数时,不允许导入该汇总价格。
  • 导入失败不会覆盖原 SKU 价格。

9. 验收标准

  • Android 新机价格数据来自 Jumia,二手 iPhone 价格数据来自 jiji.ng。
  • 二手 iPhone 能按标题解析到标准型号和规格,并输出平均值、最小值、中位数、最大值和明细。
  • 爬虫结果通过线下导入文件进入后台,不直接更新正式 SKU。
  • 后台能校验导入批次、SKU / 标准型号、价格和二手 iPhone 汇总字段。
  • 导入时先匹配存量数据并生成差异预览,未匹配行不会新增或覆盖正式 SKU。
  • 价格无变化的行不更新正式价格表;价格变化的行确认后才覆盖存量价格。
  • 任意 SKU 价格更新都有 log,可查更新前后价格、来源版本、操作人和操作时间。
  • 采集异常、解析异常、导入异常不会覆盖已有 SKU 价格。