Initial commit of Tmall new-product analysis loop v9.2.5.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
喻长发
2026-09-03 15:42:05 +08:00
co-authored by Cursor
commit 42223969db
55 changed files with 9760 additions and 0 deletions
@@ -0,0 +1,52 @@
#!/usr/bin/env node
import fs from 'node:fs'
const input = process.argv[2]
if (!input) {
console.error('Usage: node scripts/normalize_capture.mjs <capture.json>')
process.exit(1)
}
const payload = JSON.parse(fs.readFileSync(input, 'utf8'))
const raw = payload.raw || payload.structured || payload
const images = raw.images || raw.image_groups || {}
const product = raw.product || {}
const sales = raw.sales || {}
const out = {
schemaVersion: '9.0.0',
category: raw.category || {candidates: raw.categoryCandidates || [], breadcrumb: raw.breadcrumb || []},
product: {
itemId: product.itemId || raw.itemId || '',
skuId: product.skuId || raw.skuId || '',
title: product.title || raw.title || payload.title || '',
shop: product.shop || raw.shopName || '',
brand: product.brand || '',
category: product.category || raw.categoryName || '',
url: product.url || raw.url || payload.url || ''
},
sales: {
currentPrice: sales.currentPrice || raw.price || '',
sold: sales.sold || raw.sold || '',
ranking: sales.ranking || ''
},
counts: {
attributes: Array.isArray(raw.attributes) ? raw.attributes.length : 0,
sku: Array.isArray(raw.sku) ? raw.sku.length : 0,
promotions: Array.isArray(raw.promotions) ? raw.promotions.length : 0,
reviews: Array.isArray(raw.reviews) ? raw.reviews.length : 0,
questions: Array.isArray(raw.questions) ? raw.questions.length : 0,
mainImages: Array.isArray(images.main || images.hero) ? (images.main || images.hero).length : 0,
detailImages: Array.isArray(images.detail) ? images.detail.length : 0,
skuImages: Array.isArray(images.sku) ? images.sku.length : 0,
buyerShowImages: Array.isArray(images.buyerShow || images.review) ? (images.buyerShow || images.review).length : 0
},
attributes: raw.attributes || [],
sku: raw.sku || [],
promotions: raw.promotions || [],
reviews: raw.reviews || [],
questions: raw.questions || [],
images
}
console.log(JSON.stringify(out, null, 2))