/**
 * Mock-данные для admin-views (Биллинг / Инциденты / Система).
 *
 * На MVP — frontend-only с предсказуемым набором данных. Backend подключение
 * через отдельные endpoints `/api/admin/*` — отдельный коммит.
 */

// === BILLING ===

export interface AdminBillingTenantRow {
    id: number;
    name: string;
    inn: string;
    tariff: 'start' | 'basic' | 'pro' | 'enterprise';
    balance_rub: number;
    monthly_topups_rub: number;
    monthly_charges_rub: number;
    mrr_rub: number;
    last_payment_at: string | null;
    status: 'active' | 'overdue' | 'suspended';
}

export interface AdminBillingSummary {
    total_mrr_rub: number;
    monthly_revenue_rub: number;
    overdue_count: number;
    refunds_count_30d: number;
    avg_balance_rub: number;
}

export const ADMIN_BILLING_SUMMARY: AdminBillingSummary = {
    total_mrr_rub: 1_248_600,
    monthly_revenue_rub: 1_318_400,
    overdue_count: 5,
    refunds_count_30d: 3,
    avg_balance_rub: 12_840,
};

export const ADMIN_BILLING_TENANTS: AdminBillingTenantRow[] = [
    {
        id: 1,
        name: 'ООО «Окна Москва»',
        inn: '7707083893',
        tariff: 'pro',
        balance_rub: 14_250,
        monthly_topups_rub: 30_000,
        monthly_charges_rub: 25_400,
        mrr_rub: 4_990,
        last_payment_at: '2026-05-04T10:23:00Z',
        status: 'active',
    },
    {
        id: 2,
        name: 'ИП Сидоров А.А.',
        inn: '500102310123',
        tariff: 'basic',
        balance_rub: -1_200,
        monthly_topups_rub: 5_000,
        monthly_charges_rub: 6_200,
        mrr_rub: 990,
        last_payment_at: '2026-04-28T14:10:00Z',
        status: 'overdue',
    },
    {
        id: 3,
        name: 'ООО «Натяжные потолки СПб»',
        inn: '7806012345',
        tariff: 'pro',
        balance_rub: 8_900,
        monthly_topups_rub: 20_000,
        monthly_charges_rub: 18_400,
        mrr_rub: 4_990,
        last_payment_at: '2026-05-02T09:00:00Z',
        status: 'active',
    },
    {
        id: 4,
        name: 'ООО «BigCorp Холдинг»',
        inn: '7710140020',
        tariff: 'enterprise',
        balance_rub: 89_000,
        monthly_topups_rub: 100_000,
        monthly_charges_rub: 76_400,
        mrr_rub: 14_990,
        last_payment_at: '2026-05-01T08:00:00Z',
        status: 'active',
    },
    {
        id: 5,
        name: 'ИП Петров В.В.',
        inn: '770212098765',
        tariff: 'start',
        balance_rub: 0,
        monthly_topups_rub: 0,
        monthly_charges_rub: 0,
        mrr_rub: 0,
        last_payment_at: null,
        status: 'suspended',
    },
];

// === INCIDENTS ===

export interface AdminIncidentRow {
    id: number;
    incident_id: string;
    title: string;
    severity: 'critical' | 'high' | 'medium' | 'low';
    category: 'pdn_breach' | 'service_outage' | 'security' | 'billing' | 'data_loss';
    status: 'open' | 'investigating' | 'resolved' | 'closed';
    detected_at: string;
    affected_tenants: number;
    rkn_notified: boolean;
    rkn_deadline_at: string | null;
}

export const ADMIN_INCIDENTS: AdminIncidentRow[] = [
    {
        id: 1,
        incident_id: 'INC-2026-0507-0034',
        title: 'API timeout: рост 502 ошибок на webhook-приёме',
        severity: 'high',
        category: 'service_outage',
        status: 'investigating',
        detected_at: '2026-05-09T12:34:00Z',
        affected_tenants: 12,
        rkn_notified: false,
        rkn_deadline_at: null,
    },
    {
        id: 2,
        incident_id: 'INC-2026-0506-0028',
        title: 'Утечка ПДн через логи (REQ-3F8A2)',
        severity: 'critical',
        category: 'pdn_breach',
        status: 'open',
        detected_at: '2026-05-08T18:00:00Z',
        affected_tenants: 1,
        rkn_notified: false,
        rkn_deadline_at: '2026-05-09T18:00:00Z',
    },
    {
        id: 3,
        incident_id: 'INC-2026-0501-0019',
        title: 'YooKassa: задержка вебхуков об оплате',
        severity: 'medium',
        category: 'billing',
        status: 'resolved',
        detected_at: '2026-05-01T10:15:00Z',
        affected_tenants: 5,
        rkn_notified: false,
        rkn_deadline_at: null,
    },
];

// === SYSTEM SETTINGS ===

export interface AdminSystemSetting {
    key: string;
    value: string;
    type: 'int' | 'string' | 'bool' | 'json';
    description: string;
    updated_at: string;
}

export const ADMIN_SYSTEM_SETTINGS: AdminSystemSetting[] = [
    {
        key: 'webhook_rate_limit_rps',
        value: '100',
        type: 'int',
        description: 'Лимит запросов в секунду на токен Webhook (ТЗ §10).',
        updated_at: '2026-05-01T00:00:00Z',
    },
    {
        key: 'api_rate_limit_per_minute',
        value: '60',
        type: 'int',
        description: 'Лимит запросов API на ключ в минуту.',
        updated_at: '2026-05-01T00:00:00Z',
    },
    {
        key: 'login_max_attempts',
        value: '5',
        type: 'int',
        description: 'Макс. неудачных попыток входа в окне 15 минут (ТЗ §22.4.4).',
        updated_at: '2026-05-09T00:00:00Z',
    },
    {
        key: 'password_min_length',
        value: '10',
        type: 'int',
        description: 'Минимальная длина пароля (ТЗ §22.4.1).',
        updated_at: '2026-05-01T00:00:00Z',
    },
    {
        key: 'webhook_log_retention_days',
        value: '90',
        type: 'int',
        description: 'Сколько дней хранить raw_payload Webhook.',
        updated_at: '2026-05-01T00:00:00Z',
    },
    {
        key: 'maintenance_mode',
        value: 'false',
        type: 'bool',
        description: 'Глобальный maintenance — webhook-приём и UI отключаются.',
        updated_at: '2026-05-01T00:00:00Z',
    },
    {
        key: 'fallback_supplier_id',
        value: '1',
        type: 'int',
        description: 'Резервный supplier_id для проектов без активного supplier (ProcessWebhookJob).',
        updated_at: '2026-05-08T00:00:00Z',
    },
];
