Files
alert-contract-expiring-hr/.env.example
taojianmin 6437d6e414
All checks were successful
技能自动化发布 / release (push) Successful in 7s
v1.1.6: 按 skill-template human_verification 设计模式重构 RPA
按 skill-template examples/real_browser_rpa 设计模式重构 platform_collector,
把 v1.1.5 修复的硬编码等待时间统一抽到 constants.py,并补上手工登录 fallback
和结构化错误码。

核心改动:
- constants.py 新增 24 个 RPA 常量(HUMAN_WAIT_TIMEOUT=180 / HUMAN_POLL_INTERVAL=2.0 /
  DEFAULT_PAGE_TIMEOUT_MS=15s / GOTO_TIMEOUT_MS=60s / SPA_LOGIN_* / TABLE_* /
  SIDEBAR_LINK_TIMEOUT_MS 等),与 skill-template human_verification 同名常量对齐
- platform_collector 重构:
  * 新增 RPAError / LoginTimeoutError (ERROR:LOGIN_TIMEOUT) /
    MissingBrowserError (ERROR:MISSING_BROWSER) / TableNotFoundError (ERROR:TABLE_NOT_FOUND)
  * 新增 _is_logged_in / _wait_for_manual_login(轮询 + 180s 兜底,与
    skill-template task_rpa.py::_ensure_logged_in 对齐)
  * _fill_spa_login 自动 fill 失败时 → 自动 fallback _wait_for_manual_login
    (仅 --show-browser 模式;headless 模式抛 LoginTimeoutError 退出码 2)
  * 所有 wait_for_timeout / wait_for_selector timeout 替换为常量
  * collect_all() 加 human_wait_timeout 参数(CLI 透传)
  * page.set_default_timeout(DEFAULT_PAGE_TIMEOUT_MS) 覆盖 Playwright 默认 15s
- app.py cmd_collect_platform:
  * 捕获 RPAError → JSON 输出 {error: e.code, detail: ...} + exit 2
  * 新增 --human-wait-timeout N flag
- requirements.txt:删除违规的 playwright>=1.40.0(playwright 由宿主 jiangchang_skill_core
  runtime 提供,文件顶部注释已声明)
- .env.example:新增 HUMAN_WAIT_TIMEOUT / RPA_PAGE_TIMEOUT_MS / RPA_GOTO_TIMEOUT_MS
  覆盖项
- tests/run_tests.py:新增 7 个 platform_collector 纯函数测试
  (_gen_contract_id × 2 / _normalize_date × 2 / _parse_days × 2 / _parse_alert)
- SKILL.md version 1.1.5 → 1.1.6;CHANGELOG.md 加 1.1.6 条目

测试:28/28 通过(21 原有 + 7 新增)
POLICY-RELEASE-001:SKILL.md=1.1.6 == CHANGELOG=1.1.6 == SKILL_VERSION=1.1.6

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-14 17:29:08 +08:00

70 lines
2.4 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 合同到期智能预警与续聘辅助 - 配置示例
# 行头说明「是什么」;行尾说明「怎么填」;进程环境变量 > 用户 .env > 本文件
# 本地路径配置(宿主环境由 jiangchang_skill_core 提供)
# SQLite DB 文件路径(默认 {skill_root}/data/alert-contract-expiring-hr.db)
DB_PATH=
# HTML 输出目录(默认 {skill_root}/output)
HTML_OUTPUT_DIR=
# 数据根(默认 {skill_root}/data)
JIANGCHANG_DATA_DIR=
# 人事系统 API 入口,例如 https://hr.example.edu/api/v1
HR_API_BASE_URL=
# 人事系统 API 调用凭证(Bearer Token),由人事处统一发放
HR_API_TOKEN=
# 党委教师工作部 API 入口,例如 https://teacher-affairs.example.edu/api/v1
TEACHER_AFFAIRS_API_BASE_URL=
# 党委教师工作部 API 调用凭证
TEACHER_AFFAIRS_API_TOKEN=
# 企业微信 API 入口,用于推送个人版任务书和单位版清单
WECOM_API_BASE_URL=https://qyapi.weixin.qq.com/cgi-bin
# 企业微信 API 调用凭证
WECOM_API_TOKEN=
# 扫描阈值(天),距到期日小于等于此值触发对应等级预警;逗号分隔黄/橙/红
ALERT_THRESHOLDS=90,60,30
# 每日扫描时间(HH:MM,24h 制),cron 启用时使用
DAILY_SCAN_AT=02:00
# 全校扫描超时(秒),默认 120
SCAN_TIMEOUT_SEC=120
# 日志级别
LOG_LEVEL=INFO
# ----- v1.1.1:SmartCampus HR 平台 RPA -----
# 平台基础 URL(默认 sandbox)
SMARTCAMPUS_BASE_URL=https://sandbox.jc2009.com
# HR 合同管理路径
SMARTCAMPUS_HR_PATH=/industries/campus/smartcampus/app/hr/contracts
# Playwright 持久化浏览器 profile(首次手工登录后保存 cookie)
SMARTCAMPUS_PROFILE_DIR=
# 材料包下载目录(PDF/Word)
MATERIALS_DOWNLOAD_DIR=
# OCR 语言(pytesseract:默认 chi_sim+eng)
OCR_LANG=chi_sim+eng
# ----- v1.1.6:RPA 超时覆盖(与 skill-template human_verification 对齐)-----
# 手工登录等待超时(秒,默认 180 = HUMAN_WAIT_TIMEOUT)
HUMAN_WAIT_TIMEOUT=
# Playwright 默认操作超时(毫秒,默认 15000)
RPA_PAGE_TIMEOUT_MS=
# page.goto 导航超时(毫秒,默认 60000)
RPA_GOTO_TIMEOUT_MS=
# ----- v1.1.1:AI 决策(宿主 LLM) -----
# 宿主 jiangchang_skill_core.llm_manager 调 LLM 时,模型名覆盖(可选)
LLM_MODEL_NAME=
# LLM API base URL(生产由宿主注入;本地留空走降级)
LLM_API_BASE_URL=
# LLM API token(生产由宿主注入;本地留空)
LLM_API_TOKEN=