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:
@@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user