namespace TourMonitor; public sealed class LevelTravelOptions { public string BaseUrl { get; set; } = "https://api.level.travel"; public string ApiKey { get; set; } = "0fe9fb2ff35679322db5429b18a53aee"; public string SignSalt { get; set; } = "2qqRS1f8TyuF"; public string ApiVersion { get; set; } = "3.14"; public string Language { get; set; } = "ru"; public string Country { get; set; } = "ru"; public string Currency { get; set; } = "RUB"; public List SecretBoxKeys { get; set; } = new(); } public sealed class HotelOptions { public int Id { get; set; } public string Name { get; set; } = ""; /// Направление поиска отеля. public string ToCity { get; set; } = ""; /// Страна направления. public string ToCountry { get; set; } = ""; /// Количество ночей для отеля. public int Nights { get; set; } = 9; } public sealed class MonitorOptions { public List Hotels { get; set; } = new(); public string DepartureCity { get; set; } = "Moscow"; public string DepartureCountry { get; set; } = "RU"; public int Adults { get; set; } = 2; public List KidsAges { get; set; } = new(); public int DateRangeDays { get; set; } = 90; /// Окно скана начинается не с сегодняшнего дня, а с отступа в днях (минимум). public int StartOffsetDays { get; set; } = 60; /// Сколько дешёвых дат показывать в отчёте для каждого месяца диапазона. public int PricesPerMonth { get; set; } = 3; public bool RunOnStart { get; set; } public int MaxParallelDates { get; set; } = 5; public int PollIntervalSeconds { get; set; } = 4; public int SearchTimeoutSeconds { get; set; } = 180; public string DbPath { get; set; } = "Data/tour_monitor.db"; /// Публичный базовый URL (для ссылки на календарь цен в отчёте). Пусто — ссылка не добавляется. public string CalendarUrlBase { get; set; } = ""; } public sealed class TelegramOptions { public string BotToken { get; set; } = ""; public string ChatId { get; set; } = ""; } public sealed class ScheduleOptions { public string Cron { get; set; } = "0 30 7 * * ?"; public string TimeZoneId { get; set; } = "Europe/Moscow"; } /// Настройки анти-детект браузера Camoufox (патченный Firefox + Playwright). public sealed class CamoufoxOptions { /// Тег релиза daijro/camoufox. public string Version { get; set; } = "v152.0.4-beta.28"; /// Каталог установки (может быть относительным к корню приложения). public string InstallDirectory { get; set; } = "Data/camoufox"; public string? DownloadUrlOverride { get; set; } public bool Headless { get; set; } = true; /// Страница для установки браузерной сессии и кук. public string SessionUrl { get; set; } = "https://level.travel/"; }