38 lines
2.2 KiB
Markdown
38 lines
2.2 KiB
Markdown
# Спецификация 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).
|