"""پاک‌سازی یک‌بارهٔ فیلدهای تلفن مشتریان (phone1/phone2/phone3). روی دیتابیس production (سرور اصلی) هم قابل اجرا است؛ idempotent است و اجرای دوباره‌اش تغییری ایجاد نمی‌کند. python manage.py fix_customer_phones --dry-run # فقط گزارش، بدون تغییر python manage.py fix_customer_phones # اجرای واقعی """ from django.core.management.base import BaseCommand from admin_panel.sms.phone_cleanup import clean_all class Command(BaseCommand): help = "استخراج و استانداردسازی شماره‌های قدیمی مشتریان؛ متن‌های حذف‌شده در فیلد توضیحات می‌مانند." def add_arguments(self, parser): parser.add_argument( "--dry-run", action="store_true", help="فقط گزارش کن که چه چیزی تغییر می‌کند؛ چیزی ذخیره نکن.", ) def handle(self, *args, **options): dry = options["dry_run"] stats = clean_all(dry_run=dry) prefix = "شبیه‌سازی (بدون تغییر): " if dry else "پاک‌سازی انجام شد: " self.stdout.write( f"{prefix}{stats['customers']} مشتری، {stats['fields']} فیلد اصلاح شد، " f"{stats['noted']} یادداشت ثبت شد." )