Merge branch 'master' into codex/remove-match3d-static-demo

This commit is contained in:
2026-05-27 01:03:48 +08:00
21 changed files with 655 additions and 73 deletions

View File

@@ -1,5 +1,7 @@
import { beforeEach, expect, test, vi } from 'vitest';
const requestJsonMock = vi.hoisted(() => vi.fn());
const { createCreationAgentClientMock } = vi.hoisted(() => ({
createCreationAgentClientMock: vi.fn(),
}));
@@ -9,7 +11,7 @@ vi.mock('../creation-agent', () => ({
}));
vi.mock('../apiClient', () => ({
requestJson: vi.fn(),
requestJson: requestJsonMock,
}));
beforeEach(() => {
@@ -22,6 +24,7 @@ beforeEach(() => {
streamMessage: vi.fn(),
executeAction: vi.fn(),
});
requestJsonMock.mockReset();
});
test('wooden fish creation keeps image2 generation requests alive long enough', async () => {
@@ -34,3 +37,16 @@ test('wooden fish creation keeps image2 generation requests alive long enough',
}),
);
});
test('wooden fish list works uses creation works endpoint', async () => {
const { woodenFishClient } = await import('./woodenFishClient');
requestJsonMock.mockResolvedValueOnce({ items: [] });
await woodenFishClient.listWorks();
expect(requestJsonMock).toHaveBeenCalledWith(
'/api/creation/wooden-fish/works',
{ method: 'GET' },
'读取敲木鱼作品列表失败',
);
});

View File

@@ -13,6 +13,7 @@ import type {
WoodenFishWorkDetailResponse,
WoodenFishWorkMutationResponse,
WoodenFishWorkProfileResponse,
WoodenFishWorksResponse,
WoodenFishWorkspaceCreateRequest,
WoodenFishWorkSummaryResponse,
} from '../../../packages/shared/src/contracts/woodenFish';
@@ -57,6 +58,7 @@ export type {
WoodenFishWorkDetailResponse,
WoodenFishWorkMutationResponse,
WoodenFishWorkProfileResponse,
WoodenFishWorksResponse,
WoodenFishWorkspaceCreateRequest,
};
export type CreateWoodenFishSessionRequest = WoodenFishWorkspaceCreateRequest;
@@ -186,6 +188,15 @@ export async function getWoodenFishWorkDetail(profileId: string) {
return normalizeWoodenFishWorkDetailResponse(response);
}
export async function listWoodenFishWorks() {
const response = await requestJson<WoodenFishWorksResponse>(
WOODEN_FISH_WORKS_API_BASE,
{ method: 'GET' },
'读取敲木鱼作品列表失败',
);
return response;
}
export async function listWoodenFishGallery() {
return requestJson<WoodenFishGalleryResponse>(
`${WOODEN_FISH_RUNTIME_API_BASE}/gallery`,
@@ -312,6 +323,7 @@ export const woodenFishClient = {
getSession: getWoodenFishCreationSession,
getWorkDetail: getWoodenFishWorkDetail,
listGallery: listWoodenFishGallery,
listWorks: listWoodenFishWorks,
publishWork: publishWoodenFishWork,
startRun: startWoodenFishRuntimeRun,
};