# 🚀 Streamlit Demo для NIN Excel Parsers API

## Описание

Streamlit приложение для демонстрации работы всех API эндпоинтов NIN Excel Parsers. Предоставляет удобный веб-интерфейс для тестирования функциональности парсеров.

## Возможности

- 📤 **Загрузка файлов**: Загрузка ZIP архивов и Excel файлов
- 📊 **Сводки ПМ**: Работа с плановыми и фактическими данными
- 🏭 **Сводки СА**: Парсинг сводок центрального аппарата
- ⛽ **Мониторинг топлива**: Анализ данных по топливу
- 📱 **Адаптивный интерфейс**: Удобное использование на всех устройствах

## Установка и запуск

### 1. Установка зависимостей

```bash
pip install -r requirements.txt
```

### 2. Запуск FastAPI сервера

В одном терминале:
```bash
python run_dev.py
```

### 3. Запуск Streamlit приложения

В другом терминале:
```bash
python run_streamlit.py
```

Или напрямую:
```bash
streamlit run streamlit_app.py
```

### 4. Открытие в браузере

Приложение автоматически откроется по адресу: http://localhost:8501

## Конфигурация

### Переменные окружения

```bash
# URL API сервера
export API_BASE_URL="http://localhost:8000"

# Порт Streamlit
export STREAMLIT_PORT="8501"

# Хост Streamlit
export STREAMLIT_HOST="localhost"
```

### Настройки Streamlit

Файл `.streamlit/config.toml` содержит настройки:
- Порт: 8501
- Хост: localhost
- Тема: Кастомная цветовая схема
- Безопасность: Отключены CORS и XSRF для локальной разработки

## Структура приложения

### Вкладки

1. **📤 Загрузка файлов**
   - Загрузка сводок ПМ (ZIP)
   - Загрузка мониторинга топлива (ZIP)
   - Загрузка сводки СА (Excel)

2. **📊 Сводки ПМ**
   - Данные по одному ОГ
   - Данные по всем ОГ
   - Выбор кодов строк и столбцов

3. **🏭 Сводки СА**
   - Выбор режимов (план/факт/норматив)
   - Выбор таблиц для анализа

4. **⛽ Мониторинг топлива**
   - Агрегация по колонкам
   - Данные за конкретный месяц

### Боковая панель

- Информация о сервере (PID, CPU, память)
- Список доступных парсеров
- Статус подключения к API

## Использование

### 1. Загрузка файлов

1. Выберите соответствующий тип файла
2. Нажмите "Загрузить"
3. Дождитесь подтверждения загрузки

### 2. Получение данных

1. Выберите нужные параметры (ОГ, коды, столбцы)
2. Нажмите "Получить данные"
3. Результат отобразится в JSON формате

### 3. Мониторинг

- Проверяйте статус API в верхней части
- Следите за логами операций
- Используйте индикаторы загрузки

## Устранение неполадок

### API недоступен

```bash
# Проверьте, запущен ли FastAPI сервер
curl http://localhost:8000/

# Проверьте порт
netstat -an | grep 8000
```

### Streamlit не запускается

```bash
# Проверьте версию Python
python --version

# Переустановите Streamlit
pip uninstall streamlit
pip install streamlit

# Проверьте порт 8501
netstat -an | grep 8501
```

### Ошибки загрузки файлов

- Убедитесь, что файл соответствует формату
- Проверьте размер файла (не более 100MB)
- Убедитесь, что MinIO запущен

## Разработка

### Добавление новых функций

1. Создайте новую вкладку в `streamlit_app.py`
2. Добавьте соответствующие API вызовы
3. Обновите боковую панель при необходимости

### Кастомизация темы

Отредактируйте `.streamlit/config.toml`:
```toml
[theme]
primaryColor = "#FF4B4B"
backgroundColor = "#FFFFFF"
# ... другие цвета
```

### Добавление новых парсеров

1. Создайте парсер в `adapters/parsers/`
2. Добавьте в `main.py`
3. Обновите Streamlit интерфейс

## Безопасность

⚠️ **Внимание**: Приложение настроено для локальной разработки
- CORS отключен
- XSRF защита отключена
- Не используйте в продакшене без дополнительной настройки

## Поддержка

При возникновении проблем:
1. Проверьте логи в терминале
2. Убедитесь, что все сервисы запущены
3. Проверьте конфигурацию
4. Обратитесь к документации API: http://localhost:8000/docs 