fix(catalog): sabitlenmiş browse satırlarını görüntülendikçe yenile
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
`catalog_vehicles` kalıcı bir cache: `getModels` markanın tek bir satırı varsa erken dönüyor, dolayısıyla `fetchVehicleList` o marka için bir daha hiç çağrılmıyor. PSA ve Volvo hâlâ P4 iken listelenmiş 188 satır (prod 2026-09-20: 127 LEGACY_PSA + 61 LEGACY_VOLVO) bu yüzden kalıcı olarak çakılı kalmıştı: - Peugeot/Citroën browse donmuş 2024-02-13 anlık görüntüsünü sunuyor, - Volvo/Polestar browse HTTP 503 dönen bir uca gidiyor. Kod düzeltmesi bu satırlara hiçbir zaman ulaşmıyordu. `isStaleBrowseArchitecture()` + `CatalogService.healStaleBrowseRows()`: satırın kayıtlı mimarisi servis tablosundakiyle uyuşmuyorsa marka bir kez yeniden listeleniyor, yeni satırlar yazılıp eskiler aynı transaction'da siliniyor. VIN tarafındaki onarma ile aynı temkinli kurallar: marka başına günde bir deneme (Redis kilidi), başarısız veya boş listede eski satırlar korunuyor, silme ancak yenisi elde edilince ve servis bazında yapılıyor. 8 yeni test; api paketi 610 test geçiyor. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -86,3 +86,28 @@ export function isStalePl24Architecture(opts: {
|
||||
if (!storedIsLegacyPsaOrVolvo) return false;
|
||||
return current.startsWith("/p5");
|
||||
}
|
||||
|
||||
/**
|
||||
* True when a stored `catalog_vehicles` browse row was listed under an
|
||||
* architecture the service table no longer uses.
|
||||
*
|
||||
* Browse rows are a PERMANENT cache: `CatalogService.getModels` returns early
|
||||
* whenever the brand already has rows, so `fetchVehicleList` is never called
|
||||
* again for that brand. The 188 rows listed while PSA and Volvo were still P4
|
||||
* (127 LEGACY_PSA + 61 LEGACY_VOLVO on prod, 2026-09-20) are therefore pinned
|
||||
* forever: Peugeot/Citroën browse serves the frozen 2024-02-13 snapshot and
|
||||
* Volvo/Polestar browse serves an endpoint that answers HTTP 503. Detecting the
|
||||
* mismatch at list time lets the brand re-list itself once, the same way
|
||||
* `isStalePl24Architecture` heals a VIN-decoded vehicle.
|
||||
*/
|
||||
export function isStaleBrowseArchitecture(opts: {
|
||||
storedArchitecture?: string | null;
|
||||
currentArchitecture?: string | null;
|
||||
}): boolean {
|
||||
const stored = opts.storedArchitecture?.trim();
|
||||
const current = opts.currentArchitecture?.trim();
|
||||
// An unknown service (no config) or an unlabelled row is left alone: without a
|
||||
// current architecture to compare against there is nothing to migrate TO.
|
||||
if (!stored || !current) return false;
|
||||
return stored !== current;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user