fix(price): drop quote deviation cap so Montzar live price can apply

Stale prices rows were rejecting a valid ~220M partner quote against an old ~168M reference and locking the app on database_last.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-25 13:31:47 +03:30
co-authored by Cursor
parent b21b136711
commit dfa6d792ee
2 changed files with 7 additions and 41 deletions
+3 -20
View File
@@ -31,19 +31,13 @@ class ConfigService
*/
public const STORED_PRICE_SOURCES = ['database_last'];
/**
* حداکثر انحراف مجاز مظنه نسبت به آخرین قیمت معتبر DB.
* پرش اشتباه provider (مثل ۱۶۸M ماندهٔ montzar روی مظنهٔ ~۲۲۰M) را رد می‌کند.
*/
public const MAX_QUOTE_DEVIATION_RATIO = 0.15;
public function Config($name)
{
return $this->get($name, false);
}
/**
* آخرین قیمت ذخیره‌شده در جدول prices — مرجع سلامت مظنهٔ زنده.
* آخرین قیمت ذخیره‌شده در جدول prices.
*/
public function referenceQuotePrice(): float
{
@@ -52,21 +46,10 @@ class ConfigService
return $last !== null ? (float) $last : 0.0;
}
/**
* مظنهٔ زنده وقتی خیلی از آخرین قیمت DB فاصله دارد قابل اتکا نیست (ماندهٔ provider اشتباه).
*/
/** مظنهٔ مثبت قابل استفاده است — محدودیت انحراف نسبت به DB برداشته شد. */
public function isPlausibleQuotePrice(float $candidate, ?float $reference = null): bool
{
if ($candidate <= 0) {
return false;
}
$reference = $reference ?? $this->referenceQuotePrice();
if ($reference <= 0) {
return true;
}
return abs($candidate - $reference) / $reference <= self::MAX_QUOTE_DEVIATION_RATIO;
return $candidate > 0;
}
/**