con un clic
dxm-qa-check
店小秘速卖通上品——QA复核模块:逐字段校验1688数据准确性、星号必填项、定价公式、关键字段完整度
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
店小秘速卖通上品——QA复核模块:逐字段校验1688数据准确性、星号必填项、定价公式、关键字段完整度
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Basado en la clasificación ocupacional SOC
速卖通店铺运营自动化 — 每日巡检/每周策略/商品上架/数据分析全流程。填入你的店铺名即可使用。
店小秘速卖通编辑页——属性信息模块:产品属性批量填(ant-select CDP填充)+ 自定义属性删除
店小秘速卖通编辑页——基本信息模块:标题改英文 + 产品分类选择
速卖通上架——1688采集模块:从1688搜索产品 → 采集到店小秘采集箱 → 提取产品参数(价格/库存/重量/材质等)
店小秘速卖通编辑页——店小秘信息模块:来源URL(只读,记录用)
店小秘速卖通上品完整工作流——从采集箱到发布的所有模块编排、调用顺序、区域调价、保存发布
| name | dxm-qa-check |
| description | 店小秘速卖通上品——QA复核模块:逐字段校验1688数据准确性、星号必填项、定价公式、关键字段完整度 |
| domain | ecommerce |
| triggers | ["用户说\"检查\"、\"复核\"、\"QA\"、\"审核\"、\"验证\"","上品流程最后一步"] |
所有模块(1-9)填完后、保存前,自动执行。
| 检查项 | 1688来源 | 页面值 | 规则 |
|---|---|---|---|
| 成本价 | 1688详情页 | N/A(不填到页面) | 用于验算零售价 |
| 重量(g) | 1688参数表 | 包装后重量(kg) | g÷1000=kg |
| 库存 | 1688规格行 | SKU库存 | >2000封顶2000 |
| 材质 | 1688参数表 | 属性→材质 | 选最接近 |
| 品牌 | 1688参数表 | 属性→品牌 | NONE或实际 |
| 产地 | 1688参数表 | 属性→产地 | 中国大陆+省份 |
零售价 = (1688成本价 + 5) × 1.02 ÷ 0.413
= (成本 + 5) × 2.469
验证:零售价 ≤ 页面值 ± 0.01
货值 = 零售价(两列同值)
逐模块检查所有 ant-form-item-required 字段:
| 模块 | 必填项 | 检查方式 |
|---|---|---|
| 基本信息 | 标题、分类 | 标题无中文、分类已选 |
| 属性信息 | 产地/品牌/液晶/出餐量/材质/智能/化学品/电池 | 全部非空 |
| 产品信息 | 图片/计件单位/容量/SKU定价(全部) | 6张主图、SKU全填 |
| 描述信息 | PC端描述 | 有内容、图已翻译 |
| 包装信息 | 包装后重量 | 非空 |
| 模板信息 | 运费/服务/海关 | 非"请选择" |
| 其他信息 | 报价含关税 | 非空 |
| 检查 | 说明 |
|---|---|
| Green/Pink行一致 | 零售价/货值/库存/重量/原箱/物流 两行完全相同 |
| 是否原箱=是 | select value='1' |
| 物流属性=普货 | 无电池产品 |
| 商品编码 | Green/Pink 已生成 |
| 图片翻译 | 主图6张+SKU图+PC描述图 全部提交 |
browser_snapshot 输出在 ~1500 行截断,无法覆盖编辑页下半部分。替代方案: 用 execute_code + websocket 直连 CDP relay 进行全页 QA 扫描。
详见 aliexpress-store-ops → references/cdp-websocket-qa-scan.md
import asyncio, json
import websockets
async def qa():
ws = await websockets.connect("ws://127.0.0.1:19223/devtools/page/{targetId}", max_size=None)
msg = {"id": 1, "method": "Runtime.evaluate", "params": {"expression": """
(() => {
const body = document.body.innerText;
return JSON.stringify({
chineseError: body.includes('中文字符'),
pleaseSelectCount: (body.match(/请选择/g) || []).length,
bodyLength: body.length
});
})()
""", "returnByValue": True}}
await ws.send(json.dumps(msg))
resp = await asyncio.wait_for(ws.recv(), timeout=10)
return json.loads(resp)
targetId 获取: curl -s http://127.0.0.1:19223/json → 找 dianxiaomi.com/web/smt/edit 的 target
star_report = await page.evaluate('''() => {
const items = document.querySelectorAll('.ant-form-item');
const missing = [];
items.forEach(item => {
const star = item.querySelector('.ant-form-item-required, [class*="required"]');
if (!star) return;
const label = item.querySelector('label');
const inp = item.querySelector('input');
const sel = item.querySelector('.ant-select-selector');
const val = inp ? inp.value : (sel ? sel.textContent.trim() : '?');
const isEmpty = !val || val.includes('请选择') || val.includes('请选中');
if (isEmpty) {
missing.push((label?.textContent || '?').trim());
}
});
return missing;
}''')
# missing 为空 → 全部星号已填 ✅
cost = 1688成本价
expected = round((cost + 5) * 1.02 / 0.413, 2)
actual = float(page输入框中的零售价)
assert abs(expected - actual) < 0.02, f"定价异常: 预期{expected} 实际{actual}"
green = {零售价, 货值, 库存, 重量, 原箱, 物流}
pink = {同上}
assert green == pink, "SKU两行不一致!"
📋 QA检查报告
━━━━━━━━━━━━━━━━
✅ 1688数据准确性: 通过
✅ 定价公式: 15.56 = (1.30+5)×2.469 ✓
✅ 星号字段: 全部已填 (0个缺失)
✅ SKU一致性: Green=Pink ✓
✅ 图片翻译: 全部提交
✅ 模板: 运费/服务已选
━━━━━━━━━━━━━━━━
结论: 可以保存
问题: 用 DOM 元素检查法(.ant-select-selection-item、.ant-form-item input)会漏读已填值,产生大量误报。
根因:
ant-select-auto-complete 型字段值存储在 input.value 中,不在 .ant-select-selection-item 的 .textContent 中<div> 渲染,.textContent 可能返回空/空白正确验证方法(按优先级):
document.body.innerText.includes('Plastic') 等 —— 只要值在页面上任何地方渲染,就能匹配'.ant-select-selection-item' 的 .textContent.trim().ant-select-auto-complete input 的 .valueinput.value误报处理规则:
作者: Rigi AI Commons | 小红书 @瑞吉AI人民公社 | AI自动化专家工作流