focus-product-extractor2
Version:
Extract product information from chat/order data
58 lines (53 loc) • 1.57 kB
JavaScript
;
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');
}
}