You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

905 lines
25 KiB

  1. {
  2. "date": "2026-09-10",
  3. "conclusion": "未完全闭环;本地编辑与导出路径完成修复验证,正式内容、教学和对外 HTTP 接入待确认",
  4. "environment": {
  5. "web": "http://127.0.0.1:6180",
  6. "gateway": 6100,
  7. "browser": "Edge headless / Playwright",
  8. "viewport": "1920×1080;390×844 观察",
  9. "accounts": "root 编辑、admin 只读(不含凭据)"
  10. },
  11. "pass": 73,
  12. "fail": 5,
  13. "unitTests": 20,
  14. "artifactChecks": [
  15. {
  16. "name": "PDF 四页可解析且每页含文本",
  17. "status": "PASS",
  18. "detail": "4 pages"
  19. },
  20. {
  21. "name": "OFD ZIP 完整、入口和 XML 可解析",
  22. "status": "PASS",
  23. "detail": "9 XML files; 未使用第三方 OFD 阅读器认证"
  24. },
  25. {
  26. "name": "离线 ZIP 完整",
  27. "status": "PASS",
  28. "detail": "16 files"
  29. },
  30. {
  31. "name": "离线脚本没有 Vite 开发缓存引用",
  32. "status": "PASS",
  33. "detail": ""
  34. },
  35. {
  36. "name": "离线狐狸和卡车 GLB 结构及动画保留",
  37. "status": "PASS",
  38. "detail": "导出按现有逻辑轻量化,卡车从 369980 缩至 318276 字节;非原文件逐字节复制。实际渲染和动画另由浏览器验证。"
  39. },
  40. {
  41. "name": "离线包含本地 Three.js 和解码器",
  42. "status": "PASS",
  43. "detail": ""
  44. }
  45. ],
  46. "fixes": [
  47. [
  48. "不存在的工程地址自动新建",
  49. "runtime.ts",
  50. "不存在 ID 明确报错,返回列表选择,避免查看操作创建脏数据。",
  51. "missing"
  52. ],
  53. [
  54. "列表默认排序及重置",
  55. "GuideProjectList.vue / content-lists.js",
  56. "统一按创建时间倒序;更新旧工程不应改变默认顺序。",
  57. "templates / layout"
  58. ],
  59. [
  60. "只读用户无法选择导出和阅读控件",
  61. "ofd-v4.js",
  62. "放行导出格式、页码、缩放、搜索等阅读控件;OFD 导出不再尝试保存草稿。",
  63. "reader"
  64. ],
  65. [
  66. "狐狸三维视口被环境雾完全遮住",
  67. "ofd-viewport.js",
  68. "单模型加载清除车间雾;加载场景仍使用场景自身环境配置。",
  69. "revision / offline"
  70. ],
  71. [
  72. "默认模型相机距离不适配真实模型尺寸",
  73. "ofd-document.js",
  74. "缺省相机走自动取景,保留用户明确保存的相机位置。已有显式相机不批量覆盖。",
  75. "final-document / regression"
  76. ],
  77. [
  78. "新建继承演示工程版本、反馈和装备参数",
  79. "ofd-v4.js",
  80. "新工程清空演示业务记录、零件、技术参数与来源文件;模板章节按原模板生成。",
  81. "templates"
  82. ],
  83. [
  84. "开发环境导出的离线三维包加载失败",
  85. "ofd-offline-runtime-assets.js",
  86. "打包 Three.js 和解码器原始源码,消除 Vite 改写后的开发路径。",
  87. "offline / artifact-validation"
  88. ],
  89. [
  90. "长标题、公式间距与动画秒数版式",
  91. "ofd-layout.js",
  92. "缺省长标题自适应,公式后增加必要间距,动画时间保留两位小数。",
  93. "PDF 四页目视 / regression"
  94. ],
  95. [
  96. "反馈示例固定引用不存在的步骤",
  97. "ofd-v4.js",
  98. "默认反馈示例使用当前工程的实际步骤,避免新建工程执行示例直接 404。",
  99. "api:submit-feedback 201"
  100. ]
  101. ],
  102. "coverage": [
  103. [
  104. "列表",
  105. "列表加载、编号搜索、重置、创建时间排序",
  106. "本地通过",
  107. "templates / layout",
  108. "编辑旧记录后的多记录排序组合未单独量化。"
  109. ],
  110. [
  111. "列表",
  112. "项目详情、状态、版本入口",
  113. "部分覆盖",
  114. "代码审查 + publish 截图",
  115. "统计是本地数据,不能作为教学统计。"
  116. ],
  117. [
  118. "列表",
  119. "删除及所有批量/权限组合",
  120. "待补验证",
  121. "代码审查",
  122. "未删除用户工程;未对每一种授权组合做全矩阵测试。"
  123. ],
  124. [
  125. "创建",
  126. "空白向导、基本信息、建档",
  127. "本地通过",
  128. "create",
  129. "正式后台不存在该新工程。"
  130. ],
  131. [
  132. "创建",
  133. "四类模板静态/动态预览",
  134. "本地通过",
  135. "templates",
  136. "实际逐个打开并切换目录。"
  137. ],
  138. [
  139. "创建",
  140. "模板 PDF、OFD 下载和选模板创建",
  141. "本地通过",
  142. "templates",
  143. "下载实测第一类;新建实测第四类(4 章 9 步)。"
  144. ],
  145. [
  146. "创建",
  147. "模板来源与平台模板管理联动",
  148. "待确认改造",
  149. "静态 OFD_CONTENT_TEMPLATES",
  150. "当前不是后台模板库。"
  151. ],
  152. [
  153. "创建",
  154. "演示历史、反馈、参数隔离",
  155. "修复通过",
  156. "templates",
  157. "仅修复新建,不清理用户既有文档。"
  158. ],
  159. [
  160. "分析规划",
  161. "资料来源、需求规格、构建计划导出",
  162. "部分覆盖",
  163. "02-planning / export",
  164. "Markdown 下载已测;专业内容自动分析质量未验收。"
  165. ],
  166. [
  167. "分析规划",
  168. "多装备、多层级、关键步骤覆盖",
  169. "待业务验收",
  170. "原始 DOCX 对照",
  171. "狐狸、卡车为功能夹具,不能证明真实维修覆盖率。"
  172. ],
  173. [
  174. "编辑",
  175. "步骤属性、保存、刷新重开",
  176. "本地通过",
  177. "edit",
  178. "仅在同一测试浏览器项目空间持久化。"
  179. ],
  180. [
  181. "编辑",
  182. "新步骤、续页、复制、撤销重做",
  183. "本地通过",
  184. "edit",
  185. "章节及步骤所有拖动组合未穷举。"
  186. ],
  187. [
  188. "编辑",
  189. "表格单元格、合并拆分、边框",
  190. "本地通过",
  191. "layout",
  192. "填写后重开检查;未对所有样式排列组合做测试。"
  193. ],
  194. [
  195. "编辑",
  196. "自由文本块、矩形标注",
  197. "本地通过",
  198. "layout",
  199. "自由排版允许用户自行移动重叠;未自动约束所有自由布局。"
  200. ],
  201. [
  202. "编辑",
  203. "公式输入、说明、关联区排版",
  204. "修复通过",
  205. "content / regression / PDF",
  206. "两个公式回归与实际 PDF 检查。"
  207. ],
  208. [
  209. "编辑",
  210. "字体、纸张、页眉页脚、所有标注形状",
  211. "部分覆盖",
  212. "属性面板巡检与源码",
  213. "不是每个属性都做了写入、重开、导出三重验证。"
  214. ],
  215. [
  216. "资源",
  217. "本地 GLB 导入、绑定步骤",
  218. "本地通过",
  219. "edit / revision",
  220. "09-Fox.glb、08-CesiumMilkTruck.glb。"
  221. ],
  222. [
  223. "资源",
  224. "后台模型制作/场景制作资源选择",
  225. "待确认改造",
  226. "本地 platformModels / 场景目录",
  227. "不能声称使用了之前在服务端创建的两个场景。"
  228. ],
  229. [
  230. "资源",
  231. "单模型显示、取景、截图、动画",
  232. "修复通过",
  233. "revision / final-document",
  234. "实际图像和帧差验证,截图保存后重开保留。"
  235. ],
  236. [
  237. "资源",
  238. "本地视频导入、播放、截帧保存",
  239. "本地通过",
  240. "resources",
  241. "使用 2 秒测试视频;不代表真实维修内容验证。"
  242. ],
  243. [
  244. "资源",
  245. "音频、资料包、损坏模型、存储配额",
  246. "待补验证",
  247. "导入代码审查",
  248. "未对全部格式和存储异常做实际测试。"
  249. ],
  250. [
  251. "资源",
  252. "模型热点、部件聚焦、三维与步骤语义关联",
  253. "部分覆盖",
  254. "属性面板 + 离线观察操作",
  255. "专业热点与真实装备语义尚需专项验证。"
  256. ],
  257. [
  258. "预览",
  259. "静态版式、动态步骤搜索与跳转",
  260. "本地通过",
  261. "layout / templates",
  262. "在线预览位于本地编辑器。"
  263. ],
  264. [
  265. "预览",
  266. "播放、暂停/重播、观察控制",
  267. "本地通过",
  268. "revision / offline",
  269. "两模型动画帧改变;离线观察按钮逐个执行。"
  270. ],
  271. [
  272. "权限",
  273. "管理员只读、导出不修改文档",
  274. "修复通过",
  275. "reader(实际 admin 会话)",
  276. "编辑使用 root;未把三角色全接口授权矩阵当作已验证。"
  277. ],
  278. [
  279. "权限",
  280. "账号间工程隔离、数据范围",
  281. "待确认改造",
  282. "共享本地存储命名空间",
  283. "正式数据应以现有后台权限和用户范围为准。"
  284. ],
  285. [
  286. "发布",
  287. "预检清单、草稿预览、发布面板",
  288. "本地通过",
  289. "08-preflight / 09-publish-panel",
  290. "预检通过不等于后端发布成功。"
  291. ],
  292. [
  293. "发布",
  294. "发布、修订、旧快照、新版本、撤回",
  295. "本地通过",
  296. "content / revision",
  297. "现状均为本地生命周期;没有实际发送后台发布请求。"
  298. ],
  299. [
  300. "发布",
  301. "后台版本、OFD/离线交付物原子发布",
  302. "待确认改造",
  303. "ContentProjectService",
  304. "后台已要求 GUIDE 的 OFD + OFFLINE_HTML ZIP;现有页面未串联。"
  305. ],
  306. [
  307. "发布",
  308. "审核策略",
  309. "代码确认",
  310. "ContentProjectService GUIDE 分支",
  311. "审核按现有配置可选;不引入强制审核新规则。"
  312. ],
  313. [
  314. "导入导出",
  315. "工程 JSON、导入恢复、非法 JSON",
  316. "本地通过",
  317. "revision / resources",
  318. "JSON 不是完整资产备份;模型字节仍在 IndexedDB。"
  319. ],
  320. [
  321. "导入导出",
  322. "实际 PDF 下载及四页版式",
  323. "修复通过",
  324. "final-pdf-page-1 至 4",
  325. "中文、目录、模型图、公式目视检查;字体存在替代。"
  326. ],
  327. [
  328. "导入导出",
  329. "实际 OFD ZIP/XML",
  330. "本地通过",
  331. "artifact-validation",
  332. "未用第三方原生 OFD 阅读器验证标准一致性或签章。"
  333. ],
  334. [
  335. "导入导出",
  336. "离线 ZIP、GLB 轻量化、运行时",
  337. "修复通过",
  338. "offline / artifact-validation",
  339. "卡车导出按已有逻辑压缩;结构与动画保留,非原字节复制。"
  340. ],
  341. [
  342. "离线",
  343. "断开公网/业务服务后本地启动阅读",
  344. "本地通过",
  345. "offline",
  346. "Windows + Node.js 本地静态服务;没有依赖外站的请求。"
  347. ],
  348. [
  349. "离线",
  350. "手机尺寸、麒麟、真实移动设备",
  351. "部分覆盖",
  352. "23-offline-mobile",
  353. "390×844 可显示,按钮换行与三维取景仍偏拥挤;未测实机、麒麟。"
  354. ],
  355. [
  356. "教学",
  357. "学员指导书列表、正式阅读内容",
  358. "待确认改造",
  359. "正式内容查询 + teaching 接口查询",
  360. "不能从本地发布进入正式教学阅读。"
  361. ],
  362. [
  363. "教学",
  364. "收藏、个人笔记、检索、进度",
  365. "待确认改造",
  366. "原始需求与离线入口核对",
  367. "离线缺个人笔记/收藏入口;需与在线用户身份及进度方案一并实现。"
  368. ],
  369. [
  370. "教学",
  371. "学习统计、报表、训练/考试联动",
  372. "待确认改造",
  373. "后端 teaching/guides 与原始需求",
  374. "未因后台存在接口而判为全链路通过。"
  375. ],
  376. [
  377. "接口",
  378. "九个本地契约操作与反馈样例",
  379. "修复通过",
  380. "api / revision",
  381. "八个本地请求逐个执行;生命周期通过发布 UI 单独实测。"
  382. ],
  383. [
  384. "接口",
  385. "第三方 HTTP 调用、鉴权、正式反馈",
  386. "待确认改造",
  387. "api:零真实业务 HTTP 请求",
  388. "显示 /api/ofd 不代表服务端真实提供该接口。"
  389. ],
  390. [
  391. "质量",
  392. "构建、单元回归、浏览器异常",
  393. "通过",
  394. "build 及 20 项测试",
  395. "选定最终 E2E 阶段无 pageerror;不包含早期定位脚本失败。"
  396. ],
  397. [
  398. "质量",
  399. "三主题、键盘、长文档、并发和性能指标",
  400. "待补验证",
  401. "本轮边界",
  402. "未验证所有组合;不能宣称 <1s / ≥25fps / ≥99% / ≤10s 已达标。"
  403. ]
  404. ],
  405. "proposals": [
  406. [
  407. "A:编辑与正式内容闭环(优先)",
  408. "保留现有编辑器,将列表、工程保存、模板/模型/场景选择、权限和版本操作对接现有 content 接口。服务端为数据真值;明确迁移本地工程和 IndexedDB 文件,不能静默覆盖。发布时提交 OFD 和离线 ZIP,并遵循现有可选审核设置。",
  409. "验收:新建→编辑→刷新/换浏览器→发布→旧版本不变→撤回;正式数据库与界面一致,其他账号按权限可见。"
  410. ],
  411. [
  412. "B:教学阅读闭环",
  413. "衔接现有教学指导书、阅读记录和反馈接口;补齐个人笔记、收藏、学习进度与统计。离线笔记是否回传及冲突处理需要与在线范围一起定。",
  414. "验收:教员发布→学员阅读→记录/笔记/反馈保存→教员统计可查询;账号隔离生效。"
  415. ],
  416. [
  417. "C:对外接口真实联调",
  418. "将当前本地契约自检与真实 HTTP 接口对齐,文档标明真实路径、参数、错误及授权;沿用现有平台认证机制,不新增密钥文件或独立服务。",
  419. "验收:从独立客户端调用,读取/修改/反馈真实工程,未授权请求被拒绝。"
  420. ]
  421. ],
  422. "runs": [
  423. {
  424. "phase": "create",
  425. "checks": [
  426. {
  427. "name": "通过界面从空白模板创建指导书",
  428. "status": "PASS",
  429. "detail": ""
  430. },
  431. {
  432. "name": "创建调用正式内容接口",
  433. "status": "FAIL",
  434. "detail": "当前页面使用浏览器本地工程库"
  435. },
  436. {
  437. "name": "新建工程出现在正式后端列表",
  438. "status": "FAIL",
  439. "detail": ""
  440. }
  441. ],
  442. "errors": [],
  443. "requests": []
  444. },
  445. {
  446. "phase": "edit",
  447. "checks": [
  448. {
  449. "name": "步骤标题、说明、工具、安全、验收编辑保存",
  450. "status": "PASS",
  451. "detail": ""
  452. },
  453. {
  454. "name": "刷新后恢复已保存的本地内容",
  455. "status": "PASS",
  456. "detail": ""
  457. },
  458. {
  459. "name": "新增步骤后保存",
  460. "status": "PASS",
  461. "detail": ""
  462. },
  463. {
  464. "name": "正文续页和复制页面保存",
  465. "status": "PASS",
  466. "detail": ""
  467. },
  468. {
  469. "name": "撤销复制恢复页数",
  470. "status": "PASS",
  471. "detail": ""
  472. },
  473. {
  474. "name": "重做复制恢复页数",
  475. "status": "PASS",
  476. "detail": ""
  477. },
  478. {
  479. "name": "导入真实 Fox.glb 文件并登记本地资源",
  480. "status": "PASS",
  481. "detail": ""
  482. }
  483. ],
  484. "errors": [],
  485. "requests": []
  486. },
  487. {
  488. "phase": "reader",
  489. "checks": [
  490. {
  491. "name": "查看角色的正文编辑控件禁用",
  492. "status": "PASS",
  493. "detail": ""
  494. },
  495. {
  496. "name": "查看角色可以使用导出菜单",
  497. "status": "PASS",
  498. "detail": ""
  499. },
  500. {
  501. "name": "查看角色可以使用页码和缩放",
  502. "status": "PASS",
  503. "detail": ""
  504. },
  505. {
  506. "name": "只读用户实际导出 OFD 且不修改工程",
  507. "status": "PASS",
  508. "detail": ""
  509. }
  510. ],
  511. "errors": [],
  512. "requests": []
  513. },
  514. {
  515. "phase": "missing",
  516. "checks": [
  517. {
  518. "name": "访问不存在的指导书不会自动新建",
  519. "status": "PASS",
  520. "detail": ""
  521. }
  522. ],
  523. "errors": [],
  524. "requests": []
  525. },
  526. {
  527. "phase": "content",
  528. "checks": [
  529. {
  530. "name": "公式与说明保存",
  531. "status": "PASS",
  532. "detail": ""
  533. },
  534. {
  535. "name": "发布保存本地正式版本",
  536. "status": "PASS",
  537. "detail": ""
  538. }
  539. ],
  540. "errors": [],
  541. "requests": []
  542. },
  543. {
  544. "phase": "revision",
  545. "checks": [
  546. {
  547. "name": "修订不改变旧的正式版本快照",
  548. "status": "PASS",
  549. "detail": ""
  550. },
  551. {
  552. "name": "工程 JSON 导入恢复步骤与资源关联",
  553. "status": "PASS",
  554. "detail": ""
  555. },
  556. {
  557. "name": "狐狸动画真实改变渲染帧",
  558. "status": "PASS",
  559. "detail": ""
  560. },
  561. {
  562. "name": "狐狸截取当前角度保存纸面图片",
  563. "status": "PASS",
  564. "detail": ""
  565. },
  566. {
  567. "name": "卡车动画真实改变渲染帧",
  568. "status": "PASS",
  569. "detail": ""
  570. },
  571. {
  572. "name": "卡车截取当前角度保存纸面图片",
  573. "status": "PASS",
  574. "detail": ""
  575. },
  576. {
  577. "name": "新修订再次发布并留存历史版本",
  578. "status": "PASS",
  579. "detail": ""
  580. },
  581. {
  582. "name": "撤回本地正式版本",
  583. "status": "PASS",
  584. "detail": ""
  585. }
  586. ],
  587. "errors": [],
  588. "requests": []
  589. },
  590. {
  591. "phase": "templates",
  592. "checks": [
  593. {
  594. "name": "四类模板列表",
  595. "status": "PASS",
  596. "detail": ""
  597. },
  598. {
  599. "name": "模板 1 静态版式预览",
  600. "status": "PASS",
  601. "detail": ""
  602. },
  603. {
  604. "name": "模板 1 动态目录切换",
  605. "status": "PASS",
  606. "detail": ""
  607. },
  608. {
  609. "name": "模板下载 pdf",
  610. "status": "PASS",
  611. "detail": ""
  612. },
  613. {
  614. "name": "模板下载 ofd",
  615. "status": "PASS",
  616. "detail": ""
  617. },
  618. {
  619. "name": "模板 2 静态版式预览",
  620. "status": "PASS",
  621. "detail": ""
  622. },
  623. {
  624. "name": "模板 2 动态目录切换",
  625. "status": "PASS",
  626. "detail": ""
  627. },
  628. {
  629. "name": "模板 3 静态版式预览",
  630. "status": "PASS",
  631. "detail": ""
  632. },
  633. {
  634. "name": "模板 3 动态目录切换",
  635. "status": "PASS",
  636. "detail": ""
  637. },
  638. {
  639. "name": "模板 4 静态版式预览",
  640. "status": "PASS",
  641. "detail": ""
  642. },
  643. {
  644. "name": "模板 4 动态目录切换",
  645. "status": "PASS",
  646. "detail": ""
  647. },
  648. {
  649. "name": "选用模板真正生成章节步骤",
  650. "status": "PASS",
  651. "detail": ""
  652. },
  653. {
  654. "name": "新文档不混入演示版本和反馈",
  655. "status": "PASS",
  656. "detail": ""
  657. },
  658. {
  659. "name": "新文档不混入其他装备参数与来源",
  660. "status": "PASS",
  661. "detail": ""
  662. },
  663. {
  664. "name": "列表默认按创建时间倒序",
  665. "status": "PASS",
  666. "detail": ""
  667. }
  668. ],
  669. "errors": [],
  670. "requests": []
  671. },
  672. {
  673. "phase": "layout",
  674. "checks": [
  675. {
  676. "name": "插入表格、填写单元格、合并拆分与边框保存",
  677. "status": "PASS",
  678. "detail": ""
  679. },
  680. {
  681. "name": "插入正文自由块后保存",
  682. "status": "PASS",
  683. "detail": ""
  684. },
  685. {
  686. "name": "二维框标注保存",
  687. "status": "PASS",
  688. "detail": ""
  689. },
  690. {
  691. "name": "动态阅读检索步骤",
  692. "status": "PASS",
  693. "detail": ""
  694. },
  695. {
  696. "name": "表格、自由块、二维标注重开后保留",
  697. "status": "PASS",
  698. "detail": ""
  699. },
  700. {
  701. "name": "列表按编号检索",
  702. "status": "PASS",
  703. "detail": ""
  704. },
  705. {
  706. "name": "重置恢复创建时间排序",
  707. "status": "PASS",
  708. "detail": ""
  709. }
  710. ],
  711. "errors": [],
  712. "requests": []
  713. },
  714. {
  715. "phase": "api",
  716. "checks": [
  717. {
  718. "name": "对外接口展示九个操作",
  719. "status": "PASS",
  720. "detail": ""
  721. },
  722. {
  723. "name": "本地接口调度 list-projects 返回成功",
  724. "status": "PASS",
  725. "detail": "200\nGET /api/ofd/projects\n10 ms\n{\n \"success\": true,\n \"data\": {\n \"total\": 3,"
  726. },
  727. {
  728. "name": "本地接口调度 get-project 返回成功",
  729. "status": "PASS",
  730. "detail": "200\nGET /api/ofd/projects/OFD-mtub76ed-01\n8 ms\n{\n \"success\": true,\n \"data\": {\n"
  731. },
  732. {
  733. "name": "本地接口调度 update-step 返回成功",
  734. "status": "PASS",
  735. "detail": "200\nPUT /api/ofd/projects/OFD-mtub76ed-01/steps/step-01\n26 ms\n{\n \"success\": tru"
  736. },
  737. {
  738. "name": "本地接口调度 register-resource 返回成功",
  739. "status": "PASS",
  740. "detail": "201\nPOST /api/ofd/projects/OFD-mtub76ed-01/resources\n35 ms\n{\n \"success\": true,\n"
  741. },
  742. {
  743. "name": "本地接口调度 collect-resources 返回成功",
  744. "status": "PASS",
  745. "detail": "201\nPOST /api/ofd/projects/OFD-mtub76ed-01/collect\n44 ms\n{\n \"success\": true,\n "
  746. },
  747. {
  748. "name": "本地接口调度 inspect 返回成功",
  749. "status": "PASS",
  750. "detail": "200\nPOST /api/ofd/projects/OFD-mtub76ed-01/inspect\n9 ms\n{\n \"success\": true,\n \""
  751. },
  752. {
  753. "name": "本地接口调度 delivery-manifest 返回成功",
  754. "status": "PASS",
  755. "detail": "200\nPOST /api/ofd/projects/OFD-mtub76ed-01/delivery-manifest\n6 ms\n{\n \"success\":"
  756. },
  757. {
  758. "name": "本地接口调度 submit-feedback 返回成功",
  759. "status": "PASS",
  760. "detail": "201\nPOST /api/ofd/projects/OFD-mtub76ed-01/feedback\n25 ms\n{\n \"success\": true,\n "
  761. },
  762. {
  763. "name": "接口面板未发送真实 HTTP 业务请求",
  764. "status": "PASS",
  765. "detail": "这里通过本地函数调度,需要接入正式 API 才可外部调用"
  766. }
  767. ],
  768. "errors": [],
  769. "requests": []
  770. },
  771. {
  772. "phase": "offline",
  773. "checks": [
  774. {
  775. "name": "离线包章节步骤可以阅读与切换",
  776. "status": "PASS",
  777. "detail": ""
  778. },
  779. {
  780. "name": "离线模型 1 动画可播放",
  781. "status": "PASS",
  782. "detail": ""
  783. },
  784. {
  785. "name": "离线模型 1 观察操作可执行",
  786. "status": "PASS",
  787. "detail": ""
  788. },
  789. {
  790. "name": "离线模型 2 动画可播放",
  791. "status": "PASS",
  792. "detail": ""
  793. },
  794. {
  795. "name": "离线模型 2 观察操作可执行",
  796. "status": "PASS",
  797. "detail": ""
  798. },
  799. {
  800. "name": "断开公网和业务服务后没有外部依赖请求",
  801. "status": "PASS",
  802. "detail": ""
  803. },
  804. {
  805. "name": "离线个人批注与收藏入口",
  806. "status": "FAIL",
  807. "detail": "当前离线阅读器未提供原始需求中的个人笔记、收藏和学习进度回传"
  808. }
  809. ],
  810. "errors": [],
  811. "requests": []
  812. },
  813. {
  814. "phase": "final-document",
  815. "checks": [
  816. {
  817. "name": "狐狸按实际尺寸取景后保存",
  818. "status": "PASS",
  819. "detail": ""
  820. },
  821. {
  822. "name": "卡车按实际尺寸取景后保存",
  823. "status": "PASS",
  824. "detail": ""
  825. },
  826. {
  827. "name": "两个模型的取景图片重开后保留",
  828. "status": "PASS",
  829. "detail": ""
  830. }
  831. ],
  832. "errors": [],
  833. "requests": []
  834. },
  835. {
  836. "phase": "export",
  837. "checks": [
  838. {
  839. "name": "导出 project 下载文件",
  840. "status": "PASS",
  841. "detail": ""
  842. },
  843. {
  844. "name": "导出 requirement 下载文件",
  845. "status": "PASS",
  846. "detail": ""
  847. },
  848. {
  849. "name": "导出 plan 下载文件",
  850. "status": "PASS",
  851. "detail": ""
  852. },
  853. {
  854. "name": "导出 pdf 下载文件",
  855. "status": "PASS",
  856. "detail": ""
  857. },
  858. {
  859. "name": "导出 ofd 下载文件",
  860. "status": "PASS",
  861. "detail": ""
  862. },
  863. {
  864. "name": "导出 offline 下载文件",
  865. "status": "PASS",
  866. "detail": ""
  867. }
  868. ],
  869. "errors": [],
  870. "requests": []
  871. },
  872. {
  873. "phase": "resources",
  874. "checks": [
  875. {
  876. "name": "导入本地视频并在原生播放器实际播放",
  877. "status": "PASS",
  878. "detail": ""
  879. },
  880. {
  881. "name": "视频当前帧海报保存到步骤",
  882. "status": "PASS",
  883. "detail": ""
  884. },
  885. {
  886. "name": "非法工程 JSON 被拒绝且原工程保留",
  887. "status": "PASS",
  888. "detail": ""
  889. },
  890. {
  891. "name": "编制工程同步到正式内容库",
  892. "status": "FAIL",
  893. "detail": "实测仅写入浏览器本地库;正式内容库查询 HTTP 200"
  894. },
  895. {
  896. "name": "编制发布结果进入教学指导书列表",
  897. "status": "FAIL",
  898. "detail": "教学查询 HTTP 200"
  899. }
  900. ],
  901. "errors": [],
  902. "requests": []
  903. }
  904. ]
  905. }