docs: 建品配方迁至 kb/handbook(留指针)
This commit is contained in:
1 parent
917df5b2d6
commit
ced43b19d3
9 files changed
+27
-1842
No files matched your search
+3
-46
@@ -1,47 +1,4 @@
|
||||
# Joom 建品配方(已跑通,批量进行中)
|
||||
> **本文已迁至内网知识库**:`kb/handbook:docs/ecommerce/dianxiaomi/joom.md`(2026-10-21)。
|
||||
> 请到 http://192.168.9.206:3000/kb/handbook 阅读最新版;本仓不再维护这份内容。
|
||||
|
||||
路由:`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`)
|
||||
(原文件内容已移出,历史见本仓 git 记录。)
|
||||
Reference in new issue
Block a user