Update app.py
Browse files
app.py
CHANGED
@@ -1,6 +1,7 @@
|
|
1 |
import streamlit as st
|
2 |
import pandas as pd
|
3 |
from transformers import pipeline
|
|
|
4 |
|
5 |
# Oldal konfiguráció
|
6 |
st.set_page_config(page_title="Orvosi Ügyeleti Beosztás Generáló", layout="wide")
|
@@ -15,6 +16,14 @@ def load_model():
|
|
15 |
|
16 |
generator = load_model()
|
17 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
18 |
# Fájl feltöltése
|
19 |
uploaded_file = st.file_uploader("Tölts fel egy Excel fájlt", type=["xlsx"])
|
20 |
|
@@ -34,7 +43,6 @@ if uploaded_file:
|
|
34 |
st.write(f"Elemzés a '{sheet}' munkalapon:")
|
35 |
st.dataframe(df.head())
|
36 |
|
37 |
-
# Oszlopok azonosítása
|
38 |
oszlopok = df.columns.str.lower()
|
39 |
if any("név" in col for col in oszlopok):
|
40 |
st.write(f"Releváns adat található a '{sheet}' munkalapon.")
|
@@ -48,30 +56,32 @@ if uploaded_file:
|
|
48 |
st.write("Kombinált adatok:")
|
49 |
st.dataframe(combined_data)
|
50 |
|
51 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
52 |
available_days = st.multiselect(
|
53 |
-
"Add meg az elérhetőségi
|
54 |
-
options=["
|
55 |
)
|
56 |
|
57 |
if available_days:
|
58 |
-
combined_data["Elérhető napok"] = [available_days] * len(combined_data)
|
59 |
-
|
60 |
-
# Adatfeldolgozás
|
61 |
-
combined_data["Korlátozások"] = combined_data["Korlátozások"].apply(lambda x: x.split(",") if pd.notna(x) else [])
|
62 |
foglalt_napok = {}
|
63 |
beosztas = []
|
64 |
|
65 |
for nap in available_days:
|
66 |
for index, row in combined_data.iterrows():
|
67 |
-
if nap in row["Elérhető napok"]:
|
68 |
korlatozott = any(
|
69 |
foglalt_napok.get(nap) == szemely
|
70 |
for szemely in row["Korlátozások"]
|
71 |
)
|
72 |
if not korlatozott:
|
73 |
foglalt_napok[nap] = row["Név"]
|
74 |
-
# Szöveg generálása
|
75 |
prompt = f"{row['Név']} ügyel {nap}-n, mert "
|
76 |
indoklas = generator(prompt, max_length=50, num_return_sequences=1)[0]["generated_text"]
|
77 |
beosztas.append({
|
@@ -81,20 +91,17 @@ if uploaded_file:
|
|
81 |
})
|
82 |
break
|
83 |
|
84 |
-
# Beosztás megjelenítése
|
85 |
beosztas_df = pd.DataFrame(beosztas)
|
86 |
st.write("Generált Ügyeleti Beosztás:")
|
87 |
st.dataframe(beosztas_df)
|
88 |
|
89 |
-
# Exportálás Excelbe
|
90 |
@st.cache_data
|
91 |
def convert_to_excel(data):
|
92 |
import io
|
93 |
output = io.BytesIO()
|
94 |
with pd.ExcelWriter(output, engine="openpyxl") as writer:
|
95 |
data.to_excel(writer, index=False)
|
96 |
-
|
97 |
-
return processed_data
|
98 |
|
99 |
excel_data = convert_to_excel(beosztas_df)
|
100 |
st.download_button(
|
|
|
1 |
import streamlit as st
|
2 |
import pandas as pd
|
3 |
from transformers import pipeline
|
4 |
+
from datetime import datetime
|
5 |
|
6 |
# Oldal konfiguráció
|
7 |
st.set_page_config(page_title="Orvosi Ügyeleti Beosztás Generáló", layout="wide")
|
|
|
16 |
|
17 |
generator = load_model()
|
18 |
|
19 |
+
# Függvény a dátumok felismerésére és konverziójára
|
20 |
+
def parse_date(value):
|
21 |
+
try:
|
22 |
+
parsed_date = datetime.strptime(value, "%d %B")
|
23 |
+
return parsed_date.replace(year=2025)
|
24 |
+
except ValueError:
|
25 |
+
return None
|
26 |
+
|
27 |
# Fájl feltöltése
|
28 |
uploaded_file = st.file_uploader("Tölts fel egy Excel fájlt", type=["xlsx"])
|
29 |
|
|
|
43 |
st.write(f"Elemzés a '{sheet}' munkalapon:")
|
44 |
st.dataframe(df.head())
|
45 |
|
|
|
46 |
oszlopok = df.columns.str.lower()
|
47 |
if any("név" in col for col in oszlopok):
|
48 |
st.write(f"Releváns adat található a '{sheet}' munkalapon.")
|
|
|
56 |
st.write("Kombinált adatok:")
|
57 |
st.dataframe(combined_data)
|
58 |
|
59 |
+
# Dátumok feldolgozása az elérhetőség oszlopban
|
60 |
+
combined_data["Elérhető napok"] = combined_data["Elérhetőség"].apply(
|
61 |
+
lambda x: [parse_date(day.strip()) for day in x.split(",")] if isinstance(x, str) else []
|
62 |
+
)
|
63 |
+
combined_data["Korlátozások"] = combined_data["Korlátozások"].apply(
|
64 |
+
lambda x: x.split(",") if isinstance(x, str) else []
|
65 |
+
)
|
66 |
+
|
67 |
available_days = st.multiselect(
|
68 |
+
"Add meg az elérhetőségi dátumokat:",
|
69 |
+
options=[day.strftime("%Y-%m-%d") for day in combined_data["Elérhető napok"] if day is not None]
|
70 |
)
|
71 |
|
72 |
if available_days:
|
|
|
|
|
|
|
|
|
73 |
foglalt_napok = {}
|
74 |
beosztas = []
|
75 |
|
76 |
for nap in available_days:
|
77 |
for index, row in combined_data.iterrows():
|
78 |
+
if nap in [day.strftime("%Y-%m-%d") for day in row["Elérhető napok"] if day]:
|
79 |
korlatozott = any(
|
80 |
foglalt_napok.get(nap) == szemely
|
81 |
for szemely in row["Korlátozások"]
|
82 |
)
|
83 |
if not korlatozott:
|
84 |
foglalt_napok[nap] = row["Név"]
|
|
|
85 |
prompt = f"{row['Név']} ügyel {nap}-n, mert "
|
86 |
indoklas = generator(prompt, max_length=50, num_return_sequences=1)[0]["generated_text"]
|
87 |
beosztas.append({
|
|
|
91 |
})
|
92 |
break
|
93 |
|
|
|
94 |
beosztas_df = pd.DataFrame(beosztas)
|
95 |
st.write("Generált Ügyeleti Beosztás:")
|
96 |
st.dataframe(beosztas_df)
|
97 |
|
|
|
98 |
@st.cache_data
|
99 |
def convert_to_excel(data):
|
100 |
import io
|
101 |
output = io.BytesIO()
|
102 |
with pd.ExcelWriter(output, engine="openpyxl") as writer:
|
103 |
data.to_excel(writer, index=False)
|
104 |
+
return output.getvalue()
|
|
|
105 |
|
106 |
excel_data = convert_to_excel(beosztas_df)
|
107 |
st.download_button(
|