| URL | `https://bss.hostkhaneh.com/login?to=portal` |
|-----|-----------------------------------------------|
| یا `/portal` پس از ورود با حساب مشتری |
فهرست کامل حسابها و سرویسهای تست: [demo-credentials.md](../demo-credentials.md)
زبان بصری پورتال
همه صفحات پورتال و فروشگاه از **portal-ui** مشترک استفاده میکنند. رنگها از **تنظیمات → برندینگ** شرکت میآید:
سه تم سایدبار + سه تم **منوی افقی بالا** (`classic` / `ocean` / `ember` و `*_top`) — پیشفرض کلاسیک سایدبار
اکسنت، پسزمینه منو، متن منو جداگانه قابل تنظیم
بقیه الگوها:
هیرو navy/accent با فضای باز (`x-bss.portal-hero`)
زیرنویس هیروهای لیست (سرویسها / قراردادها / صورتحساب / تیکت) **جملهٔ تبلیغاتی ثابت** است — نه «فقط … سرویس فعال» یا شمارش سرویس
کارتهای آمار پویا (`portal-stat`)
سطوح سفید با فاصله (`portal-surface` / `portal-table`)
سوییچر منو (`portal-switcher-select`) — بنر بالای صفحهٔ «سرویس فعال برای مدیریت» حذف شده؛ سوییچر سایدبار کافی است
انیمیشن ورود ملایم
**ارقام فارسی** در مبالغ، شمارندهها، **نام محصولات** و منو (`fa_digits` / اسکریپت سراسری `persian-digits-script`)
**استثنا — نام کاربری و رمز عبور:** همیشه با **ارقام لاتین** نمایش داده میشوند (`latin_digits` + `data-credential` / تشخیص برچسب در اسکریپت) تا کپی/ورود به سرویس درست بماند
دکمههای عملیات لیست (مشاهده / جزئیات / …) با آیکون از `x-bss.action`
در **ثبت سفارش**: فیلدهای اجباری خالی (مثل دامنه) با پیام فارسی، حاشیه قرمز و اسکرول به همان فیلد اعلام میشوند
شِل منو (سایدبار / تاپبار)
بسته به تم برندینگ: **سایدبار کناری** یا **منوی افقی داخل هدر** (کلاس `bss-shell--top-nav`). رنگها از `--navy` / `--menu-text` / اکسنت میآیند. روی موبایل همیشه کشوی منو هست. در تم افقی، سوییچر «سرویس در حال مدیریت» روی نوار روشن با متن تیره است (نه متن سفید سایدبار).
صفحات داخلی جزئیات
جزئیات سرویس، سفارش، صورتحساب، تیکت، تمدید، افزونه، جمعآوری، ریز مصرف، نتیجه پرداخت و پروفایل همگی هیرو + `portal-surface` دارند.
جزئیات سرویس
گیج روز/حجم باقیمانده بهصورت **کپسول شناور** کنار هدر
برای هاستینگ (cPanel، DirectAdmin، Plesk، Hestia و سایر پنلهای پشتیبانیشده): در بخش وضعیت سرویس گیج مایع **روز باقیمانده** کنار دیسک و پهنای باند زنده از API پنل
باکس اطلاعات سرویس و **عملیات سرویس** کنار هم (۵۰/۵۰)
در صفحه جزئیات دکمه «مدیریت سرویس» نیست
سرویسهای **جمعآوریشده** (`terminated`): در پیشخوان و لیست سرویسها دکمه/CTA «مدیریت سرویس» نمایش داده نمیشود؛ کارت فقط خواندنی است
برای VPS جمعآوریشده (یا با `provisioning_status=terminated`): **پنل کنترل VPS نمایش داده نمیشود**؛ بهجای خطای Proxmox پیام «اتصال به مقصد مقدور نیست» نشان داده میشود
**درخواست جمعآوری باز:** در مدیریت سرویس هشدار زرد نشان داده میشود؛ تمدید / ارتقا-کاهش / افزونه (و بستهها / حجم اضافه) غیرفعالاند. تنها اقدام مجاز: **لغو درخواست جمعآوری**. وقتی کارتابل (کیس) بسته شود یا سرویس `terminated` شود، قفل برداشته میشود — حتی اگر سفارش هنوز `in_progress` مانده باشد
هاستینگ در پیشخوان: فقط گیجهای مایع (روز / دیسک / پهنای باند)؛ نوار ایمیل و دیتابیس فقط در صفحهٔ جزئیات سرویس
برای VPS با IP ثابت از انبار: **IP ثابت** + **Gateway** + **Subnet** در گرید جزئیات با دکمه کپی (نه تکرار در هدر)
برای VPS Proxmox در پنل مدیریت: **نصب مجدد از ISO** (انتخاب فایل از استوریج نود؛ دیسک پاک میشود و نصب از کنسول ادامه مییابد). **سرور باید خاموش باشد**؛ اگر روشن باشد دکمه غیرفعال است و پیام خطا میگوید ابتدا خاموش کنید
هنگام باز شدن بلوک «مدیریت VPS» یک **لودینگ** تا آماده شدن پنل نمایش داده میشود
کارت وضعیت VPS: hostname + نشانگر آنلاین، چیپهای CPU/RAM/Disk، و ردیفهای فشرده IP/Login/**Password**/OS/Provider با دکمه کپی (رمز از `provisioning_data`)
برای **کلود عمومی** (Hetzner، DO، Vultr، Linode، آروان، Contabo، …): پنل بومی با پاور؛ در صورت پشتیبانی API — **نصب مجدد OS** با انتخاب ایمیج و **کنسول** (WSS/VNC/Weblish). **DigitalOcean کنسول وب از API ندارد** (دکمه Console نشان داده نمیشود؛ SSH یا کنترلپنل DO). **Linode و LightNode (`litenode`) تست زنده کامل** شدهاند. LightNode: وضعیت «در حال خاموش شدن» بهجای PENDING؛ نصب مجدد **async** با انتخاب **صریح** ایمیج مقصد؛ با رفرش وضعیت `pending`/`completed`/`failed`؛ **تعویض IP از API پشتیبانی نمیشود** (Linode هم دکمهٔ تعویض IP در پنل ندارد)
**تغییر رمز ورود** در پنل مدیریت VPS وقتی API ارائهدهنده دارد: LightNode/Linode/Proxmox (فرم رمز) · Hetzner (تولید خودکار) · DigitalOcean (ریست ایمیلی)
منابع VPS در پنل مدیریت با **گیج مایع** نمایش داده میشود؛ برچسبها و اعداد بخش Resources انگلیسی است (CPU / RAM / Disk / Uptime)
دکمههای پنل مدیریت VPS (پاور، کنسول، نصب مجدد، تغییر رمز، …) با کلیک **loading** نشان میدهند؛ قبل از disable شدن کنترلها، مقادیر فرم (ایمیج/ISO/رمز/یوزر) در فیلد مخفی کپی میشود تا در POST از دست نرود. پیام flash و بنر وضعیت نصب مجدد همزمان نمایش داده نمیشوند
**Loading سراسری:** با کلیک دکمهها / ارسال فرمها در پورتال، ریسلر، فروشگاه و پنل ادمین، overlay «در حال انجام عملیات…» نمایش داده میشود (`components/bss/action-loading`)؛ لینکهای دانلود PDF / `download` بعد از کوتاهی خودکار بسته میشوند. اگر اعتبارسنجی فرم submit را لغو کند، overlay فوراً بسته میشود (دیگر روی چکاوت گیر نمیکند)
لاگ Provisioning برای مشتری نمایش داده نمیشود
در «اطلاعات فنی سرویس» متادیتای داخلی کلود/VPS (مثل `vmid`، `region`، `server_type`، وضعیت reinstall، …) مخفی است؛ فقط فیلدهای ورود/اتصال مشتریپسند میماند
بنر بالای صفحه «سرویس فعال برای مدیریت» حذف شده؛ فیلتر سرویس فقط از سوییچر سایدبار است
منوی سمت راست
| بخش | کاربرد |
|-----|--------|
| پیشخوان | اطلاعات سرویس + گیجها کنار هم؛ **فاکتور unpaid و تیکت** نصفنصف زیر همان بلوک |
| سرویسهای من | کارتهای خوانا (۳ ستونه در دسکتاپ) + فیلتر وضعیت چیپدار |
| قراردادها | نسخههای قرارداد + ستون نام کاربری/دامنه + چاپ مرورگر |
| صورتحسابها | مشاهده، **نمایش فاکتور** (قالب شرکت)، پرداخت |
| پشتیبانی | تیکت |
| فروشگاه | کاتالوگ و خرید |
کیف پول و پروفایل از منوی سمت راست حذف شدهاند. در تاپبار یک منوی **حساب کاربری** (نام مشتری) با کلیک باز میشود و شامل اینهاست:
| آیتم | توضیح |
|------|--------|
| کیف پول | با نمایش موجودی فعلی کنار برچسب |
| پیامها | لیست ایمیل و پیامکهای ارسالشده به مشتری |
| پروفایل | اطلاعات شخصی |
| خروج | خروج از حساب |
فروشگاه فقط از منوی سمت راست در دسترس است.
بالای منو: **سوییچر سرویس در حال مدیریت** (دامنه؛ اگر نبود نام کاربری؛ بههمراه شماره سرویس).
بالای صفحه (topbar): **لوگوی شرکت (Tenant)** + منوی حساب کاربری.
با باز کردن جزئیات **سفارش** یا **صورتحساب**، اگر سرویس فعال فعلی با آن سند جور نباشد، سوییچر خودکار با همان سند همراستا میشود (یا فیلتر برداشته میشود) تا ۴۰۴ ندهد. سفارشهای **جمعآوری** هم از `collection_subscription_id` / `addon_parent_subscription_id` به سرویس مربوط وصل میشوند.
وضعیت سرویس (اصطلاح یکسان)
فقط این چهار برچسب در پورتال مشتری و پنل نماینده نمایش داده میشود:
| مقدار سیستم | برچسب |
|-------------|--------|
| `pending` | در حال بررسی |
| `active` | فعال |
| `suspended` | معلق |
| `terminated` | جمع آوری شده |
برچسبهای قدیمی مثل «در انتظار»، «لغو شده»، «پایان یافته» دیگر برای وضعیت سرویس استفاده نمیشوند.
فیلتر وضعیت مثل Filament tenant با **چیپ نارنجی + حذف ×** (Choices.js) است؛ پیشفرض **فعال** و **معلق**. لیست بازشو بالای کارت فیلتر میآید (`overflow: visible`) تا زیر باکس جستجو نرود.
در جزئیات سرویس فقط وضعیت تمدید خودکار نمایش داده میشود؛ دکمه فعال/غیرفعالسازی از مشتری حذف شده است.
پیشخوان
هیرو خوشآمد (بدون زیرنویس) + چهار کارت آمار پویا.
چیدمان محتوا:
**ردیف بالا (دسکتاپ):** دو کارت **همعرض** — سرویسها (فشرده: تب/جزئیات کوچکتر، فیلدهای کماهمیت حذف) کنار فاکتورهای پرداختنشدهٔ همان سرویس
**ردیف پایین:** تیکتهای در حال بررسی مرتبط با همان سرویس
با عوض کردن سرویس، فاکتور و تیکتها هم برای همان سرویس رفرش میشوند.
دکمههای ویجتها (`مشاهده همه`، `پرداخت`) بهصورت دکمههای کوچک برند هستند؛ **پرداخت** کنار مبلغ فاکتور در یک ردیف است.