89 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!-- 导航元信息: {"内容描述": "B05 正文写作", "使用场景": "设计、实现或评审对应主题", "使用要求": "与阅读指南的主题权威分工一致"} -->
# B05 正文写作
## 通用选段写作授权
扩写、压缩、润色和重写使用作者明确圈选的正文版本、段落ID、哈希、Unicode码点范围和逐字原文。每次目的分别为expand/compress/polish/rewrite,附作者指示;保护区也绑定确切原文,自动任务不得与其重叠。重复字面片段按身份及码点区分,源文稿、范围或保护依据不符时不创建任务。
B05拥有选段定位和重放,B06复用受控模型修订链、声音保护及保真检查。通用选段没有诊断ID,输出使用selection_id;机器味路径仍要求真实诊断和已批准finding_id。两类任务都只产生候选,范围外不变。压缩/润色机械保真不能代替语义连续性判断;重写目的也不自动改规划或确认故事事实。
原`生成正文`入口只处理new_chapter。先前声明的expand_scene/edit_selection缺少确切圈选且输出整章,不能用来修改既有正文;现由上述选段授权入口承接,旧入口明确拒绝,不以整章生成冒充选段保护。
选段授权链路可携带参考改写扩展:作者从方法检索中挑选的参考版本作为授权输入进入冻结材料,合同见[B06 参考改写](B06-审校修订.md)。B05 仍拥有选段定位、重放与保真;参考材料不改变选区边界,范围外不变的约束继续成立。
## 分支与合并来源
分支从作者点名的已保存正文版本创建,固定源文稿/版本/哈希;新分支有独立正文指针,创建、保存及回退均不派发主线章后抽取。主分支保存及采纳仍按既有事务登记章后任务。
合并只回到该分支的直接来源文稿。作者从共同基线到分支当前版本的差异中点名选择;服务器与目标当前版本做三方重放。不相交修改可以组合,相同修改只计一次,重叠或同位插入冲突拒绝并保留两边;不自动推测冲突意图。合并产生基于目标当前版本的新待审候选,不直接覆盖正文。
合并来源绑定与候选版本同事务保存,后续编辑/部分选择版本沿用绑定。候选采纳同时复检目标正文、分支当前来源及目录,任一版本变化需重新合并和审阅;源分支不因合并删除。回退继续产生新正文版本,保留中间历史。`V0031__正文分支来源.sql`只追加分支来源和合并候选来源,不另建正文权威。
## 职责与对象
正文工作版本、段落、写作目标、候选、分支和作者保存。
实例归属以[总体架构](../总体架构.md)为准;结构、状态和公开外壳分别引用数据模型与接口契约。
## 公开接口
| 用例 | 输入责任 | 输出与后果 |
|------|----------|------------|
| read_document | 章节与分支 | 正文及当前版本 |
| save_manual | 目标基线、文档、命令身份 | 新正文版本及保存回执 |
| create_writing_task | 粒度、目的、选区、保护区和来源 | 冻结写作任务 |
| edit_candidate | 候选基线及修改 | 新候选版本和重检要求 |
| adopt_candidate | 被审候选、依赖和批准清单 | 原子提交回执 |
| merge_or_restore | 分支或历史版本及当前基线 | 待审合并候选或新人工版本 |
所有接口在本模块的接口.py 暴露。输入输出类型由同一公开表面导出,外部不导入私有模型或 SQL。
## 内部职责
| 文件 | 职责 |
|------|------|
| 接口.py | 正文写作公开用例和可导入合同 |
| 模型.py | 正文写作稳定对象、外壳及内部状态 |
| 存储.py | 正文写作所属记录的 SQL 与版本读写 |
| 正文格式.py | 稳定段落、受限结构、可见文本与哈希 |
| 人工保存.py | 人工编辑、版本、历史和修改影响 |
| 写作任务.py | 不同粒度和修改目的的任务合同 |
| 选段编辑.py | 字符位置、保护区及确定性修改应用 |
| 候选版本.py | 候选保存、编辑、部分采纳和重检 |
| 版本分支.py | 分支、快照、差异、合并及回退 |
| 正式提交.py | 正文类型化确认与已批准关联变更 |
| 提示词/生成正文.md | 无工具写作模板 |
| 提示词/修改选段.md | 按授权范围修改模板 |
完整路径及运行模板见[目标文件清单](../项目目录与文件职责.md)。逐文件意图、边界与目标见[文件合同](../文件设计/后端-B05-正文写作.md)。
## 写作粒度边界
领域合同保留 `new_chapter`、`expand_scene`、`edit_selection` 三种粒度。当前正文生成编排及 HTTP/CLI 新生成请求仅接受 `new_chapter`;其余粒度不是该生成入口已接通的能力。已发布的 `expand_scene` 合同允许已有基线且无选区,`edit_selection` 必须明确选区;不以本次文档修正改变兼容输入。选段修订仍走其独立授权入口。
## 实现约束
- 正文格式、哈希和码点位置由专门协议定义。允许手写、生成、扩写、压缩、润色和明确结构改写。
- 两阶段写手的业务目标由本模块形成,步骤编排由编排层执行;模型没有正式写入能力。
- 人工保存不依赖模型评分;自动修改必须限制范围,修改候选后重新检查。
- 正文当前指针、作者决定、归因和派生任务与批准事实共同提交。
## 协作与失败
作者也可以把自行整理的改稿保存为待比较候选。该入口保留基线与版本,经作者认证后写入B05候选记录;不改当前正文。人工候选只执行正文格式与依赖校验,不声称经过模型质量检查。模型产生的候选由写作任务携带实际来源、输出与检查证据接入,不能借用人工入口取得模型执行凭证。
候选全文编辑或按段选取差异都会追加候选版本,重新计算哈希和确定性检查;旧审阅不沿用。差异组由服务端基于固定正文和候选结构生成,部分选择保留未选内容的原段落。审阅返回其绑定版本的正文与候选,提交仍核对当前版本。采纳通过S01与人工保存使用同一个B05正文参与者;拒绝、暂缓只更新作者决定,即使候选基线已陈旧仍允许明确弃用。批准事实与章后任务的联合采纳遵守 S01 原子提交与章后流程合同。
依赖 B01 的可用规划、B09 的固定上下文、B06 的适用检查、S01 的提交保护;B02 参与已批准事实写入。
版本冲突保留输入;源变、缺证据或审阅不匹配阻止采纳;章后失败独立呈现。
## 验收行为
- 作者审稿期间正文修改后拒绝旧候选。
- 部分采纳产生新版本和重检。
- 相同命令重放同回执。
- 支线不推进主分支事实。
验收入口和替换条件见[迁移与验收](../迁移与验收.md);这些条目是目标行为,不是已通过测试的声明。