<?php
/**
 * نصب ماژول جذب کارشناس (Talent Acquisition)
 * C:\xampp\php\php.exe run-service-talent-install.php
 */
declare(strict_types=1);

if ( ! defined( 'ACC_BASE_PATH' ) ) {
    define( 'ACC_BASE_PATH', __DIR__ );
    require __DIR__ . '/standalone/bootstrap.php';
}

header( 'Content-Type: application/json; charset=utf-8' );
global $wpdb;
$pre     = $wpdb->prefix;
$charset = 'DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci';

$ddl = [
    "CREATE TABLE IF NOT EXISTS {$pre}svc_talent_applications (
        id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
        access_token VARCHAR(64) NOT NULL DEFAULT '',
        applicant_no VARCHAR(20) NOT NULL DEFAULT '',
        status VARCHAR(30) NOT NULL DEFAULT 'draft',
        full_name VARCHAR(200) NOT NULL DEFAULT '',
        email VARCHAR(200) NOT NULL DEFAULT '',
        phone VARCHAR(20) NOT NULL DEFAULT '',
        city VARCHAR(100) NOT NULL DEFAULT '',
        province VARCHAR(100) NOT NULL DEFAULT '',
        years_experience INT UNSIGNED NOT NULL DEFAULT 0,
        primary_specialty VARCHAR(50) NOT NULL DEFAULT '',
        secondary_skills JSON NULL,
        bio TEXT NULL,
        cover_letter TEXT NULL,
        preferred_work_type VARCHAR(30) NOT NULL DEFAULT '',
        availability VARCHAR(120) NOT NULL DEFAULT '',
        video_intro_url VARCHAR(500) NOT NULL DEFAULT '',
        source_channel VARCHAR(40) NOT NULL DEFAULT 'website',
        referral_code VARCHAR(20) NOT NULL DEFAULT '',
        digital_presence_score DECIMAL(5,1) NOT NULL DEFAULT 0,
        assessment_score DECIMAL(5,1) NULL,
        assessment_pass TINYINT(1) NOT NULL DEFAULT 0,
        overall_score DECIMAL(5,1) NOT NULL DEFAULT 0,
        stage_step TINYINT UNSIGNED NOT NULL DEFAULT 1,
        reviewer_id BIGINT UNSIGNED NULL,
        review_notes TEXT NULL,
        approved_user_id BIGINT UNSIGNED NULL,
        created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
        updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
        submitted_at DATETIME NULL,
        reviewed_at DATETIME NULL,
        PRIMARY KEY (id),
        UNIQUE KEY access_token (access_token),
        UNIQUE KEY applicant_no (applicant_no),
        KEY status (status),
        KEY email (email),
        KEY phone (phone)
    ) {$charset}",

    "CREATE TABLE IF NOT EXISTS {$pre}svc_talent_identities (
        id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
        application_id BIGINT UNSIGNED NOT NULL,
        platform VARCHAR(30) NOT NULL DEFAULT 'other',
        profile_url VARCHAR(500) NOT NULL DEFAULT '',
        username VARCHAR(100) NOT NULL DEFAULT '',
        followers_count INT UNSIGNED NOT NULL DEFAULT 0,
        verified TINYINT(1) NOT NULL DEFAULT 0,
        created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
        PRIMARY KEY (id),
        KEY application_id (application_id)
    ) {$charset}",

    "CREATE TABLE IF NOT EXISTS {$pre}svc_talent_certificates (
        id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
        application_id BIGINT UNSIGNED NOT NULL,
        title VARCHAR(200) NOT NULL DEFAULT '',
        issuer VARCHAR(200) NOT NULL DEFAULT '',
        cert_url VARCHAR(500) NOT NULL DEFAULT '',
        year SMALLINT UNSIGNED NOT NULL DEFAULT 0,
        created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
        PRIMARY KEY (id),
        KEY application_id (application_id)
    ) {$charset}",

    "CREATE TABLE IF NOT EXISTS {$pre}svc_talent_questions (
        id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
        category VARCHAR(40) NOT NULL DEFAULT '',
        difficulty VARCHAR(20) NOT NULL DEFAULT 'medium',
        question_text TEXT NOT NULL,
        question_type VARCHAR(20) NOT NULL DEFAULT 'single',
        points TINYINT UNSIGNED NOT NULL DEFAULT 2,
        is_active TINYINT(1) NOT NULL DEFAULT 1,
        sort_order INT NOT NULL DEFAULT 0,
        created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
        PRIMARY KEY (id),
        KEY category (category, is_active)
    ) {$charset}",

    "CREATE TABLE IF NOT EXISTS {$pre}svc_talent_question_options (
        id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
        question_id BIGINT UNSIGNED NOT NULL,
        option_text VARCHAR(500) NOT NULL DEFAULT '',
        is_correct TINYINT(1) NOT NULL DEFAULT 0,
        sort_order TINYINT UNSIGNED NOT NULL DEFAULT 0,
        PRIMARY KEY (id),
        KEY question_id (question_id)
    ) {$charset}",

    "CREATE TABLE IF NOT EXISTS {$pre}svc_talent_assessment_attempts (
        id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
        application_id BIGINT UNSIGNED NOT NULL,
        attempt_no INT UNSIGNED NOT NULL DEFAULT 1,
        status VARCHAR(20) NOT NULL DEFAULT 'in_progress',
        question_ids JSON NOT NULL,
        answers JSON NULL,
        score DECIMAL(6,2) NOT NULL DEFAULT 0,
        max_score DECIMAL(6,2) NOT NULL DEFAULT 0,
        pass_threshold DECIMAL(5,1) NOT NULL DEFAULT 70,
        passed TINYINT(1) NOT NULL DEFAULT 0,
        time_limit_sec INT UNSIGNED NOT NULL DEFAULT 1800,
        started_at DATETIME NOT NULL,
        submitted_at DATETIME NULL,
        expires_at DATETIME NOT NULL,
        PRIMARY KEY (id),
        KEY application_id (application_id)
    ) {$charset}",
];

foreach ( $ddl as $sql ) {
    $wpdb->query( $sql );
}

require_once ACC_PATH . 'includes/helpers/svc-talent.php';

$q_cnt = (int) $wpdb->get_var( "SELECT COUNT(*) FROM {$pre}svc_talent_questions" );
$seeded = 0;

if ( $q_cnt === 0 ) {
    $questions = [
        // refrigeration
        [ 'refrigeration', 'easy', 'دمای تبخیر مبرد R134a در فشار اتمسفر تقریباً چند درجه سانتی‌گراد است؟', [
            [ '−26°C', true ], [ '0°C', false ], [ '−10°C', false ], [ '5°C', false ],
        ]],
        [ 'refrigeration', 'medium', 'کدام مؤلفه در سیکل تبرید فشردگی بخار را افزایش می‌دهد؟', [
            [ 'کمپرسور', true ], [ 'کندانسور', false ], [ 'اواپراتور', false ], [ 'اکسپنشن والو', false ],
        ]],
        [ 'refrigeration', 'medium', 'علت اصلی یخ‌زدگی اواپراتور در یخچال تجاری چیست؟', [
            [ 'جریان هوای ناکافی یا کمبود مبرد', true ], [ 'فشار کندانس بالا', false ], [ 'دمای محیط پایین', false ], [ 'کمپرسور بزرگ', false ],
        ]],
        [ 'refrigeration', 'hard', 'ساب‌کولینگ در سیکل تبرید به چه معناست؟', [
            [ 'کاهش دمای مایع مبرد زیر دمای اشباع', true ], [ 'افزایش دمای بخار', false ], [ 'خنک‌سازی کمپرسور', false ], [ 'کاهش فشار ساکشن', false ],
        ]],
        // chiller
        [ 'chiller', 'easy', 'چیلر آب‌سرد معمولاً برای چه کاربردی استفاده می‌شود؟', [
            [ 'سرمایش ساختمان و فرایند صنعتی', true ], [ 'گرمایش آب', false ], [ 'تصفیه آب', false ], [ 'فشرده‌سازی گاز', false ],
        ]],
        [ 'chiller', 'medium', 'ترتیب صحیح جریان در چیلر هواخنک معمولاً کدام است؟', [
            [ 'کمپرسور → کندانسور → اکسپنشن → اواپراتور', true ], [ 'اواپراتور → کمپرسور → کندانسور', false ], [ 'کندانسور → اواپراتور → کمپرسور', false ], [ 'اکسپنشن → کمپرسور → کندانسور', false ],
        ]],
        [ 'chiller', 'medium', 'افت فشار بالا در فیلتر آب چیلر چه اثری دارد؟', [
            [ 'کاهش جریان آب و افت ظرفیت', true ], [ 'افزایش COP', false ], [ 'کاهش مصرف برق', false ], [ 'افزایش دمای کندانس', false ],
        ]],
        [ 'chiller', 'hard', 'COP چیلر نشان‌دهنده چیست؟', [
            [ 'نسبت ظرفیت سرمایشی به توان مصرفی', true ], [ 'نسبت برق به گاز', false ], [ 'دمای آب خروجی', false ], [ 'فشار ساکشن', false ],
        ]],
        // safety
        [ 'safety', 'easy', 'قبل از کار روی مدار برق تجهیز HVAC چه اقدامی الزامی است؟', [
            [ 'قطع و قفل‌گذاری انرژی (LOTO)', true ], [ 'روشن نگه داشتن دستگاه', false ], [ 'افزایش فشار گاز', false ], [ 'باز کردن شیر تخلیه', false ],
        ]],
        [ 'safety', 'medium', 'حداکثر مجاز نشتی مبرد R410A در فضای بسته بر اساس استانداردها باید چگونه کنترل شود؟', [
            [ 'با دتکتور نشتی و تهویه مناسب', true ], [ 'بدون تجهیزات', false ], [ 'فقط با بو', false ], [ 'با افزایش فشار', false ],
        ]],
        [ 'safety', 'medium', 'PPE استاندارد برای شارژ گاز مبرد شامل کدام است؟', [
            [ 'دستکش نیتریل و عینک محافظ', true ], [ 'فقط کلاه', false ], [ 'بدون تجهیزات', false ], [ 'کفش معمولی', false ],
        ]],
        [ 'safety', 'hard', 'چرا تخلیه واکیوم قبل از شارژ گاز ضروری است؟', [
            [ 'حذف رطوبت و هوا که به روغن و کمپرسور آسیب می‌زند', true ], [ 'افزایش فشار', false ], [ 'کاهش ظرفیت اواپراتور', false ], [ 'گرم‌تر شدن کندانسور', false ],
        ]],
        // troubleshoot
        [ 'troubleshoot', 'easy', 'چیلر با آلارم High Head Pressure — اولین بررسی معمولاً چیست؟', [
            [ 'کثیفی کندانسور یا جریان هوای ناکافی', true ], [ 'کمبود مبرد شدید', false ], [ 'اواپراتور یخ‌زده', false ], [ 'کمپرسور معیوب', false ],
        ]],
        [ 'troubleshoot', 'medium', 'فشار ساکشن بسیار پایین همراه با یخ‌زدگی خط مایع نشان‌دهنده چیست؟', [
            [ 'محدودیت جریان مبرد (فیلتر یا اکسپنشن)', true ], [ 'کندانسور گرم', false ], [ 'کمپرسور اورلود', false ], [ 'دمای محیط بالا', false ],
        ]],
        [ 'troubleshoot', 'medium', 'ترموستات دیجیتال HVAC پاسخ نمی‌دهد؛ کدام تست اولویت دارد؟', [
            [ 'بررسی تغذیه ۲۴VAC و اتصالات', true ], [ 'تعویض کمپرسور', false ], [ 'شارژ گاز', false ], [ 'تعویض فن کندانسور', false ],
        ]],
        [ 'troubleshoot', 'hard', 'نوسان فشار ساکشن در چیلر اسکرو ممکن است ناشی از چه باشد؟', [
            [ 'اسلاید والو یا کنترل ظرفیت ناپایدار', true ], [ 'فقط فیلتر کثیف آب', false ], [ 'کمبود روغن کمپرسور همیشه', false ], [ 'دمای آب ورودی ثابت', false ],
        ]],
        // service
        [ 'service', 'easy', 'در اولین بازدید مشتری، بهترین رویکرد حرفه‌ای چیست؟', [
            [ 'گوش دادن فعال و توضیح شفاف مراحل کار', true ], [ 'شروع فوری تعمیر بدون توضیح', false ], [ 'عدم ثبت گزارش', false ], [ 'فروش اجباری قطعه', false ],
        ]],
        [ 'service', 'medium', 'گزارش فنی استاندارد پس از سرویس باید شامل چه مواردی باشد؟', [
            [ 'علائم، اقدامات، قطعات، توصیه PM', true ], [ 'فقط امضا', false ], [ 'فقط عکس', false ], [ 'شماره فاکتور فقط', false ],
        ]],
        [ 'service', 'medium', 'مشتری ناراضی از تأخیر است؛ پاسخ حرفه‌ای مناسب کدام است؟', [
            [ 'عذرخواهی، توضیح شفاف و زمان‌بندی واقع‌بینانه', true ], [ 'توجیه به آب و هوا بدون راه‌حل', false ], [ 'قطع تماس', false ], [ 'وعده غیرواقعی', false ],
        ]],
        [ 'service', 'hard', 'در قرارداد PM، KPI کلیدی برای SLA چیست؟', [
            [ 'زمان پاسخ، uptime تجهیز، تکمیل چک‌لیست', true ], [ 'تعداد تماس تلفنی', false ], [ 'رنگ یونیفرم', false ], [ 'تعداد قطعات فروخته‌شده', false ],
        ]],
    ];

    foreach ( $questions as $idx => $q ) {
        $wpdb->insert( "{$pre}svc_talent_questions", [
            'category'       => $q[0],
            'difficulty'     => $q[1],
            'question_text'  => $q[2],
            'question_type'  => 'single',
            'points'         => $q[1] === 'hard' ? 3 : ( $q[1] === 'medium' ? 2 : 1 ),
            'is_active'      => 1,
            'sort_order'     => $idx,
        ] );
        $qid = (int) $wpdb->insert_id;
        foreach ( $q[3] as $oi => $opt ) {
            $wpdb->insert( "{$pre}svc_talent_question_options", [
                'question_id'  => $qid,
                'option_text'  => $opt[0],
                'is_correct'   => $opt[1] ? 1 : 0,
                'sort_order'   => $oi,
            ] );
        }
        $seeded++;
    }
}

echo json_encode( [
    'success'    => true,
    'module'     => 'svc_talent',
    'questions'  => (int) $wpdb->get_var( "SELECT COUNT(*) FROM {$pre}svc_talent_questions" ),
    'seeded_new' => $seeded,
    'tables'     => [
        'svc_talent_applications'        => (bool) $wpdb->get_var( "SHOW TABLES LIKE '{$pre}svc_talent_applications'" ),
        'svc_talent_identities'          => (bool) $wpdb->get_var( "SHOW TABLES LIKE '{$pre}svc_talent_identities'" ),
        'svc_talent_certificates'        => (bool) $wpdb->get_var( "SHOW TABLES LIKE '{$pre}svc_talent_certificates'" ),
        'svc_talent_questions'           => (bool) $wpdb->get_var( "SHOW TABLES LIKE '{$pre}svc_talent_questions'" ),
        'svc_talent_question_options'    => (bool) $wpdb->get_var( "SHOW TABLES LIKE '{$pre}svc_talent_question_options'" ),
        'svc_talent_assessment_attempts' => (bool) $wpdb->get_var( "SHOW TABLES LIKE '{$pre}svc_talent_assessment_attempts'" ),
    ],
], JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT );
