albhu commited on
Commit
d7fd570
·
verified ·
1 Parent(s): 31b8dbd

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +68 -50
app.py CHANGED
@@ -11,7 +11,6 @@ st.write("Töltsd fel az orvosi adatokat tartalmazó Excel fájlt, és generálj
11
  # Hugging Face nyelvi modell betöltése
12
  @st.cache_resource
13
  def load_model():
14
- # Kompatibilis modell betöltése (pl. gpt2)
15
  return pipeline("text-generation", model="gpt2")
16
 
17
  generator = load_model()
@@ -21,60 +20,79 @@ uploaded_file = st.file_uploader("Tölts fel egy Excel fájlt", type=["xlsx"])
21
 
22
  if uploaded_file:
23
  try:
24
- # Excel beolvasása
25
- df = pd.read_excel(uploaded_file)
26
- st.write("Feltöltött adatok:")
27
- st.dataframe(df)
 
 
28
 
29
- # Adatok előkészítése
30
- df["Elérhető napok"] = df["Elérhetőség"].apply(lambda x: x.split(","))
31
- df["Korlátozások"] = df["Korlátozások"].apply(lambda x: x.split(",") if pd.notna(x) else [])
32
- foglalt_napok = {}
33
- beosztas = []
 
 
 
 
 
 
 
 
 
34
 
35
- # Beosztás generálása
36
- for nap in range(1, 8): # Példa: 7 napos beosztás
37
- nap_nev = f"Nap {nap}"
38
- for index, row in df.iterrows():
39
- if nap_nev in row["Elérhető napok"]:
40
- korlatozott = any(
41
- foglalt_napok.get(nap_nev) == szemely
42
- for szemely in row["Korlátozások"]
43
- )
44
- if not korlatozott:
45
- foglalt_napok[nap_nev] = row["Név"]
46
- # Szöveg generálása
47
- prompt = f"{row['Név']} ügyel {nap_nev}-n, mert "
48
- indoklas = generator(prompt, max_length=50, num_return_sequences=1)[0]["generated_text"]
49
- beosztas.append({
50
- "Nap": nap_nev,
51
- "Orvos": row["Név"],
52
- "Indoklás": indoklas
53
- })
54
- break
55
 
56
- # Eredmény megjelenítése
57
- beosztas_df = pd.DataFrame(beosztas)
58
- st.write("Generált Ügyeleti Beosztás:")
59
- st.dataframe(beosztas_df)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60
 
61
- # Exportálás Excelbe
62
- @st.cache_data
63
- def convert_to_excel(data):
64
- import io
65
- output = io.BytesIO()
66
- with pd.ExcelWriter(output, engine="openpyxl") as writer:
67
- data.to_excel(writer, index=False)
68
- processed_data = output.getvalue()
69
- return processed_data
70
 
71
- excel_data = convert_to_excel(beosztas_df)
72
- st.download_button(
73
- label="Beosztás letöltése Excelben",
74
- data=excel_data,
75
- file_name="ugyeleti_beosztas.xlsx",
76
- mime="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
77
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
78
 
79
  except Exception as e:
80
  st.error(f"Hiba történt a fájl feldolgozása során: {e}")
 
11
  # Hugging Face nyelvi modell betöltése
12
  @st.cache_resource
13
  def load_model():
 
14
  return pipeline("text-generation", model="gpt2")
15
 
16
  generator = load_model()
 
20
 
21
  if uploaded_file:
22
  try:
23
+ # Betöltés Excel fájl
24
+ excel_data = pd.ExcelFile(uploaded_file)
25
+ sheet_names = excel_data.sheet_names
26
+
27
+ st.write("Munkalapok a fájlban:")
28
+ st.write(sheet_names)
29
 
30
+ # Minden munkalapot megvizsgál
31
+ relevant_data = []
32
+ for sheet in sheet_names:
33
+ df = excel_data.parse(sheet)
34
+ if "Név" in df.columns and "Elérhetőség" in df.columns:
35
+ st.write(f"Adatok a '{sheet}' munkalapról:")
36
+ st.dataframe(df)
37
+ relevant_data.append(df)
38
+
39
+ # Összesített adatok
40
+ if relevant_data:
41
+ combined_data = pd.concat(relevant_data, ignore_index=True)
42
+ st.write("Kombinált adatok:")
43
+ st.dataframe(combined_data)
44
 
45
+ # Adatfeldolgozás
46
+ combined_data["Elérhető napok"] = combined_data["Elérhetőség"].apply(lambda x: x.split(","))
47
+ combined_data["Korlátozások"] = combined_data["Korlátozások"].apply(lambda x: x.split(",") if pd.notna(x) else [])
48
+ foglalt_napok = {}
49
+ beosztas = []
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50
 
51
+ for nap in range(1, 8): # Példa: 7 napos beosztás
52
+ nap_nev = f"Nap {nap}"
53
+ for index, row in combined_data.iterrows():
54
+ if nap_nev in row["Elérhető napok"]:
55
+ korlatozott = any(
56
+ foglalt_napok.get(nap_nev) == szemely
57
+ for szemely in row["Korlátozások"]
58
+ )
59
+ if not korlatozott:
60
+ foglalt_napok[nap_nev] = row["Név"]
61
+ # Szöveg generálása
62
+ prompt = f"{row['Név']} ügyel {nap_nev}-n, mert "
63
+ indoklas = generator(prompt, max_length=50, num_return_sequences=1)[0]["generated_text"]
64
+ beosztas.append({
65
+ "Nap": nap_nev,
66
+ "Orvos": row["Név"],
67
+ "Indoklás": indoklas
68
+ })
69
+ break
70
 
71
+ # Beosztás megjelenítése
72
+ beosztas_df = pd.DataFrame(beosztas)
73
+ st.write("Generált Ügyeleti Beosztás:")
74
+ st.dataframe(beosztas_df)
 
 
 
 
 
75
 
76
+ # Exportálás Excelbe
77
+ @st.cache_data
78
+ def convert_to_excel(data):
79
+ import io
80
+ output = io.BytesIO()
81
+ with pd.ExcelWriter(output, engine="openpyxl") as writer:
82
+ data.to_excel(writer, index=False)
83
+ processed_data = output.getvalue()
84
+ return processed_data
85
+
86
+ excel_data = convert_to_excel(beosztas_df)
87
+ st.download_button(
88
+ label="Beosztás letöltése Excelben",
89
+ data=excel_data,
90
+ file_name="ugyeleti_beosztas.xlsx",
91
+ mime="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
92
+ )
93
+
94
+ else:
95
+ st.warning("Nem található releváns adat a munkalapokon.")
96
 
97
  except Exception as e:
98
  st.error(f"Hiba történt a fájl feldolgozása során: {e}")