QAway-to commited on
Commit
01961c2
·
1 Parent(s): c0326b0

Base app.py interface v2.0

Browse files
Files changed (1) hide show
  1. app.py +14 -23
app.py CHANGED
@@ -5,11 +5,7 @@ import pandas as pd
5
  from io import BytesIO
6
  from datetime import datetime
7
 
8
- # --------------------------------------------------------------
9
- # ⚙️ Загрузка открытых банковских данных
10
- # --------------------------------------------------------------
11
  def fetch_bank_data():
12
- """Получаем курсы валют от Европейского Центробанка."""
13
  try:
14
  url = "https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml"
15
  r = requests.get(url, timeout=10)
@@ -28,9 +24,6 @@ def fetch_bank_data():
28
  except Exception as e:
29
  return f"❌ Ошибка: {e}", pd.DataFrame()
30
 
31
- # --------------------------------------------------------------
32
- # 🧠 Простая LLM-сводка (эмуляция RAG анализа)
33
- # --------------------------------------------------------------
34
  def analyze_data(df: pd.DataFrame):
35
  if df.empty:
36
  return "⚠️ Нет данных для анализа."
@@ -38,22 +31,22 @@ def analyze_data(df: pd.DataFrame):
38
  weakest = df.iloc[0]
39
  return (
40
  f"📊 Сводка валют:\n\n"
41
- f"• Самая сильная валюта к EUR — **{strongest['Валюта']} ({strongest['Курс к EUR']:.2f})**\n"
42
- f"• Самая слабая валюта к EUR — **{weakest['Валюта']} ({weakest['Курс к EUR']:.2f})**\n"
43
- f"• Средний курс по всем валютам: **{df['Курс к EUR'].mean():.2f}**"
44
  )
45
 
46
- # --------------------------------------------------------------
47
- # 📤 Экспорт данных в Excel для Power BI
48
- # --------------------------------------------------------------
49
  def export_to_excel(df: pd.DataFrame):
50
  if df.empty:
51
  return None, "⚠️ Нет данных для экспорта."
 
52
  output = BytesIO()
53
- df.to_excel(output, index=False, sheet_name="Rates")
 
54
  output.seek(0)
55
- filename = f"bank_report_{datetime.now().strftime('%Y%m%d')}.xlsx"
56
- return output, f"✅ Отчёт '{filename}' готов для Power BI."
57
 
58
  # --------------------------------------------------------------
59
  # 🧱 Интерфейс Gradio
@@ -61,24 +54,22 @@ def export_to_excel(df: pd.DataFrame):
61
  with gr.Blocks(theme=gr.themes.Soft(), title="🏦 Banking Data RAG Prototype") as demo:
62
  gr.Markdown(
63
  "## 🏦 Banking Data RAG Prototype\n"
64
- "Загружай открытые банковские данные, анализируй их и выгружай отчёт для Power BI.\n"
65
- "_Первая версия RAG-анализа без внешнего LLM-API._"
66
  )
67
 
68
  with gr.Row():
69
  with gr.Column(scale=1):
70
  btn_load = gr.Button("🔄 Загрузить данные", variant="primary")
71
  btn_analyze = gr.Button("🧠 Проанализировать")
72
- btn_export = gr.Button("📤 Экспорт в Power BI (Excel)")
73
  with gr.Column(scale=3):
74
  status = gr.Textbox(label="Статус", value="Ожидание...")
75
  summary = gr.Textbox(label="Сводка анализа", lines=6)
76
  table = gr.DataFrame(label="📋 Курсы валют", interactive=False)
77
- file_out = gr.File(label="Скачать отчёт", interactive=False)
78
 
79
- # Логика кнопок
80
- btn_load.click(fetch_bank_data, None, [status, table], show_progress=True)
81
- btn_analyze.click(lambda df: analyze_data(df), [table], [summary])
82
  btn_export.click(export_to_excel, [table], [file_out, status])
83
 
84
  demo.queue(max_size=32).launch(server_name="0.0.0.0", server_port=7860)
 
5
  from io import BytesIO
6
  from datetime import datetime
7
 
 
 
 
8
  def fetch_bank_data():
 
9
  try:
10
  url = "https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml"
11
  r = requests.get(url, timeout=10)
 
24
  except Exception as e:
25
  return f"❌ Ошибка: {e}", pd.DataFrame()
26
 
 
 
 
27
  def analyze_data(df: pd.DataFrame):
28
  if df.empty:
29
  return "⚠️ Нет данных для анализа."
 
31
  weakest = df.iloc[0]
32
  return (
33
  f"📊 Сводка валют:\n\n"
34
+ f"• Самая сильная валюта — **{strongest['Валюта']} ({strongest['Курс к EUR']:.2f})**\n"
35
+ f"• Самая слабая валюта — **{weakest['Валюта']} ({weakest['Курс к EUR']:.2f})**\n"
36
+ f"• Средний курс: **{df['Курс к EUR'].mean():.2f}**"
37
  )
38
 
39
+ # ✅ исправленный экспорт
 
 
40
  def export_to_excel(df: pd.DataFrame):
41
  if df.empty:
42
  return None, "⚠️ Нет данных для экспорта."
43
+ filename = f"bank_report_{datetime.now().strftime('%Y%m%d')}.xlsx"
44
  output = BytesIO()
45
+ with pd.ExcelWriter(output, engine="openpyxl") as writer:
46
+ df.to_excel(writer, index=False, sheet_name="Rates")
47
  output.seek(0)
48
+ # 🟢 Gradio требует именно (file-like, name)
49
+ return gr.File.update(value=output, visible=True, label=filename), f"✅ Отчёт '{filename}' готов для Power BI."
50
 
51
  # --------------------------------------------------------------
52
  # 🧱 Интерфейс Gradio
 
54
  with gr.Blocks(theme=gr.themes.Soft(), title="🏦 Banking Data RAG Prototype") as demo:
55
  gr.Markdown(
56
  "## 🏦 Banking Data RAG Prototype\n"
57
+ "Загружай открытые банковские данные, анализируй и выгружай отчёт для Power BI.\n"
 
58
  )
59
 
60
  with gr.Row():
61
  with gr.Column(scale=1):
62
  btn_load = gr.Button("🔄 Загрузить данные", variant="primary")
63
  btn_analyze = gr.Button("🧠 Проанализировать")
64
+ btn_export = gr.Button("📤 Экспорт в Power BI")
65
  with gr.Column(scale=3):
66
  status = gr.Textbox(label="Статус", value="Ожидание...")
67
  summary = gr.Textbox(label="Сводка анализа", lines=6)
68
  table = gr.DataFrame(label="📋 Курсы валют", interactive=False)
69
+ file_out = gr.File(label="Скачать отчёт", visible=False)
70
 
71
+ btn_load.click(fetch_bank_data, None, [status, table])
72
+ btn_analyze.click(analyze_data, [table], [summary])
 
73
  btn_export.click(export_to_excel, [table], [file_out, status])
74
 
75
  demo.queue(max_size=32).launch(server_name="0.0.0.0", server_port=7860)