fix(pl24): bütçe kilitlenmesi, sabitlenmiş browse satırları, Volvo alanları + WMI kapsamı #268
Reference in New Issue
Block a user
Delete Branch "dev"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Faz 2'nin dört maddesi. İlk üçü aynı sınıftan bir arıza: bir kez yazılan durum, kod düzeltmesinin ulaşamadığı yerde çakılı kalıyor. Dördüncüsü yeni kapsam.
1. PL24 prefetch bütçe/pencere kilitlenmesi
Prod'da PL24 prefetch tamamen durmuştu. Günlük bütçe sayacı dolu görünürken gün boyunca sıfır katalog isteği ve sıfır yeni kategori üretiliyordu.
Kök neden — kapalı döngü. Günlük bütçe
process()içinde düşülüyordu; iş-saati ve cooldown kapıları ise her handler'ın başındaydı. Pencere dışında uyanan iş önce bütçeden bir birim yiyor, sonra hiçbir iş yapmadan erteleniyordu. Üstüne bütçesi biten kaynak "bir sonraki UTC gece yarısı"na, yani 03:00 Europe/Istanbul'a erteleniyordu —PREFETCH_PL24_START=9penceresi açılmadan altı saat önce. Her gece biriken ertelenmiş işler (ölçüm anında 766 adet, 4 araca yığılmış) taze bütçeyi pencere açılmadan tüketiyordu.Düzeltme. Kapı sırası artık en ucuzdan pahalıya ve her reddedici kapı sayaçlardan önce: pencere (saf saat aritmetiği, I/O yok) → cooldown → dakikalık tavan → günlük bütçe.
alignToWindow()bütçe ertelemesini pencerenin içine hizalıyor; pencere tanımlı değilse no-op.currentIstanbulHourartık h24 döngüsünün gece yarısı için ürettiği"24"değerini% 24ile normalliyor — aksi halde saat hiçbir pencereye düşmez ve kaynak kalıcı park eder.2. Sabitlenmiş katalog browse satırları
catalog_vehicleskalıcı bir cache:getModelsmarkanın tek satırı varsa erken dönüyor,fetchVehicleListo marka için bir daha hiç çağrılmıyor. PSA ve Volvo hâlâ P4 iken listelenmiş 188 satır (127 LEGACY_PSA + 61 LEGACY_VOLVO) kalıcı çakılıydı: Peugeot/Citroën browse donmuş 2024-02-13 anlık görüntüsünü, Volvo/Polestar browse HTTP 503 dönen bir ucu sunuyordu.isStaleBrowseArchitecture()+healStaleBrowseRows()ile marka bir kez yeniden listeleniyor. PR #265'teki VIN tarafı onarmasıyla aynı temkinli kurallar: marka başına günde bir deneme, başarısız/boş listede eski satırlar korunuyor, silme yalnız gerçekten bayat satırlara (karışık serviste zaten taşınmış satırlaronConflictDoNothingyüzünden geri gelmezdi).Dev'de doğrulandı. Dev'de
dehesabı tanımlı olmadığı için tam olarak korumalı dal çalıştı:Uç nokta iki çağrıda da HTTP 200 + 64/59 model döndürdü, satırlar değişmedi, ikinci çağrı günlük kilit (TTL 86.373 s) yüzünden hiç denemedi.
3. Volvo alanları iç kodu dönüyordu
Volvo vinfoBasic aynı özniteliği iki kez veriyor:
Şanzıman kodu="B"ileŞanzıman="6-PSHIFT 2WD / MPS6",Satis tipi="42"ileTürü="S80". VAG için doğru olan kod-önce sırası Volvo'da şanzımanı tek harf, seriyi çıplak sayı yapıyordu. İngilizce yanıttatransmissionvebody_styleetiketleri hiç aranmıyordu.lookupDescriptive()listedeki ilk açıklayıcı değeri döner (2 karakterden uzun, salt rakam değil); hiçbiri açıklayıcı değilse ilk mevcut değere düşer, yani yalnız kod üreten backend'ler aynen eskisi gibi davranır.B6-PSHIFT 2WD / MPS642S80nullSedannullBVM5PSA Türkçe, Subaru ve diğer markalarda çıktı değişmedi.
4. WMI kapsamı: canlı servis taraması + Renault
Prod'daki 4.799 aracın 1.406'sının WMI'si haritada yoktu. Hangilerinin PL24'te gerçekten karşılığı olduğu tahmin edilmedi —
/pl24-wmi/ext/api/2.0/decodeservisine gerçek prod VIN'leriyle tek tek soruldu.Renault yeniden açıldı (450 araç). Kapatma gerekçesinin iki ayağı da prod'a karşı sınandı:
/p5renaultdirectAccess, gerçek müşteri aracıVF14SRCL458170337içinVEHICLE_IDENTIFIED+ "SYMBOL II/LOGAN II" döndü.NMB: servis bunu binek Mercedes'e değil kamyon kataloğuna çözüyor.
Kasıtlı olarak eklenmeyenler — servis HTTP 410 "no brands found for WMI" dedi (NM4 ve VR7 gibi):
JHM, SHH, SHS, MAK, NLA(Honda),KL1(Chevrolet).JMZ(Mazda) 410 değil amafordp/fordtdöndürüyor; marka tutarsız olduğu için eklenmedi. Testler bu "yok" cevaplarını da kilitliyor.Hacim etkisi yok: bu 730 araç zaten DB'de kayıtlı ve VIN DB'de varsa hiçbir kaynağa gidilmiyor (
db_hit). Geçmişe dönük decode fırtınası olmuyor; kazanç bundan sonraki sorgularda.Test
28 yeni test:
prefetch-window-budget.spec.ts(8),catalog-browse-heal.spec.ts(9),pl24-volvo-vinfo.spec.ts(6),pl24.types.spec.ts(+6, "eşlenen her servisin katalog tanımı var" bütünlük testi dahil). api paketi: 623 test geçiyor, tsc temiz, dokunulan dosyalarda biome temiz.Deploy sonrası
prefetch:daily:pl24:<gün>sıfırlanmalı — o günün sayacı hatalı dolduğu için düzeltme aksi halde ertesi güne kadar devreye giremez.🤖 Generated with Claude Code
fix(prefetch): PL24 bütçe/iş-saati kilitlenmesini kırto fix(pl24): prefetch bütçe kilitlenmesi + sabitlenmiş browse satırlarıfix(pl24): prefetch bütçe kilitlenmesi + sabitlenmiş browse satırlarıto fix(pl24): prefetch bütçe kilitlenmesi + sabitlenmiş browse satırları + Volvo alanlarıProd'daki 4.799 aracın 1.406'sının WMI'si haritada yoktu. Hangilerinin PL24'te gerçekten karşılığı olduğu tahmin edilmedi — canlı `/pl24-wmi/ext/api/2.0/decode` servisine gerçek prod VIN'leriyle tek tek soruldu (2026-09-20). **Renault yeniden açıldı (450 araç).** İki gerekçe de artık geçersiz, ikisi de prod'a karşı doğrulandı: - Askı kalkmış: `/p5renault` directAccess, gerçek müşteri aracı VF14SRCL458170337 için `VEHICLE_IDENTIFIED` + "SYMBOL II/LOGAN II" döndü; WMI servisi de `{service: renault_parts, error: false}` diyor. - Devre kesici artık kesin olumsuz yanıtları saymıyor, yalnız geçici taşıma hatalarını (`vehicles.service` `isTransient`). **Yeni eşlemeler (toplam 730 araç):** NLH/TMA/NLJ/KMF → hyundai_parts, KNE/KNC → kia_parts, MMC/XMC → mmc_parts, JSA → suzuki_parts, NMB → **mercestrucks**_parts (servis binek Mercedes'e değil kamyon kataloğuna çözüyor; bu 30 araç "Mercedes-Benz" etiketliydi ama binek kataloğunda yok). **Kasıtlı olarak EKLENMEYENLER** — servis HTTP 410 "no brands found" dedi, tıpkı NM4 ve VR7 gibi: JHM/SHH/SHS/MAK/NLA (Honda), KL1 (Chevrolet). Eklemek yalnız boşuna istek üretir ve pcat/emex/vinpin fallback'ini geciktirir. JMZ (Mazda) 410 değil ama fordp/fordt döndürüyor (Ford-Mazda platform ortaklığı); marka tutarsız olduğu için eklenmedi. 6 yeni test; "olmayanlar" da kilitlendi. Ayrıca her eşlemenin katalog tanımı olduğunu doğrulayan bütünlük testi. api 623 test geçiyor. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>fix(pl24): prefetch bütçe kilitlenmesi + sabitlenmiş browse satırları + Volvo alanlarıto fix(pl24): bütçe kilitlenmesi, sabitlenmiş browse satırları, Volvo alanları + WMI kapsamı