Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -40,23 +40,70 @@ def get_gsheet_client():
|
|
| 40 |
client = gspread.authorize(creds)
|
| 41 |
return client
|
| 42 |
|
| 43 |
-
|
| 44 |
-
import json
|
| 45 |
-
|
| 46 |
-
def log_to_gsheet(name, student_id, major, model_type, prediction_result, final_features):
|
| 47 |
"""Ghi thông tin dự đoán vào Google Sheets, bao gồm lựa chọn mô hình và toàn bộ dữ liệu nhập."""
|
| 48 |
try:
|
|
|
|
| 49 |
client = get_gsheet_client()
|
| 50 |
-
|
| 51 |
-
sheet
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 52 |
name,
|
| 53 |
student_id,
|
| 54 |
major,
|
| 55 |
model_type,
|
| 56 |
-
"Đúng hạn" if prediction_result == 1 else "Trễ hạn",
|
| 57 |
-
datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
|
| 58 |
-
|
| 59 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 60 |
except Exception as e:
|
| 61 |
st.warning(f"Không thể lưu dữ liệu vào Google Sheets: {e}")
|
| 62 |
|
|
|
|
| 40 |
client = gspread.authorize(creds)
|
| 41 |
return client
|
| 42 |
|
| 43 |
+
def log_to_gsheet(name, student_id, major, model_type, prediction_result, final_features, model_type_selected, semester_data):
|
|
|
|
|
|
|
|
|
|
| 44 |
"""Ghi thông tin dự đoán vào Google Sheets, bao gồm lựa chọn mô hình và toàn bộ dữ liệu nhập."""
|
| 45 |
try:
|
| 46 |
+
# Tạo kết nối với Google Sheets
|
| 47 |
client = get_gsheet_client()
|
| 48 |
+
|
| 49 |
+
# Chọn sheet phù hợp theo mô hình
|
| 50 |
+
if model_type_selected == "Dùng toàn bộ dữ liệu":
|
| 51 |
+
sheet = client.open("Kết quả nhập").get_worksheet(0) # Sheet 1
|
| 52 |
+
else:
|
| 53 |
+
sheet = client.open("Kết quả nhập").get_worksheet(1) # Sheet 2
|
| 54 |
+
|
| 55 |
+
# Lấy header (cột) của Google Sheets
|
| 56 |
+
headers = sheet.row_values(1)
|
| 57 |
+
|
| 58 |
+
# Danh sách các cột cần tạo nếu chưa có
|
| 59 |
+
required_columns_sheet1 = [
|
| 60 |
+
"Ngày giờ nhập", "Họ và tên", "Mã sinh viên", "Ngành học", "Mô hình",
|
| 61 |
+
"Kết quả", "Thời gian dự đoán", "Số môn không thi", "Số tín chỉ không thi",
|
| 62 |
+
"Số tín chỉ nợ", "Số môn không đạt", "Số tín chỉ qua môn", "Tổng tín chỉ học kỳ",
|
| 63 |
+
"Số môn học kỳ", "Số môn đạt", "GPA", "Xếp loại"
|
| 64 |
+
]
|
| 65 |
+
|
| 66 |
+
required_columns_sheet2 = [
|
| 67 |
+
"Ngày giờ nhập", "Họ và tên", "Mã sinh viên", "Ngành học", "Mô hình",
|
| 68 |
+
"Kết quả", "Thời gian dự đoán", "Số tín chỉ đạt", "Số tín chỉ nợ", "Điểm trung bình"
|
| 69 |
+
]
|
| 70 |
+
|
| 71 |
+
# Chọn các cột cần kiểm tra tùy vào mô hình
|
| 72 |
+
if model_type_selected == "Dùng toàn bộ dữ liệu":
|
| 73 |
+
required_columns = required_columns_sheet1
|
| 74 |
+
else:
|
| 75 |
+
required_columns = required_columns_sheet2
|
| 76 |
+
|
| 77 |
+
# Thêm cột mới nếu chưa có
|
| 78 |
+
for column in required_columns:
|
| 79 |
+
if column not in headers:
|
| 80 |
+
sheet.add_cols(1)
|
| 81 |
+
headers = sheet.row_values(1) # Cập nhật lại headers sau khi thêm cột mới
|
| 82 |
+
|
| 83 |
+
# Phân tách dữ liệu học kỳ
|
| 84 |
+
semester_values = []
|
| 85 |
+
for semester in semester_data:
|
| 86 |
+
semester_values.extend(semester)
|
| 87 |
+
|
| 88 |
+
# Tạo dòng mới để lưu vào
|
| 89 |
+
row = [
|
| 90 |
+
datetime.now().strftime("%Y-%m-%d %H:%M:%S"), # Ngày giờ nhập
|
| 91 |
name,
|
| 92 |
student_id,
|
| 93 |
major,
|
| 94 |
model_type,
|
| 95 |
+
"Đúng hạn" if prediction_result == 1 else "Trễ hạn", # Kết quả
|
| 96 |
+
datetime.now().strftime("%Y-%m-%d %H:%M:%S"), # Thời gian dự đoán
|
| 97 |
+
]
|
| 98 |
+
|
| 99 |
+
if model_type_selected == "Dùng toàn bộ dữ liệu":
|
| 100 |
+
row.extend(semester_values) # Dữ liệu đầy đủ cho Sheet 1
|
| 101 |
+
else:
|
| 102 |
+
row.extend([semester_values[4], semester_values[2], semester_values[7]]) # Dữ liệu quan trọng cho Sheet 2
|
| 103 |
+
|
| 104 |
+
# Lưu dòng vào Google Sheets
|
| 105 |
+
sheet.append_row(row)
|
| 106 |
+
|
| 107 |
except Exception as e:
|
| 108 |
st.warning(f"Không thể lưu dữ liệu vào Google Sheets: {e}")
|
| 109 |
|