From 70fce8ebab29e296f2d7c672c0d24baaf0b80cec Mon Sep 17 00:00:00 2001 From: BoliviaYu Date: Thu, 5 Mar 2026 23:55:18 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=89=80=E6=9C=89=E6=9D=A5?= =?UTF-8?q?=E6=BA=90=E6=95=B0=E6=8D=AE=E6=B8=85=E6=B4=97=E5=92=8C=E8=A1=A8?= =?UTF-8?q?=E6=A0=BC=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 407 ++++++++------------ clean_to_structured.py | 394 ++++++++++++++++++- config.example.json | 15 + import_excel_jobs.py | 675 +++++++++++++++++++++++++++++++++ main.py | 94 ++++- pyproject.toml | 1 + run_daily_incremental.sh | 28 +- sheets/国内远程实习完整版.xlsx | Bin 0 -> 315970 bytes sync_to_cloud_mysql.py | 528 ++++++++++++++++++++++++++ 9 files changed, 1887 insertions(+), 255 deletions(-) create mode 100644 import_excel_jobs.py create mode 100644 sheets/国内远程实习完整版.xlsx create mode 100644 sync_to_cloud_mysql.py diff --git a/README.md b/README.md index bbf162d..778f339 100644 --- a/README.md +++ b/README.md @@ -1,241 +1,95 @@ # jobs_robots -本项目用于采集 Telegram 招聘数据并进行结构化清洗,当前统一使用 MySQL。 +Telegram 招聘数据采集与清洗项目,当前主流程为: -## 1. 当前流程 +1. 抓取原始消息到本地 MySQL +2. 清洗为结构化岗位数据 +3. 每日定时增量执行 +4. 同步本地 MySQL 到云端 MySQL -1. `main.py` -- 从 `config.json` 读取数据源、时间窗口、限频、MySQL 配置。 -- 爬取 Telegram 消息,写入 MySQL `messages`。 -- 维护每个来源的增量游标到 `sync_state`。 +## 1. 项目结构 -2. `clean_to_structured.py` -- 从 MySQL `messages` 增量读取新增消息(按 `messages.id` + `clean_state` 检查点)。 -- 按来源规则清洗(`@DeJob_official` 有专用规则,其他走通用规则)。 -- 仅保留招聘类数据,写入 MySQL `structured_jobs`。 +- `main.py`: Telegram 增量爬取,写入 `messages`,维护 `sync_state` +- `clean_to_structured.py`: 按来源规则清洗,写入 `structured_jobs`,维护 `clean_state` +- `import_excel_jobs.py`: 读取 `sheets/` Excel,导入结构化数据,实习数据落 `internship_jobs_raw` +- `sync_to_cloud_mysql.py`: 本地 MySQL -> 云端 MySQL 增量同步 +- `run_daily_incremental.sh`: 每日调度入口(滚动窗口、抓取、清洗、云同步) +- `config.json`: 运行配置(本地使用) +- `config.example.json`: 配置模板 -3. `run_daily_incremental.sh` -- 每日调度入口。 -- 运行前自动更新 `config.json` 时间窗口(滚动窗口)。 -- 依次执行 `main.py` 和 `clean_to_structured.py`。 +## 2. 环境要求 -## 2. 数据库表 +- Python `>=3.13` +- MySQL 8.x(本地) +- MySQL 8.x(云端,可选) +- 已完成 Telethon 登录(项目目录下会生成 `scraper.session`) -### 2.1 原始层 +依赖安装: -- `messages` - - 原始消息存储(`source + message_id` 唯一) -- `sync_state` - - Telegram 增量抓取游标 +```bash +uv sync +``` -### 2.2 清洗层 +## 3. 配置说明 -- `structured_jobs` - - 结构化岗位数据(`source + message_id` 唯一) -- `clean_state` - - 清洗增量检查点(`pipeline_name -> last_message_row_id`) +先复制模板并修改: -## 2.3 字段级数据字典(详细) - -### messages(Telegram 原始消息) - -- `id`(BIGINT, PK, 自增) - 含义:MySQL 行主键,清洗增量检查点使用这个字段。 - 示例:`530812` - -- `source`(VARCHAR) - 含义:消息来源标识(频道/群组),通常是 `@xxx`。 - 示例:`@DeJob_official` - -- `chat_id`(BIGINT, 可空) - 含义:Telegram 实体 ID。 - 示例:`-1001234567890` - -- `message_id`(BIGINT) - 含义:该 source 内部的消息 ID。 - 约束:与 `source` 组成唯一键。 - -- `content`(LONGTEXT, 可空) - 含义:抓取到的消息正文(含非文本补充段,如 `MEDIA_JSON`)。 - 示例:招聘 markdown 文本 + `[MEDIA_TYPE] ...` - -- `date`(DATETIME) - 含义:消息时间(UTC)。 - 示例:`2026-02-26 09:31:10` - -- `created_at`(DATETIME) - 含义:该条记录写入数据库时间。 - -### sync_state(抓取增量状态) - -- `source`(VARCHAR, PK) - 含义:来源标识,与 `messages.source` 对应。 - -- `last_message_id`(BIGINT) - 含义:该来源已抓取到的最大 message_id。 - 用途:下次抓取时只拉 `message_id > last_message_id`。 - -- `updated_at`(DATETIME) - 含义:该来源游标最近更新时间。 - -### structured_jobs(清洗后结构化岗位) - -- `id`(BIGINT, PK, 自增) - 含义:结构化表主键。 - -- `source`(VARCHAR) - 含义:来源标识。 - 示例:`@DeJob_official` - -- `source_channel`(VARCHAR, 可空) - 含义:来源品牌/渠道归类。 - 示例:`DeJob` - -- `parser_name`(VARCHAR) - 含义:使用的解析器名称。 - 示例:`dejob_official` / `generic` - -- `parser_version`(VARCHAR) - 含义:解析器版本号,用于规则演进追踪。 - 示例:`v1` - -- `chat_id`(BIGINT, 可空) - 含义:原始 Telegram chat_id。 - -- `message_id`(BIGINT) - 含义:原始消息 ID(source 内)。 - 约束:与 `source` 组成唯一键。 - -- `message_date`(DATETIME) - 含义:原始消息时间(UTC)。 - -- `job_type`(VARCHAR, 可空) - 含义:岗位类型标记。当前仅保留 `招聘`。 - 示例:`招聘` - -- `company_name`(VARCHAR, 可空) - 含义:公司/项目方名称。 - 示例:`88EX` - -- `industry_tags_json`(JSON) - 含义:行业/赛道标签数组。 - 示例:`[\"CEX\",\"Infra\"]` - -- `company_intro`(LONGTEXT, 可空) - 含义:公司简介文本。 - -- `company_url`(TEXT, 可空) - 含义:公司官网/介绍页链接。 - -- `work_mode`(VARCHAR) - 含义:办公模式。 - 枚举:`remote | onsite | hybrid | unknown` - -- `job_nature`(VARCHAR) - 含义:用工性质。 - 枚举:`full_time | part_time | contract | intern | freelance | unknown` - -- `job_location_text`(VARCHAR, 可空) - 含义:主地点文本(首个地点)。 - -- `job_location_tags_json`(JSON, 可空) - 含义:地点标签数组。无地点时为 `NULL`(不是空数组)。 - -- `employment_type_raw`(TEXT, 可空) - 含义:原始“合作方式”文本,便于回溯规则。 - 示例:`🛵 合作方式:#全职 #远程 #吉隆坡` - -- `position_name`(VARCHAR, 可空) - 含义:岗位主名称。 - 示例:`社区运营` - -- `position_tags_json`(JSON) - 含义:岗位标签数组。 - 示例:`[\"社区运营\",\"运营\"]` - -- `salary_raw`(TEXT, 可空) - 含义:薪资原始字符串。 - 示例:`$1000 - $3000 / month` - -- `salary_currency`(VARCHAR, 可空) - 含义:薪资币种(已识别)。 - 示例:`USD` - -- `salary_min`(BIGINT, 可空) - 含义:薪资下限数值。 - -- `salary_max`(BIGINT, 可空) - 含义:薪资上限数值。 - -- `salary_period`(VARCHAR, 可空) - 含义:薪资周期。 - 枚举:`month | year | day | NULL` - -- `responsibilities_json`(JSON) - 含义:岗位职责数组(按条目拆分)。 - -- `requirements_json`(JSON) - 含义:岗位要求数组(按条目拆分)。 - -- `apply_email`(VARCHAR, 可空) - 含义:投递邮箱。 - -- `apply_telegram`(VARCHAR, 可空) - 含义:投递 Telegram 用户名。 - 示例:`@lulu_lucky1` - -- `job_source_url`(TEXT, 可空) - 含义:岗位来源原文链接(如 DeJob 详情页)。 - -- `body_text`(LONGTEXT) - 含义:清洗后的主体文本(去除部分技术元段)。 - -- `raw_content`(LONGTEXT) - 含义:原始消息内容快照(用于审计/回刷)。 - -- `cleaned_at`(DATETIME) - 含义:最近清洗/更新该条结构化记录的时间。 - -### clean_state(清洗增量状态) - -- `pipeline_name`(VARCHAR, PK) - 含义:清洗流程标识。 - 示例:`structured_cleaner_v1` - -- `last_message_row_id`(BIGINT) - 含义:已处理到的 `messages.id` 最大值。 - 用途:下次清洗只处理更大的 `messages.id`。 - -- `updated_at`(DATETIME) - 含义:检查点更新时间。 - -## 3. 配置文件说明(config.json) +```bash +cp config.example.json config.json +``` 关键字段: -- `sources`: Telegram 来源列表 -- `time_window.enabled`: 是否启用时间窗口 -- `time_window.start` / `time_window.end`: 抓取窗口(脚本会每日自动刷新) -- `daily_window_days`: 滚动窗口天数(当前默认 `2`) -- `throttle`: 限频配置 - - `enabled` - - `per_message_delay_sec` - - `between_sources_delay_sec` -- `mysql`: MySQL 连接配置 - - `host`, `port`, `user`, `password`, `database`, `charset` +- `sources`: 要抓取的 Telegram 来源列表 +- `time_window`: 抓取时间窗口 +- `daily_window_days`: 每日滚动窗口天数(默认 `2`) +- `backfill`: 回补配置 +- `throttle`: 限频配置,降低封号风险 +- `mysql`: 本地 MySQL 连接 +- `mysql_cloud`: 云端 MySQL 连接(用于同步) ## 4. 运行方式 -### 4.1 手动运行 +### 4.1 手动执行 ```bash uv run main.py uv run clean_to_structured.py +uv run sync_to_cloud_mysql.py ``` -### 4.2 每日定时(推荐) +如果在 cron/非交互环境,建议用 venv Python: -脚本:`run_daily_incremental.sh` +```bash +.venv/bin/python main.py +.venv/bin/python clean_to_structured.py +.venv/bin/python sync_to_cloud_mysql.py +``` + +### 4.2 Excel 导入 + +默认读取 `sheets/` 下文件: + +```bash +uv run import_excel_jobs.py +``` + +指定文件/工作表: + +```bash +uv run import_excel_jobs.py --file /path/to/jobs.xlsx --sheet Sheet1 --source @excel_import +``` + +导入规则: + +- 普通岗位:清洗后写入 `structured_jobs` +- 实习岗位:写入 `internship_jobs_raw`,不进入结构化主表 + +### 4.3 每日定时(推荐) + +调度脚本: + +- `/home/liam/code/python/jobs_robots/run_daily_incremental.sh` 示例 crontab(每天 01:10): @@ -243,49 +97,114 @@ uv run clean_to_structured.py 10 1 * * * /home/liam/code/python/jobs_robots/run_daily_incremental.sh ``` -日志文件: +脚本执行顺序: -- `logs/app.log` -- `logs/clean_to_structured.log` -- `logs/daily_job.log` +1. 自动更新 `config.json` 的 `time_window.start/end`(按 `daily_window_days`) +2. 运行 `main.py` 增量抓取 +3. 运行 `clean_to_structured.py` 增量清洗 +4. 若 `mysql_cloud` 已配置,运行 `sync_to_cloud_mysql.py` 同步云端 -## 5. 增量策略 +## 5. 增量与回补策略 -### Telegram 抓取增量 +### 5.1 抓取增量 -- 依据 `sync_state.last_message_id` -- 每个来源独立增量 +- 状态表:`sync_state` +- 游标字段:`last_message_id` +- 粒度:每个 source 独立 -### 清洗增量 +### 5.2 清洗增量 -- 依据 `clean_state.last_message_row_id` -- 每次只处理 `messages.id > checkpoint` -- 成功后更新 checkpoint +- 状态表:`clean_state` +- 游标字段:`last_message_row_id`(对应 `messages.id`) +- 规则:仅处理 `messages.id > checkpoint` -## 6. 字段约定(结构化就业类型) +### 5.3 回补(Backfill) -`structured_jobs` 使用拆分字段,不再依赖 `employment_type_json`: +在 `config.json` 设置: -- `work_mode`: `remote | onsite | hybrid | unknown` -- `job_nature`: `full_time | part_time | contract | intern | freelance | unknown` -- `job_location_text`: 主地点文本 -- `job_location_tags_json`: 地点数组(无地点为 `NULL`) -- `employment_type_raw`: 原始“合作方式”行 +- `backfill.enabled = true` +- `backfill.start / backfill.end` +- `backfill.sources` +- `backfill.ignore_sync_state`(回补时是否忽略抓取游标) -## 7. 常见问题 +回补结束后建议关闭 `backfill.enabled`,恢复日常增量。 -1. 为什么当天凌晨跑出来窗口看着不对? -- 当前滚动窗口按 UTC 日期更新。如果需要按本地时区(如 Asia/Shanghai)可再改。 +## 6. 本地到云端同步 -2. 为什么清洗没有新增? -- 看 `clean_state` 检查点是否已经到最新。 -- 看 `messages` 是否有新数据。 +脚本:`sync_to_cloud_mysql.py` -3. 为什么 MySQL 报字段超长/类型错误? -- 优先看对应脚本日志,字段已做多数保护;若仍报错,保留错误堆栈并反馈。 +同步规则: -## 8. 协作建议 +- `messages`: 按本地 `id` 增量,云端按 `(source, message_id)` upsert +- `structured_jobs`: 按本地 `id` 增量 + `cleaned_at` 补偿更新 +- `sync_state` / `clean_state`: 小表全量 upsert +- `internship_jobs_raw`: 存在则按 `id` 增量 upsert -- 改规则时优先只改对应来源 parser,避免影响全局。 -- 改字段前先确认 `structured_jobs` 兼容性与迁移策略。 -- 所有定时行为以 `run_daily_incremental.sh` 为统一入口,避免多处调度冲突。 +状态表(云端): + +- `cloud_sync_state` + +注意: + +- 同步脚本会自动在云端补齐缺失目标表(从本地表结构复制 DDL) +- `mysql_cloud` 未配置时,日常脚本会跳过云同步 + +## 7. 数据库表与字段含义 + +### 7.1 原始层 + +- `messages` + - 原始消息正文、媒体补充文本、来源、消息时间 + - 唯一键:`(source, message_id)` +- `sync_state` + - 每个 source 的抓取游标 + +### 7.2 清洗层 + +- `structured_jobs` + - 清洗后结构化岗位数据 + - 唯一键:`(source, message_id)` + - 关键字段: + - `source`, `source_channel` + - `company_name`, `position_name` + - `work_mode`(`remote|onsite|hybrid|unknown`) + - `job_nature`(`full_time|part_time|contract|intern|freelance|unknown`) + - `job_location_text`, `job_location_tags_json`(无地点为 `NULL`) + - `apply_email`, `apply_telegram`, `job_source_url` + - `salary_raw`, `salary_currency`, `salary_min`, `salary_max`, `salary_period` + - `body_text`, `raw_content`, `cleaned_at` +- `clean_state` + - 清洗检查点 +- `internship_jobs_raw` + - Excel 导入时保留的实习原始数据 + +## 8. 日志 + +- `logs/app.log`: 抓取日志 +- `logs/clean_to_structured.log`: 清洗日志 +- `logs/sync_to_cloud_mysql.log`: 云同步日志 +- `logs/daily_job.log`: 每日调度总日志 + +## 9. 常见问题 + +1. `uv: command not found`(cron) +- 使用 `.venv/bin/python` 运行,已在 `run_daily_incremental.sh` 中处理。 + +2. `Table 'jobs.messages' doesn't exist`(云同步) +- 云端目标库为空。新版同步脚本会自动建表后再同步。 + +3. `Public Key Retrieval is not allowed`(DBeaver 连 MySQL) +- 连接参数添加 `allowPublicKeyRetrieval=true&useSSL=false`(排障用)。 + +4. `ERROR 1410 You are not allowed to create a user with GRANT` +- 先 `CREATE USER`,再 `GRANT`,不要用旧式 `GRANT ... IDENTIFIED BY ...`。 + +5. 清洗无新增 +- 检查 `messages` 是否有新数据。 +- 检查 `clean_state.last_message_row_id` 是否已到最新。 + +## 10. 协作规范建议 + +- 新增来源规则时,优先增加 source 专用 parser,避免影响已有来源。 +- 结构字段变更前,先确认 `structured_jobs` 迁移策略和历史兼容。 +- 定时任务统一走 `run_daily_incremental.sh`,避免多个入口重复执行。 diff --git a/clean_to_structured.py b/clean_to_structured.py index 3f39cda..0be6ddf 100644 --- a/clean_to_structured.py +++ b/clean_to_structured.py @@ -362,6 +362,81 @@ def extract_apply_telegram(body_text: str) -> str | None: return handles[0] if handles else None +def extract_urls(body_text: str) -> list[str]: + return dedupe(URL_RE.findall(body_text)) + + +def extract_first_url_by_keyword(body_text: str, keywords: list[str]) -> str | None: + urls = extract_urls(body_text) + for u in urls: + lu = u.lower() + if any(k.lower() in lu for k in keywords): + return u + return None + + +def extract_first_nonempty_line(body_text: str) -> str | None: + for ln in body_text.splitlines(): + t = clean_md_text(ln) + if t: + return t + return None + + +def normalize_possible_url(raw: str) -> str | None: + token = clean_md_text(raw or "") + if not token: + return None + token = token.strip("()[]<>.,;\"' ") + if not token: + return None + if token.lower().startswith(("http://", "https://")): + return token + if token.lower().startswith("www."): + return "https://" + token + # simple domain-style fallback, e.g. company.com/apply + if " " not in token and "." in token and "/" in token: + return "https://" + token + if " " not in token and re.fullmatch(r"[A-Za-z0-9.-]+\.[A-Za-z]{2,}", token): + return "https://" + token + return None + + +def extract_apply_link(body_text: str) -> str | None: + # Priority 1: explicit apply-like lines. + for ln in body_text.splitlines(): + low = ln.lower() + if "apply" not in low and "申请" not in ln and "投递" not in ln: + continue + + # direct URL in line + line_urls = URL_RE.findall(ln) + if line_urls: + return line_urls[0] + + # try parse right side after ':' / '-' + if ":" in ln: + rhs = ln.split(":", 1)[1] + elif ":" in ln: + rhs = ln.split(":", 1)[1] + elif "-" in ln: + rhs = ln.split("-", 1)[1] + else: + rhs = ln + + for token in re.split(r"\s+", rhs.strip()): + u = normalize_possible_url(token) + if u: + return u + + # Priority 2: first URL that looks like an apply page. + for u in extract_urls(body_text): + lu = u.lower() + if "apply" in lu or "job" in lu or "careers" in lu: + return u + return None + + def infer_employment_fields( tags: list[str], raw_line: str | None ) -> tuple[str, str, str | None, list[str] | None, str | None]: @@ -615,6 +690,300 @@ def parse_generic( ) +def parse_dejob_global( + source: str, + chat_id: int | None, + message_id: int, + message_date: str, + body_text: str, + raw_content: str, +) -> StructuredJob: + job_type = "招聘" if ("招聘" in body_text or "recruit" in body_text.lower()) else None + + company_name = extract_company_name_dejob(body_text) + + industry_tags = [] + for ln in body_text.splitlines(): + if "🏡" in ln: + norm_ln = normalize_md_line(ln) + industry_tags = [ + clean_md_text(t).replace("·", " ") for t in MD_TAG_RE.findall(norm_ln) + ] + industry_tags = dedupe([t for t in industry_tags if t]) + break + if not industry_tags: + industry_tags = [h.replace("·", " ").strip() for h in HASHTAG_RE.findall(body_text)] + industry_tags = dedupe([h for h in industry_tags if h]) + + cooperation_tags = [] + cooperation_line = None + for ln in body_text.splitlines(): + low = ln.lower() + if "合作方式" in ln or "fulltime" in low or "parttime" in low or "remote" in low: + cooperation_line = ln + norm_ln = normalize_md_line(ln) + cooperation_tags = [ + clean_md_text(t).replace("·", " ") for t in MD_TAG_RE.findall(norm_ln) + ] + cooperation_tags = dedupe([t for t in cooperation_tags if t]) + break + ( + work_mode, + job_nature, + job_location_text, + job_location_tags, + employment_type_raw, + ) = infer_employment_fields(cooperation_tags, cooperation_line) + + position_tags = [] + for ln in body_text.splitlines(): + if "待招岗位" in ln or "📚" in ln: + norm_ln = normalize_md_line(ln) + position_tags = [ + clean_md_text(t).replace("·", " ") for t in MD_TAG_RE.findall(norm_ln) + ] + position_tags = dedupe([t for t in position_tags if t]) + break + if not position_tags: + position_tags = industry_tags + + position_name = position_tags[0] if position_tags else extract_first_nonempty_line(body_text) + + intro_sec = extract_section(body_text, "Introduction") or extract_section(body_text, "简介") + urls = extract_urls(body_text) + company_url = extract_first_url_by_keyword(body_text, ["dejob.top/jobDetail"]) + if company_url and urls: + for u in urls: + if "dejob.top/jobDetail" not in u: + company_url = u + break + if not company_url: + company_url = extract_first_url(intro_sec) or (urls[0] if urls else None) + + company_intro = None + if intro_sec: + intro_lines = [ln for ln in intro_sec.splitlines() if not URL_RE.search(ln)] + company_intro = clean_md_text("\n".join(intro_lines)) or None + + salary_line = None + for ln in body_text.splitlines(): + if "薪酬" in ln or "salary" in ln.lower(): + salary_line = ln + break + salary_raw, salary_min, salary_max, salary_period = parse_salary(salary_line) + salary_currency = "USD" if salary_raw and "$" in salary_raw else None + + responsibilities = extract_list_section(body_text, "岗位职责") or extract_list_section( + body_text, "Responsibilities" + ) + requirements = extract_list_section(body_text, "岗位要求") or extract_list_section( + body_text, "Requirements" + ) + + apply_email = extract_apply_email(body_text) + apply_tg = extract_apply_telegram(body_text) + job_source_url = extract_first_url_by_keyword(body_text, ["dejob.top/jobDetail"]) + if not job_source_url: + urls = extract_urls(body_text) + job_source_url = urls[0] if urls else None + + return StructuredJob( + source=source, + source_channel="DeJob", + parser_name="dejob_global", + parser_version="v1", + chat_id=chat_id, + message_id=message_id, + message_date=message_date, + job_type=job_type, + company_name=company_name, + industry_tags=industry_tags, + company_intro=company_intro, + company_url=company_url, + work_mode=work_mode, + job_nature=job_nature, + job_location_text=job_location_text, + job_location_tags=job_location_tags, + employment_type_raw=employment_type_raw, + position_name=position_name, + position_tags=position_tags, + salary_raw=salary_raw, + salary_currency=salary_currency, + salary_min=salary_min, + salary_max=salary_max, + salary_period=salary_period, + responsibilities=responsibilities, + requirements=requirements, + apply_email=apply_email, + apply_telegram=apply_tg, + job_source_url=job_source_url or company_url, + body_text=body_text or "empty_message", + raw_content=raw_content, + ) + + +def parse_remote_cn( + source: str, + chat_id: int | None, + message_id: int, + message_date: str, + body_text: str, + raw_content: str, +) -> StructuredJob: + lines = [clean_md_text(ln) for ln in body_text.splitlines() if clean_md_text(ln)] + title = lines[0] if lines else None + + hashtags = [h.replace("·", " ").strip() for h in HASHTAG_RE.findall(body_text)] + hashtags = dedupe([h for h in hashtags if h]) + + ( + work_mode, + job_nature, + job_location_text, + job_location_tags, + employment_type_raw, + ) = infer_employment_fields(hashtags, None) + + summary_line = None + for ln in lines: + if ln.startswith("摘要:"): + summary_line = ln + break + salary_raw, salary_min, salary_max, salary_period = parse_salary(summary_line) + salary_currency = "USD" if salary_raw and "$" in salary_raw else None + + urls = extract_urls(body_text) + apply_email = extract_apply_email(body_text) + apply_tg = extract_apply_telegram(body_text) + + # remote_cn often places the detail link right below the title line. + top_url = None + raw_lines = [ln.strip() for ln in body_text.splitlines() if ln.strip()] + for ln in raw_lines[:6]: + found = URL_RE.findall(ln) + if found: + top_url = found[0] + break + + job_source_url = ( + top_url + or extract_first_url_by_keyword(body_text, ["remote-info.cn/jobs/"]) + or (urls[0] if urls else None) + ) + + job_type = "招聘" if ("招聘" in body_text or "job" in body_text.lower()) else None + + return StructuredJob( + source=source, + source_channel="remote_cn", + parser_name="remote_cn", + parser_version="v1", + chat_id=chat_id, + message_id=message_id, + message_date=message_date, + job_type=job_type, + company_name=None, + industry_tags=hashtags, + company_intro=summary_line.replace("摘要:", "", 1).strip() if summary_line else None, + company_url=job_source_url or (urls[0] if urls else None), + work_mode=work_mode, + job_nature=job_nature, + job_location_text=job_location_text, + job_location_tags=job_location_tags, + employment_type_raw=employment_type_raw, + position_name=title, + position_tags=hashtags, + salary_raw=salary_raw, + salary_currency=salary_currency, + salary_min=salary_min, + salary_max=salary_max, + salary_period=salary_period, + responsibilities=[], + requirements=[], + apply_email=apply_email, + apply_telegram=apply_tg, + job_source_url=job_source_url, + body_text=body_text or "empty_message", + raw_content=raw_content, + ) + + +def parse_cryptojobslist_source( + source: str, + chat_id: int | None, + message_id: int, + message_date: str, + body_text: str, + raw_content: str, +) -> StructuredJob: + lines = [clean_md_text(ln) for ln in body_text.splitlines() if clean_md_text(ln)] + title = lines[0] if lines else None + urls = extract_urls(body_text) + hashtags = [h.replace("·", " ").strip() for h in HASHTAG_RE.findall(body_text)] + hashtags = dedupe([h for h in hashtags if h]) + + ( + work_mode, + job_nature, + job_location_text, + job_location_tags, + employment_type_raw, + ) = infer_employment_fields(hashtags, None) + + salary_line = None + for ln in lines: + if any(k in ln.lower() for k in ("salary", "$", "usd")): + salary_line = ln + break + salary_raw, salary_min, salary_max, salary_period = parse_salary(salary_line) + salary_currency = "USD" if salary_raw and "$" in salary_raw else None + + apply_email = extract_apply_email(body_text) + apply_tg = extract_apply_telegram(body_text) + apply_link = extract_apply_link(body_text) + job_source_url = ( + apply_link + or extract_first_url_by_keyword(body_text, ["cryptojobslist.com"]) + or (urls[0] if urls else None) + ) + + job_type = "招聘" if ("job" in body_text.lower() or "hiring" in body_text.lower()) else None + + return StructuredJob( + source=source, + source_channel="cryptojobslist", + parser_name="cryptojobslist", + parser_version="v1", + chat_id=chat_id, + message_id=message_id, + message_date=message_date, + job_type=job_type, + company_name=None, + industry_tags=hashtags, + company_intro=None, + company_url=job_source_url or (urls[0] if urls else None), + work_mode=work_mode, + job_nature=job_nature, + job_location_text=job_location_text, + job_location_tags=job_location_tags, + employment_type_raw=employment_type_raw, + position_name=title, + position_tags=hashtags, + salary_raw=salary_raw, + salary_currency=salary_currency, + salary_min=salary_min, + salary_max=salary_max, + salary_period=salary_period, + responsibilities=[], + requirements=[], + apply_email=apply_email, + apply_telegram=apply_tg, + job_source_url=job_source_url, + body_text=body_text or "empty_message", + raw_content=raw_content, + ) + + def route_parse(row: tuple) -> StructuredJob: source, chat_id, message_id, content, message_date = row raw_content = content or "" @@ -624,6 +993,18 @@ def route_parse(row: tuple) -> StructuredJob: return parse_dejob_official( source, chat_id, message_id, message_date, body_text, raw_content ) + if source == "@DeJob_Global_group": + return parse_dejob_global( + source, chat_id, message_id, message_date, body_text, raw_content + ) + if source == "@remote_cn": + return parse_remote_cn( + source, chat_id, message_id, message_date, body_text, raw_content + ) + if source == "@cryptojobslist": + return parse_cryptojobslist_source( + source, chat_id, message_id, message_date, body_text, raw_content + ) return parse_generic(source, chat_id, message_id, message_date, body_text, raw_content) @@ -715,6 +1096,10 @@ def is_recruitment_job(item: StructuredJob) -> bool: return item.job_type == "招聘" +def has_usable_job_link(item: StructuredJob) -> bool: + return bool((item.job_source_url or "").strip()) + + def get_last_processed_row_id(conn, pipeline_name: str) -> int: with conn.cursor() as cur: cur.execute( @@ -763,6 +1148,7 @@ def main(): processed = 0 inserted = 0 skipped_non_recruit = 0 + skipped_no_link = 0 by_parser = {} max_row_id = last_row_id @@ -778,12 +1164,17 @@ def main(): skipped_non_recruit += 1 continue + if not has_usable_job_link(item): + skipped_no_link += 1 + continue + upsert_structured(conn, item) inserted += 1 if processed % 500 == 0: logger.info( - f"[clean] processed={processed}, inserted={inserted}, skipped_non_recruit={skipped_non_recruit}" + f"[clean] processed={processed}, inserted={inserted}, " + f"skipped_non_recruit={skipped_non_recruit}, skipped_no_link={skipped_no_link}" ) if max_row_id > last_row_id: @@ -797,6 +1188,7 @@ def main(): logger.info( "[done] " f"structured_jobs={total}, inserted={inserted}, skipped_non_recruit={skipped_non_recruit}, " + f"skipped_no_link={skipped_no_link}, " f"target=mysql.structured_jobs, parsers={by_parser}" ) if processed == 0: diff --git a/config.example.json b/config.example.json index 186a193..6083768 100644 --- a/config.example.json +++ b/config.example.json @@ -11,6 +11,13 @@ "end": "2026-02-26" }, "daily_window_days": 2, + "backfill": { + "enabled": false, + "start": "", + "end": "", + "sources": [], + "ignore_sync_state": true + }, "throttle": { "enabled": true, "per_message_delay_sec": 0.05, @@ -23,5 +30,13 @@ "password": "CHANGE_ME", "database": "jobs", "charset": "utf8mb4" + }, + "mysql_cloud": { + "host": "CLOUD_DB_HOST", + "port": 3306, + "user": "jobs_user", + "password": "CHANGE_ME", + "database": "jobs", + "charset": "utf8mb4" } } diff --git a/import_excel_jobs.py b/import_excel_jobs.py new file mode 100644 index 0000000..d28bc6f --- /dev/null +++ b/import_excel_jobs.py @@ -0,0 +1,675 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +""" +Import external Excel jobs into MySQL. + +Rules: +- Internship rows (实习/intern) are stored into `internship_jobs_raw` only. +- Non-internship rows are normalized and upserted into `structured_jobs`. +""" + +import argparse +import hashlib +import json +import logging +import os +import re +from datetime import date, datetime, timedelta, timezone + +import pymysql +from openpyxl import load_workbook + +CONFIG_FILE = "config.json" +URL_RE = re.compile(r"https?://[^\s)]+", re.IGNORECASE) +EMAIL_RE = re.compile(r"\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b", re.IGNORECASE) + + +def setup_logger() -> logging.Logger: + os.makedirs("logs", exist_ok=True) + logger = logging.getLogger("import_excel_jobs") + logger.setLevel(logging.INFO) + if logger.handlers: + return logger + + fmt = logging.Formatter( + "[%(asctime)s] [%(levelname)s] %(message)s", datefmt="%Y-%m-%d %H:%M:%S" + ) + ch = logging.StreamHandler() + ch.setFormatter(fmt) + fh = logging.FileHandler("logs/import_excel_jobs.log", encoding="utf-8") + fh.setFormatter(fmt) + logger.addHandler(ch) + logger.addHandler(fh) + return logger + + +logger = setup_logger() + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser(description="Import jobs from Excel into MySQL") + parser.add_argument("--file", default="", help="Excel file path (.xlsx)") + parser.add_argument( + "--dir", + default="sheets", + help="Directory containing Excel files (.xlsx/.xlsm). Used when --file is empty.", + ) + parser.add_argument("--sheet", default="", help="Sheet name, default active sheet") + parser.add_argument( + "--source", + default="@excel_import", + help="source value written into structured_jobs.source", + ) + return parser.parse_args() + + +def load_mysql_config() -> dict: + if not os.path.exists(CONFIG_FILE): + raise FileNotFoundError(f"未找到配置文件: {CONFIG_FILE}") + + with open(CONFIG_FILE, "r", encoding="utf-8") as f: + cfg = json.load(f) + + mysql_cfg = cfg.get("mysql", {}) + if not isinstance(mysql_cfg, dict): + raise ValueError("配置错误: mysql 必须是对象") + + result = { + "host": mysql_cfg.get("host") or os.getenv("MYSQL_HOST", "127.0.0.1"), + "port": int(mysql_cfg.get("port") or os.getenv("MYSQL_PORT", "3306")), + "user": mysql_cfg.get("user") or os.getenv("MYSQL_USER", "jobs_user"), + "password": mysql_cfg.get("password") or os.getenv("MYSQL_PASSWORD", ""), + "database": mysql_cfg.get("database") or os.getenv("MYSQL_DATABASE", "jobs"), + "charset": mysql_cfg.get("charset") or os.getenv("MYSQL_CHARSET", "utf8mb4"), + } + if not result["password"] or result["password"] == "CHANGE_ME": + raise ValueError("请先在 config.json 里填写 mysql.password") + return result + + +def connect_mysql(cfg: dict): + return pymysql.connect( + host=cfg["host"], + port=cfg["port"], + user=cfg["user"], + password=cfg["password"], + database=cfg["database"], + charset=cfg["charset"], + autocommit=True, + ) + + +def init_tables(conn): + with conn.cursor() as cur: + cur.execute( + """ + CREATE TABLE IF NOT EXISTS internship_jobs_raw ( + id BIGINT PRIMARY KEY AUTO_INCREMENT, + source VARCHAR(255) NOT NULL, + fingerprint CHAR(64) NOT NULL, + source_file VARCHAR(512) NOT NULL, + sheet_name VARCHAR(255) NOT NULL, + `row_number` INT NOT NULL, + updated_at_raw VARCHAR(128) NULL, + updated_at_utc DATETIME NULL, + industry VARCHAR(255) NULL, + title VARCHAR(512) NULL, + company VARCHAR(255) NULL, + employment_type VARCHAR(255) NULL, + location_text VARCHAR(255) NULL, + apply_email VARCHAR(255) NULL, + job_source_url TEXT NULL, + raw_row_json JSON NOT NULL, + imported_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + UNIQUE KEY uk_internship_fingerprint (fingerprint), + KEY idx_internship_source (source) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 + """ + ) + # Compatibility for an existing old table schema. + for sql in [ + "ALTER TABLE internship_jobs_raw ADD COLUMN fingerprint CHAR(64) NULL", + "ALTER TABLE internship_jobs_raw ADD COLUMN updated_at_raw VARCHAR(128) NULL", + "ALTER TABLE internship_jobs_raw ADD COLUMN updated_at_utc DATETIME NULL", + "ALTER TABLE internship_jobs_raw ADD COLUMN industry VARCHAR(255) NULL", + "ALTER TABLE internship_jobs_raw ADD COLUMN location_text VARCHAR(255) NULL", + "ALTER TABLE internship_jobs_raw ADD COLUMN apply_email VARCHAR(255) NULL", + "ALTER TABLE internship_jobs_raw ADD UNIQUE KEY uk_internship_fingerprint (fingerprint)", + ]: + try: + cur.execute(sql) + except Exception: + pass + + +def norm_header(v) -> str: + s = str(v or "").strip().lower() + s = re.sub(r"\s+", "", s) + return s + + +def norm_value(v) -> str | None: + if v is None: + return None + s = str(v).strip() + return s or None + + +def first_match(data: dict, keys: list[str]) -> str | None: + for k in keys: + if k in data and data[k]: + return data[k] + return None + + +def infer_work_mode(text: str) -> str: + t = (text or "").lower() + has_remote = any(k in t for k in ["远程", "remote", "wfh", "home office"]) + has_onsite = any(k in t for k in ["实地", "onsite", "on-site", "现场", "坐班"]) + if has_remote and has_onsite: + return "hybrid" + if has_remote: + return "remote" + if has_onsite: + return "onsite" + return "unknown" + + +def infer_job_nature(text: str) -> str: + t = (text or "").lower() + if "全职" in t or "full time" in t: + return "full_time" + if "兼职" in t or "part time" in t: + return "part_time" + if "合同" in t or "contract" in t: + return "contract" + if "实习" in t or "intern" in t: + return "intern" + if "freelance" in t or "自由职业" in t: + return "freelance" + return "unknown" + + +def is_internship(text: str) -> bool: + t = (text or "").lower() + return ("实习" in t) or ("intern" in t) + + +def normalize_url(raw: str | None) -> str | None: + if not raw: + return None + s = raw.strip() + if s.lower().startswith(("http://", "https://")): + return s + if s.lower().startswith("www."): + return "https://" + s + if " " not in s and "." in s: + return "https://" + s + return None + + +def extract_url_from_detail(detail: str | None) -> str | None: + if not detail: + return None + m = URL_RE.search(detail) + if m: + return m.group(0) + return None + + +def extract_title_from_detail(detail: str | None, company: str | None) -> str | None: + if not detail: + return None + for ln in str(detail).splitlines(): + t = re.sub(r"\s+", " ", ln).strip() + if not t: + continue + # remove common wrappers/prefixes + t = t.replace("【", "").replace("】", "").strip("-— ") + if company and t.startswith(company): + t = t[len(company) :].strip("-—:: ") + # keep first short sentence as title + if len(t) <= 120: + return t + return t[:120] + return None + + +def extract_email_from_text(text: str | None) -> str | None: + if not text: + return None + m = EMAIL_RE.search(text) + if m: + return m.group(0) + return None + + +def normalize_location_text(raw: str | None) -> str | None: + if not raw: + return None + s = str(raw).strip() + s = s.replace(";", ";").replace(",", ",") + s = re.sub(r"\s+", " ", s) + return s or None + + +def parse_datetime_value(raw) -> str: + now_utc = datetime.now(timezone.utc) + + if raw is None: + return now_utc.strftime("%Y-%m-%d %H:%M:%S") + + if isinstance(raw, datetime): + dt = raw if raw.tzinfo else raw.replace(tzinfo=timezone.utc) + return dt.astimezone(timezone.utc).strftime("%Y-%m-%d %H:%M:%S") + + if isinstance(raw, date): + dt = datetime(raw.year, raw.month, raw.day, tzinfo=timezone.utc) + return dt.strftime("%Y-%m-%d %H:%M:%S") + + if isinstance(raw, (int, float)): + # Excel serial date: days since 1899-12-30 + try: + base = datetime(1899, 12, 30, tzinfo=timezone.utc) + dt = base + timedelta(days=float(raw)) + return dt.strftime("%Y-%m-%d %H:%M:%S") + except Exception: + return now_utc.strftime("%Y-%m-%d %H:%M:%S") + + s = str(raw).strip() + if not s: + return now_utc.strftime("%Y-%m-%d %H:%M:%S") + + # ISO-like strings first + try: + iso = s.replace("Z", "+00:00").replace("T", " ") + dt = datetime.fromisoformat(iso) + if dt.tzinfo is None: + dt = dt.replace(tzinfo=timezone.utc) + else: + dt = dt.astimezone(timezone.utc) + return dt.strftime("%Y-%m-%d %H:%M:%S") + except Exception: + pass + + normalized = ( + s.replace("年", "-") + .replace("月", "-") + .replace("日", "") + .replace("/", "-") + .replace(".", "-") + ) + normalized = re.sub(r"\s+", " ", normalized).strip() + + for fmt in [ + "%Y-%m-%d %H:%M:%S", + "%Y-%m-%d %H:%M", + "%Y-%m-%d", + "%Y%m%d%H%M%S", + "%Y%m%d%H%M", + "%Y%m%d", + ]: + try: + dt = datetime.strptime(normalized, fmt).replace(tzinfo=timezone.utc) + return dt.strftime("%Y-%m-%d %H:%M:%S") + except Exception: + continue + + logger.warning(f"无法解析时间,使用当前UTC时间兜底: raw={s}") + return now_utc.strftime("%Y-%m-%d %H:%M:%S") + + +def make_message_id(source: str, title: str | None, company: str | None, link: str | None) -> int: + key = f"{source}|{title or ''}|{company or ''}|{link or ''}" + digest = hashlib.sha256(key.encode("utf-8")).hexdigest()[:16] + return int(digest, 16) & ((1 << 63) - 1) + + +def make_fingerprint(payload: dict) -> str: + key = "|".join( + [ + str(payload.get("source") or ""), + str(payload.get("updated_at_raw") or ""), + str(payload.get("industry") or ""), + str(payload.get("company") or ""), + str(payload.get("title") or ""), + str(payload.get("employment_type") or ""), + str(payload.get("location_text") or ""), + str(payload.get("apply_email") or ""), + str(payload.get("job_source_url") or ""), + str(payload.get("detail_text") or ""), + ] + ) + return hashlib.sha256(key.encode("utf-8")).hexdigest() + + +def upsert_structured(conn, item: dict): + with conn.cursor() as cur: + cur.execute( + """ + INSERT INTO structured_jobs ( + source, source_channel, parser_name, parser_version, chat_id, message_id, + message_date, job_type, company_name, industry_tags_json, company_intro, + company_url, work_mode, job_nature, job_location_text, job_location_tags_json, + employment_type_raw, position_name, position_tags_json, + salary_raw, salary_currency, salary_min, salary_max, salary_period, + responsibilities_json, requirements_json, apply_email, apply_telegram, + job_source_url, body_text, raw_content + ) VALUES ( + %s, %s, %s, %s, %s, %s, + %s, %s, %s, %s, %s, + %s, %s, %s, %s, %s, + %s, %s, %s, + %s, %s, %s, %s, %s, + %s, %s, %s, %s, + %s, %s, %s + ) + ON DUPLICATE KEY UPDATE + source_channel=VALUES(source_channel), + parser_name=VALUES(parser_name), + parser_version=VALUES(parser_version), + chat_id=VALUES(chat_id), + message_date=VALUES(message_date), + job_type=VALUES(job_type), + company_name=VALUES(company_name), + industry_tags_json=VALUES(industry_tags_json), + company_intro=VALUES(company_intro), + company_url=VALUES(company_url), + work_mode=VALUES(work_mode), + job_nature=VALUES(job_nature), + job_location_text=VALUES(job_location_text), + job_location_tags_json=VALUES(job_location_tags_json), + employment_type_raw=VALUES(employment_type_raw), + position_name=VALUES(position_name), + position_tags_json=VALUES(position_tags_json), + salary_raw=VALUES(salary_raw), + salary_currency=VALUES(salary_currency), + salary_min=VALUES(salary_min), + salary_max=VALUES(salary_max), + salary_period=VALUES(salary_period), + responsibilities_json=VALUES(responsibilities_json), + requirements_json=VALUES(requirements_json), + apply_email=VALUES(apply_email), + apply_telegram=VALUES(apply_telegram), + job_source_url=VALUES(job_source_url), + body_text=VALUES(body_text), + raw_content=VALUES(raw_content), + cleaned_at=CURRENT_TIMESTAMP + """, + ( + item["source"], + item["source_channel"], + item["parser_name"], + item["parser_version"], + item["chat_id"], + item["message_id"], + item["message_date"], + item["job_type"], + item["company_name"], + item["industry_tags_json"], + item["company_intro"], + item["company_url"], + item["work_mode"], + item["job_nature"], + item["job_location_text"], + item["job_location_tags_json"], + item["employment_type_raw"], + item["position_name"], + item["position_tags_json"], + item["salary_raw"], + item["salary_currency"], + item["salary_min"], + item["salary_max"], + item["salary_period"], + item["responsibilities_json"], + item["requirements_json"], + item["apply_email"], + item["apply_telegram"], + item["job_source_url"], + item["body_text"], + item["raw_content"], + ), + ) + + +def insert_internship_raw(conn, item: dict): + with conn.cursor() as cur: + cur.execute( + """ + INSERT INTO internship_jobs_raw ( + source, source_file, sheet_name, `row_number`, + fingerprint, updated_at_raw, updated_at_utc, industry, title, company, + employment_type, location_text, apply_email, job_source_url, raw_row_json + ) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) + ON DUPLICATE KEY UPDATE + updated_at_raw=VALUES(updated_at_raw), + updated_at_utc=VALUES(updated_at_utc), + industry=VALUES(industry), + title=VALUES(title), + company=VALUES(company), + employment_type=VALUES(employment_type), + location_text=VALUES(location_text), + apply_email=VALUES(apply_email), + job_source_url=VALUES(job_source_url), + raw_row_json=VALUES(raw_row_json), + imported_at=CURRENT_TIMESTAMP + """, + ( + item["source"], + item["source_file"], + item["sheet_name"], + item["row_number"], + item["fingerprint"], + item["updated_at_raw"], + item["updated_at_utc"], + item["industry"], + item["title"], + item["company"], + item["employment_type"], + item["location_text"], + item["apply_email"], + item["job_source_url"], + item["raw_row_json"], + ), + ) + + +def list_excel_files(dir_path: str) -> list[str]: + if not os.path.isdir(dir_path): + return [] + files = [] + for name in sorted(os.listdir(dir_path)): + full = os.path.join(dir_path, name) + if not os.path.isfile(full): + continue + lower = name.lower() + if lower.endswith(".xlsx") or lower.endswith(".xlsm"): + files.append(full) + return files + + +def import_one_file(conn, args: argparse.Namespace, file_path: str) -> tuple[int, int, int, int]: + wb = load_workbook(file_path, data_only=True) + ws = wb[args.sheet] if args.sheet else wb.active + + rows = list(ws.iter_rows(values_only=True)) + if not rows: + logger.info(f"Excel 为空,跳过: file={file_path}") + return 0, 0, 0 + + headers = [norm_header(v) for v in rows[0]] + logger.info(f"file={file_path}, sheet={ws.title}, columns={len(headers)}, rows={len(rows)-1}") + + imported = internship_saved = skipped_empty = 0 + skipped_no_link = 0 + + for idx, row in enumerate(rows[1:], start=2): + raw = {headers[i]: norm_value(row[i]) if i < len(row) else None for i in range(len(headers))} + # For your sheet, exact headers are: + # 表格更新时间, 行业, 公司, 职位详情, 工作形式, 工作地点_标准, 投递邮箱 + updated_raw = first_match(raw, ["表格更新时间", "更新时间", "date", "postedat"]) + industry = first_match(raw, ["行业", "industry"]) + company = first_match(raw, ["公司", "公司名称", "company", "companyname"]) + detail = first_match(raw, ["职位详情", "岗位详情", "职位描述", "description", "jd", "详情"]) + employment = first_match( + raw, + ["工作形式", "合作方式", "用工类型", "岗位性质", "employment", "employmenttype", "jobtype"], + ) + location = first_match(raw, ["工作地点_标准", "工作地点", "地点", "城市", "location", "worklocation"]) + email = first_match(raw, ["投递邮箱", "邮箱", "email", "applyemail"]) + salary = first_match(raw, ["薪资", "薪酬", "salary", "compensation"]) + tg = first_match(raw, ["telegram", "tg", "联系方式telegram"]) + + title = extract_title_from_detail(detail, company) + link = normalize_url(extract_url_from_detail(detail)) + if not email: + email = extract_email_from_text(detail) + location = normalize_location_text(location) + posted = parse_datetime_value(updated_raw) + + # Build a combined text for nature detection. + nature_text = " | ".join([x for x in [title, employment, detail] if x]) + + if not any([title, company, link, detail]): + skipped_empty += 1 + continue + + fp_payload = { + "source": args.source, + "updated_at_raw": updated_raw, + "industry": industry, + "company": company, + "title": title, + "employment_type": employment, + "location_text": location, + "apply_email": email, + "job_source_url": link, + "detail_text": detail, + } + fingerprint = make_fingerprint(fp_payload) + + if is_internship(nature_text): + insert_internship_raw( + conn, + { + "source": args.source, + "source_file": os.path.abspath(file_path), + "sheet_name": ws.title, + "row_number": idx, + "fingerprint": fingerprint, + "updated_at_raw": updated_raw, + "updated_at_utc": posted, + "industry": industry, + "title": title, + "company": company, + "employment_type": employment, + "location_text": location, + "apply_email": email, + "job_source_url": link, + "raw_row_json": json.dumps(raw, ensure_ascii=False), + }, + ) + internship_saved += 1 + continue + + if not link: + skipped_no_link += 1 + continue + + message_id = make_message_id(args.source, title, company, link) + work_mode = infer_work_mode(nature_text) + job_nature = infer_job_nature(nature_text) + + upsert_structured( + conn, + { + "source": args.source, + "source_channel": "excel_import", + "parser_name": "excel_import", + "parser_version": "v1", + "chat_id": None, + "message_id": message_id, + "message_date": posted, + "job_type": "招聘", + "company_name": company, + "industry_tags_json": json.dumps([industry], ensure_ascii=False) if industry else json.dumps([], ensure_ascii=False), + "company_intro": None, + "company_url": link, + "work_mode": work_mode, + "job_nature": job_nature, + "job_location_text": location, + "job_location_tags_json": json.dumps([location], ensure_ascii=False) if location else None, + "employment_type_raw": employment, + "position_name": title, + "position_tags_json": json.dumps([], ensure_ascii=False), + "salary_raw": salary, + "salary_currency": "USD" if salary and "$" in salary else None, + "salary_min": None, + "salary_max": None, + "salary_period": None, + "responsibilities_json": json.dumps([], ensure_ascii=False), + "requirements_json": json.dumps([], ensure_ascii=False), + "apply_email": email, + "apply_telegram": tg, + "job_source_url": link, + "body_text": detail or title or "excel_import", + "raw_content": json.dumps(raw, ensure_ascii=False), + }, + ) + imported += 1 + + if (imported + internship_saved) % 200 == 0: + logger.info( + "progress rows=" + f"{idx-1}, imported={imported}, internship_saved={internship_saved}, " + f"skipped_empty={skipped_empty}, skipped_no_link={skipped_no_link}" + ) + + logger.info( + "done file=" + f"{file_path}, imported={imported}, internship_saved={internship_saved}, " + f"skipped_empty={skipped_empty}, skipped_no_link={skipped_no_link}, sheet={ws.title}" + ) + return imported, internship_saved, skipped_empty, skipped_no_link + + +def main(): + args = parse_args() + + files: list[str] + if args.file: + if not os.path.exists(args.file): + raise FileNotFoundError(f"Excel 文件不存在: {args.file}") + files = [args.file] + else: + files = list_excel_files(args.dir) + if not files: + raise FileNotFoundError(f"目录中未找到 Excel 文件: {args.dir}") + + mysql_cfg = load_mysql_config() + conn = connect_mysql(mysql_cfg) + init_tables(conn) + + total_imported = total_internship = total_skipped = total_skipped_no_link = 0 + try: + for f in files: + imported, internship_saved, skipped_empty, skipped_no_link = import_one_file( + conn, args, f + ) + total_imported += imported + total_internship += internship_saved + total_skipped += skipped_empty + total_skipped_no_link += skipped_no_link + finally: + conn.close() + + logger.info( + "all_done " + f"files={len(files)}, imported={total_imported}, internship_saved={total_internship}, " + f"skipped_empty={total_skipped}, skipped_no_link={total_skipped_no_link}" + ) + + +if __name__ == "__main__": + main() diff --git a/main.py b/main.py index 7a1d2f3..2b14b01 100644 --- a/main.py +++ b/main.py @@ -84,7 +84,9 @@ def parse_datetime(raw: str, *, is_end: bool = False) -> datetime: return dt -def load_runtime_config() -> tuple[list[str], datetime | None, datetime | None, dict, dict]: +def load_runtime_config() -> tuple[ + list[str], datetime | None, datetime | None, dict, dict, dict +]: if not os.path.exists(CONFIG_FILE): raise FileNotFoundError(f"未找到配置文件: {CONFIG_FILE}") @@ -142,7 +144,36 @@ def load_runtime_config() -> tuple[list[str], datetime | None, datetime | None, if not mysql_final["password"]: raise ValueError("配置错误: mysql.password 不能为空") - return sources, start_dt, end_dt, throttle_cfg, mysql_final + backfill = cfg.get("backfill", {}) + if not isinstance(backfill, dict): + raise ValueError("配置错误: backfill 必须是对象") + + backfill_enabled = bool(backfill.get("enabled", False)) + backfill_start_raw = str(backfill.get("start", "") or "").strip() + backfill_end_raw = str(backfill.get("end", "") or "").strip() + backfill_sources = backfill.get("sources", []) + if backfill_sources and not isinstance(backfill_sources, list): + raise ValueError("配置错误: backfill.sources 必须是数组") + backfill_sources = [str(s).strip() for s in backfill_sources if str(s).strip()] + + if backfill_enabled: + bf_start = parse_datetime(backfill_start_raw, is_end=False) if backfill_start_raw else None + bf_end = parse_datetime(backfill_end_raw, is_end=True) if backfill_end_raw else None + if bf_start and bf_end and bf_start > bf_end: + raise ValueError("配置错误: backfill.start 不能晚于 backfill.end") + else: + bf_start = None + bf_end = None + + backfill_cfg = { + "enabled": backfill_enabled, + "start_dt": bf_start, + "end_dt": bf_end, + "sources": backfill_sources, + "ignore_sync_state": bool(backfill.get("ignore_sync_state", True)), + } + + return sources, start_dt, end_dt, throttle_cfg, mysql_final, backfill_cfg # ======================= @@ -337,6 +368,7 @@ async def scrape_one_source( raw_source: str, start_dt: datetime | None, end_dt: datetime | None, + ignore_sync_state: bool, throttle_cfg: dict, ): try: @@ -358,9 +390,17 @@ async def scrape_one_source( use_throttle = bool(throttle_cfg.get("enabled", True)) per_message_delay = float(throttle_cfg.get("per_message_delay_sec", 0.0)) - if window_mode: + if window_mode and ignore_sync_state: logger.info(f"[{source_key}] 时间窗口模式 start={start_dt} end={end_dt} (UTC)") iterator = client.iter_messages(entity, limit=INITIAL_BACKFILL_LIMIT) + elif window_mode: + # 用于日常窗口抓取,仍可依赖 sync_state 避免重复扫过大历史。 + last_id = store.get_last_message_id(source_key) + logger.info( + f"[{source_key}] 窗口增量模式 start={start_dt} end={end_dt} (UTC), " + f"message_id > {last_id}" + ) + iterator = client.iter_messages(entity, min_id=last_id, reverse=True) else: last_id = store.get_last_message_id(source_key) logger.info(f"[{source_key}] 增量模式,从 message_id > {last_id} 开始") @@ -392,7 +432,8 @@ async def scrape_one_source( if use_throttle and per_message_delay > 0: await asyncio.sleep(per_message_delay) - if not window_mode and max_seen_id > 0: + should_update_sync = (not window_mode) or (window_mode and not ignore_sync_state) + if should_update_sync and max_seen_id > 0: old_last = store.get_last_message_id(source_key) if max_seen_id > old_last: store.set_last_message_id(source_key, max_seen_id) @@ -404,6 +445,7 @@ async def run_scraper( sources: list[str], start_dt: datetime | None, end_dt: datetime | None, + ignore_sync_state: bool, throttle_cfg: dict, store: MySQLStore, ): @@ -420,7 +462,15 @@ async def run_scraper( between_sources_delay = float(throttle_cfg.get("between_sources_delay_sec", 0.0)) for idx, source in enumerate(sources): - await scrape_one_source(client, store, source, start_dt, end_dt, throttle_cfg) + await scrape_one_source( + client, + store, + source, + start_dt, + end_dt, + ignore_sync_state, + throttle_cfg, + ) if use_throttle and between_sources_delay > 0 and idx < len(sources) - 1: logger.info(f"源切换等待 {between_sources_delay:.2f}s 以降低风控") @@ -433,7 +483,28 @@ async def run_scraper( # 主程序入口 # ======================= def main(): - sources, start_dt, end_dt, throttle_cfg, mysql_cfg = load_runtime_config() + ( + sources, + start_dt, + end_dt, + throttle_cfg, + mysql_cfg, + backfill_cfg, + ) = load_runtime_config() + + if backfill_cfg["enabled"]: + if backfill_cfg["sources"]: + sources = backfill_cfg["sources"] + start_dt = backfill_cfg["start_dt"] + end_dt = backfill_cfg["end_dt"] + ignore_sync_state = bool(backfill_cfg["ignore_sync_state"]) + logger.info( + "回补模式启用: " + f"sources={sources}, start={start_dt}, end={end_dt}, " + f"ignore_sync_state={ignore_sync_state}" + ) + else: + ignore_sync_state = False logger.info("程序启动") logger.info(f"本次数据源: {sources}") @@ -450,7 +521,16 @@ def main(): store.connect() try: store.init_db() - asyncio.run(run_scraper(sources, start_dt, end_dt, throttle_cfg, store)) + asyncio.run( + run_scraper( + sources, + start_dt, + end_dt, + ignore_sync_state, + throttle_cfg, + store, + ) + ) finally: store.close() diff --git a/pyproject.toml b/pyproject.toml index e457885..5804787 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,4 +9,5 @@ dependencies = [ "pymysql>=1.1.1", "requests>=2.32.0", "beautifulsoup4>=4.12.0", + "openpyxl>=3.1.0", ] diff --git a/run_daily_incremental.sh b/run_daily_incremental.sh index ee2f3bf..7054c02 100755 --- a/run_daily_incremental.sh +++ b/run_daily_incremental.sh @@ -5,6 +5,7 @@ PROJECT_DIR="/home/liam/code/python/jobs_robots" LOG_DIR="$PROJECT_DIR/logs" LOCK_FILE="$PROJECT_DIR/.daily_job.lock" TS="$(date '+%Y-%m-%d %H:%M:%S')" +PY_BIN="$PROJECT_DIR/.venv/bin/python" mkdir -p "$LOG_DIR" @@ -19,8 +20,13 @@ cd "$PROJECT_DIR" echo "[$TS] daily job start" >> "$LOG_DIR/daily_job.log" +if [[ ! -x "$PY_BIN" ]]; then + echo "[$TS] python not found: $PY_BIN" >> "$LOG_DIR/daily_job.log" + exit 1 +fi + # Auto-advance time window to a rolling daily range. -.venv/bin/python - <<'PY' +"$PY_BIN" - <<'PY' import json from datetime import datetime, timezone, timedelta @@ -50,9 +56,25 @@ print( PY # 1) Crawl TG incremental -uv run main.py >> "$LOG_DIR/daily_job.log" 2>&1 +"$PY_BIN" main.py >> "$LOG_DIR/daily_job.log" 2>&1 # 2) Clean dejob_official and others into structured table -uv run clean_to_structured.py >> "$LOG_DIR/daily_job.log" 2>&1 +"$PY_BIN" clean_to_structured.py >> "$LOG_DIR/daily_job.log" 2>&1 + +# 3) Sync local MySQL to cloud MySQL (only when mysql_cloud is configured) +if "$PY_BIN" - <<'PY' +import json +with open("config.json", "r", encoding="utf-8") as f: + cfg = json.load(f) +cloud = cfg.get("mysql_cloud") or {} +ok = bool(cloud.get("host") and cloud.get("user") and cloud.get("database")) +ok = ok and bool(cloud.get("password")) and cloud.get("password") != "CHANGE_ME" +raise SystemExit(0 if ok else 1) +PY +then + "$PY_BIN" sync_to_cloud_mysql.py >> "$LOG_DIR/daily_job.log" 2>&1 +else + echo "[$(date '+%Y-%m-%d %H:%M:%S')] skip cloud sync: mysql_cloud not configured" >> "$LOG_DIR/daily_job.log" +fi echo "[$(date '+%Y-%m-%d %H:%M:%S')] daily job done" >> "$LOG_DIR/daily_job.log" diff --git a/sheets/国内远程实习完整版.xlsx b/sheets/国内远程实习完整版.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..f5e4a35b38af54dc5a3e3f070d5f458b33c077df GIT binary patch literal 315970 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

-45o_$x&^BJ}3=bY98P{Nz_1wG1X1?MP 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 literal 0 HcmV?d00001 diff --git a/sync_to_cloud_mysql.py b/sync_to_cloud_mysql.py new file mode 100644 index 0000000..9b294d8 --- /dev/null +++ b/sync_to_cloud_mysql.py @@ -0,0 +1,528 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +""" +Sync local MySQL data to cloud MySQL daily (incremental + upsert). + +Synced tables: +- messages (incremental by local id) +- sync_state (full upsert, small table) +- structured_jobs (incremental by local id + recent updates by cleaned_at) +- clean_state (full upsert, small table) +- internship_jobs_raw (incremental by local id, if table exists) + +State is stored on cloud DB in table `cloud_sync_state`. +""" + +import json +import logging +import os +from datetime import datetime, timezone + +import pymysql + +CONFIG_FILE = "config.json" +PIPELINE_NAME = "local_to_cloud_mysql_v1" +BATCH_SIZE = 1000 + + +def qid(name: str) -> str: + return f"`{name.replace('`', '``')}`" + + +def setup_logger() -> logging.Logger: + os.makedirs("logs", exist_ok=True) + logger = logging.getLogger("sync_to_cloud_mysql") + logger.setLevel(logging.INFO) + if logger.handlers: + return logger + + fmt = logging.Formatter( + "[%(asctime)s] [%(levelname)s] %(message)s", datefmt="%Y-%m-%d %H:%M:%S" + ) + ch = logging.StreamHandler() + ch.setFormatter(fmt) + fh = logging.FileHandler("logs/sync_to_cloud_mysql.log", encoding="utf-8") + fh.setFormatter(fmt) + logger.addHandler(ch) + logger.addHandler(fh) + return logger + + +logger = setup_logger() + + +def load_config() -> tuple[dict, dict]: + if not os.path.exists(CONFIG_FILE): + raise FileNotFoundError(f"未找到配置文件: {CONFIG_FILE}") + + with open(CONFIG_FILE, "r", encoding="utf-8") as f: + cfg = json.load(f) + + local_cfg = cfg.get("mysql", {}) + cloud_cfg = cfg.get("mysql_cloud", {}) + + if not isinstance(local_cfg, dict) or not isinstance(cloud_cfg, dict): + raise ValueError("配置错误: mysql / mysql_cloud 必须是对象") + + def norm(db: dict, env_prefix: str, defaults: dict) -> dict: + out = { + "host": db.get("host") or os.getenv(f"{env_prefix}_HOST", defaults["host"]), + "port": int(db.get("port") or os.getenv(f"{env_prefix}_PORT", defaults["port"])), + "user": db.get("user") or os.getenv(f"{env_prefix}_USER", defaults["user"]), + "password": db.get("password") or os.getenv(f"{env_prefix}_PASSWORD", ""), + "database": db.get("database") or os.getenv(f"{env_prefix}_DATABASE", defaults["database"]), + "charset": db.get("charset") or os.getenv(f"{env_prefix}_CHARSET", "utf8mb4"), + } + if not out["password"] or out["password"] == "CHANGE_ME": + raise ValueError(f"配置错误: {env_prefix}.password 不能为空") + return out + + local = norm(local_cfg, "MYSQL_LOCAL", {"host": "127.0.0.1", "port": "3306", "user": "jobs_user", "database": "jobs"}) + cloud = norm(cloud_cfg, "MYSQL_CLOUD", {"host": "127.0.0.1", "port": "3306", "user": "jobs_user", "database": "jobs"}) + return local, cloud + + +def connect_mysql(cfg: dict): + return pymysql.connect( + host=cfg["host"], + port=cfg["port"], + user=cfg["user"], + password=cfg["password"], + database=cfg["database"], + charset=cfg["charset"], + autocommit=True, + cursorclass=pymysql.cursors.DictCursor, + ) + + +def ensure_cloud_tables(cloud_conn): + with cloud_conn.cursor() as cur: + cur.execute( + """ + CREATE TABLE IF NOT EXISTS cloud_sync_state ( + pipeline_name VARCHAR(128) PRIMARY KEY, + last_messages_id BIGINT NOT NULL DEFAULT 0, + last_structured_jobs_id BIGINT NOT NULL DEFAULT 0, + last_internship_id BIGINT NOT NULL DEFAULT 0, + last_structured_sync_at DATETIME NULL, + updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP + ON UPDATE CURRENT_TIMESTAMP + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 + """ + ) + + +def ensure_destination_tables(local_conn, cloud_conn): + required = ["messages", "sync_state", "structured_jobs", "clean_state"] + optional = ["internship_jobs_raw"] + + for table in required + optional: + if not table_exists(local_conn, table): + if table in required: + raise RuntimeError(f"本地缺少必要表: {table}") + logger.info(f"skip create cloud table {table}: local table not exists") + continue + + if table_exists(cloud_conn, table): + continue + + with local_conn.cursor() as cur: + cur.execute(f"SHOW CREATE TABLE `{table}`") + row = cur.fetchone() + ddl = row.get("Create Table") if isinstance(row, dict) else None + if not ddl: + raise RuntimeError(f"无法读取本地表结构: {table}") + + with cloud_conn.cursor() as cur: + cur.execute(ddl) + logger.info(f"created cloud table from local ddl: {table}") + + +def ensure_cloud_column(local_conn, cloud_conn, table: str, column: str): + if not table_exists(local_conn, table) or not table_exists(cloud_conn, table): + return + + with local_conn.cursor() as cur: + cur.execute(f"SHOW COLUMNS FROM {qid(table)} LIKE %s", (column,)) + local_col = cur.fetchone() + if not local_col: + return + + with cloud_conn.cursor() as cur: + cur.execute(f"SHOW COLUMNS FROM {qid(table)} LIKE %s", (column,)) + cloud_col = cur.fetchone() + if cloud_col: + return + + # Build minimal compatible ADD COLUMN from local definition. + col_type = local_col.get("Type") + nullable = local_col.get("Null", "YES") == "YES" + default_val = local_col.get("Default") + extra = local_col.get("Extra") or "" + + parts = [f"ALTER TABLE {qid(table)} ADD COLUMN {qid(column)} {col_type}"] + parts.append("NULL" if nullable else "NOT NULL") + if default_val is not None: + if isinstance(default_val, str): + escaped = default_val.replace("'", "''") + parts.append(f"DEFAULT '{escaped}'") + else: + parts.append(f"DEFAULT {default_val}") + if extra: + parts.append(extra) + + sql = " ".join(parts) + with cloud_conn.cursor() as cur: + cur.execute(sql) + logger.info(f"added missing cloud column: {table}.{column}") + + +def get_cloud_state(cloud_conn) -> dict: + with cloud_conn.cursor() as cur: + cur.execute( + """ + SELECT last_messages_id, last_structured_jobs_id, last_internship_id, last_structured_sync_at + FROM cloud_sync_state + WHERE pipeline_name=%s + """, + (PIPELINE_NAME,), + ) + row = cur.fetchone() + + if not row: + return { + "last_messages_id": 0, + "last_structured_jobs_id": 0, + "last_internship_id": 0, + "last_structured_sync_at": None, + } + return row + + +def set_cloud_state(cloud_conn, state: dict): + with cloud_conn.cursor() as cur: + cur.execute( + """ + INSERT INTO cloud_sync_state ( + pipeline_name, last_messages_id, last_structured_jobs_id, + last_internship_id, last_structured_sync_at, updated_at + ) VALUES (%s, %s, %s, %s, %s, NOW()) + ON DUPLICATE KEY UPDATE + last_messages_id=VALUES(last_messages_id), + last_structured_jobs_id=VALUES(last_structured_jobs_id), + last_internship_id=VALUES(last_internship_id), + last_structured_sync_at=VALUES(last_structured_sync_at), + updated_at=NOW() + """, + ( + PIPELINE_NAME, + state["last_messages_id"], + state["last_structured_jobs_id"], + state["last_internship_id"], + state["last_structured_sync_at"], + ), + ) + + +def table_exists(conn, table: str) -> bool: + with conn.cursor() as cur: + cur.execute("SHOW TABLES LIKE %s", (table,)) + return cur.fetchone() is not None + + +def sync_messages(local_conn, cloud_conn, last_id: int) -> int: + logger.info(f"sync messages from id > {last_id}") + max_id = last_id + total = 0 + while True: + with local_conn.cursor() as cur: + cur.execute( + """ + SELECT id, source, chat_id, message_id, content, date, created_at + FROM messages + WHERE id > %s + ORDER BY id ASC + LIMIT %s + """, + (max_id, BATCH_SIZE), + ) + rows = cur.fetchall() + + if not rows: + break + + with cloud_conn.cursor() as cur: + for r in rows: + cur.execute( + """ + INSERT INTO messages (source, chat_id, message_id, content, date, created_at) + VALUES (%s, %s, %s, %s, %s, %s) + ON DUPLICATE KEY UPDATE + chat_id=VALUES(chat_id), + content=VALUES(content), + date=VALUES(date) + """, + ( + r["source"], + r["chat_id"], + r["message_id"], + r["content"], + r["date"], + r["created_at"], + ), + ) + max_id = max(max_id, int(r["id"])) + total += 1 + + logger.info(f"messages synced batch={len(rows)}, total={total}, max_id={max_id}") + + return max_id + + +def sync_small_table_full(local_conn, cloud_conn, table: str): + if not table_exists(local_conn, table): + logger.info(f"skip {table}: local table not exists") + return + + with local_conn.cursor() as cur: + cur.execute(f"SELECT * FROM {table}") + rows = cur.fetchall() + + if not rows: + logger.info(f"{table}: no rows") + return + + cols = list(rows[0].keys()) + col_sql = ", ".join(qid(c) for c in cols) + val_sql = ", ".join(["%s"] * len(cols)) + + # primary key handling for known small tables + if table == "sync_state": + pk = "source" + elif table == "clean_state": + pk = "pipeline_name" + else: + pk = cols[0] + + update_cols = [c for c in cols if c != pk] + update_sql = ", ".join([f"{qid(c)}=VALUES({qid(c)})" for c in update_cols]) + + with cloud_conn.cursor() as cur: + for r in rows: + cur.execute( + f""" + INSERT INTO {qid(table)} ({col_sql}) VALUES ({val_sql}) + ON DUPLICATE KEY UPDATE {update_sql} + """, + tuple(r[c] for c in cols), + ) + + logger.info(f"{table}: synced rows={len(rows)}") + + +def sync_structured_jobs(local_conn, cloud_conn, last_id: int, last_sync_at) -> tuple[int, str]: + logger.info( + f"sync structured_jobs from id > {last_id}, last_sync_at={last_sync_at}" + ) + + max_id = last_id + total = 0 + touched_ids = set() + + # 1) incremental new rows by id + while True: + with local_conn.cursor() as cur: + cur.execute( + """ + SELECT * FROM structured_jobs + WHERE id > %s + ORDER BY id ASC + LIMIT %s + """, + (max_id, BATCH_SIZE), + ) + rows = cur.fetchall() + + if not rows: + break + + _upsert_structured_rows(cloud_conn, rows) + for r in rows: + rid = int(r["id"]) + max_id = max(max_id, rid) + touched_ids.add(rid) + total += len(rows) + logger.info(f"structured_jobs incremental batch={len(rows)}, total={total}, max_id={max_id}") + + # 2) update window by cleaned_at (catch updated existing rows) + if last_sync_at is None: + last_sync_at = "1970-01-01 00:00:00" + if isinstance(last_sync_at, datetime): + last_sync_at = last_sync_at.strftime("%Y-%m-%d %H:%M:%S") + + while True: + with local_conn.cursor() as cur: + cur.execute( + """ + SELECT * FROM structured_jobs + WHERE cleaned_at > %s + ORDER BY cleaned_at ASC, id ASC + LIMIT %s + """, + (last_sync_at, BATCH_SIZE), + ) + rows = cur.fetchall() + + if not rows: + break + + # avoid repeated heavy updates in loop: only keep rows not already touched in incremental loop + delta = [r for r in rows if int(r["id"]) not in touched_ids] + if delta: + _upsert_structured_rows(cloud_conn, delta) + total += len(delta) + logger.info(f"structured_jobs update-window batch={len(delta)}, total={total}") + + # move cursor forward to avoid pagination loops on timestamp boundary + last_row_cleaned_at = rows[-1]["cleaned_at"] + if isinstance(last_row_cleaned_at, datetime): + last_sync_at = last_row_cleaned_at.strftime("%Y-%m-%d %H:%M:%S") + elif last_row_cleaned_at: + last_sync_at = str(last_row_cleaned_at) + + if len(rows) < BATCH_SIZE: + break + + now_utc = datetime.now(timezone.utc).strftime("%Y-%m-%d %H:%M:%S") + return max_id, now_utc + + +def _upsert_structured_rows(cloud_conn, rows: list[dict]): + if not rows: + return + cols = list(rows[0].keys()) + # id is local technical key, do not sync into cloud table (cloud has own auto id) + cols = [c for c in cols if c != "id"] + + col_sql = ", ".join(qid(c) for c in cols) + val_sql = ", ".join(["%s"] * len(cols)) + update_cols = [c for c in cols if c not in ("source", "message_id")] + update_sql = ", ".join( + [f"{qid(c)}=VALUES({qid(c)})" for c in update_cols] + + [f"{qid('cleaned_at')}=CURRENT_TIMESTAMP"] + ) + + with cloud_conn.cursor() as cur: + for r in rows: + cur.execute( + f""" + INSERT INTO {qid('structured_jobs')} ({col_sql}) + VALUES ({val_sql}) + ON DUPLICATE KEY UPDATE {update_sql} + """, + tuple(r[c] for c in cols), + ) + + +def sync_internship_raw(local_conn, cloud_conn, last_id: int) -> int: + if not table_exists(local_conn, "internship_jobs_raw"): + logger.info("skip internship_jobs_raw: local table not exists") + return last_id + + max_id = last_id + total = 0 + while True: + with local_conn.cursor() as cur: + cur.execute( + """ + SELECT * FROM internship_jobs_raw + WHERE id > %s + ORDER BY id ASC + LIMIT %s + """, + (max_id, BATCH_SIZE), + ) + rows = cur.fetchall() + + if not rows: + break + + cols = [c for c in rows[0].keys() if c != "id"] + col_sql = ", ".join(qid(c) for c in cols) + val_sql = ", ".join(["%s"] * len(cols)) + update_cols = [c for c in cols if c != "fingerprint"] + update_sql = ", ".join( + [f"{qid(c)}=VALUES({qid(c)})" for c in update_cols] + + [f"{qid('imported_at')}=CURRENT_TIMESTAMP"] + ) + + with cloud_conn.cursor() as cur: + for r in rows: + cur.execute( + f""" + INSERT INTO {qid('internship_jobs_raw')} ({col_sql}) + VALUES ({val_sql}) + ON DUPLICATE KEY UPDATE {update_sql} + """, + tuple(r[c] for c in cols), + ) + max_id = max(max_id, int(r["id"])) + total += 1 + + logger.info(f"internship_jobs_raw batch={len(rows)}, total={total}, max_id={max_id}") + + return max_id + + +def main(): + local_cfg, cloud_cfg = load_config() + logger.info( + "sync start: " + f"local={local_cfg['host']}:{local_cfg['port']}/{local_cfg['database']} -> " + f"cloud={cloud_cfg['host']}:{cloud_cfg['port']}/{cloud_cfg['database']}" + ) + + local_conn = connect_mysql(local_cfg) + cloud_conn = connect_mysql(cloud_cfg) + + try: + ensure_cloud_tables(cloud_conn) + ensure_destination_tables(local_conn, cloud_conn) + ensure_cloud_column(local_conn, cloud_conn, "internship_jobs_raw", "updated_at_utc") + state = get_cloud_state(cloud_conn) + logger.info(f"state before sync: {state}") + + state["last_messages_id"] = sync_messages( + local_conn, cloud_conn, int(state["last_messages_id"]) + ) + + sync_small_table_full(local_conn, cloud_conn, "sync_state") + sync_small_table_full(local_conn, cloud_conn, "clean_state") + + last_structured_id, last_structured_sync_at = sync_structured_jobs( + local_conn, + cloud_conn, + int(state["last_structured_jobs_id"]), + state["last_structured_sync_at"], + ) + state["last_structured_jobs_id"] = last_structured_id + state["last_structured_sync_at"] = last_structured_sync_at + + state["last_internship_id"] = sync_internship_raw( + local_conn, cloud_conn, int(state["last_internship_id"]) + ) + + set_cloud_state(cloud_conn, state) + logger.info(f"state after sync: {state}") + logger.info("sync done") + except Exception: + logger.exception("sync failed") + raise + finally: + local_conn.close() + cloud_conn.close() + + +if __name__ == "__main__": + main()