Files
dianxiaomi-crossborder-play…/NEXT-ROUND-PROMPT.md
T

114 lines
6.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 下一轮提示词(整份复制给新会话即可接着干)
> ⚠️ **先读 `README.md` 和 `静默拦截诊断/HOOK.md`,再动手。**
> ⭐ **遇到「点了保存没反应」→ 第一件事是挂钩子,不要猜字段**(见下面第 2 节,全篇最重要的一段)。
---
## 1. 开工前先读这两个文件(别跳过)
| 文件 | 读它干什么 |
|---|---|
| **`README.md`**(仓库根) | 战果总表、各平台要点速查、通用技术事实、**十五条会重复踩的坑**、EAN-13 台账 |
| **`静默拦截诊断/HOOK.md`** | 保存静默拦截的完整诊断步骤 + 已定位的各平台被吞报错 |
仓库(Gitea):`http://192.168.9.206:3000/admin9webs/dianxiaomi-crossborder-playbook`
本机副本:`/home/admin9webs/gitea-push/dianxiaomi-crossborder-playbook/`
本文所有相对路径都以**仓库根目录**为准。
---
## 2. ⭐⭐ 最显眼的一条:遇到「点了保存没反应」,第一件事是挂钩子,不要猜字段 ⭐⭐
**为什么单独占一节**:这是整轮唯一一条**方法论级别**的收获。之前在 SHEIN 和 Temu 上
反复猜「到底哪个字段没填」,几十轮全部无效;挂上钩子后**两个平台的真报错一次全暴露**。
放在这个位置,是为了让新会话在**踩坑之前**就看见,而不是踩完才翻到。
**症状**:点「保存」→ **不发 POST**、**无界面提示**、**无 `.ant-form-item-has-error`**。
**根因**:校验确实失败了,但报错被 **`MYJ.message.error` 吞掉**;而且报错是**层层递进**的
(修完 A 才显示 B),肉眼和 DOM 扫描都抓不到。
**在点保存之前**注入钩子:
```js
window.__cap=[];
function wrap(o,n,l){const f=o[n];o[n]=function(){window.__cap.push(l+': '+[...arguments].map(a=>typeof a==='string'?a:JSON.stringify(a)).join(' '));return f.apply(o,arguments);};}
['error','warning','info','success'].forEach(k=>wrap(MYJ.message,k,'MYJ.'+k));
['error','warning','info','success'].forEach(k=>wrap(antd.message,k,'antd.'+k));
```
然后 **点保存 → 等 ~9 秒 → 读 `window.__cap`**,被吞掉的真实报错就在里面。
- 现成脚本:`静默拦截诊断/shhook.mjs`(SHEIN)、`静默拦截诊断/tmhook.mjs`(Temu);
批量脚本里用 `shein建品/sh_lib.mjs` 的 `installHook(c)` / `readHook(c)`。
- **「必填项扫描」不够**:扫 `.ant-form-item-required` 且为空,会漏掉**条件必填**
(Temu 的省份,只有「产地=中国」才出现)、**类目相关的文件字段**(速卖通的商品说明书)
和 **`.attr-label.required` 这类类目动态属性**(SHEIN 的「特征 Features」,不填只报
「产品信息中有错误,请检查」)。
---
## 3. 我在做什么
同一批 **48 个 1688 商品**铺到店小秘各平台的「待发布」。仓库是**可复用的配方 + 踩坑记录**,
不是一次性脚本堆积——每个平台一个目录,含配方脚本、输入数据、逐条结果。
## 4. 已完成
- TikTok 47 / Shopee 47 / 速卖通 47 / Walmart 46 / Ozon 47(改价 40/47)
- **SHEIN 40/40**(`shein建品/shbatch.mjs`,按 `shein_route.json` 分 4 家店;1 条因
①Shein-武汉九个网-箱包 报「商家无可用的发品额度」改挂 ②Shein-易世通达-箱包)
- **Temu 全托管 47**(`temu建品/tmbatch.mjs` 批量 46/46 + 手工首条),逐条结果在 `tm_done.json`
- **Joom 47**(`joom建品/jmbatch.mjs` 批量 46/47 + 手工首条;唯一没建的是全平台统一跳过的
无水印图商品 `601964534137`),逐条结果 `jm_done.json`、实际类目 `joom_route.json`;
关键发现是 **Joom 的商品数据落在 `smtChoiceAddBasicStore`**(与 aliChoice 共用 `smtChoice*` store)
## 5. 这轮要做的(按优先级)
0. **EAN 台账回 S03(最优先,硬约束)**
Temu 这 46 个号目前只落在 KVM-2 的 `temu建品/ean_temu_used.txt`
(pc 3447~3551,游标 `ean_cursor.json` → **3552**)。KVM-2 够不到 S03,
**需要在 S03 上把这份台账并进 `/root/ean_*.txt`**,之后从 3552 续号。
1. **继续铺剩余店小秘平台**(已侦察,直接用):
| 平台 | add 路由 | 店铺控件 | 类目控件 | store 家族 |
|---|---|---|---|---|
| Joom | `/web/joomProduct/add` | **复选框组** 85 个(全部+84 店) | 可搜索 `.ant-select` 平铺列表 | `smtChoice*` + `joom*`(已跑通) |
| aliChoice | `/web/smtChoice/add` | 下拉 | 弹窗 + 自动识别分类 | `smtChoice*`(和 Joom 同一套,**可望直接复用**) |
| Lazada | `/web/lazada/add` | 下拉 | 弹窗 | 选完店铺才注册 `lazada*` store(懒加载) |
| fruugo | `/web/fruugoProduct/add` | 下拉 | 弹窗 | `fruugoAdd*`(Common/Basic/Dxm/Product/Variation/Image/Describe/Form) |
(pddkj = Temu 全托管,已完成。)店铺一律取**自然序第一家**,SHEIN 那种锁品类的除外。
2. **妙手各平台**(店小秘全部完成后)
3. **可选重构**:`shein建品/sh_lib.mjs` + `sh_build.mjs`(`newPage`/`selectCategory`/
`fillRequiredSelects`/`installHook`)已是平台无关骨架,铺新平台先复用它,
别再从头写 `attach(url)`——同 URL 有多个标签时 `attach` 会抢到错的那个。
## 6. 硬约束
- 平台「首字母第一家店」规则(SHEIN 除外,它锁品类必须分店)
- 图片一律**外链 alicdn**,且必须**无水印**
- **EAN 台账在 S03 的 `/root/ean_*.txt`**,KVM-2 够不到。Walmart 已用 pc 3400~3446,
Temu 已用 pc 3447~3551(游标 3552)。**用了就要在 S03 落盘**,否则撞号。
## 7. 环境
- Chrome CDP **9223**,profile `/tmp/dxm7`;VNC `http://192.168.9.122:6097/vnc.html`
- CDP helper `/tmp/cdp3.mjs`(ESM:`newTarget`/`attach`/`CDP`/`SAN`,**不能用 require**)
⚠️ **它是 /tmp 下的临时文件,重启机器可能就没了**——仓库根目录留了备份 `cdp3.mjs`,
丢了就 `cp cdp3.mjs /tmp/cdp3.mjs` 再跑。
- 批量动辄 1 小时:`setsid nohup node xxx.mjs > xxx.log 2>&1 < /dev/null &`;
脚本自己往 `*_done.json` 写断点,失败直接带 pid 重跑(`node shbatch.mjs <pid>`)。
## 8. 机械差异,别互套(SHEIN ≠ Temu)
| | SHEIN | Temu 全托管 |
|---|---|---|
| 规格控件 | `.theme-select-box` 点主题 → `.sku-info-box` 里勾值 | 两个 `.theme-value-add` 块,`input[class*="!w-200"]` **手动输值 + 点「添加」**(直接改 store 无效) |
| 规格数量 | **最多 3 个**(颜色已占 1 个) | 颜色 + 尺码各一个值 |
| 图片 | store 直接吃外链数组 | 主图**必须满 5 张**;预览图**逐行**点 `.sku-image` → 引用产品轮播图 → 全部 → 选择 |
| 类目选择 | 弹窗搜索 → 点 `.search-result-item`(里面嵌 `<span class="f-red">`)→ **弹窗必须确认关掉** | 同一个弹窗,但**按最后一级路径精确匹配**(否则「口哨」会选到「狗口哨」) |