""" بسته‌ی سوال از ریشه حذف می‌شود (تصمیمِ سینیور و مالک، ۲۰۲۶-۱۰-۱۲). پیش از حذفِ ستون‌ها و جدول‌ها (0018): - ردیف‌های پلنِ بسته پاک می‌شوند. سفارش‌هایشان می‌مانند (ارجاعِ سبکِ plan_id؛ فاکتور از plan_title می‌خواند). تنها سفارشِ پرداخت‌شده‌ی بسته روی سرور مالِ حسابِ آزمایشیِ صاحبِ شرکت بود (کاربرِ ۲۶). - اگر اشتراکی به پلنِ بسته وصل باشد migration می‌شکند؛ نباید باشد (بسته هرگز Subscription نمی‌ساخت). - سقفِ دستیارِ همه‌ی اشتراک‌های فروشی ۴ سوال در روز (مالک). حساب: docs/ai-cost-and-guardrails.md «اشتراک‌ها». """ from django.core.cache import cache from django.db import migrations def forward(apps, schema_editor): Plan = apps.get_model('subscription', 'Plan') Subscription = apps.get_model('subscription', 'Subscription') packs = Plan.objects.filter(kind='pack') attached = Subscription.objects.filter(plan__in=packs).count() if attached: raise RuntimeError(f'{attached} اشتراک به پلنِ بسته وصل است؛ دستی بررسی کنید.') packs.delete() Plan.objects.filter(on_sale=True).update(ai_daily_quota=4) for key in ('subscription:plans:v3', 'subscription:plans:v4'): cache.delete(key) class Migration(migrations.Migration): dependencies = [('subscription', '0016_subscriptions_only_2026_10')] operations = [migrations.RunPython(forward, migrations.RunPython.noop)]