feat(rpartstore): Renault/Dacia için RPartStore VIN-decode fallback kaynağı
Some checks are pending
QA Gate (P0/P1) / Test affected app (pull_request) Waiting to run
Some checks are pending
QA Gate (P0/P1) / Test affected app (pull_request) Waiting to run
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>
This commit is contained in:
@@ -70,6 +70,14 @@ services:
|
||||
# Rpartstore outage → Renault decodes go straight to Dialogys (drops the
|
||||
# per-decode launch-error probe + "Loading application..." stray + budget burn).
|
||||
- VINPIN_RPARTSTORE_ENABLED=${VINPIN_RPARTSTORE_ENABLED:-true}
|
||||
# RPartStore (Renault/Dacia) VIN-decode fallback — after pcat/PL24/emex, before Vinpin.
|
||||
# Hard daily cap on searches sent to rpartstore.renault.com (default 10).
|
||||
- RPARTSTORE_ENABLED=${RPARTSTORE_ENABLED:-false}
|
||||
- RPARTSTORE_USER=${RPARTSTORE_USER:-}
|
||||
- RPARTSTORE_PASS=${RPARTSTORE_PASS:-}
|
||||
- RPARTSTORE_DAILY_CAP=${RPARTSTORE_DAILY_CAP:-10}
|
||||
- RPARTSTORE_BROKER_URL=${RPARTSTORE_BROKER_URL:-wss://1po-bff.renault-edh.com/ws}
|
||||
- RPARTSTORE_APP_VERSION=${RPARTSTORE_APP_VERSION:-1.34.0.6}
|
||||
- POSTAL_API_URL=${POSTAL_API_URL:-}
|
||||
- POSTAL_API_KEY=${POSTAL_API_KEY:-}
|
||||
- POSTAL_FROM_ADDRESS=${POSTAL_FROM_ADDRESS:-noreply@sase.tr}
|
||||
@@ -227,6 +235,14 @@ services:
|
||||
- VINPIN_WARM_DAEMON=${VINPIN_WARM_DAEMON:-false}
|
||||
# Skip Rpartstore during a known upstream outage (Renault → straight to Dialogys).
|
||||
- VINPIN_RPARTSTORE_ENABLED=${VINPIN_RPARTSTORE_ENABLED:-true}
|
||||
# RPartStore (Renault/Dacia) VIN-decode fallback — after pcat/PL24/emex, before Vinpin.
|
||||
# Hard daily cap on searches sent to rpartstore.renault.com (default 10).
|
||||
- RPARTSTORE_ENABLED=${RPARTSTORE_ENABLED:-false}
|
||||
- RPARTSTORE_USER=${RPARTSTORE_USER:-}
|
||||
- RPARTSTORE_PASS=${RPARTSTORE_PASS:-}
|
||||
- RPARTSTORE_DAILY_CAP=${RPARTSTORE_DAILY_CAP:-10}
|
||||
- RPARTSTORE_BROKER_URL=${RPARTSTORE_BROKER_URL:-wss://1po-bff.renault-edh.com/ws}
|
||||
- RPARTSTORE_APP_VERSION=${RPARTSTORE_APP_VERSION:-1.34.0.6}
|
||||
# Novu lifecycle e-mail automation — the worker fires trial-ending + win-back
|
||||
- NOVU_API_URL=${NOVU_API_URL:-https://api.bildirim.semih.ai}
|
||||
- NOVU_API_KEY=${NOVU_API_KEY:-}
|
||||
|
||||
Reference in New Issue
Block a user