JD-API-CONNECTION-ASSESSMENT-2026-08-15.md 34 KB

京东店铺 API 连接与 SaaS-VOC 能力深度评估

评估时间:2026-08-15,商品详情补充调研:2026-08-16
评估对象:已完成商家授权的 JD 店铺连接
评估范围:OAuth/token 状态、SP-API 商品/SKU/库存、订单/售后/评价/数据能力、与现有 SaaS-VOC 模型的覆盖关系

1. 结论先行

当前连接已经从“只有 OAuth、无法验证业务权限”进入“商品域真实可用”的阶段:

  • Parse 中已存在 1 条生产环境 JD 授权记录,包含店铺 UID、access token、refresh token 和过期时间;凭证本身未写入本报告。
  • 新版 SP-API 已真实返回本店商品数据:商品总数 614,商品列表、SKU 列表、库存查询均返回 success: true
  • 当前已经可以支撑“本店商品主数据 + SKU 主数据 + 库存状态”的第一阶段同步。
  • 商品详情文档显示,详情页可以继续扩展到状态、价格、属性、媒体、物流和售后承诺,但详情接口本身不提供订单经营趋势或用户 VOC 证据。
  • 订单列表和售后服务单仍受京东侧云鼎调用前置条件影响;这不是代码签名错误,也不能直接解释为 token 无效。
  • 客服、承运商等接口在前次验证中返回“应用无该 API 调用权限”;报表接口仍需按接口专用签名/请求体规则复测。
  • 评价、流量、GMV、退款原因、竞品数据尚未形成真实成功样本,因此当前不能把现有本地快照中的这些字段当作 JD 实时能力。

综合判断:商品/SKU/库存能力可进入工程化接入;订单/售后是下一阶段的外部开通项;评价和经营报表是 SaaS-VOC 价值闭环的关键风险项。

2. 凭证与连接状态

2.1 已验证状态

授权记录通过 Parse EcomAuth 查询确认:

项目 结果
平台 jd
环境 production
店铺标识 已保存 UID,报告不展开具体值
access token 存在,长度 36;不记录原文
refresh token 存在,长度 36;不记录原文
access token 有效期 约 1 年,当前记录到 2027-08-15
refresh 刷新阈值 2026-09-14 前后进入刷新窗口
存储位置 Parse EcomAuth,服务端读取

2.2 现有模块边界

当前 JD 模块已具备:

  • 生成 OAuth 授权链接和随机 state
  • 处理回调 code,向京东换取 token;
  • 将授权信息保存到 Parse;
  • 按店铺 UID 查询最新授权记录;
  • access token/refresh token 临近过期时刷新;
  • 提供健康检查、token 状态和取 token 路由。

当前 JD 模块尚未具备:

  • 通用 SP-API 请求客户端;
  • 服务端签名生成和参数规范化;
  • 商品、SKU、库存、订单、售后、评价、报表 API 封装;
  • 增量游标、分页断点、幂等写入和失败重试;
  • 将 JD 原始响应转换为 DomesticDataset 的同步任务。

2.3 凭证安全结论

E:\workspace\server\future-server\fmode-server\modules\voc-ecom-jd-api\src\config.ts 当前存在 AppKey/AppSecret 的硬编码 fallback。即使这是为了模块自包含,构建产物也可能被读取或反编译,生产环境应改为:

  1. AppKey 可作为公开配置或服务端配置保存;
  2. AppSecret 只通过服务端环境变量、密钥管理服务或部署平台 secret 注入;
  3. 前端和浏览器 URL 永远不出现 AppSecret;
  4. get-access-token 不应向客户浏览器返回完整 access token;
  5. 日志只记录 shop UID、接口名、HTTP 状态、京东 request_id 和脱敏错误码。

3. 官方调用与签名规则

本次使用新版 SP-API 入口:

https://api-cn.jd.com/rest

官方文档:

当前已验证的 MD5 规则:

  1. 收集 X-JOS-Access-TokenX-JOS-App-KeyX-JOS-Timestamp、路径参数、查询参数和请求体参数;
  2. 按参数名 ASCII 升序排列;
  3. 拼接为 key + value,不插入 &
  4. 计算 MD5(AppSecret + 拼接结果 + AppSecret)
  5. 将摘要转成大写;
  6. 时间戳使用毫秒;
  7. X-JOS-Request-Identity: vender 是相关接口要求的请求头,但不加入成功请求的签名参数串。

工程上必须把签名放在后端统一客户端中,禁止由 Angular 直接拼签名。

4. 真实接口测试结果

4.1 已通过的接口

数据域 接口 测试参数摘要 结果 能力判断
商品 GET /sp-product/v0/products scopeSet=productName、分页、有效商品状态 HTTP 200,success: true,总数 614 当前店铺商品列表可读
SKU GET /sp-product/v0/skus 以商品 ID 查询,返回 SKU ID、商品 ID、名称、状态 HTTP 200,success: true 当前商品的 SKU 主数据可读
库存 GET /sp-product/v0/sku-stocks 以 SKU ID 查询 HTTP 200,success: true 当前 SKU 库存可读

代表性样本(仅业务 ID 和数量,不包含凭证):

  • 商品 ID:10026650610613
  • SKU ID:10116518781681
  • 库存样本:stockNum=1000warehouseId=0orderBookingNum=0unpaidBookingNum=0

这三个成功结果说明:AppKey、签名、access token、接口路径和店铺授权关系已经至少在商品域闭环成立。之前出现的 access token 为空错误来自跨进程环境变量未重新读取 Parse,不是当前授权失效;后续探测必须在同一进程内先读取最新授权记录再发请求。

4.2 受云鼎或权限前置条件影响的接口

数据域 接口/范围 既有结果 解释
订单 GET /sp-order/v0/orders 99904030005 需要从云鼎平台发起调用,未进入订单业务数据层
订单 GET /sp-order/v0/orders/{orderId} 文档标记需授权;暂无真实成功样本 需要订单列表先拿到真实订单号,再验证详情
售后 售后服务单列表 99904030005 同样受云鼎调用前置条件影响
客服 客服列表相关接口 99904030008 当前应用没有该 API 调用权限
物流 承运商列表相关接口 99904030008 当前应用没有该 API 调用权限
报表 sp-data 报表定义探测 99904000013 需要按该接口的专用签名/请求体规则复测,不能据此判定无权限

这些错误需要分开处理:

  • 99904030005 是调用平台/接入前置条件,不是简单的 token 续期问题;
  • 99904030008 是 API 权限包问题;
  • 99904000013 目前只能归类为请求签名或报表接口格式待复核;
  • 只有返回业务响应并携带真实店铺数据,才能认定某数据域已真正可用。

4.3 尚未形成成功样本的能力

数据域 文档或已知入口 当前结论
商品详情 getProduct 文档存在,需用有效商品 ID 做字段级回归
商品评价 旧版 JOS jingdong.pop.PopCommentJsfService.getVenderCommentsForJos 等评价方法 只有方法线索,没有当前授权下的成功响应
流量/转化 新版数据 API、报表 API 需要 schema、数据权限和时间粒度验证
退款原因 售后服务单详情/日志 受售后接口前置条件影响
竞品数据 商品/市场/搜索类数据 本店授权不等于竞品数据授权,不能推导为可用

5. 商品详情深度研究

5.1 官方接口边界

官方商品查询场景把 SPU 和 SKU 分开定义:SPU 是商品信息聚合单位,SKU 是物理上不可分割的最小库存单元。当前商品详情接口把两者合并到一次调用中:

GET /sp-product/v0/products/{productId}

官方文档:

已确认的请求约束:

项目 规则
productId 路径参数,int64,即京东商品 ID/wareId
request 查询对象;至少应明确业务场景
scene pop 表示 POP,vc 表示 VC/自营供应商场景
categoryId 可选末级类目 ID;传入末级类目后才返回搜索推荐图
spuSkuApplyGray 可选自营 SPU 融合灰度开关
授权 文档标记“需用户授权”
数据维度 店铺范围、供应商简码范围;本店应使用 X-JOS-Request-Identity: vender
服务端时间 X-JOS-Timestamp 精确到毫秒,服务端允许约 10 分钟误差

官方商品查询方案还说明:

  • 商品列表支持商品状态、店内分类等筛选,最多支持查询 10 万条,应采用分页同步;
  • SKU 列表可按 SKU、上下架状态、库存等维度检索,但部分字段只支持 POP;
  • wareId 是京东商品 ID,一个 wareId 可以有多个 skuId;一个 skuId 只属于一个 wareId;
  • getProduct 的详情结果不应替代准确库存查询,详情里的 stockNum 与京麦商品列表口径一致,精确库存仍应使用 listSkuStocks
  • 非盖亚商品可能出现京麦展示的子 SKU 与接口 skuList 结构不同的情况,接入时必须保留平台原始 SKU 关系,不按页面视觉层级猜测 SKU 数量。

5.2 getProduct 可提供的数据

下面按“可以展示/可以分析/应限制展示”拆分官方响应字段。

A. 商品身份与状态

字段组 典型字段 可形成的页面能力
标识 productIditemNumwareIdmodelupcCode 商品 ID、商品编号、型号、条码检索和去重
商品有效性 yn 有效/已删除状态
上下架状态 productStatusproductStatusNewsaleStatesaleStateName 在售、下架、审核中、违规下架等状态标签
状态时间 onlineTimeofflineTime、SKU onShelfTime 上架、下架时间线和生命周期节点
SKU 状态 skuEnableStatusvalidskuStatus.onOffShelfStatus SKU 启用、停用、无效、上下架状态

注意:自营商品的 product 维度状态和 createdTime/modifiedTime 有缺失规则;不能用 POP 状态码的含义直接解释自营数据。状态应同时保存原始码和标准化标签。

B. 标题、品牌与类目

字段组 典型字段 页面用途
标题 productTitle.titleproductNames 商品卡片、详情页标题、搜索
推荐词 recommendWords 商品卖点候选词、内容提示,不直接等同于人工卖点
品牌 brandInfo.brandId、中文/英文品牌名、标题品牌名 品牌筛选、品牌归属校验
类目 一级/二级/三级/末级 ID 与名称 类目树、类目分析、类目覆盖质量
结构关系 currencySpuIdproductIdskuId SPU/SKU 关系和变体组展示

当前系统的 category1/2/3 可以直接承接类目名称;但商品详情接口对部分类目名称标注了业务模式限制,应以实际返回字段为准,不能在空字段时从 ID 反推名称。

C. 规格、属性和变体

字段组 典型字段 页面用途
基础尺寸 lengthwidthheightweight 规格档案、物流包装信息
商品属性 goodsAttrInfosattrNamesattrValuesunit 规格表、属性筛选、产品定义
销售属性 saleAttrsattrKeyattrValues、颜色标识 颜色/容量/型号等变体选择
自定义属性 customAttrInfoscustomAttrValues 店铺自定义规格和产品定义
SKU 列表 skuIdskuNamesouterId、UPC、SKU 属性、SKU 状态 SKU 明细表、变体库存和状态
套装关系 suiteSkus 组合商品的子 SKU 和数量

当前 DomesticProductProfile.colorspecification 是两个字符串,承载不了多属性、多 SKU 和属性值 ID。生产模型应保留结构化属性数组,字符串只作为兼容展示字段。

D. 价格与销售条件

字段组 典型字段 可用场景 权限/展示注意
公开价格 marketPricejdPrice 商品档案当前挂牌价 不等于历史成交均价
特殊价格 agreementPrice、优惠券价、限时价、参考价 价格构成和活动上下文 需按店铺业务身份确认
划线价 lineationPrice、类型、应用原因 价格合规提示 不直接当作实际售价
价格范围 minSalePricemaxSalePrice、错误提示 多 SKU 价格区间 应以 SKU 维度展示
成本/协议 costPrice、协议价 内部经营或权限用户 不应默认展示给所有角色

DomesticProductMarketSnapshot.currentPrice 当前用于竞品市场快照;本店 jdPrice 不应写入竞品 market 对象。DomesticProduct.summary.averageUnitPrice 也必须继续来自订单成交金额/成交件数,不能拿挂牌价代替。

E. 描述、图片、视频与内容资产

字段组 典型字段 页面用途
商品描述 productDetailDesc.desc、移动端描述、小程序描述 商品详情内容预览、内容质量检查
包装说明 packListing、温馨提示、适用车型说明 购买前信息完整度、售后风险提示
主图 mainImages.imageInfoList、主图标识、排序 商品详情首图和图片画廊
衍生图片 长图、透明图、白底图、规格图、搜索推荐图 视觉素材检查和渠道适配
视频 视频 ID、封面、标题、播放地址、时长、状态 商品内容资产完整度
素材状态 图片审核状态、审核描述、规格图标记 素材质量和审核问题追踪

当前系统多数商品只有 detail.imageUrl,详情接口能够把它扩展成图片画廊和内容质量模块。图片与视频应保存 URL、排序、状态和 collectedAt,避免每次详情页打开时直接依赖京东实时接口。

F. 售后、物流和履约属性

字段组 典型字段 页面用途
售后承诺 保修、保质期、服务、服务描述、售后说明 商品详情页售后承诺、风险提示
配送信息 transportIdpromiseId、配送方式、发货地、仓库 配送能力和履约上下文
包装信息 包装清单、包装规格、箱规、单位 规格档案和履约准备
仓库信息 仓库 ID、店铺 ID、仓库位置、状态 库存按仓库拆分
合作类型 colType、仓库状态 SOP/FBP/FCS 等履约口径
特殊服务 特殊服务列表、服务编码 服务标签和场景识别

jdExpresslocalDelivery 不是 getProduct 中可以直接一一对应的统一布尔字段。除非有明确的业务字段映射,否则页面应显示“未标记/未知”,不要用配送方式字符串推断即时零售或京东配送。

G. 税务、质检和运营扩展

接口还可能返回税务信息、质检信息、运营人员、活动、质检文件、商品健康或业务扩展字段。它们适合放入权限控制后的“商品合规/商品管理”页,不适合直接进入公开的 VOC 快照:

  • 成本价、协议价、税务和结算字段需要角色权限;
  • 运营人员 PIN、地址列表、仓库位置等字段属于敏感或内部字段;
  • 质检文件、资质文件和活动协议应保留引用与状态,文件内容单独受控;
  • 商品详情正文可以进入 AI 分析上下文,但要保留原始来源和采集时间,避免模型把描述文案当成用户评价。

5.3 本次真实验证状态

已真实成功的商品域接口仍是:商品列表 614 个、SKU 列表、准确库存查询。getProduct 的官方文档字段和请求规则已完成补充调研,但本次补充复测在读取 Parse 授权记录时收到 unauthorized,因此没有把商品详情接口标记为“真实成功”。

这两个问题应分开:

  1. 先恢复服务端对 EcomAuth 的读取凭证,确认不是 Parse MasterKey/部署配置变化;
  2. 再用已验证商品 ID 调用 scene=pop 的详情接口;
  3. 记录真实返回字段覆盖率,尤其是 productInfoskuList、图片、价格、详情描述、类目和物流字段;
  4. 对同一商品分别验证 scene=pop 和错误场景,确认错误码归因;
  5. 将准确库存继续以 listSkuStocks 作为唯一库存来源。

6. 与现有 SaaS-VOC 系统的字段映射

5.1 可以直接落地的部分

现有模型位于 src/app/core/models/domestic.models.ts

现有字段 JD 来源 接入判断
DomesticProduct.productId 商品 ID 直接映射
productKey 建议生成 jd:{productId} 直接生成,保持现有关系表稳定
title 商品名称/详情名称 商品列表或详情映射
brandcategory1/2/3 商品详情/类目信息 需商品详情接口确认字段
model 商品型号或商家型号 需从详情/SKU 属性抽取
detail.skuStatus SKU 状态 SKU 列表映射
detail.shopIdsellerId 店铺 UID、商家 UID 授权记录和接口响应映射
库存状态 stockNum、预占库存、未付款预占 建议新增库存快照,不塞进销售汇总
detail.collectedAt 同步时间 由同步任务统一生成

5.2 不能由商品接口直接填充的部分

现有 DomesticMetricSummary 需要:

gmv、销量、订单数、成交客户、曝光、点击、访客、加购、退款金额、退款件数、退款订单数、转化率等。

商品/SKU/库存接口不能提供这些经营指标。需要分别依赖:

  • 订单列表/详情:订单数、商品件数、订单金额、订单状态、支付/履约时间;
  • 售后服务单:退款金额、售后类型、售后原因、售后状态;
  • 数据/报表 API:曝光、点击、访客、加购及稳定的日粒度经营指标;
  • 评价 API:评分、评价正文、评价时间和 VOC 样本;
  • 竞品或市场数据源:竞品价格、销量、评价和市场排名。

在这些接口未通过前,应把缺失指标保持为 null 或明确的“未接入”,不要填 0。填 0 会让页面把“没有采集到”误判为“真实为零”。

5.3 与现有页面的对应关系

现有 DomesticDatasetServiceDomesticAnalyticsAdapterService 已经围绕以下页面场景工作:

  • 经营总览:GMV、销量、订单、访客、退款和趋势;
  • 商品运营:本品商品、SKU、状态、价格和销量趋势;
  • 退款风险:退款金额占比、退款订单数、售后归因;
  • VOC 分析:本品/竞品评价拆分、评分、正文和情绪分析;
  • 竞品映射:本品与竞品商品关系;
  • 数据质量:商品、评论、映射和采集完整度。

当前 JD API 只能立即支撑“商品运营”的基础层,以及库存风险的新增看板。要支撑完整经营总览和退款风险,需要先解决订单/售后;要支撑 VOC 结论,需要先解决评价正文;要支撑竞品页面,需要另行接入市场数据源。

7. 页面能力与可展示数据

7.1 现有页面的真实消费关系

页面 当前依赖 接入商品详情后可展示 仍需其他数据域
商品经营详情 DomesticProduct.summarytrend、基础档案 标题、图片、品牌、型号、类目、状态、价格、SKU 数量、规格、图片/视频、商品描述、库存摘要、详情采集时间 订单/报表提供 GMV、销量、访客、转化、退款和日趋势;评价 API 提供评论样本
商品运营总览 商品汇总、日指标、评论范围、类目聚合 商品数、有效/下架/审核状态、类目覆盖、库存风险和商品信息完整度 订单/报表提供经营排行和趋势;评价提供本品 VOC 覆盖
品类分析 商品类目 + summary 聚合 类目商品数、状态分布、属性完整度、库存覆盖、类目详情链接 订单/报表提供类目 GMV、成交、访客和退款
竞品详情 detailmarketreviews、本品关系 该页面的商品档案、图片、规格、卖点、售后和履约字段可复用 JD 本店授权不能提供竞品市场快照;评价需要评价 API;竞品价格/销量来自外部市场采集
VOC 详情/评价工作台 reviews + 商品上下文 标题、类目、型号、商品描述、属性可作为 AI 分析上下文 评价列表、正文、星级、时间是核心输入,商品详情本身不产生 VOC 结论
产品开发 商品、类目、趋势、竞品关系、评价 属性缺口、规格结构、图片/视频资产、售后承诺、商品定义素材 趋势需要经营指标;需求挖掘需要本品评价;竞品对标需要市场数据
数据中心 来源、同步任务、质量规则、指标字典 商品主数据同步、详情字段覆盖率、SKU/库存同步任务、图片和状态异常 订单、售后、评价、报表、结算仍需各自连接器

7.2 商品经营详情页建议升级

当前 src/modules/domestic-voc/product-operating-detail.component.ts 的页面已经有四类经营指标、趋势图、商品档案、流量漏斗和数据口径,但档案只展示商品 ID、型号、品牌、平台、二/三级类目、竞品关系和评论样本。接入 getProduct 后建议增加以下四个层次:

顶部商品身份区

  • 主图和图片切换;
  • 商品标题、商品 ID、商品编号、型号、品牌;
  • 在售/下架/审核中/删除状态;
  • 当前 JD 价和 SKU 价格区间;
  • SKU 数量、有效 SKU 数量、库存风险标签;
  • 最后上架时间和详情采集时间。

商品内容区

  • 商品卖点候选词和详情描述摘要;
  • 类目 ID/名称;
  • 结构化属性表,显示属性名、属性值、单位和是否必填;
  • 主图、白底图、规格图、视频的数量、审核状态和排序;
  • 包装清单、温馨提示、适用车型/场景说明。

SKU 与库存区

  • SKU ID、SKU 名称、外部 SKU、销售属性;
  • SKU 启用/上下架状态;
  • 当前准确库存、订单预占、未付款预占、仓库 ID;
  • 库存更新时间和数据源;
  • 按 SKU 的价格、库存和状态筛选。

经营与 VOC 区

  • 已验证订单/报表数据才显示 GMV、销量、订单、访客和转化;
  • 已验证售后数据才显示退款金额、退款件数和退款原因;
  • 已验证评价数据才显示本品评价数、评分分布、正文和 AI 主题;
  • 商品详情文案和用户评价分开标注来源,避免把商品宣传语当作用户声音。

7.3 当前页面能达到的能力级别

在只使用已经验证的商品列表、SKU 和库存接口时,系统可上线:

  • 本店商品目录和商品搜索;
  • SPU/SKU 关系查看;
  • 商品上下架/有效性状态查看;
  • SKU 维度库存监控和库存预占展示;
  • 商品类目、品牌、型号和规格档案;
  • 商品主图、详情图、视频和详情描述的完整度检查;
  • 商品信息质量和采集新鲜度检查;
  • 商品运营详情页的“商品资产”部分。

在订单、售后、评价和报表都打通后,才能完整上线:

  • 商品日 GMV、销量、订单和转化趋势;
  • 退款风险和售后原因归因;
  • 本品评价健康度、主题、情绪和痛点;
  • 商品内容/规格/履约属性与用户评价的关联分析;
  • 产品迭代建议和生命周期复盘。

7.4 当前模型需要调整的地方

现有 DomesticProductProfile 只有图片、颜色、规格、产地、重量、尺寸、上架时间、店铺、商家、SKU 状态、履约布尔值和卖点等扁平字段。建议新增一个独立的结构化详情对象,而不是继续把 JD 全部字段压缩成字符串:

interface JdProductDetailSnapshot {
  productId: string;
  itemNum?: string;
  model?: string;
  status?: { raw?: number; label?: string; source?: string };
  brand?: { id?: string; name?: string; enName?: string };
  categories?: Array<{ level: number; id?: string; name?: string }>;
  prices?: { jd?: number; market?: number; min?: number; max?: number };
  attributes?: Array<{ id?: string; name: string; values: string[]; unit?: string }>;
  skus?: Array<{ skuId: string; name?: string; attributes?: Record<string, string>; status?: string }>;
  media?: { images: string[]; whiteBackgroundImages: string[]; videos: string[] };
  description?: { pc?: string; mobile?: string; packageList?: string; tips?: string };
  logistics?: { delivery?: string; promiseId?: string; transportId?: string; warehouseIds?: string[] };
  afterSales?: { warranty?: string; shelfLifeDays?: number; service?: string; description?: string };
  collectedAt: string;
}

字段是否存在应由 fieldAvailability 或来源元数据标记,页面使用 null/“未返回”表示缺失,不把缺失字段格式化成 0。当前商品经营详情页中的 number()currency()percent() 都会把空值转成 0,生产数据接入前需要增加数据状态判断。

7.5 数据中心状态需要同步调整

当前 src/modules/data-center/data-center.component.ts 的连接器状态是:商品主数据 supported、商品评价 supported、订单/售后/库存/结算 building。结合本次真实结果,建议改成更准确的分层状态:

  • 商品主数据:supported,包含商品列表、详情待实测、SKU 列表;
  • 库存:supported-read-only,商品库存查询已经成功,但库存同步任务和仓库维度快照还未工程化;
  • 商品评价:pending-permission,文档和旧版方法线索存在,当前授权下没有成功样本;
  • 订单/售后:blocked-by-platform,待云鼎调用前置条件和权限包确认;
  • 结算:building,本次没有验证财务接口。

同时,DataCenterSyncScope 目前只有 product | reviews,应增加 inventory,并让数据中心的“可售库存”指标从 missing 调整为 partial/read-only,而不是在有真实库存接口结果后继续显示缺失。

8. 能力覆盖矩阵

场景 当前状态 覆盖度 说明
店铺授权与凭证续期 已验证 90% OAuth、Parse 存储和刷新已具备;需补撤销授权、重复授权幂等
商品目录同步 已验证 80% 列表可读;商品详情、类目和媒体字段需继续回归
SKU 主数据同步 已验证 85% SKU 列表成功;需补 SKU 属性、价格和变体关系
库存监控 已验证 75% 可读取库存和预占量;需确认分页、批量上限、仓库维度和频率
订单经营分析 外部前置条件阻断 20% 接口文档存在,但暂无订单业务样本
退款/售后分析 外部前置条件阻断 10% 没有售后服务单与原因明细
评价 VOC 待接口回归 20% 有旧版方法线索,没有真实成功样本
流量/转化分析 待报表验收 10% 无法仅靠订单和商品接口可靠计算
客服 VOC 权限不足 0% 需单独申请接口权限并评估敏感信息处理
竞品对标 不属于本店授权直接能力 0% 需要市场/搜索/外部数据源
写操作 本次未测 0% 库存写入、发货、订单备注、售后操作必须单独审批和验收

9. 推荐的落地架构

7.1 服务端数据链路

Parse EcomAuth
  -> JD token provider(按 shop UID 取最新 token)
  -> JD SP-API signer(统一签名、超时、重试、限流)
  -> domain clients(product / sku / stock / order / after-sales / review / report)
  -> raw response audit(脱敏)
  -> normalized snapshot + incremental tables
  -> /api/domestic-voc/snapshot
  -> Angular DomesticDatasetService

7.2 建议新增的后端边界

不要继续让前端通过通用 GET 代理直接拼 JD 路径。建议在 JD 模块中增加:

  • JdTokenProvider:按 shop UID 获取并自动刷新 token;
  • JdSpClient:统一处理 URL、参数排序、MD5、请求头、超时和错误分类;
  • JdProductClient:商品、SKU、商品详情、库存;
  • JdOrderClient:订单列表、详情和物流只读能力;
  • JdAfterSalesClient:售后服务单、退款和原因;
  • JdReviewClient:评价分页和字段清洗;
  • JdReportClient:报表定义、任务查询和数据下载;
  • JdSnapshotSync:分页、增量窗口、断点、幂等和快照生成。

前端只访问统一后的 SaaS-VOC 数据,不接触 JD 签名参数或完整 token。

7.3 数据存储建议

至少拆分以下实体:

实体 关键字段 用途
jd_product shop UID、product ID、标题、类目、状态、raw hash、observedAt 商品主数据
jd_sku shop UID、SKU ID、product ID、名称、状态、属性 SKU 维度分析
jd_stock_snapshot SKU ID、仓库、可用库存、预占库存、采集时间 库存趋势和告警
jd_order 订单 ID、状态、金额、支付/完成时间、raw hash 经营指标
jd_order_item 订单 ID、商品 ID、SKU、数量、成交金额 商品销量归因
jd_after_sales 售后单、订单、商品、类型、金额、原因、状态 退款风险
jd_review 评价 ID、商品 ID、星级、正文、时间、脱敏作者 VOC 分析
jd_sync_cursor shop UID、domain、window、cursor、lastSuccessAt 增量同步和断点

原始响应应保存 hash 或受控的脱敏原文,不应把地址、手机号、用户 PIN、聊天正文直接进入通用 VOC 快照。

10. 下一步测试与开通计划

P0:商品域工程化验收

  1. 用商品 ID 10026650610613 复测 getProduct,记录可返回字段、空字段和字段类型;
  2. 对 614 个商品做分页测试,确认最大 page size、重复数据和状态筛选;
  3. 对 SKU 列表和库存接口做批量上限、空 SKU、无效 SKU、重复 SKU 测试;
  4. 将成功响应转成 DomesticProduct、SKU 表和库存快照;
  5. 加入 request_id、接口耗时、错误码和响应 hash 的脱敏审计。

P1:订单与售后开通

  1. 向京东确认当前应用是否必须从云鼎平台发起订单/售后调用;
  2. 确认应用绑定的店铺类型、服务对象和订单/售后 API 权限包;
  3. 前置条件满足后,先用最小字段调用订单列表;
  4. 拿到真实订单号后再调用订单详情;
  5. 用只读方式验证售后列表、售后详情和退款原因;
  6. 验证时间窗口、分页、空数据、重复运行和数据脱敏。

P1:评价接口

  1. 确认评价 API 属于新版 SP-API 还是旧版 JOS 权限包;
  2. 用当前 access token 复测评价列表,不以旧版方法“存在”推导为有权限;
  3. 至少拿到一条本店真实评价,确认评价 ID、商品 ID、星级、正文和时间字段;
  4. 做内容脱敏、重复评价去重和增量窗口回归;
  5. 接入 DomesticReview 前区分本品与竞品,防止把竞品评论写成本品 VOC。

P2:报表与经营指标

  1. 按官方报表接口文档确认签名参数是否包含请求体、schema 和任务字段;
  2. 先查询报表定义,再执行最小只读报表任务;
  3. 验证日粒度的曝光、点击、访客、加购、订单、成交金额和退款字段;
  4. 只有在同一统计口径和时间窗口下同时拿到分子/分母,才计算转化率、点击率和退款率;
  5. 将“接口无数据”“店铺真实为零”“权限不足”分别建模。

11. 验收标准

连接层

  • 任何业务接口请求前都从 Parse 读取最新授权记录;
  • access token 过期前自动刷新,刷新失败有可定位错误;
  • AppSecret、MasterKey、token 和敏感用户字段不进入前端、URL、构建产物日志和报告;
  • 每个请求都有接口名、shop UID、request_id、状态码、错误码和耗时。

数据层

  • 商品、SKU、库存分页可重复运行且不产生重复快照;
  • 订单、售后、评价均有真实店铺样本后才标记为“可用”;
  • 所有增量同步有时间窗口、游标或更新时间字段;
  • 失败任务支持重试、断点续跑和幂等;
  • 缺失字段使用 null/未接入状态,不使用 0 伪造经营结果。

SaaS-VOC 层

  • 商品详情页能够展示真实 JD 商品和 SKU;
  • 库存告警不会混入 GMV/销量指标;
  • 经营总览只使用已验证的订单、售后和报表口径;
  • VOC 分析只使用真实评价正文,并正确拆分本品与竞品;
  • 没有经过独立数据源验证时,不展示竞品价格、销量或市场排名。

12. 最终判断

本次授权已经证明 JD 连接不是“只有 token 但没有业务权限”:商品列表、SKU 和库存均已打通,足以启动第一阶段的本店商品资产同步。

但是,SaaS-VOC 的核心价值不是商品目录,而是“经营结果 + 售后原因 + 评价正文 + 趋势解释”。目前订单和售后受云鼎前置条件影响,评价和报表尚未形成成功样本,因而系统还不能宣称已经覆盖完整的京东经营分析或本店 VOC 闭环。

推荐的上线顺序是:

  1. 先把商品/SKU/库存能力做成服务端同步和快照;
  2. 同步推进云鼎/订单/售后开通;
  3. 单独完成评价 API 的权限和字段验收;
  4. 最后接入报表并校准经营口径;
  5. 在上述四个数据域都有真实样本后,再把 DomesticDataset 从本地案例快照切换为生产数据。