Private/Resolve-BridgeStatus.ps1

function Resolve-BridgeStatus {
    [CmdletBinding()]
    <#
    .SYNOPSIS
    Προσδιορίζει την τελική κατάσταση γέφυρας.

    .DESCRIPTION
    Η Resolve-BridgeStatus αναλύει εικόνες και status, και αποφασίζει
    αν μία γέφυρα πρέπει να θεωρηθεί ανοιχτή ή κλειστή.

    .PARAMETER Location
    Το αναγνωριστικό γέφυρας.

    .PARAMETER Status
    Η προτεινόμενη κατάσταση βάσει OCR/HTML.

    .PARAMETER Pattern
    Το pattern εικόνας που πρέπει να ταιριάξει.

    .PARAMETER BridgeImages
    Η λίστα εικόνων προς έλεγχο.

    .PARAMETER RequireInfoImage
    Αν απαιτείται ύπαρξη ειδικής info εικόνας.

    .OUTPUTS
    [pscustomobject] - Αντικείμενο εικόνας ή $null.

    .EXAMPLE
    Resolve-BridgeStatus -Location 'poseidonia' -Status 'Ανοιχτή' -Pattern 'open' -BridgeImages $images -RequireInfoImage $true

    .NOTES
    Ελέγχει και για special πληροφοριακές εικόνες αν χρειάζεται.
    #>


    [OutputType([object])]
    param (
        [Parameter(Mandatory)][string]$Location,
        [Parameter(Mandatory)][string]$Status,
        [Parameter(Mandatory)][string]$Pattern,
        [Parameter(Mandatory)][AllowEmptyCollection()][object[]]$BridgeImages,
        [Parameter(Mandatory)][bool]$RequireInfoImage
    )
    $BridgeImages = @($BridgeImages)  # Ensure it's always an array
    $matchedImage = $BridgeImages | Where-Object { $_.src -match $Pattern } | Select-Object -First 1
    if ($Status -eq 'Ανοιχτή' -and $RequireInfoImage) {
        $hasInfoImage = $BridgeImages | Where-Object { $_.src -match 'info\.php\?\d+' }
        if (-not $hasInfoImage -or $hasInfoImage.Count -eq 0) {
            $writeBridgeLogSplat = @{
                Stage      = 'Ανάλυση'
                Message    = "Παραλείπεται $Location ($Status): Δεν βρέθηκε info εικόνα"
            }
            Write-BridgeLog @writeBridgeLogSplat
            return $null
        }
    }
    return $matchedImage
}