""" سیگنال عمومیِ تغییر Status، مستقل از هر اپ خاص (مثل الگوی notifications که هیچ اپی بهش رفرنس نمی‌ده، ولی برعکسش: اینجا خودِ اپ‌ها چیزی از statuslog import نمی‌کنن جز همین سیگنال، و منطق ثبت لاگ کاملاً داخل statuslog می‌مونه). هر اپی که یک فیلد status داره (Order، Subscription، UserOffer، در آینده پیشرفت درس/دوره و ...) موقع تغییر status باید این سیگنال رو send کنه: from statuslog.signals import status_changed status_changed.send( sender='payment.Order', # رشته‌ی label مدل، نه خودِ کلاس object_id=order.id, old_status=old_status, new_status=order.status, event='payment_webhook_paid', # چه اتفاقی باعث تغییر شده user_id=order.user_id, # اختیاری ) چون send با sender رشته‌ای (نه کلاس مدل) صدا زده می‌شه، هیچ اپی لازم نیست مدل واقعیِ اپ دیگه رو import کنه؛ دقیقاً همون اصل «ارجاع سبک، بدون FK واقعی» که در کل پروژه رعایت شده. """ from django.dispatch import Signal # kwargs: sender (str, مثل 'payment.Order')، object_id، old_status، new_status، # event، user_id (اختیاری) status_changed = Signal()