rpartstore.renault.com (Renault Group bayi portalı) yeni decode kaynağı olarak
eklendi. Portal REST değil STOMP 1.2 over WebSocket konuşuyor; login Okta OIE
(IDX JSON API + PKCE), tarayıcı gerekmiyor. Sıralama Renault/Dacia için:
pcat + PL24 + emex yarışı → rpartstore → (bayrağı açıksa) Vinpin son çare.
- integrations/rpartstore: STOMP codec, Okta login, oturum (trace-id ile
çok-mesajlı cevap eşleme), istemci (Redis'te 1 saatlik token), Renault/Dacia
yönlendirme, RPartStore → PL24 catalog_vehicles model eşleyici (roman rakam,
karoseri niteleyici, yanlış-pazar cezası).
- rpartstore_decodes tablosu (migration 0037) + rpartstore-decode BullMQ
kuyruğu; worker concurrency 1 + 1 iş / 6 s limiter (portal 2 arama / 10 s).
- Günlük sert kota RPARTSTORE_DAILY_CAP (varsayılan 10, İstanbul günü):
işlemci göndermeden önce Redis INCR ile rezervasyon yapar, aşan VIN'ler
`capped` olur ve 24 saat sonra tekrar denenir; API kota doluysa kuyruğa
hiç almaz. Kısa vadeli rate-limit cevabında retryAfter kadar bekleyip bir
kez tekrar dener.
- VehiclesService.tryRpartstoreFallback: Vinpin fallback ile aynı sözleşme
(decoding/catalogVehicle cevapları, tek başarısızlık log satırı).
- Env: RPARTSTORE_ENABLED/USER/PASS/DAILY_CAP/BROKER_URL/APP_VERSION
(compose api+worker). Vinpin koda dokunulmadan pasif kalır (VINPIN_ENABLED).
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>