EduClaw 高级排课:掌握学术课表 - Openclaw Skills

作者:互联网

2026-04-17

AI教程

什么是 EduClaw 高级排课系统?

EduClaw 高级排课是 EduClaw SIS 环境中一个精密且专业的子垂直领域,旨在处理现代学术排课所需的多元化逻辑。作为 Openclaw Skills 生态系统的核心组件,它允许管理员定义复杂的排课模式,包括传统式、走班制和轮转周期。该技能为管理整个排课生命周期提供了强大的框架,确保教师约束、教室容量和学生课程需求在统一系统中达到完美平衡。

通过利用此工具,开发人员可以自动检测 11 种不同的冲突类型,从关键的教师重复排课到软性偏好冲突。这确保了在发布主课表之前具备高水平的操作完整性。无论是管理小型私立学校还是大型大学部门,此技能都能为无误差的学术规划提供所需的精确度。

下载入口:https://github.com/openclaw/skills/tree/main/skills/mailnike/educlaw-scheduling

安装与下载

1. ClawHub CLI

从源直接安装技能的最快方式。

npx clawhub@latest install educlaw-scheduling

2. 手动安装

将技能文件夹复制到以下位置之一

全局模式 ~/.openclaw/skills/ 工作区 /skills/

优先级:工作区 > 本地 > 内置

3. 提示词安装

将此提示词复制到 OpenClaw 即可自动安装。

请帮我使用 Clawhub 安装 educlaw-scheduling。如果尚未安装 Clawhub,请先安装(npm i -g clawhub)。

EduClaw 高级排课系统 应用场景

  • 为中学设计复杂的 4x4 走班制或轮转 A/B 课表模式。
  • 根据学生选课请求进行需求分析,以确定开班数量。
  • 自动分配教室,同时考虑实验室设备或无障碍设施等特定功能。
  • 在构建过程中识别并解决关键的教师冲突和合同违规行为。
  • 在活跃学期期间管理应急教室调换和可用性。
EduClaw 高级排课系统 工作原理
  1. 通过创建排课模式、唯一的日期类型和特定的课钟时段来定义结构基础。
  2. 收集并批准课程请求,生成数据驱动的需求报告和单班分析。
  3. 通过将课程班级放置在特定的日期和时段槽位来构建主课表。
  4. 执行冲突引擎以识别 11 类排课问题,包括关键的重复排课和容量限制。
  5. 解决识别出的冲突并发布最终主课表,这将自动锁定注册期的数据。

EduClaw 高级排课系统 配置指南

要将此功能集成到您的环境中,请遵循以下 Openclaw Skills 安装步骤。确保您的系统路径中有 python3 可用。

# 1. 初始化本地数据库并验证技能状态
python3 init_db.py && python3 scripts/db_query.py --action status

# 2. 定义您的第一个排课模式(例如:传统 7 节课制)
python3 db_query.py --action add-schedule-pattern r
  --name "Traditional 7-Period" --pattern-type traditional --cycle-days 1 --company-id 

# 3. 为模式添加时段
python3 db_query.py --action add-bell-period r
  --schedule-pattern-id  --period-number 1 --period-name "Period 1" r
  --start-time "08:00" --end-time "08:50" --duration-minutes 50

EduClaw 高级排课系统 数据架构与分类体系

该技能在结构化的 SQLite 数据库中组织数据,保持学术记录的高度关联完整性。

表名 用途
educlaw_schedule_pattern 存储学校教学日/周期的总体结构。
educlaw_master_schedule 特定学期课表的主要容器。
educlaw_section_meeting 将特定班级与时间和教室关联。
educlaw_schedule_conflict 跟踪检测到的问题、严重程度和解决记录。
educlaw_instructor_constraint 存储教职工可用性和偏好的硬性和软性规则。
name: educlaw-scheduling
display_name: EduClaw Advanced Scheduling
version: 1.0.0
description: >
  Master scheduling, schedule patterns, conflict resolution, and room assignment
  for K-12 and higher-education institutions. Sub-vertical of EduClaw SIS.
author: ERPForge
parent: educlaw
requires: [erpclaw, educlaw]
database: ~/.openclaw/erpclaw/data.sqlite
user-invocable: true
scripts:
  - scripts/db_query.py
domains:
  - schedule_patterns
  - master_schedule
  - conflict_resolution
  - room_assignment
total_actions: 56
tables:
  - educlaw_schedule_pattern
  - educlaw_day_type
  - educlaw_bell_period
  - educlaw_master_schedule
  - educlaw_section_meeting
  - educlaw_course_request
  - educlaw_schedule_conflict
  - educlaw_room_booking
  - educlaw_instructor_constraint
metadata: {"openclaw":{"type":"executable","install":{"post":"python3 init_db.py && python3 scripts/db_query.py --action status"},"requires":{"bins":["python3"],"env":[],"optionalEnv":[]},"os":["darwin","linux"]}}

EduClaw Advanced Scheduling

Advanced scheduling for K-12 and higher-education. Named schedule patterns, master schedule lifecycle, course request demand analysis, 11 conflict types, smart room assignment, and instructor constraints.

Quick Start

# 1. Define a schedule pattern
python3 db_query.py --action add-schedule-pattern r
  --name "Traditional 7-Period" --pattern-type traditional --cycle-days 1 --company-id 
python3 db_query.py --action add-day-type r
  --schedule-pattern-id  --code "MON-FRI" --name "Regular Day"
python3 db_query.py --action add-bell-period r
  --schedule-pattern-id  --period-number 1 --period-name "Period 1" r
  --start-time "08:00" --end-time "08:50" --duration-minutes 50
python3 db_query.py --action activate-schedule-pattern --pattern-id 

# 2. Build and publish master schedule
python3 db_query.py --action create-master-schedule r
  --academic-term-id  --schedule-pattern-id  --name "Fall 2026" --company-id 
python3 db_query.py --action add-section-meeting r
  --master-schedule-id  --section-id  --day-type-id  --bell-period-id 
python3 db_query.py --action generate-conflict-check --master-schedule-id 
python3 db_query.py --action submit-master-schedule --master-schedule-id 

Tier 1 — Core Scheduling Workflow

add-schedule-pattern

Create a named, reusable schedule structure.

Parameter Required Description
--name ? Pattern name (e.g., "Traditional 7-Period")
--pattern-type ? traditional, block_4x4, block_ab, trimester, rotating_drop, semester, custom
--cycle-days ? Number of unique days in one cycle
--company-id ? Company ID
--description Human-readable description
--notes Internal notes
--total-periods-per-cycle Pre-computed total periods (informational)

add-day-type

Add a named day type to a pattern (e.g., "Day A", "Day B").

Parameter Required Description
--schedule-pattern-id ? Parent pattern ID
--code ? Short code (e.g., "A", "B", "MON")
--name ? Display name
--sort-order Display order (default: 0)

add-bell-period

Add a named time slot to a pattern.

Parameter Required Description
--schedule-pattern-id ? Parent pattern ID
--period-number ? Period identifier (e.g., "1", "Block A")
--period-name ? Display name
--start-time ? HH:MM
--end-time ? HH:MM
--duration-minutes ? Duration in minutes (> 0)
--period-type class (default), break, lunch, homeroom, advisory, flex, passing
--sort-order Display order
--applies-to-day-types JSON array of day_type IDs; empty = all

activate-schedule-pattern

Activate a pattern after defining its day types and bell periods. Required: --pattern-id

create-master-schedule

Create a master schedule container for an academic term.

Parameter Required Description
--academic-term-id ? Term (unique per term)
--schedule-pattern-id ? Pattern defining days and periods
--name ? Schedule name
--company-id ? Company ID
--build-notes Internal building notes

add-section-meeting

Place a section into a specific day-type + period slot.

Parameter Required Description
--master-schedule-id ? Parent master schedule
--section-id ? Section from educlaw_section
--day-type-id ? Which day type
--bell-period-id ? Which period
--room-id Room assignment
--instructor-id Override section default
--meeting-type regular (default), lab, exam, field_trip, make_up
--meeting-mode in_person (default), hybrid, online

generate-conflict-check

Run all 11 conflict categories for a master schedule. Required: --master-schedule-id

Types: instructor_double_booking (CRITICAL), room_double_booking (CRITICAL), student_conflict (HIGH), instructor_overload (HIGH), instructor_contract_violation (HIGH), capacity_exceeded (HIGH), singleton_overlap (HIGH), room_shortage (HIGH), room_type_mismatch (MEDIUM), credential_mismatch (MEDIUM), contact_hours_deficit (MEDIUM)

submit-master-schedule

Publish the master schedule (blocks if open CRITICAL conflicts exist). Required: --master-schedule-id. Opt: --published-by


Tier 2 — Schedule Patterns & Master Schedule

update-schedule-pattern Req: --pattern-id. Opt: --name, --description, --notes get-schedule-pattern Req: --pattern-id list-schedule-patterns Opt: --company-id, --pattern-type, --is-active, --search, --limit get-day-type-calendar Req: --pattern-id, --date-range-start, --date-range-end get-pattern-calendar Req: --pattern-id get-contact-hours Req: --pattern-id. Opt: --section-id, --master-schedule-id update-master-schedule Req: --master-schedule-id. Opt: --name, --build-notes, --schedule-status get-master-schedule Opt: --master-schedule-id, --naming-series list-master-schedules Opt: --company-id, --schedule-status, --academic-term-id add-section-to-schedule Req: --master-schedule-id, --section-id delete-section-meeting Req: --section-meeting-id list-section-meetings Req: --master-schedule-id. Opt: --section-id, --day-type-id, --instructor-id, --room-id get-schedule-matrix Req: --master-schedule-id update-schedule-lock Req: --master-schedule-id. Opt: --locked-by create-schedule-clone Req: --master-schedule-id, --target-academic-term-id. Opt: --name, --company-id

Tier 2 — Course Requests

activate-course-requests Req: --academic-term-id submit-course-request Req: --student-id, --academic-term-id, --course-id. Opt: --request-priority, --is-alternate, --alternate-for-course-id, --has-iep-flag, --prerequisite-override, --prerequisite-override-by, --prerequisite-override-note, --submitted-by, --company-id approve-course-requests Req: --academic-term-id, --approved-by. Opt: --course-id get-demand-report Req: --academic-term-id get-singleton-analysis Req: --academic-term-id. Opt: --min-requests get-course-demand-analysis Req: --academic-term-id get-fulfillment-report Opt: --master-schedule-id, --academic-term-id get-load-balance-report Req: --master-schedule-id update-course-request Req: --course-request-id. Opt: --request-priority, --is-alternate, --has-iep-flag get-course-request Req: --course-request-id list-course-requests Opt: --student-id, --academic-term-id, --course-id, --request-status complete-course-requests Req: --academic-term-id

Tier 2 — Conflict Resolution

list-conflicts Req: --master-schedule-id. Opt: --conflict-type, --severity, --conflict-status get-conflict Req: --conflict-id complete-conflict Req: --conflict-id, --resolution-notes. Opt: --resolved-by accept-conflict Req: --conflict-id (not CRITICAL). Opt: --resolution-notes, --resolved-by get-conflict-summary Req: --master-schedule-id get-singleton-conflict-map Req: --master-schedule-id get-student-conflict-report Req: --master-schedule-id

Tier 2 — Room Assignment

assign-room Req: --section-meeting-id, --room-id. Opt: --booking-type, --accessibility-required, --booked-by propose-room Req: --section-meeting-id. Opt: --room-type, --accessibility-required assign-rooms Req: --master-schedule-id. Opt: --room-type delete-room-assignment Opt: --section-meeting-id, --booking-id add-room-block Req: --room-id, --day-type-id, --bell-period-id, --booking-title. Opt: --booked-by, --booking-type update-room-swap Req: --section-meeting-id (A), --section-meeting-id-b (B) get-room-availability Req: --room-id, --master-schedule-id get-room-utilization-report Req: --master-schedule-id list-rooms-by-features Opt: --company-id, --room-type, --capacity, --building, --features (JSON) assign-room-emergency Req: --room-id, --target-room-id, --master-schedule-id

Tier 3 — Instructor Constraints

add-instructor-constraint Req: --instructor-id, --academic-term-id, --constraint-type (unavailable, preferred, max_periods_per_day, max_consecutive_periods, requires_prep_period, preferred_building). Opt: --day-type-id, --bell-period-id, --constraint-value, --constraint-notes, --priority (hard, soft, preference) update-instructor-constraint Req: --constraint-id. Opt: --constraint-value, --constraint-notes, --priority, --is-active list-instructor-constraints Opt: --instructor-id, --academic-term-id, --constraint-type, --is-active delete-instructor-constraint Req: --constraint-id


Lifecycle Rules

Master Schedule: draft → building → review → published → locked → archived. Cannot publish with open CRITICAL conflicts. All sections → scheduled and term → enrollment_open on publish. Course Request: draft → submitted → approved → scheduled / alternate_used / unfulfilled. Any → withdrawn. Conflict: open → resolving → resolved / accepted / superseded.

Workflows

  1. Pattern: add-schedule-pattern → add-day-type (×N) → add-bell-period (×N) → activate-schedule-pattern
  2. Demand: activate-course-requests → submit-course-request (×N) → approve-course-requests → get-demand-report → complete-course-requests
  3. Build: create-master-schedule → add-section-to-schedule (×N) → add-section-meeting (×N) → assign-room OR assign-rooms → update-master-schedule (status=review)
  4. Publish: generate-conflict-check → get-conflict-summary → [complete-conflict|accept-conflict] (×N) → submit-master-schedule → update-schedule-lock
  5. Emergency: get-room-availability → assign-room-emergency → generate-conflict-check