# 项目申报书

## 1. 项目名称和 GitHub 仓库地址

- 项目名称：RRuleLab——MoonBit 可解释日历重复规则引擎
- GitHub：https://github.com/cjkzD/apq_project

## 2. 项目简介

RRuleLab 面向日历、预约、排班、提醒和自动化任务，使用 MoonBit 实现 RFC 5545 重复规则的解析、校验、规范化、展开与审计。项目可将“每两周的周二和周四”“每月最后一个周五”等规则转换为确定的日期序列，并提供中英文解释、字段诊断、规则变更影响和日程冲突证据，帮助开发者在规则投入生产前发现无结果、重复执行、非工作时段和排期冲突等问题。项目提供库 API、可运行 CLI、测试、CI 和 iCalendar 示例，计划发布至 mooncakes.io。

## 3. 项目方向与适用场景

项目方向为 MoonBit 日历与调度领域基础库，适用于预约系统、会议日历、轮班计划、账单周期、设备维护窗口、消息提醒和自动化任务。与普通 cron 工具不同，本项目聚焦 RFC 5545 日历语义、节假日调整和可解释的行为审计；明确不开发 MoonBit 编译器、格式化器或 LSP 等语言自身工具。

## 4. 拟实现的核心功能

- 解析、校验和规范化 `RRULE`，覆盖主要频率、`BY*` 字段、负序号及 `BYSETPOS`；
- 在有限窗口内展开 `DTSTART`、`RRULE`、`RDATE`、`EXDATE`，支持集合运算和 iCalendar 往返；
- 输出中英文解释、错误诊断和修复建议，比较规则修改前后的新增、删除及首次分歧；
- 审计重复实例、周末、非工作时段、异常间隔，检测事件区间冲突与空闲窗口；
- 支持 ISO 8601 持续时间和节假日感知的业务日历调整；
- 提供 MoonBit API、CLI 示例、完整 README、自动化测试、GitHub Actions CI 和 mooncakes.io 发布包。

## 5. 是否为原创项目、移植项目或参考已有开源项目

本项目为原创项目，不移植、不复制其他项目代码。规则行为依据 RFC 5545 标准独立实现；日期换算采用公开的公历算法思想并以 MoonBit 重写。项目使用 Apache-2.0 许可证，当前仅依赖 MoonBit 官方 core，不含许可证不兼容的第三方代码或素材。
