整个项目完成的功能及工作过程总结: 1、学生会在作业提交页面提交各种报告,诸如exp1,exp2,exp3和report等; 2、教师在学生名单上传页面上传名单文件;遵循模版:1)、文件名为“班级ID_名单名称.xlsx”这种形式,如”245_成绩名单.xlsx“,2)、内容要求学号在第2列,名字在第3列 3、上传名单文件后,后台会将此文件上传到r2中,同时在当前页面渲染出名单列表并带上勾选框,下端出现“批改”和“下载”两个按钮; 4、点击“批改”执行的动作:wordpress后台(osaka server)创建任务,把相关数据(主要是任务状态设置为pending,写入学生id等,如果有扩展功能在此添加相关信息)写入wpdb(Wordpress的mysql数据库),然后返回;页面签订可以发送ajax请求查看批改进度(查询数据库,该更新信息有python worker更新);主要的工作来之python worker(phoenix server):通过while循环轮询数据库状态及数据,检测到有任务pending,进行process:从r2自动下载名单文件和指定学生id的报告文件,然后通过grade_document函数(引入Gemini API)进行评分和评论,同时不断在名单文件相应位置(通过代码设置,后续应该在前端页面设置)记录评分,批改过程不断更新wpdb数据库中的状态信息(如当前已批改多少份)也同时在excel名单文件相应位置自动记录分数,最后将批改后的学生报告文件(命名为marked_原始文件名)以及记录了成绩的名单文件回传到r2中; 5、点击“下载”按钮:会对在页面中选中的学生的已批改文件进行zip打包(在wordpress后台执行),从r2端下载到浏览器所在主机 代码部署:1、wordpress的WPCode中的PHP snippet(主要流程功能)和HTML snippet(简单两行,仅提供页面元素的container);2、python worker (获取待批改文件、批改和回传) 需要改进和增加的功能:1、班级ID、成绩位置(如report在”N”位置)、prompt提示词在页面输入;2、出现异常后,EXCEL文件没有记录上(没有机会执行workbook.save函数操作);3、利用cloudflare的page或worker,实现学生作业提交的上传页面和功能,包括对文件名(如2024021238_exp3)、文件类型(.docx)、文件大小(不超过3M)的规范检测,能统计未交学生名单等),同时显示未提交名单;4、修改grade_document()第3个参数为tool的复合对象,使其支持各种AI API及伴随的参数如prompt等;5、将代码和内容引入git管理,利用github进行内容管理和自动发布等 值得记录的现象:1、发现运行python worker后没有打印输出,但在tmp/下又下载了选定待批改文件;经调查发现后台另有一个python worker还在运行,任务被常驻的nohup worker拦截了,后台worker下载了文件,但由于quota限制,没法调用AI;处理办法当然是kill重复的worker进程;2、nohup worker的log一般记录不会实时,error等异常信息是实时记录,导致log中事件不一定按照时间顺序记录,原因是一般记录和异常记录分别有两个buffer,前者要把缓冲写满才落盘,后者要实时落盘;处理办法尤其是在调试是可以加上flush以及时间标签等;3、php的序列化和wpdb记录形式以及python的相应处理这部分内容需要进一步厘清! 以下是AI summary:This is an excellent, comprehensive summary of your project. It’s clear you have a deep understanding of the entire system, from the front-end user experience to the back-end processes and potential …
基于WordPress、R2、Pythonworker的AI报告批改系统流程总结 Read More »