# اتصال ثبت‌احوال و شاهکار شبانیک

به‌روزرسانی ۹ سپتامبر ۲۰۲۶: مهاجرت `202609090005_identity_inquiry_adapters.sql` روی Supabase پروژه `wlsxzyeernwtsetzyltq` اجرا شد و متن هر پنج تابع نصب‌شده با نسخه آزموده‌شده یکسان است. رابط در برنامه‌های محلی فعال است؛ انتشار عمومی انجام نشده است.

## تنظیمات

پنل: http://localhost:3001/?section=inquiries

| سرویس | شناسه | نشانی درخواست | اعتبارنامه |
|---|---|---|---|
| ثبت‌احوال | national_identity | https://shabanic.ir/api/v1/nid_inquiry | هدر SHABANIC-API-KEY |
| شاهکار | mobile_ownership | https://shabanic.ir/api/v2/shahkar | هدر Authorization با Bearer |

نام ارائه‌دهنده «شبانیک» است. کلید اختصاصی هر سرویس فقط در کادر رمزدار همان عنوان وارد می‌شود و در Vault نگهداری می‌شود؛ کلید در خروجی برنامه برنمی‌گردد. کلیدها بین سرویس‌ها کپی نمی‌شوند.

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

منابع رسمی: [ثبت‌احوال](https://shabanic.ir/nid_api_doc)، [شاهکار](https://shabanic.ir/api_doc).

## اجرا و نتیجه

در http://localhost:3001/?section=identity مالک پنل با تأیید دومرحله‌ای، پرونده دارای رضایت را باز می‌کند و دکمه اجرای تطبیق هویت یا مالکیت موبایل را می‌زند. ثبت تنظیمات به‌تنهایی استعلامی ارسال نمی‌کند.

ثبت‌احوال از کد ملی پرونده و تاریخ تولد ذخیره‌شده در پروفایل استفاده می‌کند. تاریخ میلادی پروفایل به `YYYY/MM/DD` شمسی تبدیل می‌شود. پاسخ باید کامل و دارای شناسه پیگیری باشد؛ کد ملی، نام، نام خانوادگی، نام پدر، شماره شناسنامه، تاریخ تولد و وضعیت حیات بررسی می‌شوند. اختلاف مشخصات نتیجه عدم تطبیق می‌دهد؛ پاسخ ناقص خطا محسوب می‌شود. بعد از تطبیق موفق، تاریخ تولد همان درخواست قفل می‌شود.

شاهکار فقط شماره موبایل تأییدشده حساب را در کنار کد ملی پرونده با فیلدهای `national_code` و `mobile` می‌فرستد. فقط پاسخ DONE با success و isMatched از نوع boolean معتبر است. پاسخ مثبت هر استعلام از عدم تطبیق و خطای سرویس جدا نمایش داده می‌شود.

احراز اولیه همچنان به تأیید مدارک توسط مدیر و موفقیت هر دو استعلام نیاز دارد. این مهاجرت هیچ کاربری را خودکار تأیید نمی‌کند. سقف تلاش برای هر استعلام پنج بار در ۲۴ ساعت با فاصله حداقل یک دقیقه است؛ نتیجه موفق دوباره به ارائه‌دهنده ارسال نمی‌شود. تاریخچه فقط نتیجه، خطای استاندارد و شناسه پیگیری را دارد، بدون کلید یا پاسخ خام.

## بررسی و محدودیت فعلی

۳۰ آزمون مرتبط موفق‌اند: ۵ آزمون اتصال هویتی در PostgreSQL محلی، ۴ آزمون بانکی، ۶ آزمون مسیرهای مدیریت و ۱۵ آزمون داشبورد. تبدیل تاریخ برای همه روزهای ۱۹۰۰ تا ۲۰۲۶ با تقویم فرم مقایسه شد. بررسی نوع‌ها و ساخت هر دو برنامه موفق است؛ صفحه مدیریت پاسخ HTTP 200 دارد. تماس ارائه‌دهنده و Vault در آزمون‌ها با داده ساختگی شبیه‌سازی شده‌اند.

استعلام واقعی هنوز ارسال نشده است: هنگام باز کردن پرونده نشست مدیریت پایان یافته و ورود دوباره لازم شد. کلید شاهکار نیز ثبت نشده است. تکمیل استعلام واقعی و بررسی مدارک پس از ورود مدیر انجام می‌شود؛ سطح احراز کاربر تغییر نکرده است.

این نصب مستقل از مهاجرت بانکی `202609090004_customer_bank_verification.sql` است. مهاجرت بانکی معوق همچنان اجرا نشده و وضعیت تأیید آن در `CUSTOMER_BANK_REGISTRATION.md` ثبت شده است.
