Полета по източник
Какво реално публикува всеки поддържан източник на инвентар — матрицата на покритието на данните за състоянието, капаните при всеки източник и как да пишете код, който оцелява при разликите.
Поддържаните източници на инвентар захранват един API, но не публикуват едни и същи неща. Германска платформа на едро дава пълен протокол от оглед и каталог на оборудването по DAT; японски лот за износ дава протокол от огледа на търга и оценка на състоянието; корейските обяви носят характеристики и по избор данни за състоянието. Тази страница е честната карта кой какво ви дава, за да решите какво може да обещае продуктът ви, преди да го изградите.
Три слоя данни
Всеки автомобил в API е описан на три нива на нормализиране. Да знаете на кой слой е дадено поле ви казва веднага колко преносимо е.
| Слой | Къде | Последователност | За какво |
|---|---|---|---|
| Общото ядро | Картите от търсенето и горното ниво на двата ендпойнта за детайли | Еднакво за всички поддържани източници | Списъци, филтри, сортиране, показване на цени, обратни броячи — всичко, което трябва да работи еднакво. |
| Нормализираният блок с детайли | vehicle_details в /api/auction/{site}/{id} и /api/car-details | Еднакви имена на ключовете навсякъде; наличието варира по източник | Състояние, щети, документи, сервизна история, оборудване. Проверявайте за ключа, не го предполагайте. |
| Суровата карта на източника | car_identification | Специфична за източника. Имената на ключовете се сменят с всеки източник | Последната миля — стойност, която източникът публикува и която още няма еквивалент между източниците. |
Общото ядро е гарантирано в смисъл, че полето винаги е в договора; отделна стойност пак може да е null, когато конкретен източник не я публикува. fuel_group, например, е празно за повечето японски лотове — а лот без записано гориво съвпада с всеки филтър fuel, а не с нито един, така че филтрирането по гориво никога не прави тези лотове недостъпни.
Какво ви дава всеки източник
Прочетете тази таблица, преди да определите обхвата на функция. „Оскъдно“ не е бъг за докладване — това е, което публикува аукционната къща.
| Източник | Какво е | Дълбочина | Какво дава само той |
|---|---|---|---|
auto1 | Най-голямата дигитална B2B платформа на едро в Европа | Дълбоко — пълен vehicle_details | Най-богатите данни за оборудването в API (каталог по DAT), измервания на дебелината на боята, състояние на джантите, структурирани щети с обобщение и история на предишни щети. |
openlane | Общоевропейски търгове с автомобили от лизинг и автопаркове | Дълбоко — пълен vehicle_details | Свободни коментари за всяка щета, PDF протоколи по тип (вътрешни щети, външни щети, поддръжка, състояние на батерията) и собствен индекс на протоколите в car_reports. |
schadeautos | Повредени и подлежащи на ремонт автомобили от Нидерландия и Бенелюкс | Средно | Полета за повредени автомобили: обем на двигателя, трансмисия, статус ДДС/марж, нетни и брутни цени за износ, описателен текст за щетите. |
copart | Copart Germany — повредени лотове и такива в движение | Средно | Сигнал „пали и се движи“, серия и специално оборудване от фабричния лист, публикувани цени на лота; без актуална цена при заявка. |
encar | Водещата автомобилна платформа в Южна Корея | Средно — дълбоки характеристики, плитко състояние | Голям блок с характеристики и опции, брой снимки по тип и данни за регистрацията. Детайлите за състоянието и произшествията са по-оскъдни от тези на източниците от ЕС. |
kbchachacha | Южнокорейска платформа за продажба в брой | Характеристики и по избор данни от оглед | vehicle_details.kb_diagnosis / kb_inspection: статус, редове на протокола, проверени системи, маркировки на панелите, снимки и VIN, когато ги има. |
japan | Японски инвентар за износ от 127 аукционни къщи (USS, JU, TAA, CAA, ARAI, Honda и други) | Плитко — очаквайте vehicle_details оскъден или липсващ | Импортирани снимки, по избор протоколи и оценки, информация за първоначалната продажба и данни от съпоставените оферти на посредници. Без извличане на детайли при поискване. |
Данни за състоянието: матрица на покритието
Това е таблицата, от която хората реално имат нужда. Тя казва кои ключове на vehicle_details можете да очаквате от кой източник. Празно означава, че текущата интеграция не обещава това поле. То може да не е налично при източника, още да не е обогатено или да е пропуснато заради правата; липсата не е присъда за чисто състояние.
auto1 | openlane | Други източници | |
|---|---|---|---|
damages (по панел) | Структурирани, с обобщение, брой и предишни щети | Структурирани, с коментар за всяка щета | Оскъдни или липсващи |
inspection_reports | Един URL | PDF по тип според type_id | KB използва kb_diagnosis / kb_inspection. Японските протоколи са незадължителни импортирани данни. |
documents | Сервизна книжка + снимки с детайли от сервиза | Няма — само булеви стойности в paperwork | — |
service_history | Само обобщение | Само обобщение | — |
equipment | Каталог по DAT (най-богат) | Списък с опции + аксесоари | Варира |
paperwork | Частично | COCAvailable, RegistrationDocsAvailable, IsV5Present, LicensePlate | — |
estimated_repair_costs | Да | Да | — |
Бележки по източник, които си струва да знаете
Японски търгове — цената е начално наддаване
Активен японски лот няма крайна цена, докато не приключи, така че current_price при japan е началното наддаване, а не разход. Някои лотове не публикуват начална цена, а противоречивите импортирани цени не се показват. Номиналните начални цени може да са далеч под крайната. Четете я като долна граница. buy_now_price никога не се задава за този източник и в резултат класирането по най-добра стойност ще отбелязва някои от тези лотове прекалено оптимистично.
Японските редове са с произход JP. Използвайте country=JP или site=japan и /api/auction/japan/{id} за съхранените детайли. /api/car-details не приема Япония. Използвайте ID като низ от търсенето, без да го превръщате в JavaScript число.
OpenLane — видове протоколи
OpenLane класифицира всеки протокол, който публикува. type е четимото име, а type_id — суровият код на източника.
type_id | type | Появява се в |
|---|---|---|
| 1 | internal_damage_report | inspection_reports |
| 2 | external_damage_report | inspection_reports |
| 3 | maintenance_records | inspection_reports |
| 4 | option_report | option_reports |
| 5 | battery_health_report | inspection_reports |
| друго | report | inspection_reports |
Единственият протокол от оглед на Auto1 се нормализира в същия списък с тип inspection_report и без type_id.
Японски търгове — протоколът от търга
Японските протоколи от търговете и снимките са незадължителни импортирани данни. Използвайте върнатата галерия и наличните записи за протоколи; текущият импорт не обещава нормализиран запис auction_sheet за всеки лот, извлечен VIN или актуално извличане на детайли от източника. Спецификацията от източника и данните от съпоставените посредници остават в car_identification; адресите на импортираните протоколи са в JapanMerged.AuctionSheetUrls.
Отваряне и изтегляне на протоколи
Следвайте точно върнатия адрес /report-vault/{site}/{auction_id}/{token}; токенът идентифицира вече известен протокол и не е адрес на източника, който можете да съставите. Този маршрут за доставка в момента не изисква API ключ. Успешният отговор е двоичен файл с неговия Content-Type, а не JSON обвивка. download=1 иска прикачен файл. 302 сочи към страница при източника; 400 означава невалиден токен, 404 — няма съвпадащ протокол, а 503 — базата данни не е достъпна. Не препращайте API ключа си към целта на пренасочването.
KB ChaChaCha — диагностика и оглед
Четете vehicle_details.kb_diagnosis и vehicle_details.kb_inspection поотделно: единият протокол може да е наличен, а другият — не. Те запазват данните от източника, вместо да ги превръщат в универсална оценка за произшествия. Използвайте числовия carSeq за /api/car-details?site=kbchachacha&id=... или точния съхранен идентификатор от картата в търсенето за /api/auction/kbchachacha/{id}.
| Поле на протокола | Форма | Как да го използвате |
|---|---|---|
status | available или unavailable | Unavailable означава, че няма използваем протокол; не означава липса на щети. Липсващ блок може да означава и че детайлите още не са извлечени. |
rows | {cells, cells_en}[] | Подредени редове на таблицата с оригинални и преведени клетки. Запазвайте реда и повтарящите се етикети, вместо да ги превръщате в речник. |
checked_controls | {name, id, value, label}[] | Отметнатите полета в протокола на източника. Запазвайте свързания етикет; самата сурова отметка не е диагноза. |
panel_marks | {position, panel, code, condition}[] | X подмяна, C корозия, W ремонт/заваряване на панел, A драскотина, U неравност, T повреда. Позицията от източника и номерът на панела в диаграмата се различават. Някои маркировки вместо това носят element_id и condition_original от диаграмата на източника. |
images / documents | масиви | Незадължителни снимки-доказателства и записи за документи. Използвайте върнатите адреси; тези вложени връзки не се пренаписват еднакво през архива с протоколи. |
vin | string или null | Присъства само когато е извлечен валиден VIN. Липсващият VIN не доказва, че две обяви са различни автомобили. |
Конфликти в имената, за които да внимавате
Една и съща дума означава различни неща при различните източници — точно затова съществува нормализираният блок. Файл за изтегляне е Documents[] в Auto1 — докато Documents в OpenLane е речник с булеви стойности за документите, а не списък с файлове. Ако четете car_identification директно, проблемът е ваш. Ако четете vehicle_details.documents — не е.
Страна на волана
steering се нормализира до left или right. Използват се изрични данни от източника, където се поддържат; иначе се извежда от пазара на регистрация. Това е изведено поле, когато няма изрична стойност от източника, а не универсална гаранция от физически оглед. Японският внос може да включва автомобили с ляв волан, затова не извеждайте страната на волана от държавата в клиента си.
Тъй като всяка обява попада в едната или другата страна, двете стойности разделят инвентара: бройките им дават общия брой без филтри. Като филтър приема две стойности, всяка с четири равностойни записа — left, lhd, left-hand, left_hand и right, rhd, right-hand, right_hand — а всичко друго е 400. Приема се от /api/search, /api/top-offers, /api/listVehicles и всеки ендпойнт за фасети — макар че при фасетите се изчислява в момента, а не се чете от предварително изчислената таблица, така че е по-бавно от извикване без филтри.
Код, който оцелява при разликите
Everyone else has a summary.
serviceVisits: d.service_history ?? null,
serviceSummary: d.service_history_summary ?? null,
// Most listings carry no reports at all. Empty is normal, not an error.
reports: d.inspection_reports ?? [],
repairCost: d.estimated_repair_costs ?? null,
};
}
// Wrong: this breaks the day a source is added, and hides data today.
if (auction.site_name === "auto1") { /* ... */ }- Никога не задавайте списъка с източници ръчно. Четете го от
/api/sitesпри стартиране. Непознат slug е400с посочено име, така че остарял ръчен списък превръща нов източник в счупено внедряване. - Проектирайте за най-плиткия източник, който обслужвате. Никой източник не гарантира пълна сервизна история за всяка кола. Обещавайте я там, където я има, и деградирайте плавно, където я няма.
- Третирайте
car_identificationкато без версии. Ключовете му следват собствените имена на всеки източник и се променят, когато източникът се промени. Всичко, от което зависите дългосрочно, трябва да идва от общото ядро или отvehicle_details. details_pending: trueне е грешка. Означава, че детайлите още не са събрани. Проверявайте периодично, вместо да опитвате в плътен цикъл, и показвайте данните от картата, които вече имате.