1、立项背景和目标
群接龙是社区团购领域广泛使用的订单管理工具,大量商家每天需要通过后台手动创建团购接龙活动。实际操作中,运营人员面临以下痛点:每天需要为数十个商家逐一复制往期接龙、手动修改团购主题日期、逐个勾选配送学校,重复劳动量大且容易出错;不同时段的模板不同(午餐/晚餐/宵夜),每周每天的商家排期也不同,管理复杂;发布过程中如果任何一个环节失败(如商家名称搜索不到、学校勾选遗漏),需要人工排查和重试,效率低下。本项目的核心目标是实现群接龙团购活动的全自动批量创建:根据预设的周排期计划,自动为每个商家复制对应的往期接龙模板、更新团购日期、选择配送学校并完成发布,全程无人值守运行,并支持失败商家自动重试。
2、软件功能、核心功能模块的介绍
工具涵盖以下核心模块:排期计划管理——读取按星期拆分的7个计划文件(星期一.txt ~ 星期日.txt)和商圈商家映射表,自动解析当天时段(午餐/晚餐/宵夜)应处理的商家及对应的复制模板后缀;学校计划管理——读取学校周计划表,自动解析当天应选择的配送学校列表;登录态管理——首次运行需扫码登录,自动保存auth.json复用登录态,过期后自动提醒重新登录;接龙复制与发布——自动点击发布按钮、复制往期接龙、按商家名+模板后缀搜索并选择对应模板;主题智能修改——自动将团购主题中的"模板"二字替换为次日日期(如"7.26"),无"模板"关键词则替换已有日期格式或在末尾追加;学校批量选择——自动切换学校Tab、全选当前学校下所有配送点;失败重试机制——第一轮失败的商家在第二轮自动重试一次,最大程度提高成功率;运行通知——完成后通过企业微信机器人发送结果统计(成功/失败数量及失败商家列表)。
3、业务流程、功能路径描述
用户配置好config.py(账号信息、企业微信Webhook等)→ 双击运行脚本 → 首次运行弹出浏览器,扫码登录群接龙后台 → 脚本自动解析当天星期和当前时段(10-15点为午餐、15-21点为晚餐、其余为宵夜)→ 读取对应星期和时段的计划文件 → 通过商圈映射展开为具体商家列表 → 读取学校周计划表获取配送学校列表 → 按顺序处理每个商家:点击"发布团购接龙"→ 点击"复制往期接龙"→ 搜索"商家名+模板后缀"→ 选择第一个复制结果 → 修改团购主题中的日期为次日 → 切换到"团购商品"Tab → 切换到"团购信息"Tab → 逐个点击学校Tab并全选学校 → 勾选协议复选框 → 点击"立即发布"→ 等待发布成功自动返回列表页 → 记录结果 → 处理下一个商家 → 第一轮完成后,失败商家自动进入第二轮重试 → 全部完成后发送企业微信通知。
1、整体架构和设计思路,不同模块使用的技术栈
项目采用模块化分层设计,技术栈为Python 3 + Playwright自动化框架 + Requests网络请求库。配置层使用config.py集中管理所有敏感信息(后端URL、Webhook地址、存储路径等)。数据解析层负责读取周计划文件(7个按星期拆分的文本文件)和商圈商家映射表,构建"星期→时段→商家列表"的三级数据结构;同时解析学校周计划表,构建"星期→时段→学校列表"的数据结构。自动化执行层使用Playwright的同步API驱动Chrome浏览器,模拟真实用户操作:包括点击发布、复制往期、搜索选择、文本输入、Tab切换、复选框勾选、滚动加载等。容错层为每个关键操作设置了显式等待(wait_for_selector)和超时保护(最长60秒),核心操作(如修改主题)封装了3次重试逻辑。通知层通过企业微信Webhook发送纯文本格式的运行结果报告。
2、"我"的负责模块和结果(尽可能量化)
(请根据实际情况替换) 本人独立完成该项目的全流程开发与测试。实现了:单次运行可自动处理 20-50个 商家(取决于当天排期),全流程耗时从 手工操作约2-3小时 压缩至 30-60分钟 ,效率提升约60%以上 ;支持午餐/晚餐/宵夜三个时段的自动识别和对应模板匹配;设计了_两轮重试机制_ ,第一轮失败率约_15%_ ,重试后整体成功率提升至 95%以上 ;主题修改准确率 98%以上 (主要失败原因来自页面加载延迟);支持按星期维度管理的_7个计划文件_ 和_学校周计划表_ ,业务人员只需维护文本配置文件即可调整排期,无需修改代码。
3、"我"遇到的难点、坑,和解决方案
难点一:团购主题修改不生效或修改错位置。 群接龙后台的文本框使用了Angular的双向绑定,直接fill()修改后界面显示已变化,但实际提交时使用的仍是旧值。解决方案:放弃fill()方法,改用page.evaluate()执行JavaScript直接操作DOM节点的value属性,并手动触发input和change事件,让Angular的变更检测机制捕获到修改。同时增加修改前后值的比对验证,若不一致则自动重试最多3次。
难点二:学校Tab需要滚动才能找到,且全选复选框难以定位。 群接龙后台的学校Tab数量较多(可达20+个),部分Tab被隐藏在滚动区域之外,直接点击"全选"可能只作用于当前可见Tab。解决方案:先尝试直接点击目标Tab,若找不到则通过el.scrollLeft += 200逐步滚动导航容器,每次滚动后重新尝试点击,最多滚动8次;全选时尝试多种选择器策略(CSS选择器、XPath、不同层级结构),并增加5次重试,确保学校被正确勾选。
难点三:页面加载状态不稳定,元素有时出现但不可交互。 群接龙后台的弹窗和Tab切换存在延迟