feat: 同步精简接口并统一表单校验

This commit is contained in:
GJ
2026-09-10 22:34:47 +08:00
parent 82d7bde631
commit 2eea0ea72e
66 changed files with 1611 additions and 1100 deletions
@@ -111,8 +111,7 @@ function mountPage(records = [checkpoint()], episodes = 1): ReturnType<typeof us
updatedAt: '',
characters: [],
world: null,
reviews: [],
tasks: [],
episodes: episodes ? [{ episode: 1, title: '第一集', content: '正文' }] : []
}
const data = ref({ project, checkpoints: records })
@@ -149,10 +148,10 @@ describe('拆解页内容滚动', () => {
await wrapper!.get('[data-workspace-tools]').trigger('click')
await flushPromises()
const config = drawerPanel().get('.breakdown-config')
expect(config.get('label[for="group-size"]').text()).toBe('每组集数')
expect(config.get('label[for="group-size"]').text()).toContain('每组集数')
expect(config.get<HTMLInputElement>('#group-size').element.value).toBe('3')
expect(config.get('.breakdown-group-unit').text()).toBe('集 / 组')
expect(config.get('fieldset > legend').text()).toBe('抽取模块')
expect(config.get('.breakdown-modules-field .n-form-item-label').text()).toContain('抽取模块')
const options = config.findAll('.breakdown-module-option')
expect(options).toHaveLength(3)
const preview = config.get<HTMLButtonElement>('.breakdown-preview-button')
@@ -165,8 +164,10 @@ describe('拆解页内容滚动', () => {
expect(description.text()).not.toBe('')
await checkbox.trigger('click')
}
expect(preview.element.disabled).toBe(true)
expect(drawerPanel().text()).toContain('至少选择一个抽取模块')
await preview.trigger('click')
await flushPromises()
expect(config.get('.n-form-item-feedback--error').text()).toContain('至少选择一个抽取模块')
expect(fetcher).not.toHaveBeenCalled()
await options[1]!.get('[role="checkbox"]').trigger('click')
expect(preview.element.disabled).toBe(false)
provided.data.value!.project.status = 'generating'
@@ -179,9 +180,7 @@ describe('拆解页内容滚动', () => {
// DOM 环境不计算坐标,检查统一标题偏移、34px 控件行和容器断点契约。
const css = readAllStyles()
expect(css).toMatch(/\.breakdown-settings-panel\s*\{\s*container:\s*breakdown-settings \/ inline-size;/)
expect(css).toMatch(/\.breakdown-config\s*\{[^}]*--breakdown-label-offset:\s*28px;/)
expect(css).toMatch(/\.breakdown-config \.field-label\s*\{[^}]*margin(?:-bottom)?:\s*(?:0 0 )?8px/)
expect(css).toMatch(/\.breakdown-config \.field-label\s*\{[^}]*line-height:\s*20px/)
expect(css).toMatch(/\.breakdown-config\s*\{[^}]*--breakdown-label-offset:\s*29px;/)
expect(css).toMatch(/\.breakdown-group-unit\s*\{[^}]*flex-shrink:\s*0;[^}]*white-space:\s*nowrap;/)
expect(css).toMatch(
/\.n-checkbox\.control-row-checkbox\s*\{[^}]*align-items:\s*center;[^}]*min-height:\s*34px;/