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.
 
 
 
 

44 rivejä
11 KiB

  1. <!doctype html>
  2. <html lang="zh-CN"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>数字人开放 API 与数字车间讲解联调报告</title><style>
  3. :root{color-scheme:light;font:15px/1.75 "Microsoft YaHei",system-ui,sans-serif;color:#183c40;background:#edf4f3}*{box-sizing:border-box}body{margin:0}main{max-width:1180px;margin:auto;padding:34px 24px 70px}h1{font-size:29px;line-height:1.4}h2{font-size:21px;margin:0 0 16px}h3{font-size:17px}section,header{background:#fff;border:1px solid #d1e3df;border-radius:12px;padding:24px;margin:18px 0}header{border-top:5px solid #138771}p{margin:10px 0}.muted,figcaption{color:#54716e;font-size:14px}.pass{color:#08764f;font-weight:700}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.stats div{background:#edf8f4;border-radius:8px;padding:16px}.stats strong{font-size:25px;display:block;color:#08764f}table{width:100%;border-collapse:collapse;margin:15px 0}th,td{text-align:left;border-bottom:1px solid #dce8e5;padding:11px;vertical-align:top}th{background:#f2f7f6}code{background:#eff5f4;padding:2px 5px;border-radius:4px;overflow-wrap:anywhere}a{color:#087862}figure{margin:22px 0}img{display:block;width:100%;height:auto;border:1px solid #cadeda;border-radius:8px}figcaption{padding:9px 2px}.videos{display:grid;grid-template-columns:1fr 1fr;gap:18px}video{width:100%;background:#142d3c;max-height:350px}li{margin:7px 0}summary{cursor:pointer;font-weight:600}pre{white-space:pre-wrap;overflow-wrap:anywhere;background:#f5f8f7;padding:15px;font-size:13px}.note{border-left:4px solid #b17f24;padding-left:15px}@media(max-width:760px){main{padding:12px}section,header{padding:16px}.stats,.videos{grid-template-columns:1fr 1fr}table{font-size:13px}.videos{grid-template-columns:1fr}}
  4. td.pass{min-width:72px;white-space:nowrap}th{white-space:nowrap}
  5. </style></head><body><main>
  6. <header><p class="muted">开发环境实测 · 2026-09-08—09 · 资料 → 原型 → 设计 → 开发 → 测试</p><h1>数字人开放 API 与数字车间讲解联调</h1><p class="pass">三阶段实施完成:独立应用授权、真实资源库、服务端生成成片并绑定训练步骤。</p><p>联调 APPID:<code>AP_238179E0A10F97927EA49FA3</code>。密钥已配置在数字车间服务端加密存储,报告不包含密钥、令牌或账号口令。</p><div class="stats"><div><strong>3 / 3</strong>实施阶段完成</div><div><strong>533</strong>后端自动化检查通过</div><div><strong>18</strong>真实接口边界检查</div><div><strong>2</strong>发布版本视频播放验证</div></div></header>
  7. <section><h2>实施结果</h2><table><thead><tr><th>阶段</th><th>交付内容</th><th>结果</th></tr></thead><tbody>
  8. <tr><td>1. 数字人开放平台</td><td>开放应用管理;AP_ APPID;一次性密钥;重置/停用/令牌撤销;接口 Scope、形象/音色/背景/目录/视频授权;限频与并发;公开 API 文档和 OpenAPI 下载。</td><td class="pass">通过</td></tr>
  9. <tr><td>2. 数字车间接入</td><td>数字人类型独立配置;Auth 加密保管 Secret;Tran 使用受保护的内部短期令牌接口;真实资源分页、视频预览、导入、步骤绑定、保存和刷新。</td><td class="pass">通过</td></tr>
  10. <tr><td>3. 现场生成成片</td><td>服务端 TTS + 配对 Viewer + FFmpeg;数据库任务/租约/幂等;关闭刷新恢复、取消重试;生成背景与字幕;成片保存后导入;发布版本受控播放。</td><td class="pass">通过</td></tr>
  11. </tbody></table><p>公开文档:<a href="http://127.0.0.1:8003/developer" target="_blank">数字人开放 API 说明</a>。应用管理:数字人系统 → 系统设置 → 开放应用。数字车间:系统管理 → 接口对接 → 数字人。</p></section>
  12. <section><h2>真实业务链路</h2><table><thead><tr><th>测试副本</th><th>过程</th><th>最终证据</th></tr></thead><tbody>
  13. <tr><td>狐狸 · 工程 410</td><td>资源库选择真实成片 → 播放 → 导入为 VIDEO → 绑定第一步 → 保存 → 刷新验证 → 发布 → 对抗训练预览播放。</td><td>发布版本 466,预览任务 52;640 × 360,4.52 秒。</td></tr>
  14. <tr><td>牛奶卡车 · 工程 411</td><td>选择形象与音色、数字化教室背景 → 输入文稿 → 提交生成 → 关闭/刷新 → 恢复同一任务 → 成片预览 → 导入绑定 → 发布 → 实装实训预览播放。</td><td>发布版本 467,预览任务 53;1280 × 720,4.60 秒。</td></tr>
  15. </tbody></table><p>以下视频为本次接口下载的真实生成文件,可直接播放。数字车间保存了独立的受控文件副本;数字人平台临时视频清理后,固定发布版本仍能播放。</p><div class="videos"><div><h3>狐狸:资源库视频</h3><video controls preload="metadata" src="fox-narration.mp4"></video><a href="fox-narration.mp4" download>下载 MP4(190,333 字节)</a></div><div><h3>牛奶卡车:现场生成成片</h3><video controls preload="metadata" src="truck-narration.mp4"></video><a href="truck-narration.mp4" download>下载 MP4(430,221 字节)</a></div></div></section>
  16. <section><h2>过程发现与修复</h2><table><thead><tr><th>问题</th><th>修复与验证</th></tr></thead><tbody>
  17. <tr><td>并发资源查询占满小连接池</td><td>调用审计移到完整请求释放数据库连接后执行;三个目录并发真实请求 516 ms 完成,均为 200,补充顺序回归。</td></tr>
  18. <tr><td>本地缓存缺失时无法读取远端文件</td><td>复用统一文件服务的受控取回及完整性校验;不再仅判断本地路径。真正缺失的背景文件给出明确失败原因。</td></tr>
  19. <tr><td>教学资源不识别 fsvc://</td><td>在原固定版本、数据权限及考试白名单基础上支持统一文件服务地址,验证发布后实际播放及跨版本拒绝访问。</td></tr>
  20. <tr><td>生成提交后关闭/刷新导致上下文丢失</td><td>保存工程、步骤、APPID、请求键与远程任务映射;重开恢复,提交结果不确定时用原幂等键确认,应用切换不能串用任务。</td></tr>
  21. <tr><td>旧视频绑定与已删除步骤</td><td>切换来源清除旧活动绑定;生成前确认步骤存在与版本一致;数字人来源没有 READY VIDEO 时不能发布。</td></tr>
  22. <tr><td>上传凭证篡改检查存在偶发失败</td><td>拒绝带非规范补位的 Base64 表示,保持原 HMAC、人员/工程/版本和文件摘要校验;已有失败用例回归通过。</td></tr>
  23. </tbody></table><p class="note">两条历史背景记录(85、79)的源文件在当前环境无法取回,未修改原资料。本次为联调应用授权实际可用的“数字化教室”背景(11)。缺失素材需补传后使用,系统不会伪造成功结果。</p></section>
  24. <section><h2>截图证据</h2><p class="muted">截图来自真实 Edge 浏览器。点击可查看原图;中间过程图展示拍摄时状态,最终结果以下方发布播放截图及 JSON 为准。</p>
  25. <figure><a href="01-open-applications.png" target="_blank"><img src="01-open-applications.png" loading="lazy" alt="数字人开放应用列表"></a><figcaption>开放应用列表:按应用管理 APPID、状态、授权和限额。</figcaption></figure>
  26. <figure><a href="02-application-grants.png" target="_blank"><img src="02-application-grants.png" loading="lazy" alt="配置开放应用授权"></a><figcaption>配置页:独立接口权限及资源授权,未展示密钥。</figcaption></figure>
  27. <figure><a href="03-open-api-docs.png" target="_blank"><img src="03-open-api-docs.png" loading="lazy" alt="公开开放API文档"></a><figcaption>公开文档:认证、生成/重试、响应和动态 OpenAPI 契约。</figcaption></figure>
  28. <figure><a href="04-workshop-library.png" target="_blank"><img src="04-workshop-library.png" loading="lazy" alt="数字车间真实数字人视频资源库"></a><figcaption>数字车间查询真实授权视频,不使用原型固定目录和占位视频。</figcaption></figure>
  29. <figure><a href="06-persisted-binding.png" target="_blank"><img src="06-persisted-binding.png" loading="lazy" alt="狐狸工程刷新后保留讲解视频绑定"></a><figcaption>狐狸工程刷新后读取服务端保存的绑定。</figcaption></figure>
  30. <figure><a href="07-generation-settings.png" target="_blank"><img src="07-generation-settings.png" loading="lazy" alt="牛奶卡车讲解生成参数"></a><figcaption>牛奶卡车成片参数:真实形象、音色、背景及讲解文稿。</figcaption></figure>
  31. <figure><a href="08-job-restored.png" target="_blank"><img src="08-job-restored.png" loading="lazy" alt="刷新恢复生成任务"></a><figcaption>关闭并刷新后恢复已提交任务,不依赖原网页继续运行。</figcaption></figure>
  32. <figure><a href="10-playback-fox.png" target="_blank"><img src="10-playback-fox.png" loading="lazy" alt="对抗训练预览中播放狐狸步骤讲解"></a><figcaption>狐狸发布版本:在对抗训练预览实际播放 1 秒后截图,可见数字人画面与字幕。</figcaption></figure>
  33. <figure><a href="10-playback-truck.png" target="_blank"><img src="10-playback-truck.png" loading="lazy" alt="实装实训预览中播放牛奶卡车步骤讲解"></a><figcaption>牛奶卡车发布版本:在实装实训预览实际播放,包含背景及对应讲解字幕。</figcaption></figure>
  34. </section>
  35. <section><h2>验证范围与证据文件</h2><ul><li>Python:31 项通过;Auth:123 项通过;Tran:379 项通过。两个前端通过类型检查与生产构建,Java 包构建通过。</li><li>真实接口:未认证拒绝、应用/用户令牌隔离、跨应用生成视频拒绝、Range、公开契约、密钥轮换与旧令牌撤销、并发资源查询、删除步骤/旧版本/只读管理员拒绝、内部服务密钥保护及搜索边界。</li><li>任务幂等、并发、取消/重试、跨应用任务隔离和租约失效由自动化回归覆盖;真实浏览器覆盖实际生成、恢复、导入及发布后播放。</li><li>没有把本次视频播放测试扩写为完整实装识别或对抗计分验收。纯本地对抗演示尚无正式发布版本引用,本次不重构该业务域;正式任务宿主已补充讲解媒体入口。</li></ul><p><a href="java-test-results.json">Java 测试汇总</a> · <a href="security-results.json">真实开放接口检查</a> · <a href="workshop-boundaries.json">数字车间权限与版本边界</a> · <a href="workshop-results.json">编辑器导入与生成</a> · <a href="playback-results.json">发布播放验证</a> · <a href="cleanup-results.json">清理与残留记录</a></p></section>
  36. <section><h2>部署、清理与保留数据</h2><p>开发库已执行数字人 033、数字车间 037/038,增量 DDL、完整 SQL、设计和接口文档同步。成片服务使用配置的共享数字人 Viewer、TTS、FFmpeg 与受控文件服务;运行浏览器及加密密钥文件需要随部署配置,不能只复制前端。</p><p>已清理数字人平台临时视频 51/52,并停用隔离测试应用;按平台原有删除契约,文件及任务审计历史保留。联调应用继续启用,APPID/密钥已配置,供继续使用。</p><p>数字车间保留测试副本 410/411、其独立导入视频及草稿教学任务 52/53。现有教学 API 没有草稿删除入口,保留清单供检查;未创建学员运行、成绩,未修改原有狐狸/卡车模型、场景或训练工程。两个草稿任务尚未面向学员发布。</p><p class="muted">本报告仅对应开发环境。修改尚未提交或推送 Git。</p></section>
  37. </main></body></html>