albhu commited on
Commit
31a92cb
·
verified ·
1 Parent(s): c6706a3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +21 -14
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
- # Felhasználói input az elérhetőségi napokhoz
 
 
 
 
 
 
 
52
  available_days = st.multiselect(
53
- "Add meg az elérhetőségi napokat (pl. Hétfő, Kedd, ...):",
54
- options=["Hétfő", "Kedd", "Szerda", "Csütörtök", "Péntek", "Szombat", "Vasárnap"]
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
- processed_data = output.getvalue()
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(