<?php

declare(strict_types=1);

use Illuminate\Database\Migrations\Migration;
use Illuminate\Support\Facades\DB;

/**
 * supplier_csv_reconcile_log + unparseable_count: количество CSV-строк
 * за окно reconcile, у которых поле «project» не парсится в платформу
 * (поставщик иногда кладёт телефон/URL в Name → extractPlatform = null,
 * строка скипается в csv_reconcile.unparseable_project_skipped).
 *
 * Раньше эти строки попадали в знаменатель drift_ratio и счётчик missing,
 * стабильно завышая drift до ~40-50% (false-positive drift_alert каждый
 * запуск). Теперь они учитываются отдельно и вычитаются из формулы.
 *
 * Используется в CsvReconcileJob + AdminSupplierIntegrationController.
 * Таблица SaaS-level (без RLS), пишет/читает crm_supplier_worker
 * (BYPASSRLS) — pgsql_supplier connection.
 */
return new class extends Migration
{
    public function up(): void
    {
        $conn = DB::connection('pgsql_supplier');

        if (! $conn->getSchemaBuilder()->hasTable('supplier_csv_reconcile_log')) {
            return;
        }

        $conn->unprepared(<<<'SQL'
            ALTER TABLE supplier_csv_reconcile_log
                ADD COLUMN IF NOT EXISTS unparseable_count INTEGER NOT NULL DEFAULT 0;
        SQL);
    }

    public function down(): void
    {
        $conn = DB::connection('pgsql_supplier');

        if (! $conn->getSchemaBuilder()->hasTable('supplier_csv_reconcile_log')) {
            return;
        }

        $conn->unprepared(<<<'SQL'
            ALTER TABLE supplier_csv_reconcile_log
                DROP COLUMN IF EXISTS unparseable_count;
        SQL);
    }
};
