Files
taojianmin a3b4092a30 v1.1.1: 升级 AI 续聘建议为 LLM + Playwright RPA 采集 SmartCampus 平台材料
新增:

- scripts/service/platform_collector.py:Playwright RPA(持久化 browser profile 复用登录态),抓合同表(姓名/单位/到期日/剩余天数/预警/建议),逐行点"续聘材料包"按钮下载 PDF/Word 到 data/materials/

- scripts/service/material_parser.py:PDF/Word 文本提取(pypdf → pdf2image + pytesseract OCR 扫描件兜底;python-docx 抽 docx;antiword 兜底 .doc)

- scripts/service/llm_decision.py:AI 决策统一入口(优先调宿主 jiangchang_skill_core.llm_manager.call_llm_json;本地降级到规则版;输出 decision_source ∈ {llm, rules, rules_no_materials})

- scripts/db/migrations.py:idempotent ALTER/CREATE,建 materials_content 表 + renewal_tasks 加 decision_source / materials_summary 列

修改:

- scripts/db/connection.py:init_db() 自动调 apply_all() 应用 v1.1.1 迁移

- scripts/db/repository.py:加 insert_material / list_materials_for_contract / list_pending_materials / summarize_materials / get_task_full

- scripts/service/task_generator.py:AI 决策统一改为调 llm_decision.decide_suggestion(materials_summary=...);reason 文案加「已结合材料包(X 份文件,Y 字 / 待解析)综合判断:...」

- scripts/service/html_renderer.py:ctx 加 DECISION_SOURCE(LLM 推理 / 本地规则 / 本地规则(无材料))+ MATERIALS_COUNT

- scripts/templates/task.html.j2:footer 加 "AI 建议来源:{{DECISION_SOURCE}} · 已审阅材料 {{MATERIALS_COUNT}} 份"

- scripts/cli/app.py:新增 2 个 CLI(collect-from-platform / parse-materials);现有 9 个不动

- requirements.txt:playwright / pypdf / python-docx / pdf2image / pytesseract / Pillow

- .env.example:SMARTCAMPUS_BASE_URL / SMARTCAMPUS_PROFILE_DIR / MATERIALS_DOWNLOAD_DIR / OCR_LANG / LLM_MODEL_NAME / LLM_API_BASE_URL / LLM_API_TOKEN

- SKILL.md:version 1.1.0 → 1.1.1;用户意图路由表加 2 行;新增「数据来源」段(三层来源 + AI 决策透明化)

- README.md:使用前要准备 → 加 playwright install chromium 步骤

- CHANGELOG.md:v1.1.1 条目

- scripts/util/constants.py:SKILL_VERSION 1.1.0 → 1.1.1

本地验证:11 个 CLI 全部 exit 0;decision_source=rules;reason 含「已结合材料包(6 份文件,待解析)」;HTML footer 含决策来源。

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

83 lines
4.4 KiB
Markdown
Raw Permalink 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.
---
description: "每日凌晨扫描全校教职工合同电子台账,对距离到期日 90/60/30 天的合同分级预警,自动生成个人版续聘任务书和单位版本月到期清单。"
---
# 合同到期智能预警与续聘辅助
每日凌晨自动扫描全校教职工合同电子台账,对距离到期日 90 天 / 60 天 / 30 天的合同分别给黄 / 橙 / 红三级预警,自动生成《续聘准备任务书》推给教师本人,把《本月合同到期人员清单及续聘建议》推给二级单位人事秘书,把劳动纠纷和年终突击签合同彻底挡在门外。
---
## 这个技能能帮你做什么
- **每日凌晨自动扫描**:无需人工介入,按合同到期日距今 90/60/30 天分别给出黄/橙/红三级预警
- **自动预填续聘考核表**:根据该教师近 3 年年度考核结果和师德师风考评,自动生成「近三年工作业绩摘要」
- **AI 建议续聘意见**:依据考核结果(优秀/称职/基本称职/不称职),给出续聘 / 续聘观察 / 不续聘的建议,并附理由(如「连续两年考核排名后 10%」)
- **双轨派发**:个人版《续聘准备任务书》发给教师本人;单位版《本月合同到期人员清单》发给二级单位人事秘书
- **红头预警自动抄送**:30 天红色紧急提醒自动抄送分管校领导
---
## 适合什么场景
- 人事处合同管理员想从「年底集中突击签合同」转向「全年前置预警」
- 二级单位人事秘书每月初就想知道本月谁需要办续聘、还差什么材料
- 教师本人提前 90 天就知道合同什么时候到期、需要准备什么材料
- 分管校领导 30 天内必须知道谁有合同逾期风险
---
## 使用前需要准备什么
- 合同电子台账数据已与人事系统同步(合同类型、起止日期、聘任岗位、试用期)
- 该教师近 3 年年度考核结果可由党委教师工作部系统接口获取
- 师德师风考评记录可由党委教师工作部系统接口获取
- 二级单位人事秘书通讯录已登记到本技能 `.env`
- **(v1.1.1)首次启用 SmartCampus HR 平台采集**:运行 `playwright install chromium` 下载浏览器;用 `python scripts/main.py collect-from-platform --show-browser` 弹出浏览器手工登录一次保存 cookie
---
## 怎么使用
本技能支持**数据管理**(合同台账表上点工具栏按钮)、**对话任务**(自然语言让 Agent 完成)、**定时任务**(每日凌晨 02:00 自动扫描)。三种入口触发同一套业务能力。
**逐步操作与排障,请查看技能市场「使用教程」Tab。**
---
## 执行后你会得到什么
- **个人版《续聘准备任务书》**:发给教师本人,含合同基本信息、近三年业绩摘要、续聘建议、所需材料清单、截止时间
- **单位版《本月合同到期人员清单及续聘建议》**:发给二级单位人事秘书,含本月全部到期 / 即将到期人员名单、AI 续聘建议、任务派发状态
- **预警提醒**:90 天黄色 / 60 天橙色 / 30 天红色,三档分级
- **任务派发日志**:每一条预警的派发状态、接收人、是否已读
---
## 注意事项
- 本技能**不替代人事处终审**,续聘 / 不续聘的最终决定权仍由人事处与分管校领导行使
- 涉及劳动合同解除 / 不续聘的处分性决定仍须走线下流程,技能仅给出 AI 建议
- 考核结果、师德师风数据延迟同步可能导致预警等级失真,建议每日扫描完成后人工核对一次
- 30 天红色预警触发后,系统将自动抄送分管校领导,请勿手动屏蔽通知
---
## 常见问题
### 这个技能适合我吗?
> 如果你的工作包含「管理全校教职工劳动合同 + 每月办理续签」,本技能可以接管日常预警与材料预填。
### 教师本人能看到 AI 建议的续聘意见吗?
> 个人版《续聘准备任务书》默认**不展示 AI 续聘建议**,仅展示业绩摘要与所需材料;单位版《清单》才展示 AI 建议,避免给教师造成预判压力。
### 数据来源(考核、师德)延迟怎么办?
> 技能每日凌晨扫描时若发现考核数据缺失,会将该合同标记为「数据待补」并跳过预警;考核数据补齐后会自动重新触发。
### 试用期合同也在扫描范围内吗?
> 是。试用期合同同样按到期日距今 90/60/30 天分级预警;试用期考核不通过的处理建议由人事处另行判定。