zizi 0260bcd8e2 设计文档:SoT 同步与生成物重出
- 新版设计各域 SoT 按本轮实现同步:总体架构、模块设计、接口契约、数据模型、功能规格、文件设计与决策记录。
- 接口契约生成物重新导出(openapi 与前端客户端随契约一致)。
- 实现回顾与专项检查台账保留历史结论;本轮收尾发现另见 .agents.local 下的收尾报告与审查处置。
2026-09-18 01:15:18 +08:00

7.4 KiB
Raw Blame History

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 下载先在目标同目录完整写入临时文件,再以排他硬链接发布;已有目标不覆盖,写入或发布失败清理本次临时文件。