@bytebrand/export-cars 1.26.31 → 1.26.33
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/autouncle.config.d.ts +14 -0
- package/dist/configs/autouncle.config.js +36 -3
- package/dist/configs/autouncle.config.js.map +1 -1
- package/dist/configs/meinstadt.config.d.ts +15 -0
- package/dist/configs/meinstadt.config.js +42 -3
- package/dist/configs/meinstadt.config.js.map +1 -1
- package/dist/constants/autouncle.contants.d.ts +1 -3
- package/dist/constants/autouncle.contants.js +2 -4
- package/dist/constants/autouncle.contants.js.map +1 -1
- package/dist/exporters/autouncle.exporter.d.ts +3 -2
- package/dist/exporters/autouncle.exporter.js +45 -27
- package/dist/exporters/autouncle.exporter.js.map +1 -1
- package/dist/exporters/meinstadt.exporter.d.ts +3 -2
- package/dist/exporters/meinstadt.exporter.js +40 -23
- package/dist/exporters/meinstadt.exporter.js.map +1 -1
- package/dist/formats/autouncle-json.builder.js +1 -4
- package/dist/formats/autouncle-json.builder.js.map +1 -1
- package/dist/interfaces/export-item.interface.d.ts +8 -12
- package/dist/interfaces/openai-ads.interface.d.ts +2 -1
- package/dist/interfaces/openai-ads.interface.js +1 -0
- package/dist/interfaces/openai-ads.interface.js.map +1 -1
- package/dist/interfaces/params.interface.d.ts +6 -0
- package/dist/services/autouncle-feed-run.d.ts +66 -0
- package/dist/services/autouncle-feed-run.js +135 -0
- package/dist/services/autouncle-feed-run.js.map +1 -0
- package/dist/services/meinstadt-feed-run.d.ts +81 -0
- package/dist/services/meinstadt-feed-run.js +166 -0
- package/dist/services/meinstadt-feed-run.js.map +1 -0
- package/dist/services/openai-ads-feed-run.d.ts +1 -0
- package/dist/services/openai-ads-feed-run.js +4 -0
- package/dist/services/openai-ads-feed-run.js.map +1 -1
- package/dist/transformers/autouncle.transformer.d.ts +38 -22
- package/dist/transformers/autouncle.transformer.js +156 -144
- package/dist/transformers/autouncle.transformer.js.map +1 -1
- package/dist/transformers/meinstadt.transformer.d.ts +17 -13
- package/dist/transformers/meinstadt.transformer.js +88 -61
- package/dist/transformers/meinstadt.transformer.js.map +1 -1
- package/dist/transformers/openai-ads-finance.d.ts +2 -0
- package/dist/transformers/openai-ads-finance.js +39 -0
- package/dist/transformers/openai-ads-finance.js.map +1 -0
- package/dist/transformers/openai-ads.transformer.d.ts +9 -1
- package/dist/transformers/openai-ads.transformer.js +25 -5
- package/dist/transformers/openai-ads.transformer.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/docs/autouncle/AUDIT.md +97 -0
- package/docs/autouncle/PARTNER-QUESTIONS.md +53 -0
- package/docs/autouncle/RUNBOOK.md +64 -0
- package/docs/meinestadt/AUDIT.md +146 -0
- package/docs/meinestadt/PARTNER-QUESTIONS.md +54 -0
- package/docs/meinestadt/RUNBOOK.md +64 -0
- package/docs/openai-ads/AUDIT.md +2 -1
- package/docs/openai-ads/RUNBOOK.md +26 -2
- package/package.json +3 -2
- package/src/configs/autouncle.config.ts +51 -3
- package/src/configs/meinstadt.config.ts +57 -2
- package/src/constants/autouncle.contants.ts +2 -3
- package/src/exporters/autouncle.exporter.ts +59 -37
- package/src/exporters/meinstadt.exporter.ts +53 -32
- package/src/formats/autouncle-json.builder.ts +2 -4
- package/src/interfaces/export-item.interface.ts +15 -12
- package/src/interfaces/openai-ads.interface.ts +2 -0
- package/src/interfaces/params.interface.ts +10 -0
- package/src/services/autouncle-feed-run.ts +197 -0
- package/src/services/meinstadt-feed-run.ts +240 -0
- package/src/services/openai-ads-feed-run.ts +6 -0
- package/src/transformers/autouncle.transformer.ts +217 -175
- package/src/transformers/meinstadt.transformer.ts +114 -68
- package/src/transformers/openai-ads-finance.ts +60 -0
- package/src/transformers/openai-ads.transformer.ts +32 -6
- package/test/autouncle-feed-run.test.ts +256 -0
- package/test/autouncle-mapping.test.ts +225 -0
- package/test/fixtures/meinstadt.fixture.ts +87 -0
- package/test/fixtures/openai-ads-finance-titles.json +325 -0
- package/test/meinstadt-feed-run.test.ts +288 -0
- package/test/meinstadt-mapping.test.ts +215 -0
- package/test/openai-ads-finance.test.ts +109 -0
|
@@ -9,150 +9,189 @@ 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.AutouncleTransformer = void 0;
|
|
12
|
+
exports.AutouncleTransformer = exports.mapAutouncleItem = exports.getAutouncleExclusion = exports.getAutounclePrice = exports.getAutouncleStatus = exports.getAutouncleYear = exports.toAutouncleImages = exports.AutouncleExclusion = void 0;
|
|
13
13
|
const schema_tools_1 = require("@bytebrand/schema-tools");
|
|
14
14
|
const i18n_dictionaries_1 = require("@bytebrand/i18n-dictionaries");
|
|
15
15
|
const lodash_1 = require("lodash");
|
|
16
16
|
const moment = require("moment");
|
|
17
17
|
const car_basic_data_scope_1 = require("@bytebrand/car-basic-data-scope");
|
|
18
|
-
const services_1 = require("../services");
|
|
19
18
|
const common_1 = require("@nestjs/common");
|
|
20
19
|
const autouncle_contants_1 = require("../constants/autouncle.contants");
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
20
|
+
const meinstadt_transformer_1 = require("./meinstadt.transformer");
|
|
21
|
+
var AutouncleExclusion;
|
|
22
|
+
(function (AutouncleExclusion) {
|
|
23
|
+
AutouncleExclusion["duplicateId"] = "duplicate_id";
|
|
24
|
+
AutouncleExclusion["filtered"] = "filtered";
|
|
25
|
+
AutouncleExclusion["noId"] = "no_id";
|
|
26
|
+
AutouncleExclusion["noDealer"] = "no_dealer";
|
|
27
|
+
AutouncleExclusion["notAvailable"] = "reserved_or_sold";
|
|
28
|
+
AutouncleExclusion["noPrice"] = "no_valid_price";
|
|
29
|
+
AutouncleExclusion["noImage"] = "no_valid_image";
|
|
30
|
+
})(AutouncleExclusion || (exports.AutouncleExclusion = AutouncleExclusion = {}));
|
|
31
|
+
const NOT_AVAILABLE = ['selector_offerAvailability_reserved', 'selector_offerAvailability_sold'];
|
|
32
|
+
const toAutouncleImages = (selection, maxImages = 0) => {
|
|
33
|
+
if (!selection?.fields) {
|
|
34
|
+
return [];
|
|
35
|
+
}
|
|
36
|
+
const urls = [selection.fields.image_url, ...selection.fields.additional_image_urls];
|
|
37
|
+
return maxImages > 0 ? urls.slice(0, maxImages) : urls;
|
|
38
|
+
};
|
|
39
|
+
exports.toAutouncleImages = toAutouncleImages;
|
|
40
|
+
const getAutouncleYear = (firstRegistration, now = new Date()) => {
|
|
41
|
+
const seconds = (0, meinstadt_transformer_1.toUnixSeconds)(firstRegistration);
|
|
42
|
+
if (seconds === null) {
|
|
43
|
+
return '';
|
|
32
44
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
45
|
+
const year = (0, lodash_1.toSafeInteger)(moment(seconds * 1000).format('YYYY'));
|
|
46
|
+
return year >= 1900 && year <= now.getFullYear() + 1 ? (0, lodash_1.toString)(year) : '';
|
|
47
|
+
};
|
|
48
|
+
exports.getAutouncleYear = getAutouncleYear;
|
|
49
|
+
const getAutouncleStatus = (firstRegistration) => (0, meinstadt_transformer_1.toUnixSeconds)(firstRegistration) === null ? 'Neuwagen' : 'Gebrauchtwagen';
|
|
50
|
+
exports.getAutouncleStatus = getAutouncleStatus;
|
|
51
|
+
const getAutounclePrice = (value) => {
|
|
52
|
+
if (value === null || value === undefined || value === '' || typeof value === 'boolean') {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
const amount = (0, lodash_1.toNumber)(value);
|
|
56
|
+
return Number.isFinite(amount) && amount > 0 ? `EUR ${value}` : null;
|
|
57
|
+
};
|
|
58
|
+
exports.getAutounclePrice = getAutounclePrice;
|
|
59
|
+
const withUnit = (value, unit) => {
|
|
60
|
+
const text = (0, lodash_1.toString)(value).trim();
|
|
61
|
+
return text ? `${text}${unit}` : '';
|
|
62
|
+
};
|
|
63
|
+
const BODY_STYLES = {
|
|
64
|
+
selector_unknown: 'Other',
|
|
65
|
+
selector_category_combi: 'Wagon',
|
|
66
|
+
selector_category_sedan: 'Sedan',
|
|
67
|
+
selector_category_compact: 'Small_car',
|
|
68
|
+
selector_category_coupe: 'Coupe',
|
|
69
|
+
selector_category_convertible: 'Convertible',
|
|
70
|
+
selector_category_suv: 'Suv',
|
|
71
|
+
selector_category_van: 'Van',
|
|
72
|
+
selector_category_transporter: 'Truck',
|
|
73
|
+
selector_category_minibus: 'Minivan',
|
|
74
|
+
};
|
|
75
|
+
const FUELS = {
|
|
76
|
+
selector_fuel_petrol: 'Gasoline',
|
|
77
|
+
selector_fuel_diesel: 'Diesel',
|
|
78
|
+
selector_fuel_electrical: 'Electric',
|
|
79
|
+
selector_fuel_hybridElectricalPetrol: 'Hybrid',
|
|
80
|
+
selector_fuel_hybridElectricalDiesel: 'Hybrid',
|
|
81
|
+
selector_fuel_carGas: 'CarGas',
|
|
82
|
+
selector_fuel_naturalGas: 'NaturalGas',
|
|
83
|
+
selector_fuel_ethanol: 'Ethanol',
|
|
84
|
+
selector_fuel_hydrogen: 'Hydrogen',
|
|
85
|
+
selector_unknown: 'Other',
|
|
86
|
+
};
|
|
87
|
+
const TRANSMISSIONS = {
|
|
88
|
+
selector_gearbox_manualShift: 'manual',
|
|
89
|
+
selector_gearbox_semiAutomatic: 'automatic',
|
|
90
|
+
selector_gearbox_automatic: 'automatic',
|
|
91
|
+
selector_unknown: 'other',
|
|
92
|
+
};
|
|
93
|
+
const fromSelector = (map, selector) => (typeof selector === 'string' && map[selector]) || map.selector_unknown;
|
|
94
|
+
const getMileage = (car) => {
|
|
95
|
+
const mileage = (0, lodash_1.get)(car, 'mainData.mileage', 0);
|
|
96
|
+
return mileage <= autouncle_contants_1.MIN_MILEAGES ? autouncle_contants_1.MIN_MILEAGES + 1 : mileage;
|
|
97
|
+
};
|
|
98
|
+
const getExteriorColor = (car, translate) => {
|
|
99
|
+
let colorSelection = (0, lodash_1.get)(car, 'exterior.exteriorColor', 'other');
|
|
100
|
+
if (!colorSelection || colorSelection === 'selector_unknown') {
|
|
101
|
+
colorSelection = 'other';
|
|
102
|
+
}
|
|
103
|
+
return translate(colorSelection);
|
|
104
|
+
};
|
|
105
|
+
const getAutouncleExclusion = (car) => {
|
|
106
|
+
if (!(0, lodash_1.toString)((0, lodash_1.get)(car, '_id', '')).trim()) {
|
|
107
|
+
return AutouncleExclusion.noId;
|
|
108
|
+
}
|
|
109
|
+
if (!(0, lodash_1.toString)((0, lodash_1.get)(car, 'metaData.ownerId', '')).trim()) {
|
|
110
|
+
return AutouncleExclusion.noDealer;
|
|
111
|
+
}
|
|
112
|
+
if (NOT_AVAILABLE.includes((0, lodash_1.toString)((0, lodash_1.get)(car, 'offer.offerAvailability', '')))) {
|
|
113
|
+
return AutouncleExclusion.notAvailable;
|
|
114
|
+
}
|
|
115
|
+
if (!(0, exports.getAutounclePrice)((0, lodash_1.get)(car, 'price.currentSalesPrice', null))) {
|
|
116
|
+
return AutouncleExclusion.noPrice;
|
|
117
|
+
}
|
|
118
|
+
return null;
|
|
119
|
+
};
|
|
120
|
+
exports.getAutouncleExclusion = getAutouncleExclusion;
|
|
121
|
+
const mapAutouncleItem = (car, ctx) => {
|
|
122
|
+
const excluded = (0, exports.getAutouncleExclusion)(car);
|
|
123
|
+
if (excluded) {
|
|
124
|
+
return { ok: false, reason: excluded };
|
|
125
|
+
}
|
|
126
|
+
if (!ctx.images.length) {
|
|
127
|
+
return { ok: false, reason: AutouncleExclusion.noImage };
|
|
128
|
+
}
|
|
129
|
+
const autodeId = (0, lodash_1.toString)((0, lodash_1.get)(car, '_id', '')).trim();
|
|
130
|
+
const sellerId = (0, lodash_1.toString)((0, lodash_1.get)(car, 'metaData.ownerId', '')).trim();
|
|
131
|
+
const price = (0, exports.getAutounclePrice)((0, lodash_1.get)(car, 'price.currentSalesPrice', null));
|
|
132
|
+
const firstRegistration = (0, lodash_1.get)(car, 'mainData.firstRegistration', null);
|
|
133
|
+
return {
|
|
134
|
+
ok: true,
|
|
135
|
+
item: {
|
|
136
|
+
back_link: `https://www.${ctx.domain}/search/vehicle/${autodeId}?source=classifieds&medium=cpc&campaign=autouncle`,
|
|
42
137
|
make: (0, lodash_1.toString)((0, lodash_1.get)(car, 'mainData.make', '')),
|
|
43
138
|
model_name: (0, lodash_1.toString)((0, lodash_1.get)(car, 'mainData.model', '')),
|
|
44
139
|
model_variant: (0, lodash_1.toString)((0, lodash_1.get)(car, 'mainData.subModel', '')),
|
|
45
|
-
fuel:
|
|
46
|
-
body:
|
|
140
|
+
fuel: fromSelector(FUELS, (0, lodash_1.get)(car, 'consumption.fuel', null)),
|
|
141
|
+
body: fromSelector(BODY_STYLES, (0, lodash_1.get)(car, 'mainData.category', null)),
|
|
47
142
|
doors: (0, lodash_1.toString)((0, lodash_1.get)(car, 'mainData.doors', '')),
|
|
48
|
-
price
|
|
49
|
-
year: (0,
|
|
50
|
-
status: (0,
|
|
51
|
-
mileage: (0, lodash_1.toString)(
|
|
52
|
-
leasing:
|
|
53
|
-
color:
|
|
54
|
-
engine_size: (
|
|
143
|
+
price,
|
|
144
|
+
year: (0, exports.getAutouncleYear)(firstRegistration),
|
|
145
|
+
status: (0, exports.getAutouncleStatus)(firstRegistration),
|
|
146
|
+
mileage: (0, lodash_1.toString)(getMileage(car)) + 'km',
|
|
147
|
+
leasing: '',
|
|
148
|
+
color: getExteriorColor(car, ctx.translate),
|
|
149
|
+
engine_size: withUnit((0, lodash_1.get)(car, 'engineData.cubicCapacity', ''), 'ccm'),
|
|
55
150
|
power: (0, lodash_1.toString)((0, lodash_1.get)(car, 'engineData.powerKW', '')),
|
|
56
|
-
gear_type:
|
|
57
|
-
has_4wd:
|
|
151
|
+
gear_type: fromSelector(TRANSMISSIONS, (0, lodash_1.get)(car, 'driveSuspension.gearbox', null)),
|
|
152
|
+
has_4wd: '',
|
|
58
153
|
seller_type: 'Dealer',
|
|
59
|
-
seller_region:
|
|
60
|
-
seller_city:
|
|
61
|
-
seller_street_address:
|
|
62
|
-
seller_postcode:
|
|
154
|
+
seller_region: ctx.address.region,
|
|
155
|
+
seller_city: ctx.address.city,
|
|
156
|
+
seller_street_address: ctx.address.addr1,
|
|
157
|
+
seller_postcode: ctx.address.postal_code,
|
|
63
158
|
seller_name: 'auto.de',
|
|
64
|
-
seller_id:
|
|
159
|
+
seller_id: sellerId,
|
|
65
160
|
description: (0, lodash_1.toString)((0, lodash_1.get)(car, 'offer.offerDescription', '')),
|
|
66
|
-
images:
|
|
161
|
+
images: ctx.images.map(url => ({ url })),
|
|
67
162
|
fuel_economy: (0, lodash_1.toString)((0, lodash_1.get)(car, 'consumption.consumptionCombined', '')),
|
|
68
163
|
co2_emission: (0, lodash_1.toString)((0, lodash_1.get)(car, 'environmentEmissions.co2', '')),
|
|
69
164
|
co2_effiency_class: (0, lodash_1.toString)((0, lodash_1.get)(car, 'environmentEmissions.wltpEnergyEfficiencyClass', '')),
|
|
70
165
|
euro_emission_class: (0, lodash_1.toString)((0, lodash_1.get)(car, 'environmentEmissions.emissionClass', '')),
|
|
71
166
|
enviromental_sticker: (0, lodash_1.toString)((0, lodash_1.get)(car, 'environmentEmissions.emissionSticker', '')),
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
return (0, lodash_1.toSafeInteger)(moment(firstRegistration * 1000).format('YYYY'));
|
|
84
|
-
}
|
|
85
|
-
return '';
|
|
86
|
-
}
|
|
87
|
-
mapBodyStyle(car) {
|
|
88
|
-
const available = {
|
|
89
|
-
selector_unknown: 'Other',
|
|
90
|
-
selector_category_combi: 'Wagon',
|
|
91
|
-
selector_category_sedan: 'Sedan',
|
|
92
|
-
selector_category_compact: 'Small_car',
|
|
93
|
-
selector_category_coupe: 'Coupe',
|
|
94
|
-
selector_category_convertible: 'Convertible',
|
|
95
|
-
selector_category_suv: 'Suv',
|
|
96
|
-
selector_category_van: 'Van',
|
|
97
|
-
selector_category_transporter: 'Truck',
|
|
98
|
-
selector_category_minibus: 'Minivan',
|
|
99
|
-
};
|
|
100
|
-
const category = (0, lodash_1.get)(car, 'mainData.category', 'selector_unknown');
|
|
101
|
-
return (0, lodash_1.get)(available, category);
|
|
102
|
-
}
|
|
103
|
-
mapFuel(car) {
|
|
104
|
-
const available = {
|
|
105
|
-
selector_fuel_petrol: 'Gasoline',
|
|
106
|
-
selector_fuel_diesel: 'Diesel',
|
|
107
|
-
selector_fuel_electrical: 'Electric',
|
|
108
|
-
selector_fuel_hybridElectricalPetrol: 'Hybrid',
|
|
109
|
-
selector_fuel_hybridElectricalDiesel: 'Hybrid',
|
|
110
|
-
selector_fuel_carGas: 'CarGas',
|
|
111
|
-
selector_fuel_naturalGas: 'NaturalGas',
|
|
112
|
-
selector_fuel_ethanol: 'Ethanol',
|
|
113
|
-
selector_fuel_hydrogen: 'Hydrogen',
|
|
114
|
-
selector_unknown: 'Other',
|
|
115
|
-
};
|
|
116
|
-
const fuel = (0, lodash_1.get)(car, 'consumption.fuel', 'selector_unknown');
|
|
117
|
-
return (0, lodash_1.get)(available, fuel);
|
|
118
|
-
}
|
|
119
|
-
mapTransmission(car) {
|
|
120
|
-
const available = {
|
|
121
|
-
selector_gearbox_manualShift: 'manual',
|
|
122
|
-
selector_gearbox_semiAutomatic: 'automatic',
|
|
123
|
-
selector_gearbox_automatic: 'automatic',
|
|
124
|
-
selector_unknown: 'other',
|
|
125
|
-
};
|
|
126
|
-
const transmission = (0, lodash_1.get)(car, 'driveSuspension.gearbox', 'selector_unknown');
|
|
127
|
-
return (0, lodash_1.get)(available, transmission);
|
|
167
|
+
},
|
|
168
|
+
};
|
|
169
|
+
};
|
|
170
|
+
exports.mapAutouncleItem = mapAutouncleItem;
|
|
171
|
+
let AutouncleTransformer = class AutouncleTransformer {
|
|
172
|
+
translator;
|
|
173
|
+
postalCodesService;
|
|
174
|
+
constructor() {
|
|
175
|
+
const dict = { ...i18n_dictionaries_1.de, ...i18n_dictionaries_1.deVehicleProps, ...i18n_dictionaries_1.deVehicleDetailsPage };
|
|
176
|
+
this.translator = new schema_tools_1.TranslatorExtended(dict);
|
|
177
|
+
this.postalCodesService = car_basic_data_scope_1.DePostalCodesService.getInstance();
|
|
128
178
|
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
return `EUR ${price}`;
|
|
179
|
+
translate(key) {
|
|
180
|
+
return this.translator.translateVal(key);
|
|
132
181
|
}
|
|
133
|
-
async getAddress(
|
|
182
|
+
async getAddress(owner) {
|
|
134
183
|
let addressPath = 'businessAddress';
|
|
135
184
|
if (this.isEmptyAddress((0, lodash_1.get)(owner, addressPath, {}))) {
|
|
136
185
|
addressPath = 'mainAddress';
|
|
137
186
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
if (this.isEmptyLocation(locationEntity)) {
|
|
143
|
-
addr1 = autouncle_contants_1.DEFAULT_ADDR1;
|
|
144
|
-
city = autouncle_contants_1.DEFAULT_CITY;
|
|
145
|
-
zip = autouncle_contants_1.DEFAULT_ZIP;
|
|
146
|
-
locationEntity = await this.getLocationByInfo({ city, zip: (0, lodash_1.toSafeInteger)(zip) });
|
|
147
|
-
}
|
|
148
|
-
const coords = await this.getCoords(car, locationEntity);
|
|
149
|
-
const country = (0, lodash_1.get)(owner, `${addressPath}.country.name`, '');
|
|
187
|
+
const city = (0, lodash_1.toString)((0, lodash_1.get)(owner, `${addressPath}.city`, ''));
|
|
188
|
+
const zip = (0, lodash_1.toString)((0, lodash_1.get)(owner, `${addressPath}.zip`, ''));
|
|
189
|
+
const addr1 = (0, lodash_1.toString)((0, lodash_1.get)(owner, `${addressPath}.street`, ''));
|
|
190
|
+
const location = await this.getLocationByInfo({ city, zip: (0, lodash_1.toSafeInteger)(zip) });
|
|
150
191
|
return {
|
|
151
|
-
...coords,
|
|
152
192
|
city,
|
|
153
193
|
addr1,
|
|
154
|
-
region: (0, lodash_1.
|
|
155
|
-
country: country || 'Deutschland',
|
|
194
|
+
region: this.isEmptyLocation(location) ? autouncle_contants_1.DEFAULT_REGION : (0, lodash_1.toString)(location['Place Name']),
|
|
156
195
|
postal_code: zip,
|
|
157
196
|
};
|
|
158
197
|
}
|
|
@@ -166,44 +205,17 @@ let AutouncleTransformer = class AutouncleTransformer {
|
|
|
166
205
|
return true;
|
|
167
206
|
return ['city', 'zip', 'country'].every((key) => (0, lodash_1.isEmpty)(address[key]));
|
|
168
207
|
}
|
|
169
|
-
async getCoords(car, locationEntry) {
|
|
170
|
-
const data = {
|
|
171
|
-
latitude: (0, lodash_1.get)(car, 'location.latitude'),
|
|
172
|
-
longitude: (0, lodash_1.get)(car, 'location.longitude'),
|
|
173
|
-
};
|
|
174
|
-
if (data.latitude && data.longitude) {
|
|
175
|
-
return data;
|
|
176
|
-
}
|
|
177
|
-
return {
|
|
178
|
-
longitude: (0, lodash_1.get)(locationEntry, 'Longitude'),
|
|
179
|
-
latitude: (0, lodash_1.get)(locationEntry, 'Latitude'),
|
|
180
|
-
};
|
|
181
|
-
}
|
|
182
208
|
async getLocationByInfo(info) {
|
|
183
|
-
let entry = await this.postalCodesService.getLocationByPostalCode(info.zip);
|
|
184
|
-
if (!entry) {
|
|
209
|
+
let entry = info.zip ? await this.postalCodesService.getLocationByPostalCode(info.zip) : undefined;
|
|
210
|
+
if (!entry && info.city) {
|
|
185
211
|
entry = await this.postalCodesService.getLocationByCity(info.city);
|
|
186
212
|
}
|
|
187
213
|
return entry;
|
|
188
214
|
}
|
|
189
|
-
getExteriorColor(car) {
|
|
190
|
-
let colorSelection = (0, lodash_1.get)(car, 'exterior.exteriorColor', 'other');
|
|
191
|
-
if (!colorSelection || colorSelection === 'selector_unknown') {
|
|
192
|
-
colorSelection = 'other';
|
|
193
|
-
}
|
|
194
|
-
return this.translator.translateVal(colorSelection);
|
|
195
|
-
}
|
|
196
|
-
getMileage(car) {
|
|
197
|
-
const mileage = (0, lodash_1.get)(car, 'mainData.mileage', 0);
|
|
198
|
-
return mileage <= autouncle_contants_1.MIN_MILEAGES ? autouncle_contants_1.MIN_MILEAGES + 1 : mileage;
|
|
199
|
-
}
|
|
200
|
-
has4WD() {
|
|
201
|
-
return '';
|
|
202
|
-
}
|
|
203
215
|
};
|
|
204
216
|
exports.AutouncleTransformer = AutouncleTransformer;
|
|
205
217
|
exports.AutouncleTransformer = AutouncleTransformer = __decorate([
|
|
206
218
|
(0, common_1.Injectable)(),
|
|
207
|
-
__metadata("design:paramtypes", [
|
|
219
|
+
__metadata("design:paramtypes", [])
|
|
208
220
|
], AutouncleTransformer);
|
|
209
221
|
//# sourceMappingURL=autouncle.transformer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autouncle.transformer.js","sourceRoot":"","sources":["../../src/transformers/autouncle.transformer.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0DAA6D;AAC7D,oEAAwF;AACxF,
|
|
1
|
+
{"version":3,"file":"autouncle.transformer.js","sourceRoot":"","sources":["../../src/transformers/autouncle.transformer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,22 @@
|
|
|
1
|
-
import { ImboImageResponseInterface } from '@bytebrand/chunkable';
|
|
2
1
|
import { DataSchemes } from '@bytebrand/car-schema';
|
|
3
|
-
import {
|
|
2
|
+
import { UserService } from '../services';
|
|
4
3
|
import { MeinstadtJsonItem } from '../interfaces';
|
|
4
|
+
import { OpenAiImageSelection } from './openai-image-fields';
|
|
5
|
+
export declare const toMeinstadtImages: (selection: OpenAiImageSelection, maxImages?: number) => string[];
|
|
6
|
+
export interface MeinstadtMappingContext {
|
|
7
|
+
domain: string;
|
|
8
|
+
cpc: string | null;
|
|
9
|
+
equipment: string;
|
|
10
|
+
images: string[];
|
|
11
|
+
translate?: (key: string) => string | undefined;
|
|
12
|
+
}
|
|
13
|
+
export declare const toAccidentFree: (accidentDamaged: unknown) => boolean | null;
|
|
14
|
+
export declare const toUnixSeconds: (value: unknown) => number | null;
|
|
15
|
+
export declare const translateSelector: (val: string | null, translate?: (key: string) => string | undefined) => string | null;
|
|
16
|
+
export declare const getUsageState: (car: DataSchemes.Car) => string;
|
|
17
|
+
export declare const mapMeinstadtItem: (car: DataSchemes.Car, ctx: MeinstadtMappingContext) => MeinstadtJsonItem;
|
|
5
18
|
export declare class MeinstadtTransformer {
|
|
6
|
-
private configService;
|
|
7
|
-
private readonly imageService;
|
|
8
19
|
private userService;
|
|
9
|
-
constructor(
|
|
10
|
-
|
|
11
|
-
car: DataSchemes.Car;
|
|
12
|
-
images: ImboImageResponseInterface[];
|
|
13
|
-
}): Promise<Partial<MeinstadtJsonItem>>;
|
|
14
|
-
private getTitle;
|
|
15
|
-
private translate;
|
|
16
|
-
private getUsageState;
|
|
17
|
-
private getDescription;
|
|
20
|
+
constructor(userService: UserService);
|
|
21
|
+
getDescription(car: DataSchemes.Car): Promise<string>;
|
|
18
22
|
}
|
|
@@ -9,75 +9,104 @@ 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.MeinstadtTransformer = void 0;
|
|
12
|
+
exports.MeinstadtTransformer = exports.mapMeinstadtItem = exports.getUsageState = exports.translateSelector = exports.toUnixSeconds = exports.toAccidentFree = exports.toMeinstadtImages = void 0;
|
|
13
13
|
const lodash_1 = require("lodash");
|
|
14
14
|
const common_1 = require("@nestjs/common");
|
|
15
15
|
const car_description_1 = require("@bytebrand/car-description");
|
|
16
16
|
const i18n_dictionaries_1 = require("@bytebrand/i18n-dictionaries");
|
|
17
17
|
const services_1 = require("../services");
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
userService;
|
|
22
|
-
constructor(configService, imageService, userService) {
|
|
23
|
-
this.configService = configService;
|
|
24
|
-
this.imageService = imageService;
|
|
25
|
-
this.userService = userService;
|
|
18
|
+
const toMeinstadtImages = (selection, maxImages = 0) => {
|
|
19
|
+
if (!selection?.fields) {
|
|
20
|
+
return [];
|
|
26
21
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
cpc: (0, lodash_1.get)(this.configService.config, 'cpc', '0.08'),
|
|
35
|
-
listingUrl: `https://www.${this.configService.config.domain}/search/vehicle/${carId}?source=classifieds&medium=listing&campaign=meinestadt`,
|
|
36
|
-
title: this.getTitle(car),
|
|
37
|
-
accidentFree: (0, lodash_1.get)(car, 'mainData.accidentDamaged', null),
|
|
38
|
-
mileage: (0, lodash_1.get)(car, 'mainData.mileage', null),
|
|
39
|
-
initialRegistration: (0, lodash_1.get)(car, 'mainData.firstRegistration', null),
|
|
40
|
-
offerCreationDate: (0, lodash_1.get)(car, 'metaData.creationDate', null),
|
|
41
|
-
numberOfDoors: (0, lodash_1.get)(car, 'mainData.doors', null),
|
|
42
|
-
numberOfSeats: (0, lodash_1.get)(car, 'mainData.seats', null),
|
|
43
|
-
numberOfPreviousOwners: (0, lodash_1.get)(car, 'mainData.numberOfPreviousOwners', null),
|
|
44
|
-
price: (0, lodash_1.get)(car, 'price.currentSalesPrice', null),
|
|
45
|
-
power: (0, lodash_1.get)(car, 'engineData.powerPS', null),
|
|
46
|
-
co2Emissions: (0, lodash_1.get)(car, 'environmentEmissions.co2', null),
|
|
47
|
-
fuelConsumptionCombined: (0, lodash_1.get)(car, 'consumption.consumptionCombined', null),
|
|
48
|
-
equipment: await this.getDescription(car),
|
|
49
|
-
color: this.translate((0, lodash_1.get)(car, 'exterior.exteriorColor', null)),
|
|
50
|
-
bodyType: this.translate((0, lodash_1.get)(car, 'mainData.category', null)),
|
|
51
|
-
emissionClass: this.translate((0, lodash_1.get)(car, 'environmentEmissions.emissionClass', null)),
|
|
52
|
-
emissionSticker: this.translate((0, lodash_1.get)(car, 'environmentEmissions.emissionSticker', null)),
|
|
53
|
-
fuelType: this.translate((0, lodash_1.get)(car, 'consumption.fuel', null)),
|
|
54
|
-
'transmissionType/transmission': this.translate((0, lodash_1.get)(car, 'driveSuspension.gearbox', null)),
|
|
55
|
-
imagesCount: carImages.length,
|
|
56
|
-
'customerType/sellerType': 'Händler',
|
|
57
|
-
usageState: this.translate(this.getUsageState(car)),
|
|
58
|
-
images: carImages[0],
|
|
59
|
-
};
|
|
22
|
+
const urls = [selection.fields.image_url, ...selection.fields.additional_image_urls];
|
|
23
|
+
return maxImages > 0 ? urls.slice(0, maxImages) : urls;
|
|
24
|
+
};
|
|
25
|
+
exports.toMeinstadtImages = toMeinstadtImages;
|
|
26
|
+
const toAccidentFree = (accidentDamaged) => {
|
|
27
|
+
if (accidentDamaged === false) {
|
|
28
|
+
return true;
|
|
60
29
|
}
|
|
61
|
-
|
|
62
|
-
return
|
|
30
|
+
if (accidentDamaged === true) {
|
|
31
|
+
return false;
|
|
63
32
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
33
|
+
return null;
|
|
34
|
+
};
|
|
35
|
+
exports.toAccidentFree = toAccidentFree;
|
|
36
|
+
const toUnixSeconds = (value) => {
|
|
37
|
+
let seconds;
|
|
38
|
+
if (typeof value === 'number') {
|
|
39
|
+
seconds = value;
|
|
40
|
+
}
|
|
41
|
+
else if (value instanceof Date) {
|
|
42
|
+
seconds = value.getTime() / 1000;
|
|
43
|
+
}
|
|
44
|
+
else if (typeof value === 'string' && value.trim()) {
|
|
45
|
+
seconds = Date.parse(value) / 1000;
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
69
48
|
return null;
|
|
70
49
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
50
|
+
return Number.isFinite(seconds) && seconds > 0 ? Math.floor(seconds) : null;
|
|
51
|
+
};
|
|
52
|
+
exports.toUnixSeconds = toUnixSeconds;
|
|
53
|
+
const translateSelector = (val, translate = key => i18n_dictionaries_1.de[key]) => {
|
|
54
|
+
if (!val || val === 'selector_unknown')
|
|
55
|
+
return null;
|
|
56
|
+
return translate(val) || null;
|
|
57
|
+
};
|
|
58
|
+
exports.translateSelector = translateSelector;
|
|
59
|
+
const getUsageState = (car) => {
|
|
60
|
+
const condition = (0, lodash_1.get)(car, 'mainData.condition', null);
|
|
61
|
+
if (!condition || condition === 'selector_unknown') {
|
|
62
|
+
const mileage = (0, lodash_1.get)(car, 'mainData.mileage', 0);
|
|
63
|
+
if (mileage >= 100) {
|
|
64
|
+
return 'selector_condition_used';
|
|
79
65
|
}
|
|
80
|
-
return
|
|
66
|
+
return 'selector_condition_new';
|
|
67
|
+
}
|
|
68
|
+
return condition;
|
|
69
|
+
};
|
|
70
|
+
exports.getUsageState = getUsageState;
|
|
71
|
+
const mapMeinstadtItem = (car, ctx) => {
|
|
72
|
+
const carId = (0, lodash_1.toString)((0, lodash_1.get)(car, '_id', null));
|
|
73
|
+
const translate = (val) => (0, exports.translateSelector)(val, ctx.translate);
|
|
74
|
+
return {
|
|
75
|
+
id: (0, lodash_1.get)(car, 'metaData.vehicleId', null),
|
|
76
|
+
make: (0, lodash_1.get)(car, 'mainData.make', null),
|
|
77
|
+
model: (0, lodash_1.get)(car, 'mainData.model', null),
|
|
78
|
+
cpc: ctx.cpc,
|
|
79
|
+
listingUrl: `https://www.${ctx.domain}/search/vehicle/${carId}?source=classifieds&medium=listing&campaign=meinestadt`,
|
|
80
|
+
title: `${car.mainData.make} ${car.mainData.model} ${car.mainData.subModel}`,
|
|
81
|
+
accidentFree: (0, exports.toAccidentFree)((0, lodash_1.get)(car, 'mainData.accidentDamaged', null)),
|
|
82
|
+
mileage: (0, lodash_1.get)(car, 'mainData.mileage', null),
|
|
83
|
+
initialRegistration: (0, exports.toUnixSeconds)((0, lodash_1.get)(car, 'mainData.firstRegistration', null)),
|
|
84
|
+
offerCreationDate: (0, exports.toUnixSeconds)((0, lodash_1.get)(car, 'metaData.creationDate', null)),
|
|
85
|
+
numberOfDoors: (0, lodash_1.get)(car, 'mainData.doors', null),
|
|
86
|
+
numberOfSeats: (0, lodash_1.get)(car, 'mainData.seats', null),
|
|
87
|
+
numberOfPreviousOwners: (0, lodash_1.get)(car, 'mainData.numberOfPreviousOwners', null),
|
|
88
|
+
price: (0, lodash_1.get)(car, 'price.currentSalesPrice', null),
|
|
89
|
+
power: (0, lodash_1.get)(car, 'engineData.powerPS', null),
|
|
90
|
+
co2Emissions: (0, lodash_1.get)(car, 'environmentEmissions.co2', null),
|
|
91
|
+
fuelConsumptionCombined: (0, lodash_1.get)(car, 'consumption.consumptionCombined', null),
|
|
92
|
+
equipment: ctx.equipment,
|
|
93
|
+
color: translate((0, lodash_1.get)(car, 'exterior.exteriorColor', null)),
|
|
94
|
+
bodyType: translate((0, lodash_1.get)(car, 'mainData.category', null)),
|
|
95
|
+
emissionClass: translate((0, lodash_1.get)(car, 'environmentEmissions.emissionClass', null)),
|
|
96
|
+
emissionSticker: translate((0, lodash_1.get)(car, 'environmentEmissions.emissionSticker', null)),
|
|
97
|
+
fuelType: translate((0, lodash_1.get)(car, 'consumption.fuel', null)),
|
|
98
|
+
'transmissionType/transmission': translate((0, lodash_1.get)(car, 'driveSuspension.gearbox', null)),
|
|
99
|
+
imagesCount: ctx.images.length,
|
|
100
|
+
'customerType/sellerType': 'Händler',
|
|
101
|
+
usageState: translate((0, exports.getUsageState)(car)),
|
|
102
|
+
images: [...ctx.images],
|
|
103
|
+
};
|
|
104
|
+
};
|
|
105
|
+
exports.mapMeinstadtItem = mapMeinstadtItem;
|
|
106
|
+
let MeinstadtTransformer = class MeinstadtTransformer {
|
|
107
|
+
userService;
|
|
108
|
+
constructor(userService) {
|
|
109
|
+
this.userService = userService;
|
|
81
110
|
}
|
|
82
111
|
async getDescription(car) {
|
|
83
112
|
const dealerId = (0, lodash_1.get)(car, 'metaData.ownerId');
|
|
@@ -89,8 +118,6 @@ let MeinstadtTransformer = class MeinstadtTransformer {
|
|
|
89
118
|
exports.MeinstadtTransformer = MeinstadtTransformer;
|
|
90
119
|
exports.MeinstadtTransformer = MeinstadtTransformer = __decorate([
|
|
91
120
|
(0, common_1.Injectable)(),
|
|
92
|
-
__metadata("design:paramtypes", [services_1.
|
|
93
|
-
services_1.ImagesService,
|
|
94
|
-
services_1.UserService])
|
|
121
|
+
__metadata("design:paramtypes", [services_1.UserService])
|
|
95
122
|
], MeinstadtTransformer);
|
|
96
123
|
//# sourceMappingURL=meinstadt.transformer.js.map
|