- 新版设计各域 SoT 按本轮实现同步:总体架构、模块设计、接口契约、数据模型、功能规格、文件设计与决策记录。 - 接口契约生成物重新导出(openapi 与前端客户端随契约一致)。 - 实现回顾与专项检查台账保留历史结论;本轮收尾发现另见 .agents.local 下的收尾报告与审查处置。
7.4 KiB
B08 交付连载
职责与对象
全书确定性检查、作者定版材料打包、冻结交付稿、导出和版本化发布反馈。当前没有跨章模型审阅或交付材料自动起草流程。
实例归属以总体架构为准;结构、状态和公开外壳分别引用数据模型与接口契约。
公开接口
| 用例 | 输入责任 | 输出与后果 |
|---|---|---|
| review_book | 作品与章节范围 | 全书问题及修订任务 |
| freeze_delivery | 作者选定章节版本和材料 | 定稿清单 |
| export_delivery | 固定清单和格式 | 导出任务与校验和 |
| register_release | 实际发布信息和交付身份 | 发布记录 |
| collect_feedback | 来源、章节或发布版本和反馈 | 反馈分类及作者选择的调整 |
所有接口在本模块的接口.py 暴露。输入输出类型由同一公开表面导出,外部不导入私有模型或 SQL。
内部职责
| 文件 | 职责 |
|---|---|
| 接口.py | 交付连载公开用例和可导入合同 |
| 模型.py | 交付连载稳定对象、外壳及内部状态 |
| 存储.py | 交付连载所属记录的 SQL 与版本读写 |
| 全书整理.py | 全书回看和跨章修订任务 |
| 文字校对.py | 专名、称谓、标点、格式与例外 |
| 定稿版本.py | 冻结章节与交付材料清单 |
| 文稿导出.py | 导出任务、目录及完整性核对 |
| 交付材料.py | 书名、简介、梗概和人物表 |
| 连载计划.py | 存稿、时间和章节依赖 |
| 发布登记.py | 真实发布版本及修订影响 |
| 读者反馈.py | 归集、辨析与调整任务 |
| 导出格式/纯文本.py | TXT 正文导出 |
| 导出格式/Markdown.py | Markdown 正文导出 |
| 导出格式/Word.py | DOCX 结构与排版导出 |
| 导出格式/EPUB.py | EPUB 目录、内容与打包 |
完整路径及运行模板见目标文件清单。逐文件意图、边界与目标见文件合同。
实现约束
定稿与格式的实现合同
定稿请求必须列出当前完整目录,按目录顺序给出每章分支、选定正文版本、内容哈希及预期当前版本。默认选择当前稿;明确选择历史稿时仍须点名当前指针,不能以旧清单绕过漂移。S01在同一事务锁定B01目录、B05当前指针和B08定稿身份后冻结清单与作者定版的书名、简介、梗概、人物表。缺章、缺正文或哈希不同均拒绝;不自动补写内容。
已冻清单仅引用确切B05历史版本,不复制一份可独立编辑的正文。后续编辑不影响原定稿,导出不追latest。导出器只接经owner核对的固定内容,UTF-8与Unicode序列不规范化;格式标记另行编码,XML不支持的控制字符明确失败而非丢弃。TXT、Markdown、DOCX、EPUB共用章节清单和材料,并核对实际文件中的正文及顺序。
全书回看中的确定性检查只判断目录、缺文、作者给定专名对照及文字疑点,文学效果保持未评估。跨章修订接收作者逐章点名的版本、引文、段落哈希和替换内容,经B05公开的候选准备接口组合为一次S01事务;任一章漂移则不留下其他章的半批候选。候选仍逐章审阅采纳。校对保留项绑定原版本、位置及建议,不套用到新版本。
导出由S02“定稿交付”流程核对清单并逐格式执行,实际成品通过重读核对才写入B08。作者可从HTTP推进同一任务;单格式失败保留既有产物,S02恢复后仅生成缺失格式。计划、发布、读者反馈均经S01登记,时间以带时区ISO输入统一为UTC。发布凭据为作者记录,不冒充平台验证;计划日期不生成发布事实。反馈未点名发布时保存为未关联,调整要求只留下原稿版本与待改说明,不推断方法改进因果。
DOCX采用公开WordprocessingML/OPC结构;EPUB采用EPUB 3.3,首个mimetype条目不压缩,目录与spine顺序一致。依据:Microsoft包结构、W3C EPUB 3.3。输出时间、身份及压缩条目固定,同一定稿与格式实现的重复导出字节相同。
TXT直接呈现书名、署名、材料标签和章节正文,不夹带JSON身份、字节长度等工程头。TXT按照外部冻结清单核对实际字节与文本顺序;可见文本相同的不同文档节点划分无法从TXT区分,因此节点数标为不编码。其他三格式保留各自的段落结构。Markdown采用允许内联HTML与样式的CommonMark配置;移除样式的阅读器可能压缩空白,不声称在这种配置下保真。
TXT回执的verified只涵盖可见文本、章节顺序与材料;identities明确为not_encoded,chapter_ids为null,逐章结果不回填外部清单的章节身份。定稿归属由B08数据库外键和清单核验承担,不伪装为TXT文件内编码的身份。
- 跨章问题交 B05/B06 修改,不直接更新正文表。
- TXT、Markdown、DOCX、EPUB 使用同一固定内容清单,格式导出各自验证结构与实际文本。
- 缺章、缺正文、引用失效或格式不支持时明确失败,不能跳过缺失内容宣布完成。
- 发布登记记录实际使用版本;书名、简介、梗概等材料分别经作者定版。
协作与失败
B01 提供目录,B05 提供正式版本,B06 审校,S02 执行任务,基础设施处理归档;B07 接受作者选择的经验反馈。
导出失败可单独重试,不能重新生成正文;无法定位版本的反馈标记未关联,不能猜测挂到最近任务。
验收行为
- 导出顺序和文本与清单一致。
- 缺章导出失败。
- 发布反馈可定位原版本。
- 完整备份包含原文及结构关系。
验收入口和替换条件见迁移与验收;这些条目是目标行为,不是已通过测试的声明。
成品复用与显式审计
普通下载和发布/连载准备只核作者、定稿清单哈希与归属,不读取源正文。下载只取指定格式成品一次,并核字节哈希和绑定定稿、格式器版本的 delivery-validation-v2 成功证明。证明不足返回 EXPORT_VERIFICATION_UPGRADE_REQUIRED;清单或成品损坏明确拒绝。合法成品不因源正文暂不可读而失去下载能力。
导出准备与恢复只核元数据;执行批读产物头,以持久化成品为权威,不信检查点。已有成品逐个核验,缺失格式共享一次全源内容视图;渲染与深度校验在连接和事务之外,保存前核当前租约。没有缺失格式时不读正文、不重新渲染。
作者可显式调用 POST /deliveries/{delivery_id}/files/{format}/audit 全源审计。默认只返回审计结果;supplement_verification=true 才追加不可变补充验证回执。审计会逐源核对真实文本并深度读取成品,失败不补证。旧成品字节、哈希、身份及原始 verification 均保留;仅支持当前已实现的历史格式器,未知版本拒绝。该接口不自动批量回填作品。
CLI 下载先在目标同目录完整写入临时文件,再以排他硬链接发布;已有目标不覆盖,写入或发布失败清理本次临时文件。