<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Attributes\Fillable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;

#[Fillable([
    'user_id',
    'platform',
    'account_id',
    'external_campaign_id',
    'campaign_name',
    'engine_version',
    'trigger',
    'evaluated_at',
    'verdict',
    'confidence',
    'recommended_action',
    'recommended_budget_change_percent',
    'reason',
    'capabilities_json',
    'reasons_json',
    'metrics_json',
    'trends_json',
    'data_quality_json',
    'guardrail_json',
    'snapshot_json',
])]
class CampaignDecision extends Model
{
    protected function casts(): array
    {
        return [
            'evaluated_at' => 'datetime',
            'confidence' => 'float',
            'capabilities_json' => 'array',
            'reasons_json' => 'array',
            'metrics_json' => 'array',
            'trends_json' => 'array',
            'data_quality_json' => 'array',
            'guardrail_json' => 'array',
            'snapshot_json' => 'array',
        ];
    }

    public function user(): BelongsTo
    {
        return $this->belongsTo(User::class);
    }
}
