# moon-ipp 项目申报书

## 基本信息

项目名称：moon-ipp：MoonBit 网络打印协议库  
参赛者：马昀昀  
联系方式：1498657823@qq.com  
GitHub 仓库链接：[https://github.com/liyun6666/moon-ipp](https://github.com/liyun6666/moon-ipp)  
项目方向：MoonBit 网络协议基础库 / 应用打印基础设施  
是否为移植项目：否，依据公开协议标准原创实现

## 项目简介

moon-ipp 为 MoonBit 应用提供 IPP 网络打印能力，解决业务代码需要自行处理二进制属性、设备能力和任务状态的问题。项目交付协议库、异步客户端与 CLI，适用于业务系统提交已有 PDF 并跟踪结果、办公室工具查询设备和管理队列、开发团队使用 CUPS 虚拟打印机完成 CI 验收。申报前已检索 Mooncakes 的模块索引及公开 GitHub 项目，未发现功能对应的 MoonBit IPP 库，检索过程保留在仓库中。

## 核心功能范围

- 提供 IPP 消息、属性分组、多值、嵌套集合和二进制文档的有界编解码，保留未知值标签并报告截断及非法结构。
- 支持设备能力查询、Validate-Job、Print-Job、Create-Job、Send-Document、任务列表、任务查询及取消，共八个操作。
- 按设备能力校验文档格式、份数、纸张、单双面、颜色、分辨率及页范围；提供 media-col 纸张规格、健康诊断与能力快照比较。
- 提供可注入的 HTTP/HTTPS 传输、响应关联、超时和任务轮询；提交结果不确定时不自动重发，避免重复打印。
- 提供库示例、CLI 与三个可复现应用场景；用异常输入测试和独立 CUPS 互操作验证文档接收、查询与取消。
- 以 MoonBit 为核心，超过 4,000 行有效实现，保留至少 12 次实质提交；交付检查/构建/测试 CI、README、Apache-2.0 许可证及 Mooncakes 包。

## 移植或参考说明

参考标准：[RFC 8010](https://www.rfc-editor.org/rfc/rfc8010)、[RFC 8011](https://www.rfc-editor.org/rfc/rfc8011)。  
互操作参考：[OpenPrinting CUPS](https://github.com/OpenPrinting/cups)，仅作为独立测试端，不复制源码。  
本项目许可证：Apache License 2.0。第三方依赖及许可证单独记录。  
项目按 MoonBit 的类型、包和测试体系独立实现；首版不实现文档渲染、打印机驱动或完整 IPP Everywhere 认证。
