# MoonRRule 项目申报书

## 基本信息

- 项目名称：MoonRRule：MoonBit 时区安全日程与重复规则引擎
- 参赛者：刘欣泽
- 联系方式：2993416621@qq.com
- GitHub 仓库链接：https://github.com/lxz123411/1234
- 项目方向：MoonBit 日期时间基础库 / 日程调度基础设施
- 是否为移植项目：否

## 项目简介

MoonRRule 计划为 MoonBit 生态提供可复用的日程计算基础能力，为日历、预约、课程排期、提醒服务和自动化任务等场景提供重复日程、定时规则与跨时区时间计算。项目使用统一的数据模型组合 RRULE、Cron、排除日期、工作日历和 iCalendar 事件，避免应用重复处理闰年、月末及夏令时边界。

## 核心功能范围

- 提供日期、时间、持续时间、UTC 偏移、本地日期时间和时间戳模型；
- 提供公历运算、ISO 周、闰年、月末、负时间戳和日期时间解析能力；
- 支持 RFC 5545 RRULE 的解析、校验、规范化及重复实例生成；
- 支持 RDATE、EXDATE、COUNT、UNTIL 与常用 BY* 过滤条件；
- 支持五段和六段 Cron 表达式、范围、列表、步长及后续执行时间计算；
- 提供固定偏移和可配置时区规则，处理夏令时跳时与重叠时间；
- 支持工作日、节假日、自定义排除日期及多个日程集合合并；
- 支持 iCalendar 内容行、VEVENT、TZID、RRULE、RDATE 和 EXDATE 的导入导出；
- 提供可运行的命令行工具，覆盖规则验证、日程生成和时区转换；
- 提供 README 示例、兼容性说明、持续集成和规范一致性测试。

## 移植或参考说明

- 参考规范名称：RFC 5545、POSIX Cron 约定、IANA Time Zone Database
- 参考规范链接：https://www.rfc-editor.org/rfc/rfc5545、https://pubs.opengroup.org/onlinepubs/9799919799/、https://www.iana.org/time-zones
- 参考方式：仅依据公开规范定义进行兼容实现，不复制其他开源项目代码
- 本项目许可证：Apache License 2.0

### 本项目的原创设计与参考边界

- 使用 MoonBit 原生包结构、类型系统和错误处理机制独立实现，而不是移植其他语言项目；
- 将本地时间与确定时间戳分开建模，要求调用者显式选择夏令时冲突处理策略；
- 使用统一日程集合组合 RRULE、Cron、显式日期、排除日期和工作日历；
- 内置时区数据仅覆盖已声明的区域和年份范围，其他区域通过经过校验的转换表扩展；
- 以 MoonBit API、iCalendar 文本和 CLI 为主要交付接口，方便接入 Web、WASM 和原生应用。
