ch
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
UI модуль для мониторинга топлива
|
||||
"""
|
||||
import streamlit as st
|
||||
import pandas as pd
|
||||
from api_client import upload_file_to_api, make_api_request
|
||||
from config import FUEL_COLUMNS
|
||||
|
||||
@@ -88,4 +89,81 @@ def render_monitoring_fuel_tab():
|
||||
st.success("✅ Данные получены")
|
||||
st.json(result)
|
||||
else:
|
||||
st.error(f"❌ Ошибка: {result.get('message', 'Неизвестная ошибка')}")
|
||||
st.error(f"❌ Ошибка: {result.get('message', 'Неизвестная ошибка')}")
|
||||
|
||||
st.markdown("---")
|
||||
|
||||
# Новая секция для временных рядов
|
||||
st.subheader("📈 Временные ряды")
|
||||
|
||||
col1, col2 = st.columns(2)
|
||||
|
||||
with col1:
|
||||
st.subheader("Временные ряды по колонкам")
|
||||
|
||||
# Выбор колонок для временного ряда
|
||||
series_columns = st.multiselect(
|
||||
"Выберите столбцы для временного ряда",
|
||||
FUEL_COLUMNS,
|
||||
default=["total", "normativ"],
|
||||
key="fuel_series_columns"
|
||||
)
|
||||
|
||||
if st.button("📊 Получить временные ряды", key="fuel_series_btn"):
|
||||
if series_columns:
|
||||
with st.spinner("Получаю временные ряды..."):
|
||||
data = {
|
||||
"columns": series_columns
|
||||
}
|
||||
|
||||
result, status = make_api_request("/monitoring_fuel/get_series_by_id_and_columns", data)
|
||||
|
||||
if status == 200:
|
||||
st.success("✅ Временные ряды получены")
|
||||
|
||||
# Отображаем данные
|
||||
if result.get('data'):
|
||||
series_data = result['data']
|
||||
|
||||
# Показываем количество найденных ID
|
||||
st.info(f"📊 Найдено {len(series_data)} объектов")
|
||||
|
||||
# Создаем DataFrame для отображения
|
||||
df_series = pd.DataFrame(series_data).T
|
||||
df_series.index.name = 'ID объекта'
|
||||
|
||||
st.dataframe(df_series, use_container_width=True)
|
||||
|
||||
# Показываем JSON для отладки
|
||||
with st.expander("🔍 JSON данные"):
|
||||
st.json(result)
|
||||
else:
|
||||
st.warning("⚠️ Данные не найдены")
|
||||
else:
|
||||
st.error(f"❌ Ошибка: {result.get('message', 'Неизвестная ошибка')}")
|
||||
else:
|
||||
st.warning("⚠️ Выберите столбцы")
|
||||
|
||||
with col2:
|
||||
st.subheader("ℹ️ Справка")
|
||||
st.info("""
|
||||
**Временные ряды** показывают изменение значений по месяцам для всех объектов.
|
||||
|
||||
**Формат данных:**
|
||||
- Каждый ID объекта содержит массивы значений по месяцам
|
||||
- Массивы упорядочены по месяцам (01, 02, 03, ..., 12)
|
||||
- Отсутствующие месяцы пропускаются
|
||||
|
||||
**Доступные колонки:**
|
||||
- `total` - общее потребление
|
||||
- `normativ` - нормативное потребление
|
||||
- И другие колонки из загруженных данных
|
||||
|
||||
**Пример результата:**
|
||||
```
|
||||
SNPZ.VISB: {
|
||||
"total": [23.86, 26.51, 19.66, ...],
|
||||
"normativ": [19.46, 19.45, 18.57, ...]
|
||||
}
|
||||
```
|
||||
""")
|
||||
Reference in New Issue
Block a user