<?php

declare(strict_types=1);

namespace App\Support\Badges;

enum OperatorSemanticAxis: string
{
    case ArtifactExistence = 'artifact_existence';
    case ExecutionLifecycle = 'execution_lifecycle';
    case ExecutionOutcome = 'execution_outcome';
    case ItemResult = 'item_result';
    case DataCoverage = 'data_coverage';
    case EvidenceDepth = 'evidence_depth';
    case ProductSupportMaturity = 'product_support_maturity';
    case DataFreshness = 'data_freshness';
    case OperatorActionability = 'operator_actionability';
    case PublicationReadiness = 'publication_readiness';
    case GovernanceDeviation = 'governance_deviation';

    public function label(): string
    {
        return match ($this) {
            self::ArtifactExistence => 'Artifact existence',
            self::ExecutionLifecycle => 'Execution lifecycle',
            self::ExecutionOutcome => 'Execution outcome',
            self::ItemResult => 'Item result',
            self::DataCoverage => 'Data coverage',
            self::EvidenceDepth => 'Evidence depth',
            self::ProductSupportMaturity => 'Product support maturity',
            self::DataFreshness => 'Data freshness',
            self::OperatorActionability => 'Operator actionability',
            self::PublicationReadiness => 'Publication readiness',
            self::GovernanceDeviation => 'Governance deviation',
        };
    }

    public function definition(): string
    {
        return match ($this) {
            self::ArtifactExistence => 'Whether the intended governance artifact actually exists and can be located.',
            self::ExecutionLifecycle => 'Where a run sits in its execution flow.',
            self::ExecutionOutcome => 'What happened when execution finished or stopped.',
            self::ItemResult => 'How one restore or preview item resolved.',
            self::DataCoverage => 'Whether the expected data or sections are present.',
            self::EvidenceDepth => 'How much structured evidence detail is available.',
            self::ProductSupportMaturity => 'Whether the product can represent the source faithfully.',
            self::DataFreshness => 'Whether the available data is still current enough to trust.',
            self::OperatorActionability => 'Whether an operator needs to do anything next.',
            self::PublicationReadiness => 'Whether the current record is ready for stakeholder delivery.',
            self::GovernanceDeviation => 'Whether the record represents a real governance problem.',
        };
    }
}
