当前位置: 首页 > news >正文

“自动报社保 + 查询导出 ” 的完整架构图和 Playwright C# 项目初始化模板

目录

一、整体架构图

二、Playwright for .NET 初始化模板(C#)

三、执行调度(Quartz.NET)

四、验证码识别(Python + 超级鹰)

五、为什么这样设计可以做成产品


“自动报社保 + 查询导出 ” 的完整架构图和 Playwright C# 项目初始化模板


一、整体架构图

────────────────────────────────────────────自动化任务系统
────────────────────────────────────────────[UI层 - 产品界面]   WPF / Blazor Server- 配置社保账号- 上传模板Excel路径- 任务日志查看- 手动执行 / 停止任务
────────────────────────────────────────────[业务逻辑层 - 任务调度]   Quartz.NET- 每月固定日期自动执行报社保任务- 每日自动查询社保数据任务- 每周自动生成并发布任务
────────────────────────────────────────────[自动化执行层 - Playwright for .NET]1. 报社保- 登录你们内部系统,下载Excel- 登录社保局系统- 填写表单、上传Excel- 提交、截图2. 查询社保数据- 登录社保局- 执行查询条件- 导出Excel3. 发布文章- 登录- 填写标题、正文、标签- 发布
────────────────────────────────────────────[数据生成层]- 从数据库读取业务数据(Dapper / EF Core)- 调用AI API生成文章(GPT-4、DeepSeek、星火等)- 格式化为Markdown / HTML
────────────────────────────────────────────[辅助功能模块]- 验证码识别(Python OCR + 超级鹰 API)- Excel解析(EPPlus / NPOI)- 日志记录(NLog / Serilog)
────────────────────────────────────────────[存储层]- SQL Server / MySQL 存储任务配置、日志- 本地文件夹存储导出的Excel、截图
────────────────────────────────────────────

二、Playwright for .NET 初始化模板(C#)

  1. 安装依赖
dotnet new console -n AutoTasks
cd AutoTasks
dotnet add package Microsoft.Playwright
dotnet tool install --global Microsoft.Playwright.CLI
playwright install
  1. 项目结构
AutoTasks/├── Program.cs                // 主入口├── Tasks/│    ├── SocialSecurityTask.cs // 报社保任务│    ├── QuerySocialDataTask.cs // 查询导出任务│    ├── PublishCsdnTask.cs    // 发布任务├── Services/│    ├── OcrService.cs         // 验证码识别│    ├── ExcelService.cs       // Excel处理│    ├── AiContentService.cs   // AI生成文章├── appsettings.json           // 账号、密码、配置
  1. 基础代码示例(登录并上传Excel)
using Microsoft.Playwright;class Program
{public static async Task Main(){using var playwright = await Playwright.CreateAsync();var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions{Headless = false // 调试时可见浏览器});var page = await browser.NewPageAsync();// 访问社保局网站await page.GotoAsync("https://社保局登录地址");// 填写用户名和密码await page.FillAsync("#username", "你的账号");await page.FillAsync("#password", "你的密码");// 如果有验证码,这里调用 OCR 服务获取验证码// var captchaText = await OcrService.RecognizeAsync(await page.ScreenshotAsync(new PageScreenshotOptions { Path = "captcha.png" }));// await page.FillAsync("#captcha", captchaText);await page.ClickAsync("#loginBtn");// 上传Excelawait page.SetInputFilesAsync("input[type='file']", @"C:\报表\社保.xls");// 提交await page.ClickAsync("#submitBtn");await page.ScreenshotAsync(new PageScreenshotOptions { Path = "result.png" });await browser.CloseAsync();}
}

三、执行调度(Quartz.NET)

using Quartz;
using Quartz.Impl;class SchedulerConfig
{public static async Task Start(){StdSchedulerFactory factory = new StdSchedulerFactory();IScheduler scheduler = await factory.GetScheduler();await scheduler.Start();// 每月5号 10:00 执行报社保IJobDetail job = JobBuilder.Create<SocialSecurityTask>().Build();ITrigger trigger = TriggerBuilder.Create().WithCronSchedule("0 0 10 5 * ?").Build();await scheduler.ScheduleJob(job, trigger);}
}

四、验证码识别(Python + 超级鹰)

  • Playwright 截图验证码 → 调用 Python OCR 脚本识别
  • Python 脚本返回结果给 C#
  • 保证自动化不被卡死在验证码环节

五、为什么这样设计可以做成产品

  1. 多任务可扩展:社保、税务、博客发布都是任务模块,可单独启用/禁用
  2. 账号配置灵活:用户可自己配置账号密码,不需要改代码
  3. 后台运行稳定:Quartz.NET 定时执行,Playwright 支持无头模式
  4. 跨行业可用:换掉社保网站 URL 和定位器,就能适配别的政务/业务系统
  5. 支持升级为云端任务管理:未来可在云端部署,多个客户共享一套任务调度中心

http://www.xdnf.cn/news/1270549.html

相关文章:

  • 基于IPD体系的研发项目范围管理
  • 【渲染流水线】[几何阶段]-[几何着色]以UnityURP为例
  • 202506 电子学会青少年等级考试机器人三级器人理论真题
  • 《算法导论》第 15 章 - 动态规划
  • FreeRTOS源码分析五:资源访问控制(一)
  • SOLi-LABS Page-3 (Stacked injections) --39-53关
  • OpenAI 的最新 AI 模型 GPT-5 现已在 GitHub Models 上提供!
  • 如何在 Windows 下使用 WSL 安装 Ubuntu 并配置国内镜像
  • 神经网络-local minima and saddle point
  • FFMPEG将H264转HEVC时,码率缩小多少好,以及如何通过SSIM(Structural Similarity Index结构相似性指数)衡量转码损失
  • 使用Navicat备份数据库MySQL、PostGreSQL等
  • Meta AI水印计划的致命缺陷——IEEE Spectrum深度文献精读
  • (nice!!!)(LeetCode 面试经典 150 题) 146. LRU 缓存 (哈希表+双向链表)
  • 力扣热题100------70.爬楼梯
  • 如何解决 Vue 项目启动时出现的 “No such module: http_parser” 错误问题
  • Cherryusb UAC例程对接STM32内置ADC和DAC播放音乐和录音(中)=>UAC+STM32 ADC+DAC实现录音和播放
  • traceroute命令调试网络
  • C++高频知识点(十七)
  • 《Resolving tissue complexity by multimodal spatial omics modeling with MISO》
  • 9. 堆和栈有什么区别
  • Vitalik谈以太坊:ETH财库储备策略“有益且有价值”
  • Kotlin 协程线程切换机制详解
  • AG32cpld实现一个UartTx“外设”
  • 智慧能源设备巡检缺陷漏检率↓76%:陌讯多模态融合算法实战解析
  • Android适配最新SplashScreen方案:让启动页不再“翻车“
  • webrtc弱网-BandwidthQualityScaler 源码分析与算法原理
  • 视图是什么?有什么用?什么时候用?MySQL中的视图
  • Android MediaCodec 音视频编解码技术详解
  • linux php版本降级,dnf版本控制
  • Amazon Linux 训练lora模型的方式