影刀RPA 合规检查自动化:政策规定核对与风险识别
影刀RPA 合规检查自动化政策规定核对与风险识别作者林焱一、什么情况用影刀做合规检查合规部门最头疼的是人工核查——每个月要把公司的操作数据与监管要求逐条比对这笔交易是否超过了金额上限供应商资质是否在有效期内员工是否完成了必要的合规培训这些核查工作规则清晰但数量庞大非常适合用RPA自动化。典型场景供应商资质自动审核营业执照有效期、资质证书状态交易合规检查单笔金额、累计额度、黑名单核对员工合规培训完成情况跟踪二、实战一供应商资质自动审核场景公司有200家供应商需要每季度核查一次营业执照是否过期、经营范围是否匹配。Step 1从企业信息平台批量查询对于供应商列表中的每个供应商 【打开网页】URLhttps://www.tianyancha.com/search?key${供应商名称} 【等待元素出现】选择器.search-result-item 【点击】第一个搜索结果 【等待加载】选择器.company-info-paneldefcheck_company_status(company_name):yingdao.open_url(fhttps://www.tianyancha.com/search?key{company_name})yingdao.wait_for_element(.search-result-item,timeout10)# 点击第一个结果first_resultyingdao.find_element(.search-result-item:first-child a)first_result.click()yingdao.wait_for_element(.company-info,timeout10)# 获取关键信息statusyingdao.find_element(.company-status).text# 存续/注销reg_capitalyingdao.find_element(.reg-capital).text# 注册资本business_scopeyingdao.find_element(.business-scope).text# 经营范围established_dateyingdao.find_element(.established-date).text# 成立日期# 是否有异常信息has_riskyingdao.element_exists(.risk-tag)# 风险标签return{状态:status,注册资本:reg_capital,成立日期:established_date,是否有风险:has_risk,经营范围:business_scope[:200]# 只取前200字}Step 2核对资质条件supplierspd.read_excel(C:\\合规\\供应商清单.xlsx)audit_results[]for_,supplierinsuppliers.iterrows():infocheck_company_status(supplier[供应商名称])# 合规判断规则issues[]ifinfo[状态]!存续:issues.append(f经营状态异常{info[状态]})ifinfo[是否有风险]:issues.append(存在风险记录)ifsupplier[合同类型]notininfo[经营范围]:issues.append(经营范围不含合同业务类型)audit_results.append({**supplier.to_dict(),**info,合规状态:合格ifnotissueselse不合格,问题描述:.join(issues)ifissueselse无})yingdao.wait(2)# 礼貌性延时# 导出审计报告dfpd.DataFrame(audit_results)df.to_excel(C:\\合规\\供应商资质审核报告.xlsx,indexFalse)# 汇总统计fail_countlen(df[df[合规状态]不合格])print(f审核完成{len(df)}家合格{len(df)-fail_count}家不合格{fail_count}家)三、实战二交易金额合规检查场景公司制度规定单笔采购超过50万需总经理审批单一供应商季度累计采购额不超过500万。合规部需要每月核查一次。# 读取本月所有采购记录purchasespd.read_excel(C:\\采购\\本月采购台账.xlsx)issues[]# 检查1单笔超50万未审批high_valuepurchases[purchases[金额]500000]for_,rowinhigh_value.iterrows():ifrow[审批层级]!总经理:issues.append({问题类型:单笔超额未审批,单据号:row[单据号],供应商:row[供应商],金额:row[金额],实际审批层级:row[审批层级],应审批层级:总经理})# 检查2单一供应商季度累计超500万quarterlypurchases.groupby(供应商)[金额].sum().reset_index()overrunquarterly[quarterly[金额]5000000]for_,rowinoverrun.iterrows():issues.append({问题类型:季度采购集中度超限,供应商:row[供应商],季度累计金额:row[金额],限额:5000000})ifissues:issues_dfpd.DataFrame(issues)issues_df.to_excel(C:\\合规\\合规问题清单.xlsx,indexFalse)# 发邮件给合规总监yingdao.send_email(tocompliancecompany.com,subjectf【合规预警】{len(issues)}项问题需处理,bodyf本月合规检查发现{len(issues)}项问题请尽快核实处理。,attachments[C:\\合规\\合规问题清单.xlsx])四、实战三合规培训完成情况追踪# 从培训平台导出员工完成记录yingdao.open_url(https://training.company.com/admin/reports)yingdao.wait_for_element(.report-panel)yingdao.find_element(#export-btn).click()yingdao.wait_for_download(培训完成记录.xlsx,timeout30)training_dfpd.read_excel(培训完成记录.xlsx)# 读取必须完成的合规课程列表required_coursespd.read_excel(必修合规课程.xlsx)[课程名称].tolist()# 查找未完成的员工employeespd.read_excel(员工花名册.xlsx)not_completed[]for_,empinemployees.iterrows():emp_trainingtraining_df[training_df[员工工号]emp[工号]]completedemp_training[课程名称].tolist()missing[cforcinrequired_coursesifcnotincompleted]ifmissing:not_completed.append({员工工号:emp[工号],姓名:emp[姓名],部门:emp[部门],未完成课程:、.join(missing)})# 自动发催学邮件forempinnot_completed:yingdao.send_email(tof{emp[员工工号]}company.com,subject【提醒】合规培训未完成请尽快完成,bodyf您好{emp[姓名]}以下课程请在本月底前完成{emp[未完成课程]})五、踩坑记录坑1企业查询平台频率限制天眼查、企查查等平台对爬取有严格限制太快会被封IP。每次查询间隔至少3秒单日查询量不超过200次必要时使用API接口付费。坑2合规规则会变监管要求和公司制度每年都可能更新合规检查的规则如金额阈值、审批层级一定要外置到配置文件里不要硬编码方便维护。坑3供应商名称不统一北京XX科技有限公司和北京XX科技有限公司已注销是同一家但字符串不匹配。查询时用模糊匹配或统一去掉括号及其内容。坑4邮件提醒要留存记录发出的所有催促和预警邮件要记录到日志里时间、收件人、内容摘要以备合规审计时提供证据。适用人群合规专员、法务部门、内控审计难度⭐⭐⭐需要理解合规规则逻辑