QAway-to commited on
Commit
408bfed
·
1 Parent(s): 7bc0a30

Base app.py interface v2.3

Browse files
Files changed (1) hide show
  1. app.py +38 -3
app.py CHANGED
@@ -39,6 +39,31 @@ def analyze_data(df: pd.DataFrame):
39
  f"• Средний курс: **{df['Курс к EUR'].mean():.2f}**"
40
  )
41
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  # --------------------------------------------------------------
43
  # 📤 Экспорт в Excel (Power BI)
44
  # --------------------------------------------------------------
@@ -51,13 +76,19 @@ def export_to_excel(df: pd.DataFrame):
51
 
52
  try:
53
  with pd.ExcelWriter(filepath, engine="openpyxl") as writer:
 
54
  df.to_excel(writer, index=False, sheet_name="Rates")
55
 
56
- # Добавляем текстовую сводку как отдельный лист
57
  summary_text = analyze_data(df)
58
  summary_df = pd.DataFrame({"RAG Summary": [summary_text]})
59
  summary_df.to_excel(writer, index=False, sheet_name="AI_Analysis")
60
 
 
 
 
 
 
61
  return filepath, f"✅ Отчёт '{filename}' готов. Можно загрузить в Power BI."
62
  except Exception as e:
63
  return None, f"❌ Ошибка при создании файла: {e}"
@@ -68,22 +99,26 @@ def export_to_excel(df: pd.DataFrame):
68
  with gr.Blocks(theme=gr.themes.Soft(), title="🏦 Banking Data RAG Prototype") as demo:
69
  gr.Markdown(
70
  "## 🏦 Banking Data RAG Prototype\n"
71
- "Загружай открытые банковские данные, анализируй их и выгружай отчёт для Power BI."
72
  )
73
 
74
  with gr.Row():
75
  with gr.Column(scale=1):
76
  btn_load = gr.Button("🔄 Загрузить данные", variant="primary")
77
- btn_analyze = gr.Button("🧠 Проанализировать")
 
78
  btn_export = gr.Button("📤 Экспорт в Power BI")
79
  with gr.Column(scale=3):
80
  status = gr.Textbox(label="Статус", value="Ожидание...")
81
  summary = gr.Textbox(label="Сводка анализа", lines=6)
 
82
  table = gr.DataFrame(label="📋 Курсы валют", interactive=False)
83
  file_out = gr.File(label="Скачать отчёт")
84
 
 
85
  btn_load.click(fetch_bank_data, None, [status, table])
86
  btn_analyze.click(analyze_data, [table], [summary])
 
87
  btn_export.click(export_to_excel, [table], [file_out, status])
88
 
89
  demo.queue(max_size=32).launch(server_name="0.0.0.0", server_port=7860)
 
39
  f"• Средний курс: **{df['Курс к EUR'].mean():.2f}**"
40
  )
41
 
42
+ # --------------------------------------------------------------
43
+ # 🧩 Генерация SWOT-анализа (эмуляция RAG)
44
+ # --------------------------------------------------------------
45
+ def generate_swot(df: pd.DataFrame):
46
+ if df.empty:
47
+ return "⚠️ Нет данных для SWOT-анализа."
48
+ strongest, weakest = df.iloc[-1], df.iloc[0]
49
+ avg = df["Курс к EUR"].mean()
50
+
51
+ return (
52
+ f"💡 **SWOT-анализ валютного рынка (по данным ЕЦБ)**\n\n"
53
+ f"**Strengths (Сильные стороны):**\n"
54
+ f"- Стабильность курса евро как базовой валюты.\n"
55
+ f"- {strongest['Валюта']} демонстрирует наибольшую устойчивость.\n\n"
56
+ f"**Weaknesses (Слабости):**\n"
57
+ f"- {weakest['Валюта']} имеет низкую покупательную способность.\n"
58
+ f"- Зависимость многих валют от макроэкономических факторов.\n\n"
59
+ f"**Opportunities (Возможности):**\n"
60
+ f"- Потенциал для инвестиций в растущие валюты.\n"
61
+ f"- Использование колебаний курса для арбитража.\n\n"
62
+ f"**Threats (Угрозы):**\n"
63
+ f"- Глобальные кризисы и политическая нестабильность.\n"
64
+ f"- Волатильность курсов ниже среднего ({avg:.2f})."
65
+ )
66
+
67
  # --------------------------------------------------------------
68
  # 📤 Экспорт в Excel (Power BI)
69
  # --------------------------------------------------------------
 
76
 
77
  try:
78
  with pd.ExcelWriter(filepath, engine="openpyxl") as writer:
79
+ # Лист 1 — данные
80
  df.to_excel(writer, index=False, sheet_name="Rates")
81
 
82
+ # Лист 2 аналитика
83
  summary_text = analyze_data(df)
84
  summary_df = pd.DataFrame({"RAG Summary": [summary_text]})
85
  summary_df.to_excel(writer, index=False, sheet_name="AI_Analysis")
86
 
87
+ # Лист 3 — SWOT
88
+ swot_text = generate_swot(df)
89
+ swot_df = pd.DataFrame({"SWOT Analysis": [swot_text]})
90
+ swot_df.to_excel(writer, index=False, sheet_name="SWOT_AI")
91
+
92
  return filepath, f"✅ Отчёт '{filename}' готов. Можно загрузить в Power BI."
93
  except Exception as e:
94
  return None, f"❌ Ошибка при создании файла: {e}"
 
99
  with gr.Blocks(theme=gr.themes.Soft(), title="🏦 Banking Data RAG Prototype") as demo:
100
  gr.Markdown(
101
  "## 🏦 Banking Data RAG Prototype\n"
102
+ "Загружай открытые банковские данные, выполняй RAG-анализ и выгружай отчёт для Power BI."
103
  )
104
 
105
  with gr.Row():
106
  with gr.Column(scale=1):
107
  btn_load = gr.Button("🔄 Загрузить данные", variant="primary")
108
+ btn_analyze = gr.Button("🧠 Сводный анализ")
109
+ btn_swot = gr.Button("🧩 SWOT-анализ")
110
  btn_export = gr.Button("📤 Экспорт в Power BI")
111
  with gr.Column(scale=3):
112
  status = gr.Textbox(label="Статус", value="Ожидание...")
113
  summary = gr.Textbox(label="Сводка анализа", lines=6)
114
+ swot = gr.Textbox(label="SWOT-анализ", lines=10)
115
  table = gr.DataFrame(label="📋 Курсы валют", interactive=False)
116
  file_out = gr.File(label="Скачать отчёт")
117
 
118
+ # Кнопки
119
  btn_load.click(fetch_bank_data, None, [status, table])
120
  btn_analyze.click(analyze_data, [table], [summary])
121
+ btn_swot.click(generate_swot, [table], [swot])
122
  btn_export.click(export_to_excel, [table], [file_out, status])
123
 
124
  demo.queue(max_size=32).launch(server_name="0.0.0.0", server_port=7860)