0ed6397fa9
Daily subscriptions have end_date = +24h, and between 30-min check cycles they would get expired by 5 different code paths before DailySubscriptionService could charge and renew them. Users saw "subscription expired" while having balance. Root cause fixes (6 paths protected): - subscription_checker middleware: skip active daily subscriptions - check_and_update_subscription_status CRUD: skip active daily subscriptions - monitoring_service: run autopay BEFORE expired check, expand query to include recently-expired subscriptions (2h window) - remnawave_webhook_service: _handle_user_expired skips daily tariffs - remnawave_service: validate_and_fix_subscriptions skips daily tariffs Recovery mechanisms: - New get_expired_daily_subscriptions_for_recovery() CRUD function - DailySubscriptionService.process_auto_resume() restores DISABLED (balance topped up) and EXPIRED (incorrectly expired) daily subscriptions - Runs before daily charges in each monitoring cycle