@bytebrand/export-cars 1.26.33 → 1.26.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/configs/config.js +1 -1
- package/dist/configs/config.js.map +1 -1
- package/dist/configs/openai-ads.config.js +2 -2
- package/dist/configs/openai-ads.config.js.map +1 -1
- package/dist/exporters/openai-ads.exporter.d.ts +3 -0
- package/dist/exporters/openai-ads.exporter.js +13 -2
- package/dist/exporters/openai-ads.exporter.js.map +1 -1
- package/dist/interfaces/openai-ads.interface.d.ts +1 -0
- package/dist/interfaces/openai-ads.interface.js +1 -0
- package/dist/interfaces/openai-ads.interface.js.map +1 -1
- package/dist/services/openai-ads-feed-run.d.ts +2 -1
- package/dist/services/openai-ads-feed-run.js +3 -2
- package/dist/services/openai-ads-feed-run.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/docs/openai-ads/AUDIT.md +3 -3
- package/docs/openai-ads/RUNBOOK.md +10 -1
- package/package.json +2 -2
- package/src/configs/config.ts +2 -1
- package/src/configs/openai-ads.config.ts +4 -4
- package/src/exporters/openai-ads.exporter.ts +18 -1
- package/src/interfaces/openai-ads.interface.ts +2 -0
- package/src/services/openai-ads-feed-run.ts +6 -4
- package/test/openai-ads-feed-run.test.ts +20 -1
- package/test/openai-ads-price-cap.test.ts +69 -0
package/dist/configs/config.js
CHANGED
|
@@ -39,7 +39,7 @@ class Config {
|
|
|
39
39
|
criteoMarketingImagesConfigId: 12,
|
|
40
40
|
localConvertedDirectory: 'resources/csv_dev',
|
|
41
41
|
remoteDirectory: 'import_dev',
|
|
42
|
-
imageUrl: 'https://images.autode-dev.de/
|
|
42
|
+
imageUrl: 'https://images.autode-dev.de/generated_images',
|
|
43
43
|
baseImageUrl: 'https://images.autode-dev.de',
|
|
44
44
|
},
|
|
45
45
|
[enums_1.Environment.PRODUCTION]: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/configs/config.ts"],"names":[],"mappings":";;;AAAA,oCAA8D;AAG9D,MAAa,MAAM;IACjB,MAAM,CAAS;IACf,QAAQ,CAAS;IACjB,cAAc,CAAS;IACvB,sBAAsB,CAAS;IAC/B,MAAM,CAAS;IACf,OAAO,CAAS;IAChB,QAAQ,CAAS;IACjB,YAAY,CAAS;IACrB,iBAAiB,CAAS;IAC1B,eAAe,CAAS;IACxB,SAAS,CAAY;IACrB,aAAa,CAAU;IACvB,QAAQ,CAAU;IAClB,QAAQ,CAAU;IAClB,UAAU,CAAa;IACvB,MAAM,CAAS;IACf,KAAK,CAIH;IAIF,oBAAoB,CAAU;IAC9B,YAAY,CAIV;IACF,WAAW,CAAW;IACtB,GAAG,CAAS;IACZ,oBAAoB,CAAS;IAC7B,uBAAuB,CAAS;IAChC,oBAAoB,CAAS;IAC7B,uBAAuB,CAAS;IAChC,sBAAsB,CAAS;IAE/B,KAAK,CAAU;IAEf,iBAAiB,CAA2B;IAE5C,eAAe,CAAyB;IAE9B,iBAAiB,GAAG;QAC5B,CAAC,mBAAW,CAAC,OAAO,CAAC,EAAE;YACrB,MAAM,EAAE,eAAe;YACvB,kBAAkB,EAAE,CAAC;YACrB,6BAA6B,EAAE,EAAE;YACjC,uBAAuB,EAAE,mBAAmB;YAC5C,eAAe,EAAE,YAAY;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/configs/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.OpenAiAdsConfig = exports.OPENAI_ADS_DEFAULTS = void 0;
|
|
4
4
|
const lodash_1 = require("lodash");
|
|
5
5
|
const enums_1 = require("../enums");
|
|
6
|
+
const feed_price_constants_1 = require("../constants/feed-price.constants");
|
|
6
7
|
const config_1 = require("./config");
|
|
7
8
|
const text = (value) => (typeof value === 'string' ? value.trim() : '');
|
|
8
9
|
const positiveNumber = (value, fallback) => {
|
|
@@ -36,8 +37,7 @@ class OpenAiAdsConfig extends config_1.Config {
|
|
|
36
37
|
this.sellerName = text(params.openAiAdsSellerName) || exports.OPENAI_ADS_DEFAULTS.sellerName;
|
|
37
38
|
this.retentionDays = positiveNumber(params.openAiAdsRetentionDays, exports.OPENAI_ADS_DEFAULTS.retentionDays);
|
|
38
39
|
this.imageConcurrency = positiveNumber(params.openAiAdsImageConcurrency, exports.OPENAI_ADS_DEFAULTS.imageConcurrency);
|
|
39
|
-
|
|
40
|
-
this.maxCurrentSalesPrice = cap || undefined;
|
|
40
|
+
this.maxCurrentSalesPrice = (0, feed_price_constants_1.resolveMaxFeedSalesPrice)(params.maxCurrentSalesPrice);
|
|
41
41
|
this.feedGuard = {
|
|
42
42
|
stateDir: this.stateDir,
|
|
43
43
|
minSourceItems: positiveNumber(params.feedGuardMinSourceItems, exports.OPENAI_ADS_DEFAULTS.minSourceItems),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-ads.config.js","sourceRoot":"","sources":["../../src/configs/openai-ads.config.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAElC,oCAA2D;
|
|
1
|
+
{"version":3,"file":"openai-ads.config.js","sourceRoot":"","sources":["../../src/configs/openai-ads.config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { CarService, ConfigService, ImagesService, LoaderService, RulesService } from '../services';
|
|
2
|
+
import { SourceCar } from '../services/openai-ads-feed-run';
|
|
2
3
|
import { Exporter } from '../interfaces/exporter.interface';
|
|
4
|
+
import { OpenAiAdsExclusion } from '../interfaces/openai-ads.interface';
|
|
5
|
+
export declare const classifyPartnerFilter: (passed: boolean, source: SourceCar, cap: number | undefined) => OpenAiAdsExclusion | null;
|
|
3
6
|
export declare class OpenAiAdsExporter implements Exporter {
|
|
4
7
|
private carService;
|
|
5
8
|
private configService;
|
|
@@ -9,8 +9,9 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
9
9
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.OpenAiAdsExporter = void 0;
|
|
12
|
+
exports.OpenAiAdsExporter = exports.classifyPartnerFilter = void 0;
|
|
13
13
|
const common_1 = require("@nestjs/common");
|
|
14
|
+
const lodash_1 = require("lodash");
|
|
14
15
|
const cronicle_helper_1 = require("@bytebrand/cronicle-helper");
|
|
15
16
|
const schema_tools_1 = require("@bytebrand/schema-tools");
|
|
16
17
|
const i18n_dictionaries_1 = require("@bytebrand/i18n-dictionaries");
|
|
@@ -19,6 +20,16 @@ const image_url_validator_service_1 = require("../services/image-url-validator.s
|
|
|
19
20
|
const feed_guard_1 = require("../services/feed-guard");
|
|
20
21
|
const openai_ads_feed_run_1 = require("../services/openai-ads-feed-run");
|
|
21
22
|
const openai_image_fields_1 = require("../transformers/openai-image-fields");
|
|
23
|
+
const openai_ads_interface_1 = require("../interfaces/openai-ads.interface");
|
|
24
|
+
const classifyPartnerFilter = (passed, source, cap) => {
|
|
25
|
+
if (passed) {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
const price = (0, lodash_1.toNumber)((0, lodash_1.get)(source, 'car.price.currentSalesPrice', null));
|
|
29
|
+
const hasImages = (source?.car?.metaData?.imagesCount ?? 0) > 0;
|
|
30
|
+
return cap && hasImages && Number.isFinite(price) && price > cap ? openai_ads_interface_1.OpenAiAdsExclusion.priceCap : openai_ads_interface_1.OpenAiAdsExclusion.filtered;
|
|
31
|
+
};
|
|
32
|
+
exports.classifyPartnerFilter = classifyPartnerFilter;
|
|
22
33
|
let OpenAiAdsExporter = class OpenAiAdsExporter {
|
|
23
34
|
carService;
|
|
24
35
|
configService;
|
|
@@ -38,7 +49,7 @@ let OpenAiAdsExporter = class OpenAiAdsExporter {
|
|
|
38
49
|
const validator = new image_url_validator_service_1.ImageUrlValidator({ concurrency: config.imageConcurrency });
|
|
39
50
|
const run = new openai_ads_feed_run_1.OpenAiAdsFeedRun({
|
|
40
51
|
forEachChunk: fn => this.loaderService.process((chunk) => fn(chunk.data)),
|
|
41
|
-
filterCar: source => this.carService.filterCar(source, this.rulesService.rules),
|
|
52
|
+
filterCar: source => (0, exports.classifyPartnerFilter)(this.carService.filterCar(source, this.rulesService.rules), source, config.maxCurrentSalesPrice),
|
|
42
53
|
dealerStatus: ownerId => this.dealerStatus(ownerId),
|
|
43
54
|
resolveImages: ({ car, images }) => (0, openai_image_fields_1.resolveOpenAiImageFields)(this.imagesService.getCleanImages(car._id, images), validator),
|
|
44
55
|
imageStats: () => validator.stats,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-ads.exporter.js","sourceRoot":"","sources":["../../src/exporters/openai-ads.exporter.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;
|
|
1
|
+
{"version":3,"file":"openai-ads.exporter.js","sourceRoot":"","sources":["../../src/exporters/openai-ads.exporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,7 @@ var OpenAiAdsExclusion;
|
|
|
20
20
|
OpenAiAdsExclusion["noId"] = "no_id";
|
|
21
21
|
OpenAiAdsExclusion["duplicateId"] = "duplicate_id";
|
|
22
22
|
OpenAiAdsExclusion["filtered"] = "filtered";
|
|
23
|
+
OpenAiAdsExclusion["priceCap"] = "price_cap";
|
|
23
24
|
OpenAiAdsExclusion["invalidPrice"] = "invalid_price";
|
|
24
25
|
OpenAiAdsExclusion["noTitle"] = "no_title";
|
|
25
26
|
OpenAiAdsExclusion["noBrand"] = "no_brand";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-ads.interface.js","sourceRoot":"","sources":["../../src/interfaces/openai-ads.interface.ts"],"names":[],"mappings":";;;AAGa,QAAA,kBAAkB,GAAG;IAChC,SAAS;IACT,OAAO;IACP,aAAa;IACb,KAAK;IACL,OAAO;IACP,aAAa;IACb,WAAW;IACX,uBAAuB;IACvB,cAAc;IACd,OAAO;IACP,WAAW;IACX,iBAAiB;CACT,CAAC;AA4BX,IAAY,
|
|
1
|
+
{"version":3,"file":"openai-ads.interface.js","sourceRoot":"","sources":["../../src/interfaces/openai-ads.interface.ts"],"names":[],"mappings":";;;AAGa,QAAA,kBAAkB,GAAG;IAChC,SAAS;IACT,OAAO;IACP,aAAa;IACb,KAAK;IACL,OAAO;IACP,aAAa;IACb,WAAW;IACX,uBAAuB;IACvB,cAAc;IACd,OAAO;IACP,WAAW;IACX,iBAAiB;CACT,CAAC;AA4BX,IAAY,kBAeX;AAfD,WAAY,kBAAkB;IAC5B,oCAAc,CAAA;IACd,kDAA4B,CAAA;IAC5B,2CAAqB,CAAA;IAErB,4CAAsB,CAAA;IACtB,oDAA8B,CAAA;IAC9B,0CAAoB,CAAA;IACpB,0CAAoB,CAAA;IACpB,4DAAsC,CAAA;IACtC,wDAAkC,CAAA;IAClC,sDAAgC,CAAA;IAChC,0CAAoB,CAAA;IAEpB,oDAA8B,CAAA;AAChC,CAAC,EAfW,kBAAkB,kCAAlB,kBAAkB,QAe7B;AAGD,IAAY,yBAKX;AALD,WAAY,yBAAyB;IACnC,kDAAqB,CAAA;IACrB,mDAAsB,CAAA;IAEtB,8DAAiC,CAAA;AACnC,CAAC,EALW,yBAAyB,yCAAzB,yBAAyB,QAKpC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ImboImageResponseInterface } from '@bytebrand/chunkable';
|
|
2
2
|
import { DataSchemes } from '@bytebrand/car-schema';
|
|
3
|
+
import { OpenAiAdsExclusion } from '../interfaces/openai-ads.interface';
|
|
3
4
|
import { OpenAiAdsMappingContext } from '../transformers/openai-ads.transformer';
|
|
4
5
|
import { OpenAiImageSelection } from '../transformers/openai-image-fields';
|
|
5
6
|
import { FeedGuard, LastGood } from './feed-guard';
|
|
@@ -10,7 +11,7 @@ export interface SourceCar {
|
|
|
10
11
|
export type DealerStatus = 'active' | 'inactive' | 'unknown';
|
|
11
12
|
export interface OpenAiAdsRunDeps {
|
|
12
13
|
forEachChunk: (fn: (cars: SourceCar[]) => Promise<void>) => Promise<unknown>;
|
|
13
|
-
filterCar: (source: SourceCar) =>
|
|
14
|
+
filterCar: (source: SourceCar) => OpenAiAdsExclusion | null;
|
|
14
15
|
dealerStatus: (ownerId: string) => Promise<DealerStatus>;
|
|
15
16
|
resolveImages: (source: SourceCar) => Promise<OpenAiImageSelection>;
|
|
16
17
|
imageStats: () => Record<string, number>;
|
|
@@ -72,8 +72,9 @@ class OpenAiAdsFeedRun {
|
|
|
72
72
|
continue;
|
|
73
73
|
}
|
|
74
74
|
seen.add(id);
|
|
75
|
-
|
|
76
|
-
|
|
75
|
+
const filtered = this.deps.filterCar(source);
|
|
76
|
+
if (filtered) {
|
|
77
|
+
increment(report.excluded, filtered);
|
|
77
78
|
continue;
|
|
78
79
|
}
|
|
79
80
|
const mapped = (0, openai_ads_transformer_1.mapOpenAiAdsVehicle)(source.car, mapping);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-ads-feed-run.js","sourceRoot":"","sources":["../../src/services/openai-ads-feed-run.ts"],"names":[],"mappings":";;;AAAA,2BAAoC;AACpC,+BAAqC;AAIrC,8EAAwE;AACxE,6EAI4C;AAC5C,mFAIgD;AAEhD,6CAA0F;AAC1F,2DAAsD;
|
|
1
|
+
{"version":3,"file":"openai-ads-feed-run.js","sourceRoot":"","sources":["../../src/services/openai-ads-feed-run.ts"],"names":[],"mappings":"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"}
|