Files
alert-contract-expiring-hr/examples/performance_sample.csv
taojianmin 06c053d7d7 v1.1.0: 实现核心业务逻辑(扫描/任务书/派发/状态机)
新增(scripts/ 分层完整实现):
- scripts/util/{constants,date_util,runtime_paths,logging_setup}.py
- scripts/db/{connection,seed_data,repository}.py(SQLite + 5 张表 + 50 份样例合同)
- scripts/service/{scanner,task_generator,dispatcher,html_renderer}.py
- scripts/cli/app.py(argparse 子命令)
- scripts/templates/task.html.j2(Jinja2 渲染,无 jinja2 时降级到 str.replace)
- examples/{contracts_sample,performance_sample}.csv(本地样例数据)

修改:
- scripts/main.py:argparse + jiangchang_skill_core 降级
- SKILL.md:version 1.0.1 → 1.1.0
- CHANGELOG.md:加 v1.1.0 条目
- .env.example:加 DB_PATH / HTML_OUTPUT_DIR / JIANGCHANG_DATA_DIR

本地验证(9 个 CLI 命令全部 exit code = 0):
- health / version / config-path / init-db:基础 4 命令
- scan-expiring-contracts --thresholds 90,60,30:42 份可续聘 → 红 10 / 橙 10 / 黄 10,生成 30 任务
- render-html:写 output/<task_id>.html(4.9 KB)
- generate-renewal-task:单份合同任务书生成
- mark-contract-renewed:状态机更新 + 关闭 open alerts
- dispatch-task-notice:按单位/月份派发 payload(dry-run 模式)

业务规则(AI 续聘建议本地版,规则顺序判断):
1. 师德 < 60 → non_renew
2. 近 3 年考核有不合格(< 60)→ observe
3. 全部 >= 80 且逐年上升 → renew
4. 其他 → observe

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

152 lines
4.2 KiB
CSV

record_id,contract_id,year,performance_score,moral_teaching_score,research_score,teaching_score
R0001,C001,2023,89,93,93,84
R0002,C001,2024,87,93,84,86
R0003,C001,2025,77,93,71,79
R0004,C002,2023,75,93,84,70
R0005,C002,2024,80,93,90,80
R0006,C002,2025,95,93,89,98
R0007,C003,2023,80,86,77,81
R0008,C003,2024,76,86,80,78
R0009,C003,2025,93,86,87,88
R0010,C004,2023,88,78,90,90
R0011,C004,2024,90,78,91,88
R0012,C004,2025,77,78,77,77
R0013,C005,2023,92,97,91,88
R0014,C005,2024,82,97,76,86
R0015,C005,2025,76,97,83,81
R0016,C006,2023,92,99,98,91
R0017,C006,2024,93,99,91,88
R0018,C006,2025,81,99,80,85
R0019,C007,2023,79,93,69,74
R0020,C007,2024,76,93,70,75
R0021,C007,2025,91,93,96,88
R0022,C008,2023,75,91,82,78
R0023,C008,2024,75,91,74,80
R0024,C008,2025,95,91,98,94
R0025,C009,2023,78,87,84,82
R0026,C009,2024,86,87,96,86
R0027,C009,2025,95,87,100,94
R0028,C010,2023,84,80,78,80
R0029,C010,2024,79,80,81,76
R0030,C010,2025,93,80,99,95
R0031,C011,2023,83,88,81,78
R0032,C011,2024,78,88,76,75
R0033,C011,2025,84,88,93,79
R0034,C012,2023,91,88,83,93
R0035,C012,2024,82,88,77,81
R0036,C012,2025,77,88,79,75
R0037,C013,2023,77,98,82,77
R0038,C013,2024,76,98,85,73
R0039,C013,2025,85,98,94,80
R0040,C014,2023,91,87,96,92
R0041,C014,2024,85,87,90,90
R0042,C014,2025,93,87,84,91
R0043,C015,2023,86,88,84,86
R0044,C015,2024,79,88,71,79
R0045,C015,2025,91,88,83,95
R0046,C016,2023,94,78,94,93
R0047,C016,2024,90,78,88,85
R0048,C016,2025,55,78,55,51
R0049,C017,2023,93,78,96,92
R0050,C017,2024,79,78,86,78
R0051,C017,2025,85,78,76,85
R0052,C018,2023,80,76,77,79
R0053,C018,2024,84,76,77,83
R0054,C018,2025,95,76,88,100
R0055,C019,2023,85,81,90,89
R0056,C019,2024,86,81,79,84
R0057,C019,2025,94,81,93,95
R0058,C020,2023,82,76,82,78
R0059,C020,2024,90,76,92,89
R0060,C020,2025,75,76,84,74
R0061,C021,2023,83,90,77,79
R0062,C021,2024,79,90,85,81
R0063,C021,2025,77,90,74,79
R0064,C022,2023,93,76,97,96
R0065,C022,2024,81,76,85,86
R0066,C022,2025,91,76,86,94
R0067,C023,2023,85,99,82,81
R0068,C023,2024,86,99,89,82
R0069,C023,2025,83,99,77,86
R0070,C024,2023,77,95,74,77
R0071,C024,2024,78,95,72,77
R0072,C024,2025,89,95,88,94
R0073,C025,2023,75,97,68,80
R0074,C025,2024,82,97,78,87
R0075,C025,2025,90,97,98,94
R0076,C026,2023,79,75,75,74
R0077,C026,2024,93,75,84,91
R0078,C026,2025,90,75,80,87
R0079,C027,2023,80,76,75,85
R0080,C027,2024,94,76,98,95
R0081,C027,2025,77,76,74,77
R0082,C028,2023,83,76,92,81
R0083,C028,2024,79,76,74,83
R0084,C028,2025,81,76,86,77
R0085,C029,2023,90,84,80,95
R0086,C029,2024,81,84,76,77
R0087,C029,2025,75,84,65,75
R0088,C030,2023,92,79,90,95
R0089,C030,2024,84,79,75,86
R0090,C030,2025,94,79,96,95
R0091,C031,2023,90,91,93,93
R0092,C031,2024,79,91,83,84
R0093,C031,2025,84,91,85,87
R0094,C032,2023,85,88,78,82
R0095,C032,2024,92,88,90,95
R0096,C032,2025,91,88,99,91
R0097,C033,2023,88,98,90,88
R0098,C033,2024,83,98,90,87
R0099,C033,2025,86,98,85,81
R0100,C034,2023,80,97,83,84
R0101,C034,2024,94,97,90,89
R0102,C034,2025,95,97,86,96
R0103,C035,2023,82,76,90,79
R0104,C035,2024,90,76,86,95
R0105,C035,2025,77,76,73,73
R0106,C036,2023,83,91,83,87
R0107,C036,2024,95,91,100,98
R0108,C036,2025,76,91,86,74
R0109,C037,2023,79,98,78,84
R0110,C037,2024,94,98,93,98
R0111,C037,2025,75,98,67,74
R0112,C038,2023,95,89,86,96
R0113,C038,2024,87,89,87,87
R0114,C038,2025,92,89,88,92
R0115,C039,2023,90,91,96,91
R0116,C039,2024,86,91,79,89
R0117,C039,2025,81,91,84,82
R0118,C040,2023,76,98,84,81
R0119,C040,2024,82,98,72,80
R0120,C040,2025,91,98,84,92
R0121,C041,2023,84,99,76,81
R0122,C041,2024,85,99,78,83
R0123,C041,2025,81,99,79,82
R0124,C042,2023,82,99,86,78
R0125,C042,2024,80,99,70,79
R0126,C042,2025,79,99,79,78
R0127,C043,2023,94,82,98,99
R0128,C043,2024,77,82,71,78
R0129,C043,2025,91,82,97,93
R0130,C044,2023,75,82,79,73
R0131,C044,2024,78,82,73,83
R0132,C044,2025,88,82,79,83
R0133,C045,2023,93,94,100,97
R0134,C045,2024,76,94,77,73
R0135,C045,2025,79,94,82,80
R0136,C046,2023,81,86,71,86
R0137,C046,2024,82,86,82,82
R0138,C046,2025,78,86,82,76
R0139,C047,2023,79,83,73,78
R0140,C047,2024,89,83,97,86
R0141,C047,2025,92,83,90,93
R0142,C048,2023,92,81,87,91
R0143,C048,2024,84,81,89,83
R0144,C048,2025,85,81,78,81
R0145,C049,2023,81,86,80,80
R0146,C049,2024,77,86,80,82
R0147,C049,2025,87,86,93,83
R0148,C050,2023,76,96,82,75
R0149,C050,2024,94,96,93,92
R0150,C050,2025,93,96,100,93