# اتصال کاوه‌نگار به ورود پلانک

بخش ارسال کاوه‌نگار با متد Lookup پیاده‌سازی و در Supabase منتشر شده است. تولید و تأیید کد شش‌رقمی با Supabase باقی می‌ماند. طبق آخرین درخواست کاربر، فعلاً فقط الگوی ورود با رمز یک‌بارمصرف لازم است.

## وضعیت فعلی

در ۸ سپتامبر ۲۰۲۶ الگوی `planklogin` با شناسه `1526198` و نوع استفاده «تست فنی» ثبت شد. وضعیت مشاهده‌شده در پنل «در حال بررسی» است. دوره هفت‌روزه سرویس پیشرفته با گزینه رایگان فعال شد؛ خرید یا تمدید پولی انجام نشده است. کاربر تمدید را برای بعد در نظر دارد. تمدید همین سرویس به تغییر کد اتصال نیاز ندارد.

کلید `KAVENEGAR_API_KEY` توسط کاربر در Supabase Secrets ذخیره شده و وجود نام آن در فهرست تأیید شد؛ مقدار کلید خوانده یا در فایل ذخیره نشده است. `KAVENEGAR_TEMPLATE=planklogin` و `SMS_ALLOWED_PHONE=+989121888745` نیز ذخیره شده‌اند.

تابع `send-sms-kavenegar` و نسخه محدودشده `send-sms-melipayamak` هر دو منتشر شدند. در هر دو تابع، درخواست بدون امضا در سرویس واقعی با ۴۰۱ و پیام اعتبارسنجی خود تابع رد شد. مسیر فعال Auth هنوز ملی‌پیامک است؛ تغییر مسیر به کاوه‌نگار تا تأیید الگو انجام نشده است. هیچ پیامک کاوه‌نگار در این مرحله ارسال نشده و تحویل واقعی یا ورود کامل هنوز تأیید نشده است.

## تنظیمات سرور

| نام | کاربرد |
|---|---|
| `KAVENEGAR_API_KEY` | کلید حساب کاوه‌نگار، فقط در Secrets |
| `KAVENEGAR_TEMPLATE` | نام دقیق الگو؛ مقدار ذخیره‌شده `planklogin`، منتظر تأیید ارائه‌دهنده |
| `SMS_ALLOWED_PHONE` | تنها شماره مجاز با قالب بین‌المللی؛ فعلاً `+989121888745` طبق دستور کاربر |
| `SEND_SMS_HOOK_SECRET` | کلید امضای درخواست Supabase؛ مستقل از کلید کاوه‌نگار |

قید شماره مجاز در کد هر دو ارائه‌دهنده اعمال شده است. حذف یا خالی‌گذاشتن تنظیم آن، ارسال را متوقف می‌کند و ارسال به همه شماره‌ها را آزاد نمی‌کند. تغییر این محدودیت نیازمند دستور صریح کاربر است.

## الگو

نام ثبت‌شده: `planklogin` — شناسه: `1526198`

متن ثبت‌شده:

> پلانک
> کد ورود شما: %token
> این کد را در اختیار دیگران قرار ندهید.

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

طبق آخرین درخواست کاربر، ثبت الگوی وب‌سایت و دریافت اطلاعات دامنه یا مجوز فعلاً دنبال نمی‌شود. پیش از ارسال عمومی، وضعیت حساب و الگو باید مطابق شرایط کاوه‌نگار تکمیل و محدودیت شماره فقط با دستور صریح کاربر بازنگری شود. طبق [مستندات رسمی کاوه‌نگار](https://kavenegar.com/rest.html)، Lookup به سرویس پیشرفته و الگوی تأییدشده نیاز دارد.

## انتشار و تغییر مسیر

1. تابع `send-sms-kavenegar` منتشر شده است. برای بازسازی، از پوشه همنام در `supabase/functions` یا فایل مستقل همراه استفاده شود. تأیید JWT در درگاه خاموش است؛ خود تابع امضای HMAC را پیش از ارسال بررسی می‌کند.
2. هر چهار تنظیم بالا موجود باشند. اعتبار سرویس و تأیید الگو در پنل کاوه‌نگار بررسی شود.
3. نشانی Send SMS Hook به `https://wlsxzyeernwtsetzyltq.supabase.co/functions/v1/send-sms-kavenegar` تغییر کند. کلید امضای Hook و تنظیم `SEND_SMS_HOOK_SECRET` باید یکسان باشند. تأیید شماره اجباری و طول OTP شش رقم بماند.
4. با اجازه کاربر فقط روی شماره مجاز، تحویل واقعی و سپس جریان تولید/تأیید کد توسط Supabase آزمایش شود. پذیرفته‌شدن درخواست، تأیید تحویل به گوشی نیست.

## رفتار پیاده‌سازی

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

درخواست بدون امضا، بدنه تغییرکرده، زمان نامعتبر و گیرنده غیرمجاز پیش از ارسال رد می‌شوند. تکرار همان درخواست در یک نمونه اجرا ادغام می‌شود؛ تضمین سراسری بین چند نمونه اجرا وجود ندارد. روی خطای مبهم، ارسال خودکار دوباره یا تغییر خودکار به ارائه‌دهنده دیگر انجام نمی‌شود.

اعتبارسنجی محلی: ۳۹ آزمون، بررسی TypeScript و ساخت نسخه انتشار موفق بودند. از این تعداد، ۷ آزمون کاوه‌نگار و ۱۱ آزمون ملی‌پیامک‌اند؛ آزمون‌های گیرنده غیرمجاز از شبکه واقعی استفاده نمی‌کنند.
