@page
@model JobsMedical.Web.Pages.Admin.SettingsModel
@{
    ViewData["Title"] = "تنظیمات جمع‌آوری و هوش مصنوعی";
}

<div class="page-head">
    <div class="container">
        <h1>تنظیمات جمع‌آوری و هوش مصنوعی</h1>
        <p class="muted"><a asp-page="/Admin/Index">← بازگشت به صف</a></p>
    </div>
</div>

<div class="container section" style="max-width:680px;">
    @if (Model.DemoMsg is not null) { <div class="alert alert-success">@Model.DemoMsg</div> }
    <div class="card card-pad" style="margin-bottom:14px;">
        <h3 style="margin-top:0;">حالت نمایشی (Demo)</h3>
        <p class="muted" style="font-size:13px; margin-top:0;">داده‌های نمونه‌ی تهران را برای نمایش/دمو روی سایت قرار بده یا حذف کن. (تیک «حالت نمایشی» پایین را هم بزن تا پس از هر استقرار دوباره ساخته شود.)</p>
        <div style="display:flex; gap:8px; flex-wrap:wrap;">
            <form method="post"><button asp-page-handler="SeedDemo" class="btn btn-outline">ساخت داده نمونه</button></form>
            <form method="post" onsubmit="return confirm('همه داده‌های نمونه حذف شوند؟');"><button asp-page-handler="ClearDemo" class="btn btn-outline" style="color:var(--danger); border-color:var(--danger);">حذف داده نمونه</button></form>
        </div>
    </div>
    @if (Model.SmsTest is not null) { <div class="alert alert-success">@Model.SmsTest</div> }
    <form method="post" class="card card-pad" style="margin-bottom:14px; display:flex; gap:8px; align-items:end; flex-wrap:wrap;">
        <div class="filter-group" style="margin:0; flex:1; min-width:160px;">
            <label>ارسال پیامک آزمایشی به</label>
            <input type="tel" name="TestPhone" dir="ltr" placeholder="۰۹۱۲ ..." />
        </div>
        <button type="submit" asp-page-handler="TestSms" class="btn btn-outline">ارسال آزمایشی</button>
    </form>
    @if (Model.Saved is not null)
    {
        <div class="alert alert-success">✓ @Model.Saved</div>
    }
    <form method="post" class="card card-pad">
        <h3 style="margin-top:0;">کانال‌های اعلان (فعال / غیرفعال)</h3>
        <p class="muted" style="font-size:12px; margin-top:0;">روشن/خاموش‌کردن هر کانال ارسال اعلان به کاربران. کلیدها و تنظیمات هر کانال در بخش‌های پایین‌تر.</p>
        <div class="filter-group">
            <label style="display:flex; align-items:center; gap:8px; font-weight:700;">
                <input type="checkbox" name="WebNotificationsEnabled" value="true" style="width:auto;" checked="@Model.WebNotificationsEnabled" />
                اعلان‌های وب / درون‌برنامه‌ای (زنگوله + نوتیف زنده) — توصیه‌شده برای ایران
            </label>
            <p class="muted" style="font-size:12px; margin:4px 0 0;">از طریق سرور خودمان ارسال می‌شود؛ نیازی به سرویس‌های گوگل ندارد و در ایران کار می‌کند.</p>
        </div>
        <div class="filter-group">
            <label style="display:flex; align-items:center; gap:8px; font-weight:700;">
                <input type="checkbox" name="SmsEnabled" value="true" style="width:auto;" checked="@Model.SmsEnabled" />
                پیامک (SMS) — کاوه‌نگار
            </label>
            <p class="muted" style="font-size:12px; margin:4px 0 0;">برای کد ورود و اعلان‌های مهم. کلید و تمپلیت را در بخش «پیامک ورود» پایین وارد کن.</p>
        </div>
        <div class="filter-group">
            <label style="display:flex; align-items:center; gap:8px; font-weight:700;">
                <input type="checkbox" name="PushEnabled" value="true" style="width:auto;" checked="@Model.PushEnabled" />
                پوش مرورگر (Web Push) — بهترین تلاش
            </label>
            <p class="muted" style="font-size:12px; margin:4px 0 0;">برای اعلان هنگام بسته‌بودن برنامه؛ ولی از سرویس مرورگر (گوگل) عبور می‌کند که در ایران اغلب فیلتر است.</p>
        </div>

        <hr style="border:none; border-top:1px solid var(--line); margin:18px 0;" />

        <h3 style="margin-top:0;">حالت انتشار</h3>
        <div class="filter-group">
            <label>نحوه افزودن آگهی‌ها به سایت</label>
            <select name="Mode">
                <option value="0" selected="@(Model.Mode == JobsMedical.Web.Models.IngestionMode.Manual)">دستی — همه به صف بررسی می‌روند</option>
                <option value="1" selected="@(Model.Mode == JobsMedical.Web.Models.IngestionMode.Automatic)">خودکار — موارد تأییدشده مستقیم منتشر می‌شوند</option>
            </select>
        </div>
        <div class="filter-group">
            <label>حداقل درصد اطمینان برای انتشار خودکار (بدون هوش مصنوعی)</label>
            <input type="number" name="AutoPublishMinConfidence" min="0" max="100" value="@Model.AutoPublishMinConfidence" dir="ltr" />
            <p class="muted" style="font-size:12px; margin:4px 0 0;">در حالت خودکار و بدون AI، آگهی‌هایی با اطمینان بالاتر از این مقدار خودکار منتشر می‌شوند.</p>
        </div>

        <hr style="border:none; border-top:1px solid var(--line); margin:18px 0;" />

        <h3 style="margin-top:0;">لایه هوش مصنوعی (اختیاری)</h3>
        <div class="filter-group">
            <label style="display:flex; align-items:center; gap:8px; font-weight:700;">
                <input type="checkbox" name="AiEnabled" value="true" style="width:auto;" checked="@Model.AiEnabled" />
                فعال‌سازی بررسی با هوش مصنوعی قبل از انتشار
            </label>
            <p class="muted" style="font-size:12px; margin:4px 0 0;">در صورت فعال بودن، هر آگهی پیش از انتشار توسط مدل بررسی و تأیید/رد/ساختارمند می‌شود.</p>
        </div>
        <div class="filter-group">
            <label>آدرس سرویس (سازگار با OpenAI)</label>
            <input type="text" name="AiEndpoint" value="@Model.AiEndpoint" placeholder="https://host/v1/chat/completions" dir="ltr" />
            <p class="muted" style="font-size:12px; margin:4px 0 0;">می‌تواند یک مدل self-hosted یا سرویس داخلی باشد (OpenAI/Anthropic در ایران مسدودند).</p>
        </div>
        <div class="filter-group" style="display:flex; gap:8px;">
            <div style="flex:1;"><label>کلید API</label><input type="password" name="AiApiKey" value="@Model.AiApiKey" dir="ltr" /></div>
            <div style="flex:1;"><label>نام مدل</label><input type="text" name="AiModel" value="@Model.AiModel" dir="ltr" /></div>
        </div>
        <div class="filter-group">
            <label>دستور و چارچوب هوش مصنوعی (Prompt / Framework)</label>
            <textarea name="AiSystemPrompt" rows="10" dir="rtl">@Model.AiSystemPrompt</textarea>
            <p class="muted" style="font-size:12px; margin:4px 0 0;">به مدل بگو چطور تأیید/رد کند و چه فیلدهایی را استخراج کند. خروجی باید JSON باشد.</p>
        </div>
        <div class="filter-group">
            <label style="display:flex; align-items:center; gap:8px; font-weight:700;">
                <input type="checkbox" name="AiAutoApprove" value="true" style="width:auto;" checked="@Model.AiAutoApprove" />
                در حالت خودکار، آگهی‌هایی که AI تأیید می‌کند مستقیم منتشر شوند
            </label>
        </div>

        <hr style="border:none; border-top:1px solid var(--line); margin:18px 0;" />

        <h3 style="margin-top:0;">منابع جمع‌آوری (اسکرپ کانال‌ها)</h3>
        <div class="filter-group">
            <label style="display:flex; align-items:center; gap:8px; font-weight:700;">
                <input type="checkbox" name="AutoIngestEnabled" value="true" style="width:auto;" checked="@Model.AutoIngestEnabled" />
                اجرای خودکار جمع‌آوری روی زمان‌بند
            </label>
        </div>
        <div class="filter-group">
            <label>فاصله اجرای خودکار (دقیقه)</label>
            <input type="number" name="IngestIntervalMinutes" min="1" value="@Model.IngestIntervalMinutes" dir="ltr" />
        </div>

        <div class="filter-group">
            <label style="display:flex; align-items:center; gap:8px; font-weight:700;">
                <input type="checkbox" name="TelegramEnabled" value="true" style="width:auto;" checked="@Model.TelegramEnabled" />
                تلگرام (کانال‌های عمومی — بدون توکن)
            </label>
            <label style="margin-top:6px;">یوزرنیم کانال‌ها (هر خط یک کانال)</label>
            <textarea name="TelegramChannels" rows="3" dir="ltr" placeholder="shift_channel&#10;another_channel">@Model.TelegramChannels</textarea>
        </div>

        <div class="filter-group">
            <label style="display:flex; align-items:center; gap:8px; font-weight:700;">
                <input type="checkbox" name="BaleEnabled" value="true" style="width:auto;" checked="@Model.BaleEnabled" />
                بله (بات باید عضو کانال باشد)
            </label>
            <label style="margin-top:6px;">توکن بات بله</label>
            <input type="password" name="BaleBotToken" value="@Model.BaleBotToken" dir="ltr" />
        </div>

        <div class="filter-group">
            <label style="display:flex; align-items:center; gap:8px; font-weight:700;">
                <input type="checkbox" name="DivarEnabled" value="true" style="width:auto;" checked="@Model.DivarEnabled" />
                دیوار
            </label>
            <div style="display:flex; gap:8px; margin-top:6px;">
                <div style="flex:0 0 120px;"><label>شهر (slug)</label><input type="text" name="DivarCity" value="@Model.DivarCity" dir="ltr" placeholder="tehran" /></div>
                <div style="flex:1;"><label>عبارت‌های جستجو (هر خط یکی)</label><textarea name="DivarQueries" rows="3">@Model.DivarQueries</textarea></div>
            </div>
        </div>

        <div class="filter-group">
            <label style="display:flex; align-items:center; gap:8px; font-weight:700;">
                <input type="checkbox" name="MedjobsEnabled" value="true" style="width:auto;" checked="@Model.MedjobsEnabled" />
                مدجابز (medjobs.ir) — خواندن کامل آگهی‌ها از سایت‌مپ
            </label>
            <label style="margin-top:6px;">حداکثر آگهی در هر اجرا</label>
            <input type="number" name="MedjobsMaxAds" min="1" max="500" value="@Model.MedjobsMaxAds" dir="ltr" />
            <p class="muted" style="font-size:12px; margin:4px 0 0;">آگهی‌های تکراری به‌صورت خودکار رد می‌شوند؛ هر اجرا فقط آگهی‌های جدید را می‌آورد.</p>
        </div>

        <div class="filter-group">
            <label style="display:flex; align-items:center; gap:8px; font-weight:700;">
                <input type="checkbox" name="WebsitesEnabled" value="true" style="width:auto;" checked="@Model.WebsitesEnabled" />
                وب‌سایت‌ها (آدرس‌های دلخواه)
            </label>
            <label style="margin-top:6px;">آدرس صفحه‌ها (هر خط یک URL)</label>
            <textarea name="WebsiteUrls" rows="3" dir="ltr" placeholder="https://example.ir/jobs/123">@Model.WebsiteUrls</textarea>
            <p class="muted" style="font-size:12px; margin:4px 0 0;">موتور هر آدرس را می‌خواند و متن آگهی را استخراج می‌کند (عنوان og + بدنه محتوا). برای هر صفحه شغلی، آرشیو کانال یا آگهی طبقه‌بندی.</p>
        </div>

        <hr style="border:none; border-top:1px solid var(--line); margin:18px 0;" />

        <h3 style="margin-top:0;">حالت نمایشی (Demo)</h3>
        <div class="filter-group">
            <label style="display:flex; align-items:center; gap:8px; font-weight:700;">
                <input type="checkbox" name="DemoMode" value="true" style="width:auto;" checked="@Model.DemoMode" />
                حالت نمایشی فعال باشد — داده‌های نمونه پس از هر استقرار به‌صورت خودکار ساخته شوند
            </label>
            <p class="muted" style="font-size:12px; margin:4px 0 0;">برای ساخت/حذف فوری داده‌های نمونه از کارت بالای همین صفحه استفاده کن.</p>
        </div>

        <hr style="border:none; border-top:1px solid var(--line); margin:18px 0;" />

        <h3 style="margin-top:0;">پیامک ورود (OTP) — کاوه‌نگار</h3>
        <p class="muted" style="font-size:12px; margin-top:0;">روشن/خاموش‌کردن این کانال در بخش «کانال‌های اعلان» بالا. (در صورت خاموش بودن، کد ورود روی صفحه نمایش داده می‌شود.)</p>
        <div class="filter-group">
            <label>کلید API کاوه‌نگار</label>
            <input type="password" name="SmsApiKey" value="@Model.SmsApiKey" dir="ltr" />
        </div>
        <div class="filter-group" style="display:flex; gap:8px;">
            <div style="flex:1;"><label>نام تمپلیت verify (ترجیحی)</label><input type="text" name="SmsTemplate" value="@Model.SmsTemplate" dir="ltr" placeholder="otp" /></div>
            <div style="flex:1;"><label>خط ارسال (در نبود تمپلیت)</label><input type="text" name="SmsSender" value="@Model.SmsSender" dir="ltr" placeholder="10008..." /></div>
        </div>
        <p class="muted" style="font-size:12px;">روش پیشنهادی: تمپلیت verify/lookup با متغیر %token. اگر تمپلیت خالی باشد، پیامک ساده با خط ارسال فرستاده می‌شود.</p>

        <hr style="border:none; border-top:1px solid var(--line); margin:18px 0;" />
        <h3 style="margin-top:0;">نقشه (نشان)</h3>
        <div class="filter-group">
            <label>کلید API نقشه نشان (web map.js)</label>
            <input type="text" name="NeshanMapKey" value="@Model.NeshanMapKey" dir="ltr" placeholder="web.xxxxx" />
            <p class="muted" style="font-size:12px; margin:4px 0 0;">برای انتخاب موقعیت روی نقشه در فرم ثبت مرکز. بدون کلید، فقط دکمه «موقعیت فعلی من» نمایش داده می‌شود.</p>
        </div>

        <hr style="border:none; border-top:1px solid var(--line); margin:18px 0;" />
        <h3 style="margin-top:0;">اعلان‌ها (Web Push / PWA)</h3>
        <p class="muted" style="font-size:12px; margin-top:0;">روشن/خاموش‌کردن این کانال در بخش «کانال‌های اعلان» بالا. اینجا فقط کلیدهای VAPID را وارد کن.</p>
        <div class="filter-group">
            <label>VAPID Public Key</label>
            <input type="text" name="VapidPublicKey" value="@Model.VapidPublicKey" dir="ltr" />
        </div>
        <div class="filter-group">
            <label>VAPID Private Key</label>
            <input type="password" name="VapidPrivateKey" value="@Model.VapidPrivateKey" dir="ltr" />
        </div>
        <div class="filter-group">
            <label>VAPID Subject</label>
            <input type="text" name="VapidSubject" value="@Model.VapidSubject" dir="ltr" placeholder="mailto:admin@hamkadr.ir" />
        </div>
        <p class="muted" style="font-size:12px;">جفت‌کلید VAPID را یک‌بار بساز (web-push). بدون آن، اعلان محلی روی دستگاه کار می‌کند ولی ارسال از سرور نیاز به کلید دارد.</p>

        <button type="submit" class="btn btn-accent btn-block btn-lg">ذخیره تنظیمات</button>
    </form>
</div>
