|
- <!doctype html>
- <html lang="zh-CN"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>开放 API 文档 PDF 验证报告</title>
- <style>body{margin:0;background:#f3f6f5;color:#173b32;font:16px/1.7 system-ui,sans-serif}main{max-width:1100px;margin:32px auto;padding:30px;background:white;border:1px solid #dbe6e0;border-radius:12px}h1{margin-top:0}h2{font-size:21px;margin-top:30px}a{color:#087f5b}table{border-collapse:collapse;width:100%}td,th{border:1px solid #dbe6e0;padding:10px;text-align:left}th{background:#eef5f1}img{max-width:100%;border:1px solid #dbe6e0}small{color:#657c74}.preview{max-width:700px}code{overflow-wrap:anywhere}</style>
- <main><h1>开放 API 文档 PDF 验证报告</h1><p>2026-09-09 · 后端生成,页面直接下载 · 验证通过</p>
- <p>文档页新增“导出 PDF”。网页与 PDF 共用后端接口说明,输入参数来自 OpenAPI 契约。保留原有契约下载入口。无需打印窗口、外部转换服务或数据库变更。</p>
- <p><a href="digital-human-open-api.pdf">查看下载样例(29 页)</a> · <a href="results.json">浏览器测试结果</a></p>
- <table><thead><tr><th>检查项</th><th>结果</th></tr></thead><tbody>
- <tr><td>匿名文档页加载与实际文件下载</td><td>通过:13 个接口,PDF 文件头、文件名与响应类型正确。</td></tr>
- <tr><td>失败提示与重试</td><td>通过:浏览器拦截下载请求模拟 503,显示 message;按钮恢复后可重新下载。</td></tr>
- <tr><td>目录滚动联动</td><td>通过:滚动至第 9 个接口时,左侧目录对应选中。</td></tr>
- <tr><td>后端自动化测试</td><td>通过:接口覆盖与契约一致;每个接口包含描述、输入、输出、错误码;14 个书签;字体嵌入;缓存返回一致。</td></tr>
- <tr><td>前端类型检查</td><td>通过:vue-tsc --noEmit。</td></tr>
- <tr><td>PDF 排版检查</td><td>29 页全部渲染检查,中文、表格、示例与页码可读,无内容重叠或裁切。</td></tr>
- </tbody></table>
- <h2>页面下载</h2><img src="01-pdf-download.png" alt="开放 API 文档页面下载 PDF 成功提示">
- <h2>PDF 参数表预览</h2><img class="preview" src="02-pdf-parameters.png" alt="PDF 第 19 页:成片生成任务的输入参数表">
- <h2>实施与验证范围</h2><p>后端使用 ReportLab,随包提供获许可的中文字体并嵌入 PDF。新增公开文档数据接口与 PDF 下载接口,仅输出静态说明和占位示例。开发服务已重启并实测;本轮未重复测试数字人业务生成流程,也未部署到生产环境。</p>
- <small>复现脚本:ute2e/tools/open-platform-pdf.mjs;后端测试:tests/test_open_api_documentation.py。</small></main></html>
|