# خلاصه‌ی تغییرات نسخه‌ی نهایی ربات

## ۱) کمیسیون قابل‌تعیین توسط ادمین  ✅
- ادمین از منوی «/admin» → «🧾 تنظیم کمیسیون» می‌تواند:
  - «درصد کمیسیون» را از ۰ تا ۱۰۰ وارد کند (مثلاً 0.5 = نیم درصد).
  - «نوع کمیسیون» را انتخاب کند: «تومان» یا «ارز انتخابی».
- در حالت «تومان»: کمیسیون از کل مبلغ تومانی معامله محاسبه می‌شود
  (خریدار مبلغ + کمیسیون می‌پردازد، فروشنده مبلغ − کمیسیون می‌گیرد).
- در حالت «ارز انتخابی»: کمیسیون از مقدار ارزِ همان معامله محاسبه می‌شود.
- مقدار در جدول `settings` ذخیره و در تمام پیام‌های ثبت آگهی و ثبت پیشنهاد از هر دو طرف اعمال می‌شود.
- منطق در: strings/settings.php ، php/adminpanel.php ، update.php

## ۲) حذف فایل‌های بی‌استفاده  ✅
حذف شد:
- کل پوشه‌ی `vendor/` سطح‌بالا (morilog/jalali, nesbot/carbon, symfony, psr, beberlei) — هیچ‌جا require نمی‌شد؛ تاریخ‌ها با strings/jdf.php ساخته می‌شوند.
- پوشه‌های cache و توسعه: .cache ، node_modules ، .npm ، .npm-global ، playwright ، puppeteer ، mermaid و ...
- فایل‌های بی‌ربط: login.html ، login.php ، api.js ، upload.php ، news.json ،
  background.jpg ، styles.css ، messages.log ، backup ، Database/Database.zip ، Database/error_log
- php/userdocc.php (کد مرده — هیچ‌جا require/فراخوانی نمی‌شد؛ منطق /senddocc در adminpanel.php مستقل است).
حجم از حدود ۵ مگابایت به حدود ۵۱۲ کیلوبایت رسید (۳۶ فایل).
> نکته: پوشه‌ی `Database/medoo` نگه داشته شد چون کتابخانه‌ی اتصال به دیتابیس است.

## ۳) چرخه‌ی تمدید/حذف ۲۴ ساعته  ✅
- دو ستون جدید در جدول `mozayede`: `reminded` (0/1) و `reminded_at` (datetime)
  که در صورت نبودن، به‌صورت خودکار ساخته می‌شوند.
- بعد از ۲۴ ساعت از ثبت آگهی، یک‌بار پیام «تمدید یا حذف» به صاحب آگهی می‌رود (reminded=1).
  - تمدید: تاریخ به «اکنون» و reminded=0 (۲۴ ساعت دیگر تمدید می‌شود).
  - حذف: آگهی فوراً پاک می‌شود.
- اگر کاربر ظرف ۲۴ ساعت به پیام پاسخ ندهد، آگهی به‌صورت خودکار حذف می‌شود
  و به کاربر و کانال اطلاع داده می‌شود.
- ویرایش آگهی (نرخ/مقدار/توضیحات) هم به‌منزله‌ی تمدید است (reminded ریست می‌شود).
- رفع باگ: تاریخ‌ها با `Y-m-d H:i:s` نوشته می‌شوند (قبلاً اشتباهاً `H:m:s` = ماه به‌جای دقیقه بود).
- منطق در: cron.php (بازنویسی‌شده) ، update.php (revival/edit/insert)

## ۴) اطلاع‌رسانی پیشنهاد بالاتر (Outbid)  ✅
- هنگام ثبت هر پیشنهاد جدید روی یک آگهی، تمام پیشنهاددهنده‌های قبلیِ همان آگهی
  که هنوز پذیرفته/رد نشده‌اند و مبلغشان پایین‌تر از پیشنهاد جدید است،
  پیامی داخل ربات دریافت می‌کنند:
  «برای آگهی فلان یک پیشنهاد قیمتی بالاتر از پیشنهاد شما ثبت شد؛ به این ترتیب پیشنهاد شما
   در اولویت قرار نگرفت. لطفاً پیشنهاد بالاتری ارسال فرمایید.»
  به‌همراه دکمه‌ی «ارسال پیشنهاد بالاتر».
- هر کاربر فقط یک‌بار مطلع می‌شود و خودِ پیشنهاددهنده‌ی جدید پیام نمی‌گیرد.
- منطق در: update.php (بلوک Outbid، درست پیش از درج در جدول review)
