# Спецификация 03: --mode fetch и конфигурация Источники: requirements 2.3 (режимы/коды), tech-req 4.2 (Garmin.*), ОВ-4 (расписание — внешний планировщик ОС). ## 1. Конфиг (ServerConfig, секция `Garmin`) | Ключ | Умолчание | Семантика | |---|---|---| | `Garmin.Login` | пусто | учётная запись Garmin Connect владельца | | `Garmin.Password` | пусто | пароль (🛡 только в конфиге, не в логах) | | `Garmin.AthleteName` | пусто | имя атлета (`src.athlete.name`), на которого пишутся факты fetch (решение гейта 1.3; изоляция 🛡1) | | `Garmin.DownloadDir` | `data\fit` | папка скачанных файлов (кэш по activityId) | | `Garmin.BaseUrl` | `https://connect.garmin.com` | замена точек входа для тестов/прокси | Загрузка — по образцу `Import.*`; валидация при `--mode fetch`: Login/Password/AthleteName непусты, DownloadDir создаётся, атлет существует — иначе код 1. ## 2. CLI (--mode fetch в Program.cs Web) 1. Конфиг прочитан (ошибка чтения → 1). 2. Валидация разд. 1 → нарушение: stderr-сообщение, код 1. 3. `FitFetcher.FetchNew(limit: 20)` → stdout `fetch: скачано N, пропущено M, сбоев K`: - `GarminAuthException` → stderr + подсказка про `--mode import` (fallback, О-1-А), код 2; - `Failed > 0` → код 2; иначе 0. 4. Расписание — внешний планировщик ОС вызывает команду каждые 15 минут (ОВ-4; в коде планировщика нет). ## 3. Заметки - `--mode fetch` не выполняет serve-валидацию (Api.Key и пр.) — свой набор обязательных ключей (как import); - только силовые (`strength_training`) скачиваются; прочие типы пропускаются без скачивания (Ф-8.1).