# ثبت حساب بانکی و نمایش بانک

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

## تغییرات دقیق پایگاه داده برای تأیید
فایل `15-customer-bank-verification.sql` روی پروژه `wlsxzyeernwtsetzyltq` اجرا خواهد شد:
- افزودن عنوان دلخواه حساب به `bank_accounts`، تشخیص نام بانک در پایگاه داده، و گسترش ثبت حساب با عنوان مستقل و کنترل درخواست تکراری.
- افزودن کد ملی به پروفایل و ستون‌های نتیجه تطبیق به حساب بانکی؛ انتقال کد ملی معتبر درخواست هویت موجود به پروفایل.
- افزودن جدول خصوصی سوابق تلاش ثبت بانک با RLS، محدودیت تعداد تلاش و جلوگیری از ثبت تکراری همان درخواست.
- به‌روزرسانی توابع خواندن پروفایل و ثبت اطلاعات، افزودن تابع بررسی و ثبت حساب فقط برای کاربر صاحب نشست و مسدودکردن ثبت بدون استعلام.
- همگام‌سازی کد ملی پروفایل و درخواست احراز هویت، و استفاده مجدد از نتیجه معتبر همان حساب در درخواست بعدی.
- آماده‌سازی اتصال تبدیل کارت به شبا با کلید مستقل در Vault؛ کلید فعلی تطبیق شبا حفظ می‌شود.
هیچ رکورد موجودی حذف نمی‌شود؛ اجرای این فایل به‌تنهایی استعلام بانکی، تراکنش مالی یا تأیید هویت ایجاد نمی‌کند.

## وضعیت
کد محلی آماده و آزمایش شده است. اجرای فایل در Supabase توسط بررسی خودکار مجوز رد شد، زیرا تأیید صریح اجرای این دامنه تغییرات روی پایگاه داده موجود لازم دانسته شد. فایل هنوز در Supabase اجرا نشده و منتظر تأیید کاربر است.

## بررسی تازه خطای ثبت — ۲۰۲۶/۰۹/۰۹
در بررسی فقط‌خواندنی، سرویس `marketplace_bank_register` پاسخ 404 / PGRST202 داد؛ سرویس داشبورد موجود است. علت پیام تصویر، نبود تابع ثبت در Supabase است، نه رد مالکیت شبا. پیام برنامه اکنون نیاز به فعال‌سازی توسط مدیر را توضیح می‌دهد و برای این وضعیت دکمه تلاش دوباره نشان نمی‌دهد.

۲۰ آزمون هدفمند ثبت بانک/داشبورد، نوع‌سنجی و ساخت برنامه موفق بود. صفحه حساب‌های بانکی HTTP 200 داد. در مرورگر، چسباندن شبای نمونه با ارقام فارسی، نمایش نام و لوگوی پارسیان و فقط‌خواندنی‌بودن نام بانک بررسی شد؛ فرم بدون ارسال بسته و ورودی آزمایشی پاک شد. ذخیره عنوان در پایگاه داده محلی آزمایش شد؛ نصب زنده همچنان منتظر تأیید است.

## بررسی‌های قبلی
نوع‌سنجی و ساخت هر دو برنامه موفق. مجموعه قبلی ۱۰۹ آزمون موفق بود؛ پس از افزودن تشخیص بانک و لوگو و اصلاح فیلتر نتیجه ردشده، ۱۲ آزمون هدفمند API/پایگاه داده دوباره موفق شدند. استعلام واقعی با داده کاربر ارسال نشده است.

## منابع
- مستندات کاربر: https://shabanic.ir/card_to_shaba_api_doc
- داده شناسایی بانک: https://github.com/IR-Banks/ir-banks-info
- لوگوها: https://github.com/masihgh/iranian-bank-list
فایل‌های مجوز MIT و نشانی منابع کنار تصاویر در `public/banks` قرار دارند.
