50 lines
3.6 KiB
JavaScript
50 lines
3.6 KiB
JavaScript
"use strict";
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.hasInventoryPurchaseStem = hasInventoryPurchaseStem;
|
||
exports.hasInventorySupplierCue = hasInventorySupplierCue;
|
||
exports.hasInventorySaleCue = hasInventorySaleCue;
|
||
exports.hasInventoryProfitabilityCue = hasInventoryProfitabilityCue;
|
||
function toText(value) {
|
||
return String(value ?? "");
|
||
}
|
||
function hasInventoryPurchaseStem(text) {
|
||
return /купл[а-яёa-z0-9_-]*/iu.test(toText(text));
|
||
}
|
||
function hasInventorySupplierCue(text) {
|
||
const value = toText(text);
|
||
if (/(?:купил(?:и|о)?\s+у\s+кого|куплен(?:о)?\s+у\s+кого|купил(?:и|о)?\s+от\s+кого|куплен(?:о)?\s+от\s+кого)/iu.test(value)) {
|
||
return true;
|
||
}
|
||
if (/(?:кто\s+(?:(?:это|этот\s+товар|эту\s+позицию)\s+)?(?:нам\s+)?поставил|кто\s+(?:нам\s+)?поставил\s+(?:это|этот\s+товар|эту\s+позицию)|от\s+какого\s+поставщика|у\s+какого\s+поставщика|от\s+кого\s+куплен|у\s+кого\s+купили|у\s+кого\s+куплено|где\s+(?:мы\s+)?купили(?:\s+(?:это|его|этот\s+товар|эту\s+позицию))?|где\s+(?:мы\s+)?взяли(?:\s+(?:это|его|этот\s+товар|эту\s+позицию))?|откуда\s+(?:мы\s+)?взяли(?:\s+(?:это|его|этот\s+товар|эту\s+позицию))?|где\s+куплено|supplier|vendor|поставщик)/iu.test(value)) {
|
||
return true;
|
||
}
|
||
return hasInventoryPurchaseStem(value) && /(?:у\s+кого|от\s+кого|где)/iu.test(value);
|
||
}
|
||
function hasInventorySaleCue(text) {
|
||
const value = toText(text);
|
||
if (/(?:buyer|покупател)/iu.test(value)) {
|
||
return true;
|
||
}
|
||
if (/(?:куда\s+ушла\s+позиция|куда\s+ушел\s+товар|кто\s+купил|кому\s+(?:мы\s+)?впарили(?:\s+(?:это|его|товар|позицию))?)/iu.test(value)) {
|
||
return true;
|
||
}
|
||
const hasDirectionCue = /(?:кому|каму|куда)/iu.test(value);
|
||
const hasSaleVerb = /(?:продал(?:и|а|о|ы)?|продан(?:а|о|ы)?|продано|реализовал(?:и|а|о|ы)?|реализован(?:а|о|ы)?|реализовано|впарил(?:и|а|о|ы)?|отгрузил(?:и|а|о|ы)?|отгружен(?:а|о|ы)?|поставил(?:и|а|о|ы)?|поставлен(?:а|о|ы)?|ушло|ушел|ушла)/iu.test(value);
|
||
if (hasDirectionCue && hasSaleVerb) {
|
||
return true;
|
||
}
|
||
return /(?:^|[\s,.;:!?])(продано|продали|продан(?:а|о|ы)?|реализовано|реализовали|реализован(?:а|о|ы)?)(?=$|[\s,.;:!?])/iu.test(value);
|
||
}
|
||
function hasInventoryProfitabilityCue(text) {
|
||
const value = toText(text);
|
||
const hasExplicitEconomicsMetric = /(?:прибыл|марж|рентабел|наценк|выручк|доход|profit(?:ability)?|margin|revenue|unit\s+economics)/iu.test(value);
|
||
if (hasExplicitEconomicsMetric) {
|
||
return true;
|
||
}
|
||
if (/(?:заработ(?:ал|али|аем|ок|ан)|прин[её]с(?:ли)?)/iu.test(value) &&
|
||
/(?:денег|деньг|с\s+продаж[а-яё]*|по\s+продаж[а-яё]*|от\s+продаж[а-яё]*|продаж[а-яё]*|реализац|sale|sales)/iu.test(value)) {
|
||
return true;
|
||
}
|
||
return /(?:сколько|скока|скок)[\s\S]{0,60}(?:заработ|прин[её]с|денег[\s\S]{0,20}(?:с\s+продаж|по\s+продаж|от\s+продаж|продаж|реализац))/iu.test(value);
|
||
}
|