aiPptDraftPreviewTest.html 2.2 KB

123456789101112131415161718192021222324252627282930313233
  1. <!doctype html>
  2. <html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>草稿逐页预览回归</title></head>
  3. <body><div id="app"></div><script type="module">
  4. import { createApp, h, ref, computed, nextTick } from 'vue'
  5. import { store } from '/src/store/index.ts'
  6. import Preview from '/src/views/Editor/EditorHeader/AiCoursewareDraftPreview.vue'
  7. import { buildAiPptSlidePreviews } from '/src/utils/aiPptTemplateEngine.ts'
  8. import { inspectAiPptRenderedText } from '/src/utils/aiPptRenderedQuality.ts'
  9. import { comparisonCapacityFixture } from './fixtures/aiPptComparisonCapacity.mjs'
  10. import '/src/assets/styles/global.scss'
  11. import '/src/assets/styles/prosemirror.scss'
  12. createApp({setup(){
  13. const overloaded = ref(new URLSearchParams(location.search).get('overloaded') === 'true')
  14. const outline = computed(() => comparisonCapacityFixture(overloaded.value))
  15. const errors = ref([]), measured = ref('尚未测量')
  16. const check = async () => {
  17. await nextTick()
  18. await document.fonts.ready
  19. const pages = buildAiPptSlidePreviews(outline.value, { templateId:'blank' })
  20. const valid = pages.filter(page => page.slide)
  21. measured.value = JSON.stringify({ total:pages.length, rendered:valid.length, failed:pages.filter(page => page.error).map(page => page.pageNo),
  22. textIssues:await inspectAiPptRenderedText(valid.map(page => page.slide), valid.map(page => page.pageNo)) })
  23. }
  24. return () => h('main',{style:'max-width:1040px;margin:20px auto;padding:16px'},[
  25. h('p','本地回归样例,不调用生成接口,不修改任何线上课件。'),
  26. h('button',{onClick:()=>{overloaded.value=!overloaded.value;measured.value='尚未测量'}},overloaded.value?'切换正常对比页':'模拟第3页严重超密'),
  27. h('button',{onClick:check},'检查实际排版'),
  28. h('pre',{id:'render-status',style:'white-space:pre-wrap'},measured.value),
  29. h('pre',{id:'layout-errors',style:'white-space:pre-wrap'},JSON.stringify(errors.value)),
  30. h(Preview,{outline:outline.value,templateId:'blank',message:'本地测试:检查对比页排版与异常隔离。',onLayoutErrors:value=>{errors.value=value}})
  31. ])
  32. }}).use(store).mount('#app')
  33. </script></body></html>