影刀RPA 教育培训自动化:学员数据管理与课程提醒

📅 2026/7/16 1:32:10
影刀RPA 教育培训自动化:学员数据管理与课程提醒
影刀RPA 教育培训自动化学员数据管理与课程提醒作者林焱什么情况用培训机构、在线教育、企业内训都有一个共同的痛点——学员数据散落在多个系统里报名表在问卷星、付费记录在微信支付后台、学习进度在网校平台、作业在小鹅通。每个月初教务老师要手动把这些数据汇总起来谁报名了但没付费、谁课程快到期了、谁作业没交、该给谁发上课提醒。这些事情用RPA自动化能把教务从Excel苦海中解放出来。核心场景培训机构/企业培训的学员数据整合、进度追踪、自动提醒。拼多多店群自动化报活动上架怎么做第一步学员数据整合平台importpandasaspdfromdatetimeimportdatetime,timedeltaclassStudentDataManager:学员数据中心——多源数据整合def__init__(self):self.studentspd.DataFrame()defload_from_multiple_sources(self):从多个数据源加载并合并学员数据# 数据源1报名表导出CSVsignuppd.read_csv(报名表.csv)signup[数据来源]报名表# 数据源2付费记录paymentpd.read_excel(付费记录.xlsx)payment[数据来源]付费记录payment[已付费]True# 数据源3网校平台学习进度progresspd.read_excel(学习进度.xlsx)progress[数据来源]学习进度# 按姓名手机号合并多源数据字段名可能不同先统一signupsignup.rename(columns{您的姓名:姓名,手机号码:手机号,报名课程:课程名称})paymentpayment.rename(columns{付款人:姓名,联系电话:手机号})# 核心合并以报名表为主表左连接付费和学习进度self.studentssignup.merge(payment[[手机号,已付费,付费金额,付费时间]],on手机号,howleft).merge(progress[[手机号,学习进度%,最后学习时间,作业提交状态]],on手机号,howleft)# 填充默认值self.students[已付费]self.students[已付费].fillna(False)self.students[学习进度%]self.students[学习进度%].fillna(0)self.students[作业提交状态]self.students[作业提交状态].fillna(未提交)returnself.studentsdefget_anomaly_students(self):找出需要跟进的异常学员anomalies[]# 1. 报了名但没付费的超过3天cutoffdatetime.now()-timedelta(days3)unpaidself.students[(~self.students[已付费])(pd.to_datetime(self.students[报名时间])cutoff)]for_,sinunpaid.iterrows():anomalies.append({类型:未付费,姓名:s[姓名],手机号:s[手机号],课程:s[课程名称],报名时间:str(s[报名时间]),建议动作:电话/微信提醒付费})# 2. 付费了但长期没学习的超过7天没登录inactiveself.students[(self.students[已付费])(pd.to_datetime(self.students[最后学习时间])datetime.now()-timedelta(days7))]for_,sininactive.iterrows():anomalies.append({类型:未学习,姓名:s[姓名],手机号:s[手机号],课程:s[课程名称],最后学习:str(s[最后学习时间]),建议动作:发送学习提醒})# 3. 课程快到期但进度落后的进度50%且距到期7天expiringself.students[(self.students[学习进度%]50)(pd.to_datetime(self.students[课程到期日])datetime.now()timedelta(days7))]for_,sinexpiring.iterrows():anomalies.append({类型:即将到期,姓名:s[姓名],进度:f{s[学习进度%]}%,到期日:str(s[课程到期日]),建议动作:督促完成学习})returnanomalies第二步自动课程提醒classCourseReminder:课程提醒自动发送def__init__(self):self.templates{上课提醒:【{机构名}】{姓名}同学您好 您的《{课程名称}》课程将于{上课时间}开始 请提前准备好学习资料准时参加。 上课链接{链接} 如有疑问请联系教务老师。,付费提醒:【{机构名}】{姓名}同学您好 您报名的《{课程名称}》课程尚未完成付费。 请在{截止日期}前完成支付以免影响学习。 支付方式{支付方式} 感谢您的配合,学习督促:【{机构名}】{姓名}同学您好 您已{天数}天未登录学习了哦。 您的《{课程名称}》课程进度为{进度}% 距课程到期还有{剩余天数}天请合理安排学习时间,作业提醒:【{机构名}】{姓名}同学您好 您的《{课程名称}》作业尚未提交。 作业截止日期{截止日期} 请尽快完成并提交加油,}defsend_reminder(self,student,template_name,**kwargs):发送提醒消息templateself.templates.get(template_name)ifnottemplate:print(f未找到模板{template_name})return# 填充模板defaults{机构名:XX教育,姓名:student.get(姓名,同学),课程名称:student.get(课程名称,),上课时间:kwargs.get(上课时间,),链接:kwargs.get(链接,),截止日期:kwargs.get(截止日期,),支付方式:kwargs.get(支付方式,),天数:kwargs.get(天数,7),进度:kwargs.get(进度,0%),剩余天数:kwargs.get(剩余天数,),}defaults.update(kwargs)messagetemplate.format(**defaults)# 实际发送——微信/短信/企微phonestudent.get(手机号,)self._send_sms(phone,message)returnmessagedef_send_sms(self,phone,message):通过短信平台发送示例用阿里云短信# 阿里云短信SDK调用需要提前配置签名和模板print(f模拟发送短信到{phone}{message[:50]}...)defbatch_remind(self,students,template_name,**kwargs):批量发送提醒success0for_,studentinstudents.iterrows():try:self.send_reminder(student.to_dict(),template_name,**kwargs)success1exceptExceptionase:print(f发送失败{student[姓名]}-{e})print(f发送完成{success}/{len(students)})第三步学习数据看板defgenerate_study_dashboard(students_df,output_path):生成学习数据看板Excel# 统计数据totallen(students_df)paidstudents_df[已付费].sum()completed(students_df[学习进度%]100).sum()in_progress((students_df[学习进度%]0)(students_df[学习进度%]100)).sum()not_started(students_df[学习进度%]0).sum()summary{总报名人数:total,已付费人数:int(paid),付费率:f{paid/total*100:.1f}%,已完成人数:int(completed),学习中人数:int(in_progress),未开始人数:int(not_started),平均进度:f{students_df[学习进度%].mean():.1f}%,作业提交率:f{(students_df[作业提交状态]已提交).mean()*100:.1f}%,统计时间:datetime.now().strftime(%Y-%m-%d %H:%M)}withpd.ExcelWriter(output_path)aswriter:pd.DataFrame([summary]).to_excel(writer,sheet_name概览,indexFalse)students_df.to_excel(writer,sheet_name学员明细,indexFalse)# 按课程统计course_statsstudents_df.groupby(课程名称).agg({姓名:count,已付费:sum,学习进度%:mean}).rename(columns{姓名:人数,已付费:付费人数,学习进度%:平均进度})course_stats.to_excel(writer,sheet_name按课程统计)print(f学习看板已生成{output_path})returnsummary第四步在影刀中的集成# 影刀Python节点每日教务自动化 # 初始化managerStudentDataManager()reminderCourseReminder()# 1. 加载数据studentsmanager.load_from_multiple_sources()print(f共加载{len(students)}条学员数据)# 2. 生成学习看板summarygenerate_study_dashboard(students,f学习看板_{datetime.now().strftime(%Y%m%d)}.xlsx)# 3. 异常学员处理anomaliesmanager.get_anomaly_students()print(f发现{len(anomalies)}个待跟进学员)forainanomalies:print(f [{a[类型]}]{a[姓名]}-{a[建议动作]})# 4. 自动发送提醒需要先确认接收人列表# reminder.batch_remind(unpaid_students, 付费提醒, 截止日期3天内)# 5. 输出结果给后续节点output{total_students:len(students),anomaly_count:len(anomalies),summary:summary}print(output)有什么坑坑1学员身份唯一标识的问题不同系统的学员标识不一样——报名表用微信昵称、付费记录用手机号、学习平台用ID。按姓名匹配可能重名按手机号匹配可能换了号。解决方法选择最稳定的字段做主键手机号 身份证号 姓名生日匹配不上的记录单独标记「待人工确认」。坑2短信模板要审核TEMU店群矩阵自动化运营核价报活动你写好了提醒话术但短信平台要求模板报备审核。临时改一条话术可能要等1-2个工作日。解决方法提前在短信平台报备3-5个通用模板上课提醒、付费提醒、节日问候等具体内容通过模板变量填充。坑3学习进度数据有延迟网校平台的「学习进度」可能不是实时更新的——学员看完了视频但进度要等几小时才同步。解决方法RPA定时采集不要求实时性设定合理的采集频率每天1次足够避免基于不准确的实时数据做决策。坑4消息发送频率限制短信平台有频率限制同一号码1分钟最多1条、1天最多10条。如果一口气给所有学员发提醒可能后面的人收不到。解决方法批量发送时加间隔每次间隔3-5秒高频场景走企业微信免费且限制宽松。总结教育培训的RPA自动化价值在于「让教务从Excel里抬起头来」。关键链路多源数据整合→异常学员识别→自动提醒→学习看板。学员数据的唯一标识手机号是打通各系统的关键。