| name | workday-calendar |
| author | wUwproject |
| license | MIT |
| tags | ["calendar","workday","holiday","schedule","rotation","gongxiu","linxiu","excel-export"] |
| version | 2.2.0 |
| description | 智能周历系统。支持法定假日、补班日、轮休系统(跳过/不跳过法定假双模式)、特殊休息(公休/临修)、个人日程管理。 |
| sensitive_access | false |
| critical_write | false |
| permission_weight | LOW |
| data_dir | ../.standardization/workday-calendar/data/ |
| trigger | 法定假日|周历|工作日|调休|补班|节假日|假日区间|年度工日|日程|安排|空闲时间|轮休|公休|临修|排班 |
| trigger_negative | true |
| external_data_dir | true |
| h1_position | true |
| meta_field_sync | true |
| create_permissions_md | true |
智能周历系统 (Workday Calendar)
触发条件
正向触发:
- 查询或管理法定假日、补班日、调休安排
- 计算年度工作日、工作日统计
- 生成周历、日程安排
- 查询某天的空闲时间、日程安排
- 添加、更新、删除日程事件
- 说出关键词:"周历"、"工作日"、"假日区间"、"日程"、"安排"
- 用户讨论日历 UI 组件设计(如"帮我画一个日历组件"),应触发 drawiodo 而非本技能
- 用户要求操作其他日历应用(如 Google Calendar、Outlook 日历),本技能仅管理本地数据
否定条件(不触发)
- 用户只是询问日期(如"今天几号"),无假日/工作日/日程管理意图
- 用户讨论日历 UI 组件设计(如"帮我画一个日历组件"),应触发 drawiodo 而非本技能
- 用户要求操作其他日历应用(如 Google Calendar、Outlook 日历),本技能仅管理本地数据
核心能力
📚 渐进式加载:本技能采用渐进式 MD 体系,SKILL.md 为入口(≤230行),详细内容拆分到 references/*.md 按需加载。
| 能力 | 说明 |
|---|
| 法定假日管理 | 区间形式存储节假日,支持 AI 批量导入 |
| 补班日管理 | 单独记录调休上班日期 |
| 周末规则可配置 | 双休/单休/单双休/自定义周几 |
| 工作日计算 | 自动计算年度总工日,含所有休息类型统计 |
| 轮休系统 | skip/add 双模式,可配置周期,跨年缓存 |
| 特殊休息 | 公休/临修,支持单日和区间,最高优先级 |
| 个人日程 | 添加/删除/更新/查询/冲突检测 |
| 排班时段 | 15 分钟粒度,支持岗位+人员多赋值 |
| HTML 导出 | 排班周历 / 日程周历 / 排班表(周/月/日期范围) |
| 定时任务 | 自动化配置,Markdown 输出 |
| 配置中心 | Web 界面(settings.py,端口 8765) |
渐进式文件索引
| 文件名 | 分类 | 包含内容 | 审计关联 |
|---|
references/LICENSE.md | 许可协议 | MIT 许可证完整文本 | R-26 |
references/antipatterns.md | 规范指南 | 常见反模式与避坑指引 | R-18 |
references/changelog.md | 版本管理 | 版本更新日志 | R-24 |
references/cli.md | 命令参考 | CLI 命令完整列表 | 无 |
references/data_format.md | 参考文档 | JSON 数据格式说明 | 无 |
references/examples.md | 使用示例 | 各场景完整交互示例 | R-25 C-17 |
references/faq.md | 常见问题 | 常见疑问与解答 | R-19, R-25 C-19 |
references/guide.md | 使用指南 | Python API 使用示例 | 无 |
references/permissions.md | 权限与测试 | 权限扫描说明与测试结论 | R-15, R-16 |
references/test-report.md | 测试报告 | skill-function-test 测试结论 | 无 |
工作流程
首次使用 / 新年份
当某年没有法定假日数据时(load_holiday_intervals(year) 返回空列表),必须主动联网查询国务院办公厅放假安排通知:
- 联网查询 — 输入:年份 → 搜索"国务院办公厅 20XX年 放假安排" → 输出:法定假日日期范围、补班日、假期名称
- 组织规则模板 JSON — 输入:查询结果 → 按
export_rules_template 格式组织 JSON → 输出:标准规则模板
- 导入 — 输入:规则模板 → 调用
import_rules_from_template() → 输出:数据写入 JSON 文件
- 核对 — 输入:已导入数据 → 运行
python scripts/workday_calendar.py rules 20XX → 输出:规则确认表
- 计算 — 输入:确认无误的数据 → 调用
calculate_total_workdays(20XX) → 输出:年度工日统计
联网查询要求:
- 搜索关键词:"国务院办公厅 20XX 年 放假安排"
- 获取:法定假日日期范围、调休上班日(补班)、假期名称
- 确认该年周末规则(通常为标准双休日六日)
组织规则模板(export_rules_template 格式):
{
"version": "1.0",
"year": 2027,
"base_type": "holiday",
"rules": {
"weekend_config": {"weekends": [0, 6]},
"holiday_intervals": [
{"name": "元旦", "start": "2027-01-01", "end": "2027-01-03"}
],
"compensatory_days": [
{"date": "2027-01-04", "note": "元旦补班"}
],
"rotation_configs": [],
"special_rests": []
}
}
执行导入:
template = {上面组织好的 JSON}
import_rules_from_template(template)
导入后核对:
python scripts/workday_calendar.py rules 2027
⚠️ 核对步骤必须执行:节假日日期、补班日必须与国务院通知完全一致。
四层数据架构
底板(法定假休, 永远不变)
└→ weekend_config(双休/单休/自定义周几)
└→ 排班规则(轮休/公休/临修, 始终叠在 weekend_config 上)
├─ toggle OFF → 假休保留(不受排班影响)
└─ toggle ON → 排班全面覆盖(包括假休)
└→ 个人日程(记事本, 永远最上层)
日期类型优先级
| 优先级 | 类型 | 规则 |
|---|
| 1 | 补班日 | 强制计为工作日 |
| 2 | 临修 | 强制计为休息日 |
| 3 | 公休 | 强制计为休息日 |
| 4 | 轮休 | 按配置生成的休息日 |
| 5 | 法定假日 | 强制计为休息日 |
| 6 | 周末 | 按配置的周末规则 |
| 7 | 工作日 | 其他日期 |
日程冲突检测