# تغییرات نسخه‌ها

## v2.0

**رفع دو باگ گزارش‌شده:**
- بازار ساخته می‌شد ولی در ربات دیده نمی‌شد (چون هیچ‌جا وضعیت `scheduled`
  خودکار به `open` تبدیل نمی‌شد). حالا `public/webhook.php` و
  `admin/index.php` هر دو این تبدیل رو در هر اجرا خودشون انجام می‌دن.
- متن فارسی به `؟؟؟` تبدیل می‌شد (charset پیش‌فرض هاست، نه utf8mb4).
  `sql/schema.sql` و `src/Database.php` حالا صریحاً utf8mb4 رو اجبار
  می‌کنن، و `sql/migrations/004_fix_utf8mb4.sql` برای اصلاح دیتابیس‌های
  از قبل ساخته‌شده اضافه شد.

**پنل ادمین تک‌فایلی:** کل پنل مدیریت (ورود، راه‌اندازی اولیه، داشبورد،
ساخت/تسویه بازار، کاربران، دستاوردها، چالش روزانه، مسابقات، پیام همگانی،
تنظیمات، Webhook) از ۱۰+ فایل جدا به یک فایل `admin/index.php` با
ناوبری `?page=...` تبدیل شد — هم مدیریتش روی هاست اشتراکی ساده‌تره، هم
کلاس باگ «مسیر مطلق/نسبی اشتباه بین صفحات» که قبلاً وجود داشت دیگه
اصلاً امکان رخ‌دادن نداره. فایل‌های جدا قبلی (`admin/login.php`,
`admin/setup.php`, `admin/dashboard.php`, `admin/markets_create.php`,
`admin/markets_settle.php`, `admin/users.php`, `admin/broadcast.php`,
`admin/settings.php`, `admin/tournaments.php`, `admin/webhook_tools.php`,
`admin/_bootstrap.php`, `admin/assets/style.css`) حذف شدن؛ CSS مشترک به
`inc_style.php` (سطح ریشه پروژه) منتقل شد.

**افزونه‌های تکمیلی گیمیفیکیشن در پنل:** صفحات جدید «دستاوردها» و «چالش
روزانه» — اضافه/مشاهده Achievement و تعریف چالش روزانه مستقیم از پنل،
بدون نیاز به phpMyAdmin (که تا این نسخه تنها راهشون بود).

**مسابقات (Tournament) از رابط ربات حذف شد:** طبق درخواست، `/tournaments`
و همه دکمه‌های مربوطه از `public/webhook.php` برداشته شدن — کاربر دیگه
از تلگرام نمی‌تونه به مسابقه بپیونده. بک‌اند (`src/TournamentService.php`)
و مدیریتش در پنل ادمین دست‌نخورده مونده (فقط با یک هشدار که پیوستن از
ربات غیرفعاله) برای مدیریت داخلی یا اتصال مجدد در آینده.

**بازارها اکنون دسته‌بندی‌پذیرن در ربات:** دکمه «دسته‌بندی‌ها» در منوی
اصلی، فهرست بازار رو بر اساس دسته‌بندی فیلتر می‌کنه.

**رفع ناسازگاری چیدمان فایل‌ها روی هاست اشتراکی/nginx:** راهنماهای
`docs/SETUP_SHARED_HOSTING.md` و `docs/SETUP.md` هر دو بازنویسی شدن تا
یک چیدمان یکپارچه و سازگار با مسیرهای نسبی کد رو توضیح بدن (به‌جای
پیشنهاد قبلی که `admin/` رو اشتباهاً بیرون از دسترس وب می‌ذاشت).

## v1.2

**تغییر مهم:** فروش پیش‌بینی قبل از پایان بازار (که در v1.1 در ربات بود)
طبق درخواست از رابط کاربری ربات حذف شد. کاربر از این نسخه فقط می‌تونه
پیش‌بینی ثبت کنه و منتظر تسویه بمونه. (بک‌اند `MarketService::sell()`
دست‌نخورده باقی مونده، فقط دیگه از منوی ربات صداش زده نمی‌شه.)

**راه‌اندازی بدون ترمینال (هاست اشتراکی):**
- `docs/SETUP_SHARED_HOSTING.md`: راهنمای کامل مخصوص cPanel — همه چیز با
  کلیک (File Manager، phpMyAdmin، Cron Jobs UI)، بدون نیاز به SSH
- `config/config.local.php` (از روی `config.example.php`) جایگزین
  environment variable به‌عنوان روش اصلی تنظیم — چون هاست اشتراکی معمولاً
  اجازه ست‌کردن env var واقعی رو نمی‌ده
- `admin/setup.php`: ساخت اولین ادمین از مرورگر (بدون CLI)، خودقفل‌شونده
  بعد از اولین استفاده؛ افزودن ادمین‌های بعدی از داخل پنل کاربران
- `admin/webhook_tools.php`: ثبت/بررسی/حذف webhook تلگرام با یک کلیک،
  بدون نیاز به curl از ترمینال
- `public/debug.php`: صفحه تشخیصی کامل (PHP، دیتابیس، جدول‌ها، ادمین،
  توکن ربات، وضعیت webhook) با محافظت توسط توکن
- `cron/notify.php` و `cron/reconcile.php` حالا هم از CLI و هم از طریق
  URL (با توکن) قابل‌اجرا هستن، برای هاست‌هایی که کران فقط URL می‌گیره
- فایل‌های `.htaccess` خودکار روی پوشه‌های `src/`, `config/`, `sql/`,
  `scripts/` برای جلوگیری از دسترسی مستقیم وب

**گیمیفیکیشن تکمیلی:**
- `/achievements`: لیست کامل دستاوردها با وضعیت گرفته‌شده/نگرفته
- `/challenge`: چالش روزانه با نوار پیشرفت زنده
- `/tournaments`: لیست مسابقات + پیوستن با ورودیه
- جدول رتبه‌بندی حالا **۱۰۰ نفر برتر در ۵ صفحه** (۲۰ نفر هر صفحه) با
  دکمه قبلی/بعدی، و **۴ بازه زمانی**: روزانه، ماهانه (تقویم شمسی)، سالانه
  (تقویم شمسی)، کل زمان‌ها
- اعلان‌های Push خودکار: نتیجه تسویه بازار (برد/باخت) و یادآوری روزانه
- سیستم win-streak و XP-per-win هنگام تسویه بازار
- منوی اصلی + دکمه «بازگشت به منو» در همه صفحات ربات

**مسابقات (Tournament) با اقتصاد استخر جوایز:**
- `src/TournamentService.php` + `admin/tournaments.php`: ساخت مسابقه با
  ورودیه، محاسبه امتیاز خودکار (سود/زیان خالص از ledger در بازه مسابقه)،
  و **تقسیم استخر جوایز طبق درخواست**: مجموع ورودیه‌های جمع‌شده منهای
  کارمزد پلتفرم (درصدی، قابل‌تنظیم)، باقیمانده بین رتبه‌های برنده به‌نسبت
  درصد از پیش تعیین‌شده تقسیم می‌شه. این منطق **جدا از موتور LMSR بازارهای
  اصلیه** — نگاه‌داشتن این تفاوت مهمه: بازارهای پیش‌بینی همچنان با LMSR
  قیمت‌گذاری می‌شن (قیمت پیوسته، جمع قیمت‌ها = ۱)، ولی مسابقات یک استخر
  پول با تقسیم پایان‌دوره‌ای هستن — این دو مدل اقتصادی متفاوتن و عمداً
  جدا نگه داشته شدن.

**پنل ادمین حرفه‌ای‌تر:**
- طراحی شیشه‌ای (glassmorphism) + فونت وزیرمتن (Vazirmatn) در همه صفحات
  (`admin/assets/style.css`) — توضیح مهم: این افکت فقط روی صفحات وب پنل
  ادمین اعمال می‌شه؛ دکمه‌های Inline داخل چت تلگرام محدودیت پلتفرمی دارن
  و رنگ/افکتشون قابل‌تغییر نیست (جزئیات در `docs/UX_FLOWS.md`)
- `admin/settings.php`: نمایش و ویرایش **تمام متغیرهای اقتصادی/سیستمی**
  با برچسب فارسی
- `admin/broadcast.php`: ارسال پیام همگانی (تکه‌تکه، مناسب هاست اشتراکی)
  + تنظیم پیام تبلیغاتی ثابت از تنظیمات
- فرم ساخت بازار کامل‌تر: مهلت اعلام نتیجه، گزینه «بازار ویژه»،
  **پیش‌نمایش زنده تاریخ شمسی**، و بعد از ساخت **لینک مستقیم پیش‌نمایش
  بازار در ربات**
- `src/Jalali.php`: تبدیل تقویم میلادی↔شمسی (بدون کتابخانه خارجی)، همه‌جا
  برای نمایش تاریخ استفاده می‌شه (جزئیات بازار در ربات، فرم ساخت بازار)

## v1.1

**ربات تلگرام — از دستورات ساده به فلوی کامل کلیکی تبدیل شد:**
- فهرست بازارها و انتخاب گزینه با دکمه‌های Inline (نه تایپ دستی آیدی بازار)
- انتخاب مبلغ با پریست سریع (۱۰/۵۰/۱۰۰/۲۵۰ Coin) یا مبلغ دلخواه
- صفحه تایید قبل از هر خرید (نمایش سهم تقریبی قبل از تعهد نهایی)
- `/portfolio` با نمایش سود/زیان لحظه‌ای (🟢/🔴) و دکمه فروش با پریست درصد
- `/rank` جدول رتبه‌بندی + رتبه شخصی
- `/invite` با لینک اختصاصی و شمارنده دعوت‌های موفق
- پشتیبانی از اعداد و درصد فارسی در تمام پیام‌ها (`FormatService`)
- مکانیزم session (`bot_sessions`) برای فلوهای چندمرحله‌ای (مثل «مبلغ
  دلخواه رو تایپ کن») — چون هر webhook تلگرام یک درخواست HTTP بی‌حالته و
  خودش چیزی یادش نمی‌مونه

**پنل ادمین:**
- داشبورد آماری کامل (کاربران، حجم معاملات، کوین در گردش، هشدارها)
- صفحه مدیریت کاربران: جستجو، مشاهده پرچم تقلب، مسدودسازی، تنظیم دستی موجودی

**زیرساخت راه‌اندازی:**
- `docs/SETUP.md`: راهنمای گام‌به‌گام کامل از صفر تا production (نصب سرور،
  nginx، SSL، دیتابیس، webhook، کرون‌جاب، چک‌لیست امنیتی)
- `scripts/create_admin.php`: ساخت اولین ادمین از خط فرمان
- `scripts/seed.php`: پر کردن اولیه دسته‌بندی‌ها و چند Achievement نمونه
- `sql/migrations/002_v1.1_additions.sql`: مهاجرت افزایشی (نه بازنویسی کل schema)
- `docs/UX_FLOWS.md`: نقشه کامل تمام صفحات/فلوهای موردنیاز با وضعیت
  پیاده‌سازی هرکدوم (✅/🔧/⬜) و اولویت‌بندی نسخه بعدی

> نکته: `scripts/create_admin.php` و `scripts/seed.php` در v1.2 حذف شدن
> چون فرض بر دسترسی ترمینال بود؛ معادل وب‌محورشون `admin/setup.php` است.

## v1.0

- مدل داده کامل (کاربران، کیف‌پول+لجر، بازارها، معاملات، گیمیفیکیشن،
  referral، tournament، ضدتقلب)
- موتور قیمت‌گذاری LMSR (`src/LMSR.php`)
- `WalletService` امن در برابر موجودی منفی و race condition
- `MarketService`: خرید/فروش/تسویه/ابطال
- `GamificationService`: XP/Level/Streak/Referral قدرشرط
- `AntiFraudService`: پرچم‌گذاری الگوهای مشکوک
- اسکلت اولیه webhook و پنل ادمین (ساخت/تسویه بازار)
- `cron/reconcile.php`: ممیزی شبانه صحت مالی
