Spaces:
Sleeping
Sleeping
QAway-to
commited on
Commit
·
408bfed
1
Parent(s):
7bc0a30
Base app.py interface v2.3
Browse files
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 |
-
"Загружай открытые банковские данные,
|
| 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)
|