e23f5739bf
Фаза 2 Этап A, Task 3. Новый метод PlatformWarmingDecider::decideForChannelRow — решает по строке firm_channels: mode=flat считает простой срок от warming_started_at строки + flat_days (active/stopped(flat_done)); mode=funnel — та же логика decide(), но точка отсчёта warmup берётся из строки канала, а не из firm.warmup_started_at (у каждого канала свой заезд). Существующий decide() не тронут — Фаза 1 цела. AdAudienceScheduler без изменений. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>