improve bazdid 4
This commit is contained in:
1 parent
8fd881e0ea
commit
825f2a5973
13 files changed
+585
-15
No files matched your search
@@ -319,6 +319,62 @@ visit_hold_until = max(مقدار فعلی، تاریخ جدید)
|
||||
|
||||
---
|
||||
|
||||
## ۶.۱ حذف یک اقدام (soft-delete)
|
||||
|
||||
دکمهٔ «حذف» فقط در صفحهٔ اقدامهای مشتری (`/panel/customer/<id>/action`) نمایش
|
||||
داده میشود و **هیچ رکوردی فیزیکی حذف نمیشود**؛ بهجای آن:
|
||||
|
||||
| ستون | مقدار |
|
||||
|---|---|
|
||||
| `status` | `cancell` |
|
||||
| `deleted_at` | زمان حذف |
|
||||
| `deleted_by` | کاربر حذفکننده |
|
||||
|
||||
### چرا `cancell` و نه ستون `is_deleted`؟
|
||||
|
||||
همهٔ محاسبات (`last_visit_map`، `cycle_anchor_map`، `appointment_sources_map`،
|
||||
`followups_on_date`، `overdue_followups`) از قبل فقط `waite`/`finish` را
|
||||
میبینند؛ و `ActionList*` و `ActionCount` هم با `status='waite'` فیلتر میشوند.
|
||||
پس همین یک مقدار، اقدام را از **همهٔ** خروجیها خارج میکند — بدون Manager
|
||||
سفارشی، بدون تغییر ایندکس پوشا و بدون دستزدن به ۳۱ کوئری.
|
||||
|
||||
### قاعدهٔ محصولی: اقدام دارای نظرسنجی حذف نمیشود
|
||||
|
||||
اگر `nazarDT` پر باشد (نظرسنجی ثبتشده)، حذف انجام **نمیشود**؛ چون هیچ
|
||||
آرشیو/کپیای وجود ندارد و گزارش رضایتسنجی برای همیشه تغییر میکرد. در UI
|
||||
دکمه به حالت قفلشده با برچسب «نظرسنجی» درمیآید.
|
||||
|
||||
### پیامدهای جانبی (در همان تراکنش)
|
||||
|
||||
۱. `last_bazdid_dt` بازمحاسبه میشود (کش کهنه نمیماند).
|
||||
۲. قرار دستی اگر دیگر مرجعی نداشته باشد، خودکار بیاثر میشود.
|
||||
۳. پیامکهای **ارسالنشدهٔ** «بازدید ثبت شد» همان مشتری به `cancelled` میروند
|
||||
(پیامکهای ارسالشده دست نمیخورند).
|
||||
|
||||
### اثر روی مصرفکنندهها
|
||||
|
||||
| بخش | اثر |
|
||||
|---|---|
|
||||
| `/panel/entezar/` (همهٔ نماها) | اقدام کاملاً نادیده گرفته میشود |
|
||||
| `/panel/ActionList/<u>/today` | از صف وظایف خارج میشود |
|
||||
| `ActionCount` داشبورد | بلافاصله کم میشود |
|
||||
| فهرست اقدامهای مشتری | بهطور پیشفرض پنهان (با `?status=cancell` قابل مشاهده برای حسابرسی) |
|
||||
| `/panel/customer/<id>/nazar/` | پنهان |
|
||||
| `/panel/ActionList/all` | پنهان |
|
||||
| گزارش وصول (`finance.py`) | آخرین اقدام وصول دیگر آن را نمیبیند |
|
||||
| داشبورد رضایتسنجی و گزارش روزانه | `deleted_at__isnull=True` |
|
||||
| صف پیامک | `CANCELLED` در `DONE_STATUSES` ⇒ از صف بیرون میرود |
|
||||
|
||||
### امنیت
|
||||
|
||||
- فقط **POST** مجاز است؛ درخواست GET ریدایرکت میشود و چیزی را عوض نمیکند.
|
||||
- `get_object_or_404(Action, id=..., customer=customer)` ⇒ حذف اقدام مشتری دیگر
|
||||
ممکن نیست (۴۰۴).
|
||||
- توکن CSRF در فرم اجباری است.
|
||||
- تأیید دومرحلهای پیش از حذف (نوع اقدام در متن تأیید نمایش داده میشود).
|
||||
|
||||
---
|
||||
|
||||
## ۷. سناریوهای تستشده
|
||||
|
||||
| # | سناریو | نتیجهٔ انتظار | وضعیت |
|
||||
|
||||
Reference in new issue
Block a user