<?php

declare(strict_types=1);

namespace App\Console\Commands;

use App\Jobs\BackfillArtworkEmbeddingsJob;
use Illuminate\Console\Command;

final class BackfillArtworkEmbeddingsCommand extends Command
{
    protected $signature = 'artworks:embeddings-backfill {--after-id=0 : Resume after this artwork id} {--batch=200 : Batch size for resumable fan-out} {--force : Regenerate even when source hash matches}';

    protected $description = 'Queue resumable CLIP embedding backfill for artworks';

    public function handle(): int
    {
        $afterId = max(0, (int) $this->option('after-id'));
        $batch = max(1, min((int) $this->option('batch'), 1000));
        $force = (bool) $this->option('force');

        BackfillArtworkEmbeddingsJob::dispatch($afterId, $batch, $force);

        $this->info("Queued artwork embedding backfill (after_id={$afterId}, batch={$batch}, force=" . ($force ? 'yes' : 'no') . ').');

        return self::SUCCESS;
    }
}
