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