|
- <!doctype html><html lang="zh-CN"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>作业指导闭环检查 · 20260910</title><style>
- body{margin:0;background:#eef4f3;color:#173d36;font:15px/1.7 system-ui,"Microsoft YaHei",sans-serif}main{max-width:1300px;margin:auto;padding:30px}header,section{background:white;border:1px solid #c9ded8;border-radius:12px;padding:26px;margin-bottom:20px}h1{margin:0 0 12px;font-size:28px}h2{margin:0 0 15px;font-size:22px}h3{font-size:18px}.notice{padding:18px;border-left:5px solid #cf8618;background:#fff5e5}.stats{display:flex;gap:15px;flex-wrap:wrap}.stats b{padding:12px 20px;border-radius:8px;background:#e9f5ef}.table{overflow:auto}table{border-collapse:collapse;width:100%;font-size:14px}td,th{border:1px solid #cfdfdb;padding:10px;vertical-align:top;text-align:left}th{background:#edf6f2}a{color:#087e62}.images{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}figure{margin:0;border:1px solid #d8e4e0;padding:10px;border-radius:8px}figure img{width:100%;height:290px;object-fit:contain;background:#f1f5f4}figcaption{font-size:14px}code{background:#edf4f2;padding:2px 5px}nav{display:flex;gap:20px;flex-wrap:wrap}small{color:#56726b}@media(max-width:700px){main{padding:12px}section,header{padding:16px}.images{grid-template-columns:1fr}}@media print{body{background:white}main{padding:0}section{break-inside:auto}.images{grid-template-columns:1fr 1fr}a{color:inherit}}</style>
- <main><header><h1>作业指导模块:闭环检查与修复报告</h1><p>2026-09-10 · 资料 → 原型 → 设计 → 开发 → 测试</p><div class="notice"><strong>结论:未完全闭环。</strong>本地编制、三维/视频预览与导出已完成本轮验证;实际页面仍保存到浏览器本地库,尚未连通正式内容发布、教学阅读及对外 HTTP 接口。不能以本地“已发布”认定全系统发布成功。</div><p class="stats"><b>73 项 E2E 断言通过</b><b>5 项需求断言未满足</b><b>20 项回归通过</b><b>6 项交付物检查通过</b><b>构建通过</b></p><p>未满足的 5 项中,4 项重复印证正式内容/教学链路缺失,1 项为离线个人笔记和收藏入口缺失。通过项含“确认现状”的断言,不能直接换算为产品完成率。</p><nav><a href="#source">资料与范围</a><a href="#fixes">已修复</a><a href="#coverage">功能覆盖</a><a href="#confirm">待确认方案</a><a href="#evidence">截图</a><a href="#tests">测试明细</a></nav></header>
- <section id="source"><h2>1. 资料、原型与设计核对</h2><p>原始依据:<code>文档/桥梁装备“数字车间”资源建设需求参数.docx</code>。覆盖内容分析规划、标准模板、排版与媒体关联、PDF/离线交付、版本更新、教学阅读、个人记录、反馈和统计。未将未阅读的其他 PDF 算作本轮依据。</p><p>正式路由经 <code>LegacyGuidePageView.vue → runtime.ts → ofd-v4.js</code> 托管原型。工程存储为带命名空间的本地 ContentListStore(seed:false),资源字节在 IndexedDB;模板和平台资源选择仍使用本地实现。后台已有 content projects、guide templates、teaching guides 接口,现状是前后两条实现未衔接。</p><p>测试创建了空白狐狸文档和模板卡车文档;狐狸文档中加入卡车作为第二个模型步骤,对两种模型验证导出与离线阅读。由于服务端场景资源没有接通,本轮直接导入本地 GLB,不能声称走通了之前正式创建的狐狸/卡车场景引用。</p><p>小修保持原交互和文档结构;不重建编辑器、不新增独立服务、不改 DDL。本轮不提交 Git。</p></section>
- <section id="fixes"><h2>2. 开发修复</h2><div class="table"><table><thead><tr><th>问题</th><th>文件</th><th>处理</th><th>验证</th></tr></thead><tbody><tr><td>不存在的工程地址自动新建</td><td>runtime.ts</td><td>不存在 ID 明确报错,返回列表选择,避免查看操作创建脏数据。</td><td>missing</td></tr><tr><td>列表默认排序及重置</td><td>GuideProjectList.vue / content-lists.js</td><td>统一按创建时间倒序;更新旧工程不应改变默认顺序。</td><td>templates / layout</td></tr><tr><td>只读用户无法选择导出和阅读控件</td><td>ofd-v4.js</td><td>放行导出格式、页码、缩放、搜索等阅读控件;OFD 导出不再尝试保存草稿。</td><td>reader</td></tr><tr><td>狐狸三维视口被环境雾完全遮住</td><td>ofd-viewport.js</td><td>单模型加载清除车间雾;加载场景仍使用场景自身环境配置。</td><td>revision / offline</td></tr><tr><td>默认模型相机距离不适配真实模型尺寸</td><td>ofd-document.js</td><td>缺省相机走自动取景,保留用户明确保存的相机位置。已有显式相机不批量覆盖。</td><td>final-document / regression</td></tr><tr><td>新建继承演示工程版本、反馈和装备参数</td><td>ofd-v4.js</td><td>新工程清空演示业务记录、零件、技术参数与来源文件;模板章节按原模板生成。</td><td>templates</td></tr><tr><td>开发环境导出的离线三维包加载失败</td><td>ofd-offline-runtime-assets.js</td><td>打包 Three.js 和解码器原始源码,消除 Vite 改写后的开发路径。</td><td>offline / artifact-validation</td></tr><tr><td>长标题、公式间距与动画秒数版式</td><td>ofd-layout.js</td><td>缺省长标题自适应,公式后增加必要间距,动画时间保留两位小数。</td><td>PDF 四页目视 / regression</td></tr><tr><td>反馈示例固定引用不存在的步骤</td><td>ofd-v4.js</td><td>默认反馈示例使用当前工程的实际步骤,避免新建工程执行示例直接 404。</td><td>api:submit-feedback 201</td></tr></tbody></table></div></section>
- <section id="coverage"><h2>3. 全模块功能覆盖与边界</h2><p>按功能入口建立 43 项检查矩阵。“部分覆盖”和“待补验证”明确保留,不表示已跑过所有按钮与组合。</p><div class="table"><table><thead><tr><th>范围</th><th>功能点</th><th>结论</th><th>证据</th><th>边界</th></tr></thead><tbody><tr><td>列表</td><td>列表加载、编号搜索、重置、创建时间排序</td><td>本地通过</td><td>templates / layout</td><td>编辑旧记录后的多记录排序组合未单独量化。</td></tr><tr><td>列表</td><td>项目详情、状态、版本入口</td><td>部分覆盖</td><td>代码审查 + publish 截图</td><td>统计是本地数据,不能作为教学统计。</td></tr><tr><td>列表</td><td>删除及所有批量/权限组合</td><td>待补验证</td><td>代码审查</td><td>未删除用户工程;未对每一种授权组合做全矩阵测试。</td></tr><tr><td>创建</td><td>空白向导、基本信息、建档</td><td>本地通过</td><td>create</td><td>正式后台不存在该新工程。</td></tr><tr><td>创建</td><td>四类模板静态/动态预览</td><td>本地通过</td><td>templates</td><td>实际逐个打开并切换目录。</td></tr><tr><td>创建</td><td>模板 PDF、OFD 下载和选模板创建</td><td>本地通过</td><td>templates</td><td>下载实测第一类;新建实测第四类(4 章 9 步)。</td></tr><tr><td>创建</td><td>模板来源与平台模板管理联动</td><td>待确认改造</td><td>静态 OFD_CONTENT_TEMPLATES</td><td>当前不是后台模板库。</td></tr><tr><td>创建</td><td>演示历史、反馈、参数隔离</td><td>修复通过</td><td>templates</td><td>仅修复新建,不清理用户既有文档。</td></tr><tr><td>分析规划</td><td>资料来源、需求规格、构建计划导出</td><td>部分覆盖</td><td>02-planning / export</td><td>Markdown 下载已测;专业内容自动分析质量未验收。</td></tr><tr><td>分析规划</td><td>多装备、多层级、关键步骤覆盖</td><td>待业务验收</td><td>原始 DOCX 对照</td><td>狐狸、卡车为功能夹具,不能证明真实维修覆盖率。</td></tr><tr><td>编辑</td><td>步骤属性、保存、刷新重开</td><td>本地通过</td><td>edit</td><td>仅在同一测试浏览器项目空间持久化。</td></tr><tr><td>编辑</td><td>新步骤、续页、复制、撤销重做</td><td>本地通过</td><td>edit</td><td>章节及步骤所有拖动组合未穷举。</td></tr><tr><td>编辑</td><td>表格单元格、合并拆分、边框</td><td>本地通过</td><td>layout</td><td>填写后重开检查;未对所有样式排列组合做测试。</td></tr><tr><td>编辑</td><td>自由文本块、矩形标注</td><td>本地通过</td><td>layout</td><td>自由排版允许用户自行移动重叠;未自动约束所有自由布局。</td></tr><tr><td>编辑</td><td>公式输入、说明、关联区排版</td><td>修复通过</td><td>content / regression / PDF</td><td>两个公式回归与实际 PDF 检查。</td></tr><tr><td>编辑</td><td>字体、纸张、页眉页脚、所有标注形状</td><td>部分覆盖</td><td>属性面板巡检与源码</td><td>不是每个属性都做了写入、重开、导出三重验证。</td></tr><tr><td>资源</td><td>本地 GLB 导入、绑定步骤</td><td>本地通过</td><td>edit / revision</td><td>09-Fox.glb、08-CesiumMilkTruck.glb。</td></tr><tr><td>资源</td><td>后台模型制作/场景制作资源选择</td><td>待确认改造</td><td>本地 platformModels / 场景目录</td><td>不能声称使用了之前在服务端创建的两个场景。</td></tr><tr><td>资源</td><td>单模型显示、取景、截图、动画</td><td>修复通过</td><td>revision / final-document</td><td>实际图像和帧差验证,截图保存后重开保留。</td></tr><tr><td>资源</td><td>本地视频导入、播放、截帧保存</td><td>本地通过</td><td>resources</td><td>使用 2 秒测试视频;不代表真实维修内容验证。</td></tr><tr><td>资源</td><td>音频、资料包、损坏模型、存储配额</td><td>待补验证</td><td>导入代码审查</td><td>未对全部格式和存储异常做实际测试。</td></tr><tr><td>资源</td><td>模型热点、部件聚焦、三维与步骤语义关联</td><td>部分覆盖</td><td>属性面板 + 离线观察操作</td><td>专业热点与真实装备语义尚需专项验证。</td></tr><tr><td>预览</td><td>静态版式、动态步骤搜索与跳转</td><td>本地通过</td><td>layout / templates</td><td>在线预览位于本地编辑器。</td></tr><tr><td>预览</td><td>播放、暂停/重播、观察控制</td><td>本地通过</td><td>revision / offline</td><td>两模型动画帧改变;离线观察按钮逐个执行。</td></tr><tr><td>权限</td><td>管理员只读、导出不修改文档</td><td>修复通过</td><td>reader(实际 admin 会话)</td><td>编辑使用 root;未把三角色全接口授权矩阵当作已验证。</td></tr><tr><td>权限</td><td>账号间工程隔离、数据范围</td><td>待确认改造</td><td>共享本地存储命名空间</td><td>正式数据应以现有后台权限和用户范围为准。</td></tr><tr><td>发布</td><td>预检清单、草稿预览、发布面板</td><td>本地通过</td><td>08-preflight / 09-publish-panel</td><td>预检通过不等于后端发布成功。</td></tr><tr><td>发布</td><td>发布、修订、旧快照、新版本、撤回</td><td>本地通过</td><td>content / revision</td><td>现状均为本地生命周期;没有实际发送后台发布请求。</td></tr><tr><td>发布</td><td>后台版本、OFD/离线交付物原子发布</td><td>待确认改造</td><td>ContentProjectService</td><td>后台已要求 GUIDE 的 OFD + OFFLINE_HTML ZIP;现有页面未串联。</td></tr><tr><td>发布</td><td>审核策略</td><td>代码确认</td><td>ContentProjectService GUIDE 分支</td><td>审核按现有配置可选;不引入强制审核新规则。</td></tr><tr><td>导入导出</td><td>工程 JSON、导入恢复、非法 JSON</td><td>本地通过</td><td>revision / resources</td><td>JSON 不是完整资产备份;模型字节仍在 IndexedDB。</td></tr><tr><td>导入导出</td><td>实际 PDF 下载及四页版式</td><td>修复通过</td><td>final-pdf-page-1 至 4</td><td>中文、目录、模型图、公式目视检查;字体存在替代。</td></tr><tr><td>导入导出</td><td>实际 OFD ZIP/XML</td><td>本地通过</td><td>artifact-validation</td><td>未用第三方原生 OFD 阅读器验证标准一致性或签章。</td></tr><tr><td>导入导出</td><td>离线 ZIP、GLB 轻量化、运行时</td><td>修复通过</td><td>offline / artifact-validation</td><td>卡车导出按已有逻辑压缩;结构与动画保留,非原字节复制。</td></tr><tr><td>离线</td><td>断开公网/业务服务后本地启动阅读</td><td>本地通过</td><td>offline</td><td>Windows + Node.js 本地静态服务;没有依赖外站的请求。</td></tr><tr><td>离线</td><td>手机尺寸、麒麟、真实移动设备</td><td>部分覆盖</td><td>23-offline-mobile</td><td>390×844 可显示,按钮换行与三维取景仍偏拥挤;未测实机、麒麟。</td></tr><tr><td>教学</td><td>学员指导书列表、正式阅读内容</td><td>待确认改造</td><td>正式内容查询 + teaching 接口查询</td><td>不能从本地发布进入正式教学阅读。</td></tr><tr><td>教学</td><td>收藏、个人笔记、检索、进度</td><td>待确认改造</td><td>原始需求与离线入口核对</td><td>离线缺个人笔记/收藏入口;需与在线用户身份及进度方案一并实现。</td></tr><tr><td>教学</td><td>学习统计、报表、训练/考试联动</td><td>待确认改造</td><td>后端 teaching/guides 与原始需求</td><td>未因后台存在接口而判为全链路通过。</td></tr><tr><td>接口</td><td>九个本地契约操作与反馈样例</td><td>修复通过</td><td>api / revision</td><td>八个本地请求逐个执行;生命周期通过发布 UI 单独实测。</td></tr><tr><td>接口</td><td>第三方 HTTP 调用、鉴权、正式反馈</td><td>待确认改造</td><td>api:零真实业务 HTTP 请求</td><td>显示 /api/ofd 不代表服务端真实提供该接口。</td></tr><tr><td>质量</td><td>构建、单元回归、浏览器异常</td><td>通过</td><td>build 及 20 项测试</td><td>选定最终 E2E 阶段无 pageerror;不包含早期定位脚本失败。</td></tr><tr><td>质量</td><td>三主题、键盘、长文档、并发和性能指标</td><td>待补验证</td><td>本轮边界</td><td>未验证所有组合;不能宣称 <1s / ≥25fps / ≥99% / ≤10s 已达标。</td></tr></tbody></table></div></section>
- <section id="confirm"><h2>4. 需要确认的较大调整</h2><p>建议按 A → B → C 实施,复用现有后端和编辑器。以下尚未实施,避免在本次 bugfix 中静默改变存储、权限和发布规则。</p><div class="table"><table><thead><tr><th>范围</th><th>具体实施</th><th>验收闭环</th></tr></thead><tbody><tr><td>A:编辑与正式内容闭环(优先)</td><td>保留现有编辑器,将列表、工程保存、模板/模型/场景选择、权限和版本操作对接现有 content 接口。服务端为数据真值;明确迁移本地工程和 IndexedDB 文件,不能静默覆盖。发布时提交 OFD 和离线 ZIP,并遵循现有可选审核设置。</td><td>验收:新建→编辑→刷新/换浏览器→发布→旧版本不变→撤回;正式数据库与界面一致,其他账号按权限可见。</td></tr><tr><td>B:教学阅读闭环</td><td>衔接现有教学指导书、阅读记录和反馈接口;补齐个人笔记、收藏、学习进度与统计。离线笔记是否回传及冲突处理需要与在线范围一起定。</td><td>验收:教员发布→学员阅读→记录/笔记/反馈保存→教员统计可查询;账号隔离生效。</td></tr><tr><td>C:对外接口真实联调</td><td>将当前本地契约自检与真实 HTTP 接口对齐,文档标明真实路径、参数、错误及授权;沿用现有平台认证机制,不新增密钥文件或独立服务。</td><td>验收:从独立客户端调用,读取/修改/反馈真实工程,未授权请求被拒绝。</td></tr></tbody></table></div><p>另有后续验证项:移动窄屏按钮与取景拥挤、完整主题/键盘矩阵、原生 OFD 阅读器、麒麟、长文档与性能压力测试。真实装备内容覆盖率及专业维修正确性需业务资料与实际装备验收。</p></section>
- <section><h2>5. 交付文件与复核方法</h2><p><a href="export-pdf.pdf">下载实测 PDF</a> · <a href="export-ofd.ofd">下载 OFD</a> · <a href="export-offline.zip">下载离线 ZIP</a> · <a href="export-project.json">下载工程 JSON</a> · <a href="export-requirement.md">需求规格</a> · <a href="export-plan.md">构建计划</a> · <a href="summary.json">完整 JSON 报告</a></p><p>离线 ZIP 完整解压后用其 Windows 启动脚本运行,需要已有 Node.js,通过本机 HTTP 打开,不能直接 file://。运行时和两个 GLB 均在包内,无公网或业务 API 依赖。OFD 已检查 ZIP/XML,PDF 四页已渲染核对;未宣称第三方 OFD 认证,PDF 字体跨平台一致性未验证。</p><p>测试数据保留在隔离的自动化浏览器空间,不在用户日常浏览器或服务端列表中。工程 JSON 含资源引用,不含所有模型原字节,导入编辑时需重新选择本地素材;离线 ZIP 是可独立复核的阅读交付物。下载内容使用测试文字,不能用于实际维修操作。</p><div class="table"><table><thead><tr><th>交付物检查</th><th>结果</th><th>说明</th></tr></thead><tbody><tr><td>PDF 四页可解析且每页含文本</td><td>PASS</td><td>4 pages</td></tr><tr><td>OFD ZIP 完整、入口和 XML 可解析</td><td>PASS</td><td>9 XML files; 未使用第三方 OFD 阅读器认证</td></tr><tr><td>离线 ZIP 完整</td><td>PASS</td><td>16 files</td></tr><tr><td>离线脚本没有 Vite 开发缓存引用</td><td>PASS</td><td></td></tr><tr><td>离线狐狸和卡车 GLB 结构及动画保留</td><td>PASS</td><td>导出按现有逻辑轻量化,卡车从 369980 缩至 318276 字节;非原文件逐字节复制。实际渲染和动画另由浏览器验证。</td></tr><tr><td>离线包含本地 Three.js 和解码器</td><td>PASS</td><td></td></tr></tbody></table></div></section>
- <section id="evidence"><h2>6. 实际截图</h2><p>点击查看原图。截图用于证明对应操作,含测试自由文本/标注的页面不作为最终排版模板。</p><div class="images"><figure><a href="19-list-created-order.png"><img loading="lazy" src="19-list-created-order.png" alt="新建模板工程与创建时间排序"></a><figcaption>新建模板工程与创建时间排序</figcaption></figure><figure><a href="01-create-wizard.png"><img loading="lazy" src="01-create-wizard.png" alt="空白创建向导"></a><figcaption>空白创建向导</figcaption></figure><figure><a href="02-planning.png"><img loading="lazy" src="02-planning.png" alt="资料与规划"></a><figcaption>资料与规划</figcaption></figure><figure><a href="17-template-preview.png"><img loading="lazy" src="17-template-preview.png" alt="模板结构预览"></a><figcaption>模板结构预览</figcaption></figure><figure><a href="27-final-fox.png"><img loading="lazy" src="27-final-fox.png" alt="狐狸真实模型显示与取景"></a><figcaption>狐狸真实模型显示与取景</figcaption></figure><figure><a href="28-final-truck.png"><img loading="lazy" src="28-final-truck.png" alt="卡车真实模型显示与取景"></a><figcaption>卡车真实模型显示与取景</figcaption></figure><figure><a href="29-video-poster.png"><img loading="lazy" src="29-video-poster.png" alt="视频播放与当前帧海报"></a><figcaption>视频播放与当前帧海报</figcaption></figure><figure><a href="30-invalid-import.png"><img loading="lazy" src="30-invalid-import.png" alt="非法工程导入保留原文档"></a><figcaption>非法工程导入保留原文档</figcaption></figure><figure><a href="24-table-edit.png"><img loading="lazy" src="24-table-edit.png" alt="表格编辑测试(自由块为测试内容)"></a><figcaption>表格编辑测试(自由块为测试内容)</figcaption></figure><figure><a href="25-markup.png"><img loading="lazy" src="25-markup.png" alt="矩形标注"></a><figcaption>矩形标注</figcaption></figure><figure><a href="26-interactive-search.png"><img loading="lazy" src="26-interactive-search.png" alt="动态阅读搜索"></a><figcaption>动态阅读搜索</figcaption></figure><figure><a href="16-withdrawn.png"><img loading="lazy" src="16-withdrawn.png" alt="本地版本撤回"></a><figcaption>本地版本撤回</figcaption></figure><figure><a href="20-api-local.png"><img loading="lazy" src="20-api-local.png" alt="接口自检:实际仍为本地调度"></a><figcaption>接口自检:实际仍为本地调度</figcaption></figure><figure><a href="21-offline-reading.png"><img loading="lazy" src="21-offline-reading.png" alt="离线步骤阅读"></a><figcaption>离线步骤阅读</figcaption></figure><figure><a href="22-offline-model-0.png"><img loading="lazy" src="22-offline-model-0.png" alt="离线狐狸三维"></a><figcaption>离线狐狸三维</figcaption></figure><figure><a href="22-offline-model-1.png"><img loading="lazy" src="22-offline-model-1.png" alt="离线卡车三维"></a><figcaption>离线卡车三维</figcaption></figure><figure><a href="23-offline-mobile.png"><img loading="lazy" src="23-offline-mobile.png" alt="手机尺寸观察:仍有拥挤"></a><figcaption>手机尺寸观察:仍有拥挤</figcaption></figure><figure><a href="final-pdf-page-1.png"><img loading="lazy" src="final-pdf-page-1.png" alt="最终 PDF 第 1 页"></a><figcaption>最终 PDF 第 1 页</figcaption></figure><figure><a href="final-pdf-page-2.png"><img loading="lazy" src="final-pdf-page-2.png" alt="最终 PDF 第 2 页"></a><figcaption>最终 PDF 第 2 页</figcaption></figure><figure><a href="final-pdf-page-3.png"><img loading="lazy" src="final-pdf-page-3.png" alt="最终 PDF 第 3 页"></a><figcaption>最终 PDF 第 3 页</figcaption></figure><figure><a href="final-pdf-page-4.png"><img loading="lazy" src="final-pdf-page-4.png" alt="最终 PDF 第 4 页"></a><figcaption>最终 PDF 第 4 页</figcaption></figure></div></section>
- <section id="tests"><h2>7. 测试明细</h2><p>环境:Windows、Edge headless、Playwright,1920×1080;前端 6180,经 Gateway 6100;root 编辑、admin 只读。离线包通过隔离的 18766 本地静态服务运行并阻断其他主机请求。未将浏览器登录凭据写入报告。</p><p>命令:<code>node tools/guide-closure-live.mjs <phase></code>(多阶段顺序执行,不能并发共享浏览器状态);<code>python tools/guide-artifact-check.py</code>;<code>node --test scripts/guide-legacy-closure.test.mjs</code>;现有 5 个 guide 测试脚本(17 项);<code>pnpm run build</code>(含 vue-tsc 和构建后校验)。新旧单元测试共 20 项通过,构建完成,仅既有 chunk size 提示。</p><p>早期脚本定位失败、重复运行造成的选择器歧义、Playwright storageState 无法恢复 Blob 原型,都未作为产品缺陷统计;实际模型测试通过界面重新导入,再在同一上下文刷新验证持久化。原始中间记录保留用于追溯,最终统计只采用下面选定阶段。</p><div class="table"><table><thead><tr><th>阶段</th><th>断言</th><th>结果</th><th>说明</th></tr></thead><tbody><tr><td>create</td><td>通过界面从空白模板创建指导书</td><td>PASS</td><td></td></tr><tr><td>create</td><td>创建调用正式内容接口</td><td>FAIL</td><td>当前页面使用浏览器本地工程库</td></tr><tr><td>create</td><td>新建工程出现在正式后端列表</td><td>FAIL</td><td></td></tr><tr><td>edit</td><td>步骤标题、说明、工具、安全、验收编辑保存</td><td>PASS</td><td></td></tr><tr><td>edit</td><td>刷新后恢复已保存的本地内容</td><td>PASS</td><td></td></tr><tr><td>edit</td><td>新增步骤后保存</td><td>PASS</td><td></td></tr><tr><td>edit</td><td>正文续页和复制页面保存</td><td>PASS</td><td></td></tr><tr><td>edit</td><td>撤销复制恢复页数</td><td>PASS</td><td></td></tr><tr><td>edit</td><td>重做复制恢复页数</td><td>PASS</td><td></td></tr><tr><td>edit</td><td>导入真实 Fox.glb 文件并登记本地资源</td><td>PASS</td><td></td></tr><tr><td>reader</td><td>查看角色的正文编辑控件禁用</td><td>PASS</td><td></td></tr><tr><td>reader</td><td>查看角色可以使用导出菜单</td><td>PASS</td><td></td></tr><tr><td>reader</td><td>查看角色可以使用页码和缩放</td><td>PASS</td><td></td></tr><tr><td>reader</td><td>只读用户实际导出 OFD 且不修改工程</td><td>PASS</td><td></td></tr><tr><td>missing</td><td>访问不存在的指导书不会自动新建</td><td>PASS</td><td></td></tr><tr><td>content</td><td>公式与说明保存</td><td>PASS</td><td></td></tr><tr><td>content</td><td>发布保存本地正式版本</td><td>PASS</td><td></td></tr><tr><td>revision</td><td>修订不改变旧的正式版本快照</td><td>PASS</td><td></td></tr><tr><td>revision</td><td>工程 JSON 导入恢复步骤与资源关联</td><td>PASS</td><td></td></tr><tr><td>revision</td><td>狐狸动画真实改变渲染帧</td><td>PASS</td><td></td></tr><tr><td>revision</td><td>狐狸截取当前角度保存纸面图片</td><td>PASS</td><td></td></tr><tr><td>revision</td><td>卡车动画真实改变渲染帧</td><td>PASS</td><td></td></tr><tr><td>revision</td><td>卡车截取当前角度保存纸面图片</td><td>PASS</td><td></td></tr><tr><td>revision</td><td>新修订再次发布并留存历史版本</td><td>PASS</td><td></td></tr><tr><td>revision</td><td>撤回本地正式版本</td><td>PASS</td><td></td></tr><tr><td>templates</td><td>四类模板列表</td><td>PASS</td><td></td></tr><tr><td>templates</td><td>模板 1 静态版式预览</td><td>PASS</td><td></td></tr><tr><td>templates</td><td>模板 1 动态目录切换</td><td>PASS</td><td></td></tr><tr><td>templates</td><td>模板下载 pdf</td><td>PASS</td><td></td></tr><tr><td>templates</td><td>模板下载 ofd</td><td>PASS</td><td></td></tr><tr><td>templates</td><td>模板 2 静态版式预览</td><td>PASS</td><td></td></tr><tr><td>templates</td><td>模板 2 动态目录切换</td><td>PASS</td><td></td></tr><tr><td>templates</td><td>模板 3 静态版式预览</td><td>PASS</td><td></td></tr><tr><td>templates</td><td>模板 3 动态目录切换</td><td>PASS</td><td></td></tr><tr><td>templates</td><td>模板 4 静态版式预览</td><td>PASS</td><td></td></tr><tr><td>templates</td><td>模板 4 动态目录切换</td><td>PASS</td><td></td></tr><tr><td>templates</td><td>选用模板真正生成章节步骤</td><td>PASS</td><td></td></tr><tr><td>templates</td><td>新文档不混入演示版本和反馈</td><td>PASS</td><td></td></tr><tr><td>templates</td><td>新文档不混入其他装备参数与来源</td><td>PASS</td><td></td></tr><tr><td>templates</td><td>列表默认按创建时间倒序</td><td>PASS</td><td></td></tr><tr><td>layout</td><td>插入表格、填写单元格、合并拆分与边框保存</td><td>PASS</td><td></td></tr><tr><td>layout</td><td>插入正文自由块后保存</td><td>PASS</td><td></td></tr><tr><td>layout</td><td>二维框标注保存</td><td>PASS</td><td></td></tr><tr><td>layout</td><td>动态阅读检索步骤</td><td>PASS</td><td></td></tr><tr><td>layout</td><td>表格、自由块、二维标注重开后保留</td><td>PASS</td><td></td></tr><tr><td>layout</td><td>列表按编号检索</td><td>PASS</td><td></td></tr><tr><td>layout</td><td>重置恢复创建时间排序</td><td>PASS</td><td></td></tr><tr><td>api</td><td>对外接口展示九个操作</td><td>PASS</td><td></td></tr><tr><td>api</td><td>本地接口调度 list-projects 返回成功</td><td>PASS</td><td>200
- GET /api/ofd/projects
- 10 ms
- {
- "success": true,
- "data": {
- "total": 3,</td></tr><tr><td>api</td><td>本地接口调度 get-project 返回成功</td><td>PASS</td><td>200
- GET /api/ofd/projects/OFD-mtub76ed-01
- 8 ms
- {
- "success": true,
- "data": {
- </td></tr><tr><td>api</td><td>本地接口调度 update-step 返回成功</td><td>PASS</td><td>200
- PUT /api/ofd/projects/OFD-mtub76ed-01/steps/step-01
- 26 ms
- {
- "success": tru</td></tr><tr><td>api</td><td>本地接口调度 register-resource 返回成功</td><td>PASS</td><td>201
- POST /api/ofd/projects/OFD-mtub76ed-01/resources
- 35 ms
- {
- "success": true,
- </td></tr><tr><td>api</td><td>本地接口调度 collect-resources 返回成功</td><td>PASS</td><td>201
- POST /api/ofd/projects/OFD-mtub76ed-01/collect
- 44 ms
- {
- "success": true,
- </td></tr><tr><td>api</td><td>本地接口调度 inspect 返回成功</td><td>PASS</td><td>200
- POST /api/ofd/projects/OFD-mtub76ed-01/inspect
- 9 ms
- {
- "success": true,
- "</td></tr><tr><td>api</td><td>本地接口调度 delivery-manifest 返回成功</td><td>PASS</td><td>200
- POST /api/ofd/projects/OFD-mtub76ed-01/delivery-manifest
- 6 ms
- {
- "success":</td></tr><tr><td>api</td><td>本地接口调度 submit-feedback 返回成功</td><td>PASS</td><td>201
- POST /api/ofd/projects/OFD-mtub76ed-01/feedback
- 25 ms
- {
- "success": true,
- </td></tr><tr><td>api</td><td>接口面板未发送真实 HTTP 业务请求</td><td>PASS</td><td>这里通过本地函数调度,需要接入正式 API 才可外部调用</td></tr><tr><td>offline</td><td>离线包章节步骤可以阅读与切换</td><td>PASS</td><td></td></tr><tr><td>offline</td><td>离线模型 1 动画可播放</td><td>PASS</td><td></td></tr><tr><td>offline</td><td>离线模型 1 观察操作可执行</td><td>PASS</td><td></td></tr><tr><td>offline</td><td>离线模型 2 动画可播放</td><td>PASS</td><td></td></tr><tr><td>offline</td><td>离线模型 2 观察操作可执行</td><td>PASS</td><td></td></tr><tr><td>offline</td><td>断开公网和业务服务后没有外部依赖请求</td><td>PASS</td><td></td></tr><tr><td>offline</td><td>离线个人批注与收藏入口</td><td>FAIL</td><td>当前离线阅读器未提供原始需求中的个人笔记、收藏和学习进度回传</td></tr><tr><td>final-document</td><td>狐狸按实际尺寸取景后保存</td><td>PASS</td><td></td></tr><tr><td>final-document</td><td>卡车按实际尺寸取景后保存</td><td>PASS</td><td></td></tr><tr><td>final-document</td><td>两个模型的取景图片重开后保留</td><td>PASS</td><td></td></tr><tr><td>export</td><td>导出 project 下载文件</td><td>PASS</td><td></td></tr><tr><td>export</td><td>导出 requirement 下载文件</td><td>PASS</td><td></td></tr><tr><td>export</td><td>导出 plan 下载文件</td><td>PASS</td><td></td></tr><tr><td>export</td><td>导出 pdf 下载文件</td><td>PASS</td><td></td></tr><tr><td>export</td><td>导出 ofd 下载文件</td><td>PASS</td><td></td></tr><tr><td>export</td><td>导出 offline 下载文件</td><td>PASS</td><td></td></tr><tr><td>resources</td><td>导入本地视频并在原生播放器实际播放</td><td>PASS</td><td></td></tr><tr><td>resources</td><td>视频当前帧海报保存到步骤</td><td>PASS</td><td></td></tr><tr><td>resources</td><td>非法工程 JSON 被拒绝且原工程保留</td><td>PASS</td><td></td></tr><tr><td>resources</td><td>编制工程同步到正式内容库</td><td>FAIL</td><td>实测仅写入浏览器本地库;正式内容库查询 HTTP 200</td></tr><tr><td>resources</td><td>编制发布结果进入教学指导书列表</td><td>FAIL</td><td>教学查询 HTTP 200</td></tr></tbody></table></div><p>最终选定阶段 pageerror 总数:0。真实 HTTP 业务写请求为零是尚未接入的证据,而不是接口性能验证。</p></section></main></html>
|