fix: require strictly increasing renewal scores
All checks were successful
技能自动化发布 / release (push) Successful in 6s
All checks were successful
技能自动化发布 / release (push) Successful in 6s
This commit is contained in:
@@ -2,6 +2,11 @@
|
|||||||
|
|
||||||
本文件对应技能市场 **「更新日志」** Tab。
|
本文件对应技能市场 **「更新日志」** Tab。
|
||||||
|
|
||||||
|
## 1.1.16
|
||||||
|
|
||||||
|
- 修复续聘建议中的趋势判定:仅近三年考核分数严格递增才建议续聘;成绩持平或回落均进入常规续聘评审。
|
||||||
|
- 新增回归测试,覆盖 `80 → 80 → 90` 的成绩持平场景。
|
||||||
|
|
||||||
## 1.1.15
|
## 1.1.15
|
||||||
|
|
||||||
- **修复「数据管理」Tab 看不到(关键根因:`developer_ids` 是占位 ID)**
|
- **修复「数据管理」Tab 看不到(关键根因:`developer_ids` 是占位 ID)**
|
||||||
|
|||||||
5
SKILL.md
5
SKILL.md
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
name: 合同到期智能预警与续聘辅助
|
name: 合同到期智能预警与续聘辅助
|
||||||
description: "当用户说要扫描即将到期的合同、查 90/60/30 天预警名单、给某位教师生成续聘任务书、下发单位版续聘清单、从 SmartCampus HR 平台抓合同数据、解析续聘材料 PDF/Word、查看本月合同到期人员清单时,加载本技能。支持定时扫描(每日凌晨)+ 数据管理 + Agent 三入口,覆盖合同到期智能预警与续聘辅助全流程。"
|
description: "当用户说要扫描即将到期的合同、查 90/60/30 天预警名单、给某位教师生成续聘任务书、下发单位版续聘清单、从 SmartCampus HR 平台抓合同数据、解析续聘材料 PDF/Word、查看本月合同到期人员清单时,加载本技能。支持定时扫描(每日凌晨)+ 数据管理 + Agent 三入口,覆盖合同到期智能预警与续聘辅助全流程。"
|
||||||
version: 1.1.15
|
version: 1.1.16
|
||||||
author: 深圳匠厂科技有限公司
|
author: 深圳匠厂科技有限公司
|
||||||
metadata:
|
metadata:
|
||||||
openclaw:
|
openclaw:
|
||||||
@@ -12,6 +12,9 @@ metadata:
|
|||||||
developer_ids:
|
developer_ids:
|
||||||
- 10032
|
- 10032
|
||||||
- 12428
|
- 12428
|
||||||
|
brands: # 可选;未写则发布后仅挂匠厂市场(jiangchang)
|
||||||
|
- jiangchang # 匠厂主站
|
||||||
|
- huashang # 华商等 OEM:按目标市场填写,可多选
|
||||||
|
|
||||||
allowed-tools:
|
allowed-tools:
|
||||||
- bash
|
- bash
|
||||||
|
|||||||
@@ -369,7 +369,9 @@ try {
|
|||||||
Invoke-Git -GitArgs @("fetch", "--tags", "--prune", "origin")
|
Invoke-Git -GitArgs @("fetch", "--tags", "--prune", "origin")
|
||||||
}
|
}
|
||||||
|
|
||||||
$skillRoot = (Get-GitOutput -GitArgs @("rev-parse", "--show-toplevel") | Select-Object -First 1).Trim()
|
# Git output can be decoded through the legacy console code page on Windows
|
||||||
|
# PowerShell 5.1, corrupting a repository path that contains Chinese characters.
|
||||||
|
$skillRoot = $PSScriptRoot
|
||||||
if (Test-Path -LiteralPath (Join-Path $skillRoot "SKILL.md")) {
|
if (Test-Path -LiteralPath (Join-Path $skillRoot "SKILL.md")) {
|
||||||
Assert-SkillReleasePackagingSources -SkillRoot $skillRoot
|
Assert-SkillReleasePackagingSources -SkillRoot $skillRoot
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ def suggest(perf_records: list[sqlite3.Row]) -> tuple[str, str]:
|
|||||||
|
|
||||||
# 全部 >= 80 且逐年上升(升序排 → 严格递增)
|
# 全部 >= 80 且逐年上升(升序排 → 严格递增)
|
||||||
all_high = all(s >= PERFORMANCE_RENEW_MIN for s in scores)
|
all_high = all(s >= PERFORMANCE_RENEW_MIN for s in scores)
|
||||||
upward = all(scores[i] <= scores[i + 1] for i in range(len(scores) - 1))
|
upward = all(scores[i] < scores[i + 1] for i in range(len(scores) - 1))
|
||||||
if all_high and upward:
|
if all_high and upward:
|
||||||
return ("renew", f"近 3 年考核均 ≥ {PERFORMANCE_RENEW_MIN} 分且逐年上升")
|
return ("renew", f"近 3 年考核均 ≥ {PERFORMANCE_RENEW_MIN} 分且逐年上升")
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
SKILL_SLUG = "alert-contract-expiring-hr"
|
SKILL_SLUG = "alert-contract-expiring-hr"
|
||||||
SKILL_VERSION = "1.1.15"
|
SKILL_VERSION = "1.1.16"
|
||||||
LOG_LOGGER_NAME = "openclaw.skill.alert_contract_expiring_hr"
|
LOG_LOGGER_NAME = "openclaw.skill.alert_contract_expiring_hr"
|
||||||
PLATFORM_KIT_MIN_VERSION = "1.2.11"
|
PLATFORM_KIT_MIN_VERSION = "1.2.11"
|
||||||
|
|
||||||
|
|||||||
@@ -386,6 +386,20 @@ def test_suggest_renew_upward() -> tuple[bool, str]:
|
|||||||
return True, "renew + 上升趋势"
|
return True, "renew + 上升趋势"
|
||||||
|
|
||||||
|
|
||||||
|
def test_suggest_observe_equal_scores_not_renew() -> tuple[bool, str]:
|
||||||
|
"""持平不算逐年上升;应回落到 observe"""
|
||||||
|
from service.task_generator import suggest
|
||||||
|
rows = [
|
||||||
|
_fake_perf(2023, 80, moral=85),
|
||||||
|
_fake_perf(2024, 80, moral=85),
|
||||||
|
_fake_perf(2025, 90, moral=85),
|
||||||
|
]
|
||||||
|
s, r = suggest(rows)
|
||||||
|
if s != "observe":
|
||||||
|
return False, f"suggest(80,80,90) = {s}, want observe"
|
||||||
|
return True, "观察:持平不等于逐年上升"
|
||||||
|
|
||||||
|
|
||||||
def test_suggest_observe_default() -> tuple[bool, str]:
|
def test_suggest_observe_default() -> tuple[bool, str]:
|
||||||
"""达标但非逐年上升 → observe(常规评审)"""
|
"""达标但非逐年上升 → observe(常规评审)"""
|
||||||
from service.task_generator import suggest
|
from service.task_generator import suggest
|
||||||
@@ -709,10 +723,11 @@ def main() -> int:
|
|||||||
_run("db/upsert_performance_record", test_upsert_performance_record_grade_mapping)
|
_run("db/upsert_performance_record", test_upsert_performance_record_grade_mapping)
|
||||||
_run("task_generator/suggest_empty", test_suggest_empty_records)
|
_run("task_generator/suggest_empty", test_suggest_empty_records)
|
||||||
_run("task_generator/suggest_low_moral", test_suggest_low_moral)
|
_run("task_generator/suggest_low_moral", test_suggest_low_moral)
|
||||||
_run("task_generator/suggest_fail_year", test_suggest_fail_year)
|
_run("task_generator/suggest_fail_year", test_suggest_fail_year)
|
||||||
_run("task_generator/suggest_renew", test_suggest_renew_upward)
|
_run("task_generator/suggest_renew", test_suggest_renew_upward)
|
||||||
_run("task_generator/suggest_observe", test_suggest_observe_default)
|
_run("task_generator/suggest_equal_scores", test_suggest_observe_equal_scores_not_renew)
|
||||||
_run("scanner/no_alerts", test_scanner_no_alerts)
|
_run("task_generator/suggest_observe", test_suggest_observe_default)
|
||||||
|
_run("scanner/no_alerts", test_scanner_no_alerts)
|
||||||
_run("scanner/three_levels", test_scanner_three_levels)
|
_run("scanner/three_levels", test_scanner_three_levels)
|
||||||
_run("scanner/skips_non_active", test_scanner_skips_non_active_contracts)
|
_run("scanner/skips_non_active", test_scanner_skips_non_active_contracts)
|
||||||
_run("html_renderer/basic", test_html_render_basic)
|
_run("html_renderer/basic", test_html_render_basic)
|
||||||
|
|||||||
Reference in New Issue
Block a user