namngo commited on
Commit
4651bd7
·
verified ·
1 Parent(s): d5cc55f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +57 -10
app.py CHANGED
@@ -40,23 +40,70 @@ def get_gsheet_client():
40
  client = gspread.authorize(creds)
41
  return client
42
 
43
- from datetime import datetime
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
- sheet = client.open("Kết quả nhập").sheet1
51
- sheet.append_row([
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
- json.dumps(final_features.tolist()) if isinstance(final_features, np.ndarray) else json.dumps(final_features)
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