# تنظیمات محصول و مدیریت — نسخه ۰.۵

## قیمت‌ها

| محصول | نرخ واحد | مدت یا حداقل |
|---|---|---|
| اقتصادی | ۸۰٬۰۰۰ ریال / گیگ | در حال ساخت؛ ۲ گیگ هدیه فقط یک‌بار نیز هنوز اعطا نمی‌شود |
| پرو | ۱۲۰٬۰۰۰ ریال / گیگ | ۳۰ روز اعتبار اولیه |
| حجم اضافه پرو | ۱۲۰٬۰۰۰ ریال / گیگ | زمان را تغییر نمی‌دهد |
| زمان اضافه پرو | ۱۰٬۰۰۰ ریال / روز | حداقل ۳۰ روز، برابر با ۳۰۰٬۰۰۰ ریال |

مثال: ۱۰ گیگ پرو = ۱٬۲۰۰٬۰۰۰ ریال با اعتبار ۳۰ روز. در خرید اولیه هزینه زمان جداگانه اضافه نمی‌شود. یک ماه در پیاده‌سازی ۳۰ روز در نظر گرفته شده است. واحد داده GiB است؛ حجم بر حسب ۱٬۰۷۳٬۷۴۱٬۸۲۴ بایت محاسبه می‌شود. خرید حجم از ۱ گیگ و با مقدار صحیح انجام می‌شود.

قیمت‌ها در جدول products ذخیره می‌شوند و از محیط مدیریت قابل تغییرند. تغییرات قیمت روی سفارش‌های جدید اثر دارند؛ مبلغ سفارش موجود تغییر نمی‌کند. ستون version برای جلوگیری از ثبت قیمت کهنه است. نرخ پرو و حجم اضافه دو ردیف مستقل قابل‌ویرایش هستند؛ اگر می‌خواهید همیشه برابر بمانند هر دو را یکسان تنظیم کنید. دسته اقتصادی در منطق سرور هم غیرفعال است، نه فقط در ظاهر.

## کارت و مبلغ

مشخصات کارت اعلام‌شده به نام آرین امینی مقدم در config.example.php ثبت شده است. آن را به config.php خصوصی کپی کنید. همه مبلغ‌ها IRR و ریالی هستند. اپ تعداد، مبلغ ریالی و نسخه قیمت را به checkout می‌فرستد و بک‌اند مقدار را دوباره از جدول قیمت محاسبه می‌کند؛ تغییر مبلغ توسط کلاینت پذیرفته نمی‌شود. سایت مبلغ سفارش ثبت‌شده را نمایش می‌دهد. دکمه کپی مبلغ عدد بدون جداکننده را کپی می‌کند؛ کنار آن صریحاً «ریال» نوشته شده. دکمه کپی کارت فاصله‌های نمایشی را حذف می‌کند.

## ورود مدیر

نام مدیر `arianamini` و هش رمز اعلام‌شده در تنظیمات اولیه قرار گرفته‌اند؛ رمز خام در سورس اندروید یا فایل تنظیمات قرار ندارد. این حساب ثابت مدیریتی از حساب‌های کاربران جداست و از طریق فرم ثبت‌نام ساخته نمی‌شود.

- سایت: نشانی `/api/admin.php` روی دامنه هاست.
- اپ: در همان صفحه ورود، نام کاربری مدیر و رمز اعلام‌شده را وارد کنید. پاسخ سرور نقش admin می‌دهد و اپ پنل کامل مدیریت وب را در مرورگر باز می‌کند. این بخش یک پنل Native جداگانه نیست. ورود مرورگر با لینک یک‌بارمصرف ۶۰ثانیه‌ای انجام می‌شود؛ رمز یا توکن اصلی API در URL نیست.

## امکانات مدیریت

- داشبورد تعداد کاربران، کاربران ۲۴ ساعت اخیر، رسیدهای منتظر، سفارش‌های در صف و مجموع واریزهای تأییدشده.
- تغییر نرخ محصولات به ریال؛ ثبت نام مدیر و مقدار قبلی/جدید در audit.
- فهرست و جستجوی کاربران و صفحه اختصاصی هر کاربر.
- سابقه خرید و هدیه‌های مدیر، وضعیت رسیدها و تصاویر، تأیید/رد با دلیل.
- مشاهده و کپی ساب کاربر فقط در محیط مدیر؛ آمار زنده ساب در صورت دسترسی به آن.
- مسدود/فعال‌کردن ورود حساب؛ مسدودسازی حساب، نشست‌های قبلی آن را هم باطل می‌کند.
- درخواست فعال/غیرفعال‌کردن سرویس VPN، جدا از دسترسی ورود؛ تغییر روی پنل از طریق worker انجام و پس از خواندن مجدد تأیید می‌شود.
- اهدای حجم، زمان یا سرویس تازه پرو بدون ثبت واریز جعلی. هدیه در سفارش‌ها با origin=admin و مبلغ صفر ثبت می‌شود و در آمار واریزی بانکی وارد نمی‌شود. برای سرویس تازه باید حجم و زمان هر دو تعیین شوند؛ برای سرویس قبلی، یکی یا هر دو قابل افزایش هستند.

این نسخه حذف دائمی کاربر، تعویض دلخواه UUID یا انتقال او به پنل/اینباند دیگر ندارد. سرویس‌های ایجادشده همان اینباند ۶۱ هستند. سرویس اقتصادی فعلاً قابل اعطا نیست. سهمیه‌های مدیریت‌شده باید از همین سامانه تغییر کنند؛ ویرایش هم‌زمان دستی از پنل خارجی ممکن است به خطای تطبیق منجر شود.

## وضعیت رسید

بعد از آپلود، وضعیت «در حال بررسی» می‌شود. صفحه هنگام بازبودن هر ۸ ثانیه نتیجه را بررسی می‌کند. با رد، دلیل نمایش داده می‌شود و کاربر می‌تواند رسید اصلاح‌شده بفرستد. با تأیید، «پرداخت تأیید شد؛ در انتظار فعال‌سازی» نمایش داده می‌شود؛ فقط پس از تأیید نتیجه پنل، «اشتراک فعال شد» نمایش داده می‌شود. قطع شبکه وضعیت را به موفق تغییر نمی‌دهد.

## نصب یا ارتقا

1. نصب تازه: schema.mysql.sql فعلی را اجرا کنید؛ جدول قیمت‌ها و نرخ‌های بالا ساخته می‌شود.
2. ارتقا از نسخه ۰.۴: یک‌بار pricing-admin-migration.sql را پس از پشتیبان‌گیری اجرا کنید. آن را روی نصب تازه دوباره اجرا نکنید. ارتقا از نسخه‌های قدیمی‌تر ابتدا به migration پرداخت دستی نیز نیاز دارد.
3. config.php خصوصی فعلی را نگه دارید؛ فقط مشخصات کارت، مدیر و کلیدهای جدید config.example.php را به آن منتقل کنید. اطلاعات MySQL یا کلیدهای رمزنگاری قبلی را با مقادیر خالی نمونه جایگزین نکنید.
4. catalog.json دیگر مرجع قیمت نسخه PHP نیست؛ جدول products مرجع است. فایل catalog قدیمی برای نسخه Python باقی مانده و بر PHP اثر ندارد.
5. portal.js باید کنار admin.php و payment.php آپلود شود. این فایل دکمه‌های کپی و تازه‌شدن وضعیت را فعال می‌کند.
6. همان cron مربوط به worker.php سفارش‌ها و درخواست‌های تغییر وضعیت سرویس را اجرا می‌کند.

## وضعیت بررسی

JavaScript با `node --check` بررسی شده است. هش رمز تنظیم‌شده با همان رمز اعلام‌شده بررسی شده است. امکان اجرای PHP یا MySQL در محیط تهیه فایل فراهم نشد؛ تلاش نصب ابزار نیز به محدودیت دسترسی سیستم خورد. تست‌های PHP قیمت و پرداخت برای اجرا روی محیط آزمایشی موجودند، اما پاس‌شدن آن‌ها ادعا نمی‌شود. سورس Android هم هنوز build نشده و هسته واقعی VPN تکمیل نیست.

اتصال زنده به پنل HTTP هنوز توسط این محیط تأیید نشده و adapter همچنان HTTPS می‌خواهد. بنابراین کد صف و مدیریت آماده بررسی است، ولی ساخت/تمدید واقعی روی پنل فعلی نباید انجام‌شده تلقی شود. دامنه هاست، تنظیمات MySQL و تست یکپارچه نیز برای استقرار لازم‌اند.
