# aliChoice(速卖通全托管)配方 — 差最后一步,下一轮从「物流属性」接着做 路由:`https://www.dianxiaomi.com/web/smtChoice/add` 列表:`/web/smtChoice/{draft=采集箱, offline=待发布}` ## 已经打通的(`alc_try1.mjs`,一条完整填到最后一步) 1. **店铺**:`店铺名称` 下拉(实测 2 家:`XYZ Store` / `UniStyle Bag Store`),取第一家 → `shopId=4393191` 2. **备货类型**:下拉 `国内履约` / `海外备货` → 取第一个(→ `productType='1'`) 3. **类目**:`选择分类` 弹窗 → 用 `sh_build.selectCategory(c, cat_kw, cat_kw)`(与 SHEIN/Temu 同一套) 4. **标题** → `smtChoiceAddBasicStore.formState.subject`(⚠️ **不是 Joom 的 `name`**) 5. **主图** → `smtChoiceAddProductStore.formState.mainImage[]`(吃 `{url,imgUrl,name,width,height}`) 6. **PC端描述** → `smtChoiceAddStore.describeInfoData.detail`(DOM 里是个 `TEXTAREA`) 7. **SKU 行** → `smtChoiceSkuDataStore.formState.skuDataList[]` 字段:`skuPrice / skuCode / scItemBarCode / packageWeight / packageLength / packageWidth / packageHeight / logisticAttrListJson / logisticAttrList / imageList` 8. **必填类目属性**(品牌 / 高关注化学品 / 产地)→ `fillRequiredSelects()` 现已能自动填 (产地会输「中国」过滤后选 `中国大陆`) ## ⛔ 当前唯一卡点:「请选择物流属性」 保存时钩子给 `MYJ.error: 校验失败`,DOM 里是一个**没有 label** 的报错块: ```html
请选择物流属性
``` - 它带一个 `icon_edit2 link` 的编辑入口 → 点开大概率是「物流属性」弹窗/抽屉 - SKU 行里有 `logisticAttrListJson` / `logisticAttrList` 两个字段空着,应该就是它要填的 - 下一步:点那个 `icon_edit2`,dump 弹窗结构(很可能要按类目选物流渠道/时效) ## 另一个未验证项:4 个规格组都是 0 选项 `smtChoiceSkuAttrStore.formState.skuAttrs` 有 4 组: `Ships From(200007763) / Color(14) / Number of Pcs(200116262) / Bulk Buy(200483263)`, 但 `options` 都是 0(值在 `_options` 或要异步加载),DOM 里能看到值(卡其色/粉红/6Pc/Set…)。 **未验证变种值是否必须选**——先解物流属性,再看保存是否又冒出新的一层。 ## 本轮顺手修好的共享 bug(`shein建品/sh_build.mjs` 的 `fillRequiredSelects`) 之前它在 aliChoice 上**一个必填属性都填不上**,三个原因,都已修: 1. select 分支的必填判断只看 `label.ant-form-item-required`,而速卖通系的属性是 `.attr-label.required`(label 上还常带 `*` 前缀)→ 现在三种标记都认 2. 容器项「产品属性」本身也带 `*`,会被当成一个字段去点 → 现在跳过**含嵌套 `.ant-form-item`** 的项 3. 点开下拉后按 `.pop()` 取最后一个可见下拉,容易读到**上一个字段残留**的列表 (曾把化学物列表当国家列表)→ 现在①每次点前先 `Esc` ②按**与点击点的距离**挑下拉 ③产地/Origin 先 `Input.insertText('中国')` 过滤