metar-analyzer/README.md

127 lines
6.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Анализатор METAR
> Веб-приложение для получения, анализа и визуализации метеорологических сводок METAR с метеостанций аэропортов по всему миру.
## О проекте
Этот проект представляет собой простой, но функциональный инструмент для метео-энтузиастов и пилотов. Пользователь может ввести ICAO-код аэропорта и глубину анализа в днях, после чего приложение запрашивает данные у публичного API, обрабатывает их и представляет в виде наглядных графиков и сводной аналитики.
## Основные возможности
- **Получение данных:** Запрос исторических данных METAR по коду станции и периоду.
- **Визуализация:** Построение графиков для ключевых метеорологических параметров:
- Температура и точка росы.
- Атмосферное давление (QNH).
- Скорость ветра.
- **Сводный анализ:** Расчет минимальных, максимальных и средних значений, а также определение преобладающего направления ветра.
- **Просмотр исходных данных:** Таблица с последними полученными сводками METAR.
- **Адаптивный интерфейс:** Корректное отображение на устройствах разного размера.
## Стек технологий
- **Backend:** [Node.js](https://nodejs.org/), [Express.js](https://expressjs.com/)
- **Frontend:** HTML5, CSS3, Vanilla JavaScript (ES6+)
- **HTTP-клиент:** [Axios](https://axios-http.com/)
- **Библиотека для графиков:** [Chart.js](https://www.chartjs.org/)
- **Контейнеризация:** [Docker](https://www.docker.com/)
---
## Установка и запуск
Вы можете запустить проект двумя способами: локально для разработки или с помощью Docker.
### 1. Локальный запуск (для разработки)
**Требования:**
- [Node.js](https://nodejs.org/) (v18 или выше)
- npm (обычно устанавливается вместе с Node.js)
**Шаги:**
1. Клонируйте репозиторий:
```bash
git clone https://gitea.yourcompany.com/your-username/metar-analyzer.git
```
2. Перейдите в директорию проекта:
```bash
cd metar-analyzer
```
3. Установите зависимости:
```bash
npm install
```
4. Запустите сервер:
```bash
npm start
```
5. Откройте в браузере [http://localhost:3000](http://localhost:3000).
### 2. Запуск через Docker
**Требования:**
- [Docker](https://www.docker.com/get-started)
- [Docker Compose](https://docs.docker.com/compose/install/)
**Шаги:**
1. Клонируйте репозиторий (если еще не сделали).
2. Находясь в корневой папке проекта, выполните команду:
```bash
docker-compose up --build -d
```
- `--build` - принудительно пересобирает образ, если были изменения в коде или `Dockerfile`.
- `-d` - запускает контейнер в фоновом режиме (detached mode).
3. Приложение будет доступно по адресу [http://localhost:9010](http://localhost:9010).
## Развертывание (Deployment)
Проект готов к развертыванию с помощью Portainer (или любой другой системы управления Docker-контейнерами).
1. В Portainer создайте новый **Stack**.
2. Выберите метод развертывания из **Git Repository**.
3. Укажите URL вашего репозитория в Gitea и данные для аутентификации (если репозиторий приватный).
4. В качестве `Compose path` укажите `docker-compose.yml`.
5. Нажмите **Deploy the stack**. Portainer автоматически скачает код, соберет образ и запустит контейнер.
## API
Проект предоставляет один API-эндпоинт для получения данных с фронтенда.
- **URL:** `/api/metar`
- **Метод:** `GET`
- **Query-параметры:**
- `station` (string, **обязательный**) - ICAO-код аэропорта (например, `UIII`).
- `days` (number, **обязательный**) - Глубина выборки в днях (например, `14`).
- **Пример запроса:** `/api/metar?station=UIII&days=14`
- **Ответ в случае успеха (200 OK):**
```json
{
"data": [
{
"station": "UIII",
"valid": "2023-11-28T12:30:00Z",
"tmpf": 3.2,
"dwpf": -4,
//* ... другие поля ... */
}
]
}
```
- **Ответ в случае ошибки (4xx/5xx):**
```json
{
"error": "Текст ошибки"
}
```
## Источник данных
Источником данных является публичный архив [Iowa Environmental Mesonet (IEM)](https://mesonet.agron.iastate.edu/), поддерживаемый Университетом штата Айова. Сервис агрегирует и предоставляет через API метеорологические сводки (METAR) с множества аэропортов по всему миру.