Private/New-BridgeConfiguration.ps1
|
function New-BridgeConfiguration { <# .SYNOPSIS Δημιουργεί ένα configuration object για το BridgeWatcher module. .DESCRIPTION Κεντρικοποιεί όλα τα configuration settings, URLs, patterns και mappings που χρησιμοποιούνται στο BridgeWatcher module. .PARAMETER BaseUrl Το base URL για τα δεδομένα και εικόνες γεφυρών. .PARAMETER OCRApiUrl Το URL για τη Google Cloud Vision API. .PARAMETER DefaultIntervalSeconds Το προεπιλεγμένο διάστημα σε δευτερόλεπτα για τη παρακολούθηση. .PARAMETER DefaultMaxIterations Ο προεπιλεγμένος μέγιστος αριθμός επαναλήψεων. .OUTPUTS [PSCustomObject] Configuration object .NOTES This function only creates a configuration object in memory and does not change system state. #> [CmdletBinding()] [OutputType([PSCustomObject])] [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '', Justification = 'Function only creates configuration object in memory, does not change system state')] param( [Parameter()] [ValidateNotNullOrEmpty()] [string]$BaseUrl = 'https://www.topvision.gr/dioriga', [Parameter()] [ValidateNotNullOrEmpty()] [string]$OCRApiUrl = 'https://vision.googleapis.com/v1/images:annotate', [Parameter()] [ValidateRange(1, 3600)] [int]$DefaultIntervalSeconds = 300, [Parameter()] [ValidateRange(1, 1000)] [int]$DefaultMaxIterations = 100 ) # Bridge name mappings $bridgeNames = @{ 'isthmia' = 'Ισθμια' 'poseidonia' = 'Ποσειδωνια' } # Status mappings $statusMappings = @{ 'ΚΛΕΙΣΤΗ' = 'Κλειστή' 'ΑΝΟΙΧΤΗ' = 'Ανοιχτή' 'CLOSED' = 'Κλειστή' 'OPEN' = 'Ανοιχτή' } # Error messages $errorMessages = @{ NoStatus = '⛔ Δεν υπάρχει διαθέσιμο status για αποθήκευση.' HtmlRetrievalFailure = 'Αποτυχία ανάκτησης HTML από τον server' ExportFailure = '⛔ Αποτυχία εξαγωγής δεδομένων' OCRFailure = '❌ Απέτυχε η OCR' NetworkError = '❌ Σφάλμα δικτύου' MonitoringError = '❌ Σφάλμα κατά την ανάκτηση της κατάστασης της γέφυρας' } # Status messages $statusMessages = @{ MonitoringStart = 'Ξεκίνησε ο κύκλος παρακολούθησης' MonitoringComplete = '✅ Ο κύκλος παρακολούθησης ολοκληρώθηκε' } # Logging configuration $loggingConfig = @{ DefaultStage = 'Ανάλυση' ErrorStage = 'Σφάλμα' DebugStage = 'Debug' InfoStage = 'Ανάλυση' WarningLevel = 'Warning' ErrorLevel = 'Error' InfoLevel = 'Info' DebugLevel = 'Debug' VerboseLevel = 'Verbose' } # Export messages $exportMessages = @{ Success = '✅ Επιτυχής εξαγωγή JSON' Failed = '❌ Αποτυχία εξαγωγής JSON' DirectoryNotExists = '❌ Ο φάκελος προορισμού δεν υπάρχει' } # OCR messages $ocrMessages = @{ StartOCR = '🔍 Εκκίνηση OCR' OCRFailed = '❌ Αποτυχία OCR' } # Pushover messages $pushoverMessages = @{ SendFailed = '❌ Αποτυχία αποστολής Pushover' } # Advice messages $adviceMessages = @{ DoNotWait = 'Είναι προτιμότερο να μην περιμένεις' Wait = 'Είναι προτιμότερο να περιμένεις' } return [PSCustomObject]@{ # URLs SourceUrl = $BaseUrl.TrimEnd('/') + '/' BaseImageUrl = $BaseUrl.TrimEnd('/') OCRApiUrl = $OCRApiUrl PushoverApiUrl = 'https://api.pushover.net/1/messages.json' # Defaults DefaultIntervalSeconds = $DefaultIntervalSeconds DefaultMaxIterations = $DefaultMaxIterations DefaultJsonDepth = 5 DefaultMaxWaitTimeMinutes = 12 # Mappings BridgeNames = $bridgeNames StatusMappings = $statusMappings ErrorMessages = $errorMessages StatusMessages = $statusMessages LoggingConfig = $loggingConfig ExportMessages = $exportMessages OCRMessages = $ocrMessages PushoverMessages = $pushoverMessages AdviceMessages = $adviceMessages # Patterns (can be extended) TimePatterns = @( '\d{1,2}:\d{2}' '\d{1,2}\.\d{2}' ) # File extensions SupportedImageExtensions = @('.jpg', '.jpeg', '.png', '.gif') PSTypeName = 'BridgeWatcher.Configuration' } } |