with one click
dxm-qa-check
店小秘速卖通上品——QA复核模块:逐字段校验1688数据准确性、星号必填项、定价公式、关键字段完整度
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
店小秘速卖通上品——QA复核模块:逐字段校验1688数据准确性、星号必填项、定价公式、关键字段完整度
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
速卖通店铺运营自动化 — 每日巡检/每周策略/商品上架/数据分析全流程。填入你的店铺名即可使用。
店小秘速卖通编辑页——属性信息模块:产品属性批量填(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自动化专家工作流