Spaces:
Sleeping
Sleeping
with gr.Accordion("📚 中文段落練習歷程回顧", open=True) as chinese_grapragh_practice_logs_accordion:
Browse files
app.py
CHANGED
@@ -948,39 +948,11 @@ def generate_chinese_paragraph_practice_history(
|
|
948 |
GCS_SERVICE.upload_json_string("jutor_logs", file_name, json.dumps(content))
|
949 |
|
950 |
if assignment_id_input:
|
951 |
-
|
952 |
-
|
953 |
-
|
954 |
-
|
955 |
-
"
|
956 |
-
"assignment_id": assignment_id_input,
|
957 |
-
"student_id": user_data,
|
958 |
-
"student_name": "",
|
959 |
-
"submission_data": {
|
960 |
-
"file_name": file_name,
|
961 |
-
"bucket_name": "jutor_logs",
|
962 |
-
"content": content
|
963 |
-
},
|
964 |
-
"timestamp": datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
965 |
-
}
|
966 |
-
assignment_content = GCS_SERVICE.download_as_string("ai_assignment_submission", assignment_file_name)
|
967 |
-
assignment_data = json.loads(assignment_content)
|
968 |
-
|
969 |
-
# 添加新的 submission_id 到 assignment 数据中
|
970 |
-
if "submission_ids" not in assignment_data:
|
971 |
-
assignment_data["submission_ids"] = []
|
972 |
-
assignment_data["submission_ids"].append(submission_id)
|
973 |
-
|
974 |
-
# 更新 assignment 文件
|
975 |
-
GCS_SERVICE.upload_json_string("ai_assignment_submission", assignment_file_name, json.dumps(assignment_data))
|
976 |
-
|
977 |
-
# 上传新的 submission 数据
|
978 |
-
submission_file_name = f"submissions/{submission_id}.json"
|
979 |
-
GCS_SERVICE.upload_json_string("ai_assignment_submission", submission_file_name, json.dumps(submission_data))
|
980 |
-
|
981 |
-
print(f"Updated assignment {assignment_id_input} with new submission: {submission_id}")
|
982 |
-
except Exception as e:
|
983 |
-
print(f"Error updating assignment {assignment_id_input}: {str(e)}")
|
984 |
else:
|
985 |
gr.Error("請先登入")
|
986 |
|
@@ -992,10 +964,78 @@ def generate_chinese_paragraph_practice_history(
|
|
992 |
chinese_full_paragraph_refine_output_table, \
|
993 |
chinese_full_paragraph_save_output
|
994 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
995 |
def generate_unique_submission_id():
|
996 |
while True:
|
997 |
submission_id = str(uuid.uuid4())
|
998 |
-
if not GCS_SERVICE.check_file_exists("ai_assignment_submission", f"{submission_id}.json"):
|
999 |
return submission_id
|
1000 |
|
1001 |
def update_assignment_submission(assignment_id, submission_id):
|
@@ -3212,7 +3252,7 @@ with gr.Blocks(theme=THEME, css=CSS) as demo:
|
|
3212 |
|
3213 |
# === 歷程 session 列表
|
3214 |
with gr.Tab("歷程回顧"):
|
3215 |
-
with gr.Accordion("📚 中文段落練習歷程回顧", open=
|
3216 |
with gr.Row():
|
3217 |
with gr.Column(scale=1):
|
3218 |
# 取得中文段落練習 log from GCS
|
|
|
948 |
GCS_SERVICE.upload_json_string("jutor_logs", file_name, json.dumps(content))
|
949 |
|
950 |
if assignment_id_input:
|
951 |
+
submission_id = submit_assignment(user_data, assignment_id_input, content, file_name)
|
952 |
+
if submission_id:
|
953 |
+
print(f"Assignment submitted successfully. Submission ID: {submission_id}")
|
954 |
+
else:
|
955 |
+
print("Failed to submit assignment.")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
956 |
else:
|
957 |
gr.Error("請先登入")
|
958 |
|
|
|
964 |
chinese_full_paragraph_refine_output_table, \
|
965 |
chinese_full_paragraph_save_output
|
966 |
|
967 |
+
def submit_assignment(user_data, assignment_id, submission_content, file_name):
|
968 |
+
"""
|
969 |
+
提交作业并更新相关数据。
|
970 |
+
|
971 |
+
参数:
|
972 |
+
user_data (str): 用户ID
|
973 |
+
assignment_id (str): 作业ID
|
974 |
+
submission_content (dict): 提交的内容
|
975 |
+
file_name (str): 日志文件名
|
976 |
+
|
977 |
+
返回:
|
978 |
+
str: 提交ID
|
979 |
+
"""
|
980 |
+
try:
|
981 |
+
# 生成唯一的提交ID
|
982 |
+
submission_id = generate_unique_submission_id()
|
983 |
+
timestamp_now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
984 |
+
|
985 |
+
# 创建提交数据
|
986 |
+
submission_data = {
|
987 |
+
"submission_id": submission_id,
|
988 |
+
"assignment_id": assignment_id,
|
989 |
+
"student_id": user_data,
|
990 |
+
"student_name": "",
|
991 |
+
"submission_data": {
|
992 |
+
"file_name": file_name,
|
993 |
+
"bucket_name": "jutor_logs",
|
994 |
+
"content": submission_content
|
995 |
+
},
|
996 |
+
"timestamp": timestamp_now
|
997 |
+
}
|
998 |
+
|
999 |
+
# 上传提交数据
|
1000 |
+
submission_file_name = f"submissions/{submission_id}.json"
|
1001 |
+
GCS_SERVICE.upload_json_string("ai_assignment_submission", submission_file_name, json.dumps(submission_data))
|
1002 |
+
|
1003 |
+
# 更新作业数据
|
1004 |
+
assignment_file_name = f"assignments/{assignment_id}.json"
|
1005 |
+
assignment_content = GCS_SERVICE.download_as_string("ai_assignment_submission", assignment_file_name)
|
1006 |
+
assignment_data = json.loads(assignment_content)
|
1007 |
+
|
1008 |
+
if "submission_ids" not in assignment_data:
|
1009 |
+
assignment_data["submission_ids"] = []
|
1010 |
+
assignment_data["submission_ids"].append(submission_id)
|
1011 |
+
GCS_SERVICE.upload_json_string("ai_assignment_submission", assignment_file_name, json.dumps(assignment_data))
|
1012 |
+
|
1013 |
+
# 更新用户的提交列表
|
1014 |
+
user_submissions_file = f"users/{user_data}/submissions.json"
|
1015 |
+
try:
|
1016 |
+
user_submissions = json.loads(GCS_SERVICE.download_as_string("ai_assignment_submission", user_submissions_file))
|
1017 |
+
except:
|
1018 |
+
user_submissions = {}
|
1019 |
+
|
1020 |
+
user_submissions[submission_id] = {
|
1021 |
+
"assignment_id": assignment_id,
|
1022 |
+
"assignment_name": assignment_data["metadata"]["topic"],
|
1023 |
+
"assignment_type": assignment_data["assignment_type"],
|
1024 |
+
"timestamp": timestamp_now
|
1025 |
+
}
|
1026 |
+
GCS_SERVICE.upload_json_string("ai_assignment_submission", user_submissions_file, json.dumps(user_submissions))
|
1027 |
+
|
1028 |
+
print(f"Updated assignment {assignment_id} with new submission: {submission_id}")
|
1029 |
+
return submission_id
|
1030 |
+
|
1031 |
+
except Exception as e:
|
1032 |
+
print(f"Error submitting assignment {assignment_id}: {str(e)}")
|
1033 |
+
return None
|
1034 |
+
|
1035 |
def generate_unique_submission_id():
|
1036 |
while True:
|
1037 |
submission_id = str(uuid.uuid4())
|
1038 |
+
if not GCS_SERVICE.check_file_exists("ai_assignment_submission", f"submissions/{submission_id}.json"):
|
1039 |
return submission_id
|
1040 |
|
1041 |
def update_assignment_submission(assignment_id, submission_id):
|
|
|
3252 |
|
3253 |
# === 歷程 session 列表
|
3254 |
with gr.Tab("歷程回顧"):
|
3255 |
+
with gr.Accordion("📚 中文段落練習歷程回顧", open=True) as chinese_grapragh_practice_logs_accordion:
|
3256 |
with gr.Row():
|
3257 |
with gr.Column(scale=1):
|
3258 |
# 取得中文段落練習 log from GCS
|