workday-calendar-x-6

内容来源:clawhub · 原始地址 · 查看安装指南

原始内容


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) 返回空列表),必须主动联网查询国务院办公厅放假安排通知:

  1. 联网查询 — 输入:年份 → 搜索"国务院办公厅 20XX年 放假安排" → 输出:法定假日日期范围、补班日、假期名称
  2. 组织规则模板 JSON — 输入:查询结果 → 按 export_rules_template 格式组织 JSON → 输出:标准规则模板
  3. 导入 — 输入:规则模板 → 调用 import_rules_from_template() → 输出:数据写入 JSON 文件
  4. 核对 — 输入:已导入数据 → 运行 python scripts/workday_calendar.py rules 20XX → 输出:规则确认表
  5. 计算 — 输入:确认无误的数据 → 调用 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 工作日 其他日期

日程冲突检测

  • 添加日程时自动检测时间冲突

  • 更新日程时重新检测冲突,冲突则自动还原

  • scripts/workday_calendar.py — 核心逻辑

  • scripts/settings.py — 配置中心 Web 服务器