UNPKG

focus-product-extractor2

Version:

Extract product information from chat/order data

58 lines (53 loc) 1.57 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.validateInput = validateInput; function validateInput(input) { const SOURCES = ['buyer', 'service', 'system']; const SCENES = ['chat', 'order']; // 基础字段验证 if (input.scene && !['chat', 'order'].includes(input.scene)) { throw new Error(`Invalid scene: ${input.scene}`); } if (!input.platform) { throw new Error('Missing platform field'); } if (!input.shopId) { throw new Error('Missing shopId field'); } // 规则验证 if (input.rules) { // 场景规则验证 if (input.rules.scenes) { input.rules.scenes.forEach(s => { if (!SCENES.includes(s)) throw new Error(`Invalid rule scene: ${s}`); }); } if (input.rules) { if (input.rules.sources) { input.rules.sources.forEach(s => { if (!SOURCES.includes(s)) throw new Error(`Invalid source: ${s}`); }); } } // 自定义规则验证 if (input.rules.customRules) { input.rules.customRules.forEach(rule => { if (!rule.pattern) throw new Error('Custom rule must have pattern'); try { new RegExp(rule.pattern, rule.flags || ''); } catch (e) { throw new Error(`Invalid regex pattern: ${rule.pattern}`); } }); } } // 原始数据验证 if (!input.rawData) { throw new Error('Missing rawData field'); } if (input.scene === 'chat' && !input.rawData.messages) { throw new Error('Chat scene requires messages field'); } }