diff --git a/login.py b/login.py index 4d0c679..51e08f3 100644 --- a/login.py +++ b/login.py @@ -168,11 +168,9 @@ def show_login(): """, unsafe_allow_html=True) - # Input form username = st.text_input("Username", placeholder="Masukkan username") password = st.text_input("Password", type="password", placeholder="Masukkan password") - - # Validasi tombol login tetap tidak diubah + if st.button("Login", key="login_button"): user = validate_login(username, password) if user: @@ -183,10 +181,9 @@ def show_login(): else: st.error("Username atau password salah.") - st.markdown('', unsafe_allow_html=True) # Tutup container + st.markdown('', unsafe_allow_html=True) st.markdown('', unsafe_allow_html=True) - # Footer st.markdown( """ {login_button_text} diff --git a/pages/pimpinan_form.py b/pages/pimpinan_form.py index d46c940..ea1b7ff 100644 --- a/pages/pimpinan_form.py +++ b/pages/pimpinan_form.py @@ -81,7 +81,7 @@ def navbar(): Logo {login_button_text} @@ -206,7 +206,7 @@ def show_pimpinan_form(): """

- Form Kinerja Rating Karyawan + Form Penilaian Kinerja Rating Karyawan

""", unsafe_allow_html=True ) @@ -220,7 +220,7 @@ def show_pimpinan_form(): # Input Employee ID if not st.session_state.employee_id: # Jika belum ada ID yang tersimpan - employee_id = st.text_input("Masukkan Employee ID Karyawan", placeholder="Contoh: 12345") + employee_id = st.text_input("Masukkan ID Karyawan yang ingin diisi", placeholder="Contoh: 12345") # Tombol untuk mencocokkan employee_id if st.button("Isi Form"): diff --git a/pages/prediction.py b/pages/prediction.py index 4df8083..2413244 100644 --- a/pages/prediction.py +++ b/pages/prediction.py @@ -28,7 +28,6 @@ def connect_to_db(): st.error(f"Koneksi ke database gagal: {e}") return None -# Fungsi untuk mendapatkan data karyawan dari database def get_employee_data_from_db(employee_id): conn = connect_to_db() if conn: @@ -37,7 +36,7 @@ def get_employee_data_from_db(employee_id): query = "SELECT * FROM data_employee_db WHERE employee_id = %s" cursor.execute(query, (employee_id,)) result = cursor.fetchone() - return result # Kembalikan data sebagai dictionary jika ditemukan, None jika tidak + return result except mysql.connector.Error as e: st.error(f"Terjadi kesalahan saat mengakses database: {e}") return None @@ -307,16 +306,14 @@ def show_prediction():

Halaman Prediksi

-

- Masukkan ID Karyawan untuk memulai prediksi. -

+ """, unsafe_allow_html=True ) - employee_id = st.text_input("Masukkan ID Karyawan", placeholder="Contoh: EM12345") + employee_id = st.text_input("Masukkan ID Karyawan yang ingin dicek", placeholder="Contoh: EM12345") # Tombol untuk memulai prediksi - if st.button("Validasi dan Prediksi"): + if st.button("Lihat Hasil Prediksi"): if not employee_id: st.error("Harap masukkan ID Karyawan terlebih dahulu.") return @@ -328,10 +325,9 @@ def show_prediction(): return # Proses data karyawan - df = pd.DataFrame([employee_data]) # Ubah dictionary menjadi DataFrame - df = process_employee_data(df) # Proses data + df = pd.DataFrame([employee_data]) + df = process_employee_data(df) - # Kolom yang diharapkan oleh model expected_columns_class = class_model.feature_names_ expected_columns_reg = reg_model.feature_names_ @@ -453,11 +449,6 @@ def show_prediction(): buf = io.BytesIO() plt.savefig(buf, format='png', bbox_inches="tight", dpi=100) buf.seek(0) - # cols = st.columns(2) # Bagi halaman menjadi 4 kolom - # with cols[0]: # Grafik SHAP ditempatkan di kolom pertama - # st.image(buf, caption="SHAP Waterfall Plot", use_container_width=True) - - # plt.close() col1, col2 = st.columns([1.5, 2]) # **Kolom pertama untuk grafik, kolom kedua untuk penjelasan** @@ -496,27 +487,6 @@ def show_prediction(): generate_shap_plot(X_test_class, explainer_class, shap_dict, predicted_class) - # top_factors = sorted(shap_dict.items(), key=lambda x: abs(x[1]), reverse=True)[:5] - - # # Bangun kesimpulan dinamis - # summary = " dan ".join( - # [f"{factor} dengan kontribusi {'+' if value > 0 else ''}{value:.2f}" for factor, value in top_factors] - # ) - - # # Kesimpulan Dinamis - # st.markdown( - # f""" - #
- # Grafik ini menunjukkan bagaimana hasil prediksi dihitung berdasarkan beberapa faktor utama. - # Faktor-faktor yang paling memengaruhi hasil prediksi adalah {summary}. - # Faktor-faktor ini memberikan kontribusi signifikan terhadap hasil akhir prediksi, - # baik dalam meningkatkan maupun menurunkan probabilitas retensi karyawan. - #
- # """, - # unsafe_allow_html=True - # ) - - # Footer st.markdown( """