Fix prop confirmation bug, add Wan 2.7 model, refine multiple UI details, improve prop generation quality and aspect ratio, remove text overlays from Asset Center created images, and optimize prop filtering logic
This commit is contained in:
@@ -25,8 +25,9 @@ const prismaMock = vi.hoisted(() => ({
|
||||
}))
|
||||
|
||||
const sharedMock = vi.hoisted(() => ({
|
||||
generateLabeledImageToCos: vi.fn<(input: {
|
||||
generateProjectLabeledImageToStorage: vi.fn<(input: {
|
||||
prompt: string
|
||||
label: string
|
||||
options?: { referenceImages?: string[]; aspectRatio?: string }
|
||||
}) => Promise<string>>(async () => 'cos/character-generated-0.png'),
|
||||
}))
|
||||
@@ -41,7 +42,7 @@ vi.mock('@/lib/workers/handlers/image-task-handler-shared', async () => {
|
||||
)
|
||||
return {
|
||||
...actual,
|
||||
generateLabeledImageToCos: sharedMock.generateLabeledImageToCos,
|
||||
generateProjectLabeledImageToStorage: sharedMock.generateProjectLabeledImageToStorage,
|
||||
}
|
||||
})
|
||||
|
||||
@@ -101,8 +102,9 @@ describe('worker character-image-task-handler behavior', () => {
|
||||
imageUrl: 'cos/character-generated-0.png',
|
||||
})
|
||||
|
||||
const generationInput = sharedMock.generateLabeledImageToCos.mock.calls[0]?.[0] as {
|
||||
const generationInput = sharedMock.generateProjectLabeledImageToStorage.mock.calls[0]?.[0] as {
|
||||
prompt: string
|
||||
label: string
|
||||
options?: { referenceImages?: string[]; aspectRatio?: string }
|
||||
}
|
||||
const realisticStylePrompt = getArtStylePrompt('realistic', 'zh')
|
||||
@@ -111,6 +113,7 @@ describe('worker character-image-task-handler behavior', () => {
|
||||
expect(generationInput.prompt).toContain(realisticStylePrompt)
|
||||
expect(generationInput.prompt.split(CHARACTER_PROMPT_SUFFIX).length - 1).toBe(1)
|
||||
expect(generationInput.prompt.split(realisticStylePrompt).length - 1).toBe(1)
|
||||
expect(generationInput.label).toBe('Hero - 战斗形态')
|
||||
expect(generationInput.options).toEqual(expect.objectContaining({
|
||||
referenceImages: ['normalized-primary-ref'],
|
||||
aspectRatio: '3:2',
|
||||
@@ -129,7 +132,7 @@ describe('worker character-image-task-handler behavior', () => {
|
||||
const job = buildJob({ imageIndex: 0, artStyle: 'japanese-anime' })
|
||||
await handleCharacterImageTask(job)
|
||||
|
||||
const generationInput = sharedMock.generateLabeledImageToCos.mock.calls[0]?.[0] as {
|
||||
const generationInput = sharedMock.generateProjectLabeledImageToStorage.mock.calls[0]?.[0] as {
|
||||
prompt: string
|
||||
}
|
||||
expect(generationInput.prompt).toContain(getArtStylePrompt('japanese-anime', 'zh'))
|
||||
@@ -143,7 +146,7 @@ describe('worker character-image-task-handler behavior', () => {
|
||||
})
|
||||
|
||||
it('uses requested count for grouped generation and expands imageUrls to requested size', async () => {
|
||||
sharedMock.generateLabeledImageToCos
|
||||
sharedMock.generateProjectLabeledImageToStorage
|
||||
.mockResolvedValueOnce('cos/character-generated-0.png')
|
||||
.mockResolvedValueOnce('cos/character-generated-1.png')
|
||||
.mockResolvedValueOnce('cos/character-generated-2.png')
|
||||
@@ -152,7 +155,7 @@ describe('worker character-image-task-handler behavior', () => {
|
||||
|
||||
const result = await handleCharacterImageTask(buildJob({ count: 5 }))
|
||||
|
||||
expect(sharedMock.generateLabeledImageToCos).toHaveBeenCalledTimes(5)
|
||||
expect(sharedMock.generateProjectLabeledImageToStorage).toHaveBeenCalledTimes(5)
|
||||
expect(result).toEqual({
|
||||
appearanceId: 'appearance-2',
|
||||
imageCount: 5,
|
||||
|
||||
Reference in New Issue
Block a user