3.16.0 (2026-02-18)
New Features
- add admin notifications for partner applications and withdrawals (cf7cc5a)
- add admin partner settings API (withdrawal toggle, requisites text, partner visibility) (6881d97)
- add campaign_id to ReferralEarning for campaign attribution (0c07812)
- add partner system and withdrawal management to cabinet (58bfaea)
- attribute campaign registrations to partner for referral earnings (767e965)
- blocked user detection during broadcasts, filter blocked from all notifications (10e231e)
- enforce 1-to-1 partner-campaign binding with partner info in campaigns (366df18)
- expose traffic_reset_mode in subscription response (59383bd)
- expose traffic_reset_mode in tariff API response (5d4a94b)
- include partner campaigns in /partner/status response (ea5d932)
- link campaign registrations to partner for referral earnings (c4dc43e)
- notify users on partner/withdrawal approve/reject (327d4f4)
Bug Fixes
- add blocked_count column migration to universal_migration.py (b4b10c9)
- add missing payment providers to payment_utils and fix {total_amount} formatting (bdb6161)
- add selectinload for subscription in campaign user list (eb9dba3)
- campaign web link uses ?campaign= param, not ?start= (28f524b)
- correct subscription_service import in broadcast cleanup (6c4e035)
- critical security and data integrity fixes for partner system (8899749)
- handle YooKassa NotFoundError gracefully in get_payment_info (df5b1a0)
- medium-priority fixes for partner system (7c20fde)
- move PartnerStatus enum before User class to fix NameError (acc1323)
- prevent fileConfig from destroying structlog handlers (e78b104)
- reorder button_click_logs migration to nullify before ALTER TYPE (df5415f)
- resolve HIGH-priority performance and security issues in partner system (fcf3a2c)
- return zeroed stats dict when withdrawal is disabled (7883efc)
- unassign all campaigns when revoking partner status (d39063b)