Files
dianxiaomi-crossborder-play…/joom建品/RECIPE.md
T

3.5 KiB
Raw Blame History

Joom 建品配方(已跑通,批量进行中)

路由:https://www.dianxiaomi.com/web/joomProduct/add 列表:/web/joomProduct/{draft=采集箱, offline=待发布}

脚本:jmbatch.mjs(node jmbatch.mjs 全量 · node jmbatch.mjs <pid> 单条 · --dry 只构建) 断点:jm_done.json 逐条日志:jm_batch.log 实际落到的类目:joom_route.json

⭐ 关键发现:Joom 的表单数据不在 joom* store 里

商品主体数据落在 smtChoiceAddBasicStore(速卖通全托管的 store), Joom 与 aliChoice 共用同一套 smtChoice* store。定位方法:在页面上手输一个 哨兵串(PROBE-TITLE-XYZ),再遍历所有 pinia store 的 $state 找它落在哪。

字段 落点
店铺 smtChoiceAddBasicStore.formState.shopIds[] / shopId(店铺是复选框组,不是下拉)
类目 smtChoiceAddBasicStore.formState.categoryId(复合串 1473…-16-2-118-2600…)
标题 / ParentSKU / 描述 / 标签 smtChoiceAddBasicStore.formState.{name, parentSku, description, tags[]}
价格 / 库存 / 运费 / MSRP / 报关金额 joomAddPriceStore.formState.{price, inventory, shipping, msrp, declaredValue}
主图 / 详情图 joomAddImageStore.formState.imageList[] / detailImageList[0].images[](吃 {url,imgUrl,name,width,height} 数组)
SKU / 颜色 / 尺码 joomSkuDataStore.formState.skuDataList[] / joomSkuAttrStore.formState.{colorValues,sizeValues}
自定义属性 smtChoiceAddAttrStore.formState.customAttrs[]
类目属性(attrsInfo.attrsList 10 条) joomAddStore.attrsInfo(joomAddStore 没有 formState)

单条顺序(不能换)

  1. 勾店铺:店铺名称 是 .d-checkbox-group-wrapper,共 85 个复选框 = 全部 + 84 家店。 勾「第一个非全部」= Dummer-Pets。⚠️ 别碰 全部(那是铺满 84 家店)。
  2. 选类目:产品分类 是可搜索 .ant-select(不是 SHEIN/Temu 的弹窗)。点开 → Input.insertText(cat_kw) → 在 .ant-select-item-option 里选去掉括注后完全相等的, 没有就退到第一个(Joom 类目比 1688 粗,实测「发圈」只能落到「发夹(Hairpins)」)。
  3. 填 store(标题/ParentSKU/描述/标签 + 价格/库存/运费/报关金额 + 主图/详情图)
  4. fillRequiredSelects()(复用 SHEIN 的兜底)→ 敏感货类型 = 普通货
  5. 详情图语言 → 目标项标签就叫「详情图」(不含"语言"二字): 下拉是虚拟滚动的,前 10 项没有「英语」→ 先 Input.insertText('英') 过滤, 再点含「英」的项(否则会落到「阿拉伯语」)
  6. 保存 → 您的产品已保存到「待发布」

钩子新抓出的两条「没标必填但必须填」

被吞的报错 真相
MYJ.error: 运费不能为空 运费没有 *,但必须填(给 0 即可)
MYJ.error: 请选择详情图语言且至少添加一张详情图 语言必选;图片 store 已赋值也要选语言

与其它平台的差异

  • 店铺:Joom 是复选框组(多选=铺多店),SHEIN/Temu/Lazada 是下拉
  • 类目:Joom 是可搜索下拉平铺列表,SHEIN/Temu 是「选择类目」弹窗(搜索→点结果→关弹窗)
  • 数据落点:Joom 用 smtChoice*(与 aliChoice 同构),SHEIN/Temu 各有自己的 shein* / temu*
  • 不消耗 EAN(GTIN 非必填、showGtin=false)