导出进度至少包含消费、收尾和终态三个阶段。本文用状态模型与 Swift 伪代码,说明如何处理 finishWriting、取消及迟到回调。