From 7fcc20a15b1c2452440eea0b4bc1d521c2fb148e Mon Sep 17 00:00:00 2001 From: zk Date: Tue, 28 Jul 2026 18:29:29 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=87=E6=BB=A4=E9=9D=9E=E8=85=BE=E8=AE=AF?= =?UTF-8?q?=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/service/recruit_announcement_service.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/app/service/recruit_announcement_service.py b/app/service/recruit_announcement_service.py index 3fe93b2..38bbaea 100644 --- a/app/service/recruit_announcement_service.py +++ b/app/service/recruit_announcement_service.py @@ -20,6 +20,9 @@ from app.models.recruit_announcement_year import RecruitAnnouncementYear from app.service.company_service import find_or_create_company from app.tool.page_extract import extract_page +# 微信公众号文章域名,页面提取逻辑只适配了这一种页面结构 +_WECHAT_DOMAIN = "mp.weixin.qq.com" + def _parse_datetime(value: str | None) -> datetime | None: """将 yyyy-MM-dd HH:mm:ss 字符串解析为 datetime,失败返回 None。""" @@ -135,7 +138,12 @@ def _save_announcement(announcement_id: int, company_id: int, url: str, data: di def process_announcement(url: str) -> None: """处理单条公告 URL 的完整流程。""" - # 1. URL 去重 + # 1. 只处理微信公众号文章,页面提取逻辑依赖公众号页面结构 + if _WECHAT_DOMAIN not in url: + log.info("非微信公众号文章,跳过: {}", url) + return + + # 2. URL 去重 with MysqlSession() as session: row = session.execute( text("SELECT id FROM bg_recruit_announcement WHERE announcement_url = :url LIMIT 1"), @@ -145,23 +153,23 @@ def process_announcement(url: str) -> None: log.info("公告已存在,跳过: {}", url) return - # 2. 页面内容提取 + # 3. 页面内容提取 result = extract_page(url) if not result.content or len(result.content) < 50: log.info("公告页内容过短({}字),跳过: {}", len(result.content) if result.content else 0, url) return - # 3. AI 信息提取 + # 4. AI 信息提取 data = extract_announcement(result.content) if data is None: log.warning("AI 信息提取失败,跳过: {}", url) return - # 4. 公司处理 + # 5. 公司处理 company_name = data.get("company_name") or "" company_id = find_or_create_company(company_name, result.logo_url) - # 5. 保存公告 + # 6. 保存公告 announcement_id = next_id() try: _save_announcement(announcement_id, company_id, url, data)