9.5 KiB
name, description, version, author, metadata, allowed-tools
| name | description | version | author | metadata | allowed-tools | |||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 合同到期智能预警与续聘辅助 | 当用户说要扫描即将到期的合同、查 90/60/30 天预警名单、给某位教师生成续聘任务书、下发单位版续聘清单、从 SmartCampus HR 平台抓合同数据、解析续聘材料 PDF/Word、查看本月合同到期人员清单时,加载本技能。支持定时扫描(每日凌晨)+ 数据管理 + Agent 三入口,覆盖合同到期智能预警与续聘辅助全流程。 | 1.1.29 | 深圳匠厂科技有限公司 |
|
|
合同到期智能预警与续聘辅助(alert-contract-expiring-hr)
这是基于匠厂 skill-template 主仓 v1.0.108 派生的业务技能。覆盖需求规格书第 4.2 节「🟡 人事处 Skill 002 —— 合同到期"智能预警与续聘辅助"」。
Agent / 宿主编排(复制为业务技能后必改)
AI + RPA 定位
- Agent 是入口与编排者:理解用户意图("扫描本月即将到期的合同"、"给张三生成续聘任务书")、补齐参数、判断风险、选择 Action,并用业务语言解释结果。
- 本技能不涉及浏览器 / 桌面 / 手机 RPA:合同台账读取走人事系统官方 API,考核数据走党委教师工作部 API。
- 开发者与 AI 编程工具先读
development/AI_RPA.md。
架构铁律(先读)
- 宿主产品入口平级:对话任务 / 数据管理 / 定时任务是同一技能能力的不同触发场景,同等重要;本技能重点挂定时任务入口(每日凌晨扫描)。
- 单业务内核、多入口:数据管理 / 定时任务 / Agent / 技能详情 / 直接 CLI 必须复用同一 domain service;禁止按入口复制业务逻辑。
- 业务行生命周期:本技能对合同台账表的每一份合同有"可预警 / 预警中 / 已续聘 / 已驳回"角色约束,遵守
references/WORK_ITEM_STATUS.md。 - HTML 整页报告:本技能输出个人版《续聘准备任务书》走
render-html;单位版清单走 PDF 导出。
如何触发(能力类型)
| 你要做什么 | Agent 怎么做 | 进任务中心? |
|---|---|---|
| 健康检查 / 短查询 | OpenClaw bash/exec + 共享 Python 跑 CLI | 否 |
| 已声明 sync 的 Action | run_skill_action 或等效短 CLI |
否 |
| 长任务(每日凌晨扫描全校 1000+ 份合同) | 必须 run_skill_action |
是(仅因 async) |
用户意图路由表(业务技能复制后必改)
| 用户意图(本技能自填) | Agent 怎么做 | 进任务中心? |
|---|---|---|
| 检查运行环境 | 短 CLI:python {baseDir}/scripts/main.py health |
否 |
| 查看版本 | 短 CLI:python {baseDir}/scripts/main.py version |
否 |
| 查看配置位置 | 短 CLI:python {baseDir}/scripts/main.py config-path |
否 |
| 每日凌晨定时扫描合同到期 | run_skill_action → scan-expiring-contracts(cron / agent) |
是(async) |
| 给某位教师生成续聘任务书 | run_skill_action → generate-renewal-task(输入:contract_id) |
否(sync) |
| 下发单位版续聘清单 | run_skill_action → dispatch-task-notice(输入:unit_id 或 month) |
否(sync) |
| 标记合同为已续签 | run_skill_action → mark-contract-renewed(输入:contract_id + 续签材料 ID) |
否(sync) |
| 在浏览器中打开续聘任务书 | run_skill_action → render-html |
否(sync) |
| 从 SmartCampus 平台抓合同 + 材料 | run_skill_action → collect-from-platform(首次需用户手工登录保存 profile) |
否(sync) |
| 解析已下载材料 PDF/Word | run_skill_action → parse-materials(可选 --contract-id) |
否(sync) |
| 查看运行时配置(脱敏) | run_skill_action → show-config |
否(sync) |
| 查看运行日志末尾 N 行 | run_skill_action → logs-list(默认 tail=200、level=INFO) |
否(sync) |
| 批量下载材料包(队列) | run_skill_action → download-materials(输入:itemIds / pickCount) |
是(async) |
| 扫描输入目录并入库 CSV/材料 | run_skill_action → import-input |
是(async) |
共享 Python(必读)
宿主共享 runtime 在 {JIANGCHANG_DATA_ROOT}/python-runtime/.venv,并已前置到 PATH(同时设 VIRTUAL_ENV)。短 CLI 一条命令直接跑:
python {baseDir}/scripts/main.py health
python {baseDir}/scripts/main.py version
python {baseDir}/scripts/main.py config-path
python {baseDir}/scripts/main.py init-db
数据来源(v1.1.1)
本技能合同 / 业绩数据有 三层来源,按优先级:
- HR 系统 API(生产环境推荐):通过宿主
jiangchang_skill_core包揽 - SmartCampus HR 平台 RPA 采集(v1.1.1 新增):
collect-from-platformCLI 用 Playwright 抓https://sandbox.jc2009.com/industries/campus/smartcampus/app/hr/contracts表格 6 列(姓名/单位/到期日/剩余天数/预警/建议)→ 落contracts表- 当前 sandbox mock 未部署「续聘材料包」按钮,RPA 仅能采集 6 列台账;材料下载功能预留,sandbox 后端补按钮后自动启用
parse-materialsCLI +material_parser(pypdf/python-docx/OCR)已实现,本地data/materials/放 PDF/Word 即可跑解析
- 样例 CSV(本地开发):
examples/contracts_sample.csv+performance_sample.csv,首次init-db自动加载
AI 续聘建议(v1.1.1)默认调宿主 jiangchang_skill_core.llm_manager.call_llm_json;本地无 LLM 时降级到规则版(基于分数阈值),并在 renewal_tasks.decision_source 列标注 llm / rules / rules_no_materials 三种来源。
- 公共库来自共享 venv 的
jiangchang-platform-kit>=1.2.11(包名路径jiangchang_skill_core);不要 vendorscripts/jiangchang_skill_core/。 - 根目录
requirements.txt只声明技能特有依赖;不要写jiangchang-platform-kit/playwright。 metadata.openclaw.platform_kit_min_version是宿主兼容声明,不是 pip 依赖。health用collect_runtime_diagnostics做只读诊断。
配置:仓库 .env.example 为模板;用户 .env 在 {JIANGCHANG_DATA_ROOT}/{JIANGCHANG_USER_ID}/{slug}/.env。优先级:进程环境变量 > 用户 .env > .env.example。
面向用户问答(LLM 规则)
- 本文(
SKILL.md)是 LLM / OpenClaw 平台读取的技能入口,不是用户市场说明。 - 根目录市场材料面向普通用户(见下方「文档分工」),不是 Agent 调用契约。
当用户询问以下问题时,必须优先读取根目录 README.md(能力说明)与 TUTORIAL.md(逐步用法):
- 这个技能是做什么的
- 这个技能怎么用
- 适合什么场景
- 使用前要准备什么
- 执行后会得到什么
- 能不能帮我完成某个业务任务
回答「怎么用 / 能做什么」时的要求:
- 「能做什么 / 场景 / 概念类 FAQ」以
README.md(说明 Tab)为主;「点哪里 / 说什么 / 排障」以TUTORIAL.md(教程 Tab)为主。 - 禁止在回答中粘贴
python …/scripts/main.py …或其它命令行。 - 禁止为答用法而去
dir/ls/ 列技能目录。 - 不要向普通用户暴露 Playwright、DOM、Python、RPA、库表名、
error_code等实现细节。 - 用户问「怎么用」时:优先读
TUTORIAL.md。
文档分工
| 文档 | 读者 | 用途 |
|---|---|---|
根目录 README.md |
普通用户 | 市场 说明 Tab |
根目录 TUTORIAL.md |
普通用户 | 市场 教程 Tab |
根目录 DEMO.md |
普通用户 | 市场 演示 Tab |
根目录 CHANGELOG.md |
普通用户 | 市场 更新日志 Tab |
SKILL.md(本文) |
LLM / OpenClaw 平台 | 技能入口、触发与运行契约摘要 |
references/ |
Agent 编排 / 调用 | CLI、Action、schema 契约 |
development/ |
开发者 / AI 编程代理 | 需求、开发教程、测试、深度技术规范 |
目录约定
assets/、development/、evals/、references/、scripts/、tests/- CLI 入口固定为
scripts/main.py - 业务逻辑按
cli / db / service / util分层
技能命名与 slug
- slug:
alert-contract-expiring-hr(alert动词 +contract-expiring名词 +hr人事处缩写) - name:用户可见的中文业务名称;
description是说明,不是名称。 - 目录名、默认
{slug}.db使用 slug,不使用中文。
平台元数据
metadata.openclaw.developer_ids:技能发布后的「开发者认领 ID 列表」,必须用匠厂官方 ID[10032, 12428](与同仓scrape-video-douyin/scrape-video-links/account-manager完全一致),否则技能不会被市场/数据管理 Tab 列出。brands字段可选;不写默认会挂到全部市场。
本技能开发状态: v1.1.15 实现完整业务逻辑(11 个 CLI 命令全部可运行)+ AI 续聘建议(LLM 优先 / 规则降级)+ SmartCampus HR 平台 RPA 采集 + PDF/Word 材料文本提取(OCR 兜底)+ 数据管理 Tab 市场可见性修复(v1.1.15);业务细节见
CHANGELOG.md。