diff --git a/.autograde/generate_pdf_report.py b/.autograde/generate_pdf_report.py index e58ee3b..4b8ab97 100644 --- a/.autograde/generate_pdf_report.py +++ b/.autograde/generate_pdf_report.py @@ -7,9 +7,11 @@ - 后端开发反思报告 - 前端开发反思报告 - 评分详情页 +- 防伪水印 """ import argparse +import hashlib import json import os import re @@ -72,11 +74,23 @@ def markdown_to_html(md_content): return markdown.markdown(md_content, extensions=extensions) -def generate_cover_page(student_id, assignment_name="VibeVault 期末大作业"): +def generate_watermark_id(student_id, commit_sha): + """生成唯一的水印标识""" + raw = f"{student_id}-{commit_sha}-{datetime.now().isoformat()}" + return hashlib.sha256(raw.encode()).hexdigest()[:16].upper() + + +def generate_cover_page(student_id, student_name="", class_name="", + assignment_name="VibeVault 期末大作业"): """生成封面页 HTML""" current_date = datetime.now().strftime('%Y年%m月%d日') current_semester = "2025年秋季学期" + # 如果有学生姓名,直接显示;否则留空供手写 + name_value = student_name if student_name else ' ' * 8 + class_value = class_name if class_name else ' ' * 8 + id_value = student_id if student_id else ' ' * 8 + return f'''
| 学 号: | -{student_id or ' ' * 12} | +{id_value} |
| 姓 名: | -+ | {name_value} |
| 班 级: | -+ | {class_value} |
| 提交日期: | @@ -155,7 +169,7 @@ def generate_grade_page(final_grade): ''' # LLM 评分详情 - def format_llm_details(section_data, section_name): + def format_llm_details(section_data): criteria = section_data.get("criteria", []) if not criteria: return f'