[CL-1176] Type-honesty: канон ::text+toNum для NUMERIC из raw в payments/cron #1189
No reviewers
Labels
No labels
ci-failing
duplicate
needs-rebase
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
europa-tech-srl/europatech!1189
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/claude-cl1176-type-honesty"
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?
Что сделано
Хвост свипа четвёртого прохода (7 кандидатов, из них 6 «работают, но тип лжёт»): 5 файлов приведены к канону
::text-каст в SELECT +toNum()на использовании:payment-balance.service.ts— oversell-guardavailableShares;payment-stripe/expire-fail.ts— возврат shares в пул + числовой guard (строка '0' truthy — прежний falsy-guard был number-only);admin-payment/force-operations.ts— то же для force-expire;institutional-payment/execute-bulk.ts— oversell-guard bulk-пути;cron/p2pCircuitBreaker.ts— minPrice/maxPrice/totalVolume: честные типы + toNum перед арифметикой (работала через случайную ToPrimitive-коэрцию Decimal; включая ловушкуDecimal(0) || 0— truthy).Зачем
Класс auto-match-бага (raw NUMERIC приходит Decimal-объектом; строгие хелперы decimal.ts молча дают 0) закрыт структурно во всех оставшихся местах: лживый
number-тип больше нигде не пускает сырое значение в guard/арифметику. Рецидив при будущем рефакторинге теперь ловит компилятор.План тестирования
tsc чист; eslint правленых файлов 0 warnings; таргетные юниты payments/cron 500 passed; полный сьют 10998 passed / 0 failed.
Где могу ошибаться
shareCount > 0) меняет поведение ТОЛЬКО для строки '0' (прежде после ::text-правки была бы truthy) — для number-случая семантика идентична.