All checks were successful
技能自动化发布 / release (push) Successful in 7s
按 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>
70 lines
2.4 KiB
Plaintext
70 lines
2.4 KiB
Plaintext
# 合同到期智能预警与续聘辅助 - 配置示例
|
||
# 行头说明「是什么」;行尾说明「怎么填」;进程环境变量 > 用户 .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=
|
||
|