feat/export-service
main
修复 3 个 P2 与 1 个 P3,补充结构内容回归测试,并同步最新 main(e29cc42)。
e29cc42
_block_blockquote
quoted **content**
_block_list_item
_execute
running
queued
html
pdf
docx
EXPORT_FORMAT_UNSUPPORTED
text
审阅提交:6c14047
6c14047
上一轮提出的问题已经完成基础修复:
本轮进一步审阅发现 2 个 P2、1 个 P3。
位置:backend/app/export/exporters/pdf.py:223–238
backend/app/export/exporters/pdf.py:223–238
当前实现会先收集列表项中的全部正文,随后统一输出所有嵌套列表。这只能保证简单的“父项在前、子列表在后”,无法保持混合列表项的原始 AST 顺序。
例如:
- parent - child after
原始顺序是:
parent child after
实际 PDF 流程顺序为:
parent after child
建议按照 AST 顺序分段输出:
请增加“父段落—子列表—后续段落”的顺序回归测试。
位置:
backend/app/export/exporters/docx.py:169–184
backend/app/export/exporters/pdf.py:227–235
列表项的直接子节点可能是 strong、emphasis 或 link。当前遇到带 children 的节点时,会直接渲染其子节点,从而绕过该节点自身的格式处理。
strong
emphasis
link
children
实测:
- **bold** [link](https://example.com)
DOCX 结果中:
bold
w:b=0
w:hyperlink
https://example.com
PDF 中的链接也会被降级为普通文字,并且不会产生 warning。
建议:
_render_inline_node
paragraph
StaticRenderer
位置:docs/contracts/第二阶段接口契约-开发版.md:77
docs/contracts/第二阶段接口契约-开发版.md:77
本 PR 已新增并接入 StaticRenderer 内部契约,但接口总表仍将 Renderer 标记为“计划新增”。
请更新为“已实现”,并明确:
git diff --check
Git 层面已经可以合并,但仍建议修复以上问题并补充测试后再提交复审。
No dependencies set.
The note is not visible to the blocked user.
复审修复(响应 PR #33 审阅结论)
修复 3 个 P2 与 1 个 P3,补充结构内容回归测试,并同步最新 main(
e29cc42)。P2 修复
_block_blockquote此前把块级子节点(paragraph/list)交给行内渲染器,导致quoted **content**的正文被当作「无法表示的行内节点」丢弃。现改为逐个渲染块级子节点,并继承引用缩进/颜色。_block_list_item此前在循环里遇到嵌套列表就立即递归输出,父级正文后置。现改为先输出父级正文、再输出子列表。_execute此前在获得渲染槽位前就置为running,取消标志要等拿到槽位后才检查。现改为等待槽位期间保持queued并同时监听取消,取消即时生效。P3 修复
html/pdf/docx三格式均已实现,移除EXPORT_FORMAT_UNSUPPORTED。附带修复
text子节点,正文被块级渲染器丢弃(结构内容测试暴露),已一并修复。测试
审阅结论:请求修改,暂不建议合并
审阅提交:
6c14047上一轮提出的问题已经完成基础修复:
queued,可以即时取消;本轮进一步审阅发现 2 个 P2、1 个 P3。
[P2] PDF 仍会重排混合列表项内容
位置:
backend/app/export/exporters/pdf.py:223–238当前实现会先收集列表项中的全部正文,随后统一输出所有嵌套列表。这只能保证简单的“父项在前、子列表在后”,无法保持混合列表项的原始 AST 顺序。
例如:
原始顺序是:
实际 PDF 流程顺序为:
建议按照 AST 顺序分段输出:
请增加“父段落—子列表—后续段落”的顺序回归测试。
[P2] DOCX/PDF 列表项会丢失链接和强调语义
位置:
backend/app/export/exporters/docx.py:169–184backend/app/export/exporters/pdf.py:227–235列表项的直接子节点可能是
strong、emphasis或link。当前遇到带children的节点时,会直接渲染其子节点,从而绕过该节点自身的格式处理。实测:
DOCX 结果中:
bold被写成w:b=0,没有加粗;w:hyperlink;https://example.com的外部关系。PDF 中的链接也会被降级为普通文字,并且不会产生 warning。
建议:
_render_inline_node;paragraph等块级容器展开children;[P3]
StaticRenderer仍被标记为计划新增位置:
docs/contracts/第二阶段接口契约-开发版.md:77本 PR 已新增并接入
StaticRenderer内部契约,但接口总表仍将 Renderer 标记为“计划新增”。请更新为“已实现”,并明确:
验证结果
git diff --check:通过main:无冲突Git 层面已经可以合并,但仍建议修复以上问题并补充测试后再提交复审。
Pull request closed