4042890b0a
- AutopodborChargeService::chargeForRun — DB::transaction + lockForUpdate на AutopodborRun (guard идемпотентности по balance_transaction_id) и Tenant; bcmath (bcsub/bccomp/bcmul), никаких float; throw InsufficientBalanceException до любых изменений баланса при нехватке средств. - Миграция 2026_06_28_110100: расширяет CHECK constraint balance_transactions_type_check — добавляет 'autopodbor_charge'. - Тест: 2 money-инварианта (идемпотентность + noop при нехватке). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>