当前位置: 首页 > 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.lryc.cn/news/615501.html

相关文章:

  • BroadcastChannel:轻松实现前端跨页面通信
  • 06-docker容器常用命令
  • 全栈:JDBC驱动版本和SQLserver版本是否有关系?怎么选择JDBC的版本号?
  • 自然语言交互与数据库智能客户端比对
  • SpringBoot配置生效优先级
  • 机器学习第七课之支持向量机SVM
  • Java Callback 实现线程切换以及与Kotlin原理关系
  • 数码管的使用(STC8)
  • Pytest中实现自动生成测试用例脚本代码
  • Java Stream 使用 Fork/Join框架的分治任务模型
  • Windows 安装 Xinference 速记
  • CPU缓存(CPU Cache)和TLB(Translation Lookaside Buffer)缓存现代计算机体系结构中用于提高性能的关键技术
  • 【线性代数】线性方程组与矩阵——(2)矩阵与线性方程组的解
  • 计算机网络:深入了解CIDR地址块如何利用VLSM进行子网划分的过程
  • 前端视角下关于 WebSocket 的简单理解
  • 如何在 Ubuntu 24.04 LTS Linux 上安装 Azure Data Studio
  • 【排序算法】④堆排序
  • 基于STM32H5的非循环GPDMA链表使用
  • LangChain-Unstructured 基础使用:PDF 与 Markdown 处理解析
  • 基于IPD体系的研发项目范围管理
  • 【网络与爬虫 52】Scrapyd-k8s集群化爬虫部署:Kubernetes原生分布式爬虫管理平台实战指南
  • 一个app项目周期是多久?
  • Java异常:认识异常、异常的作用、自定义异常
  • 世界时(Universal Time, UT)的定义与详解
  • 小学数学训练闭环:出题、作答、批改一体化方案实践
  • [Oracle] MAX()和MIN()函数
  • 【Python 高频 API 速学 ④】
  • LintCode第547题-两数组的交集
  • 腾讯COS云存储入门
  • 浅尝AI辅助C转Verilog方法