feat(skill): 补齐版本测试发布与工作台链路
This commit is contained in:
65
frontend/src/api/__tests__/skill.spec.ts
Normal file
65
frontend/src/api/__tests__/skill.spec.ts
Normal file
@@ -0,0 +1,65 @@
|
||||
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
||||
|
||||
import {
|
||||
archiveSkillVersion,
|
||||
getSkillWorkspace,
|
||||
publishSkillDraft,
|
||||
saveSkillDraft,
|
||||
testSkillDraft,
|
||||
} from '../skill';
|
||||
import { get, post } from '../request';
|
||||
|
||||
vi.mock('../request', () => ({
|
||||
get: vi.fn(),
|
||||
post: vi.fn(),
|
||||
}));
|
||||
|
||||
describe('skill api', () => {
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks();
|
||||
});
|
||||
|
||||
it('maps skill endpoints correctly', () => {
|
||||
getSkillWorkspace('skill-citation');
|
||||
saveSkillDraft('skill-citation', {
|
||||
versionNo: 4,
|
||||
promptText: '你是回答审校器',
|
||||
configJson: '{"timeout":3000}',
|
||||
variableSchemaJson: '{"type":"object"}',
|
||||
});
|
||||
testSkillDraft('skill-citation', {
|
||||
versionNo: 4,
|
||||
promptText: '你是回答审校器',
|
||||
configJson: '{"timeout":3000}',
|
||||
variableSchemaJson: '{"type":"object"}',
|
||||
});
|
||||
publishSkillDraft('skill-citation', {
|
||||
versionNo: 4,
|
||||
promptText: '你是回答审校器',
|
||||
configJson: '{"timeout":3000}',
|
||||
variableSchemaJson: '{"type":"object"}',
|
||||
});
|
||||
archiveSkillVersion('skill-citation', 3);
|
||||
|
||||
expect(get).toHaveBeenCalledWith('/skills/skill-citation');
|
||||
expect(post).toHaveBeenCalledWith('/skills/skill-citation/draft', {
|
||||
versionNo: 4,
|
||||
promptText: '你是回答审校器',
|
||||
configJson: '{"timeout":3000}',
|
||||
variableSchemaJson: '{"type":"object"}',
|
||||
});
|
||||
expect(post).toHaveBeenCalledWith('/skills/skill-citation/test', {
|
||||
versionNo: 4,
|
||||
promptText: '你是回答审校器',
|
||||
configJson: '{"timeout":3000}',
|
||||
variableSchemaJson: '{"type":"object"}',
|
||||
});
|
||||
expect(post).toHaveBeenCalledWith('/skills/skill-citation/publish', {
|
||||
versionNo: 4,
|
||||
promptText: '你是回答审校器',
|
||||
configJson: '{"timeout":3000}',
|
||||
variableSchemaJson: '{"type":"object"}',
|
||||
});
|
||||
expect(post).toHaveBeenCalledWith('/skills/skill-citation/archive', undefined, { params: { versionNo: 3 } });
|
||||
});
|
||||
});
|
||||
62
frontend/src/api/skill.ts
Normal file
62
frontend/src/api/skill.ts
Normal file
@@ -0,0 +1,62 @@
|
||||
import { get, post } from './request';
|
||||
|
||||
export interface SkillVersionDraft {
|
||||
id?: string;
|
||||
skillId?: string;
|
||||
versionNo: number;
|
||||
promptText?: string;
|
||||
codeText?: string;
|
||||
configJson?: string;
|
||||
variableSchemaJson?: string;
|
||||
testResultJson?: string;
|
||||
publishStatus?: string;
|
||||
remark?: string;
|
||||
}
|
||||
|
||||
export interface SkillDefinitionRecord {
|
||||
id?: string;
|
||||
skillCode: string;
|
||||
skillName: string;
|
||||
skillType: string;
|
||||
description?: string;
|
||||
status?: string;
|
||||
remark?: string;
|
||||
}
|
||||
|
||||
export interface SkillVersionRecord extends SkillVersionDraft {
|
||||
skillId: string;
|
||||
publishedTime?: string;
|
||||
}
|
||||
|
||||
export interface SkillWorkspace {
|
||||
skillId: string;
|
||||
skillCode: string;
|
||||
skillName: string;
|
||||
skillType: string;
|
||||
description?: string;
|
||||
status?: string;
|
||||
publishedVersionNo?: number;
|
||||
latestTestResultJson?: string;
|
||||
skills: SkillDefinitionRecord[];
|
||||
versions: SkillVersionRecord[];
|
||||
}
|
||||
|
||||
export function getSkillWorkspace(skillCode: string) {
|
||||
return get<SkillWorkspace>(`/skills/${skillCode}`);
|
||||
}
|
||||
|
||||
export function saveSkillDraft(skillCode: string, data: SkillVersionDraft) {
|
||||
return post<boolean, SkillVersionDraft>(`/skills/${skillCode}/draft`, data);
|
||||
}
|
||||
|
||||
export function testSkillDraft(skillCode: string, data: SkillVersionDraft) {
|
||||
return post<SkillVersionRecord, SkillVersionDraft>(`/skills/${skillCode}/test`, data);
|
||||
}
|
||||
|
||||
export function publishSkillDraft(skillCode: string, data: SkillVersionDraft) {
|
||||
return post<boolean, SkillVersionDraft>(`/skills/${skillCode}/publish`, data);
|
||||
}
|
||||
|
||||
export function archiveSkillVersion(skillCode: string, versionNo: number) {
|
||||
return post<boolean>(`/skills/${skillCode}/archive`, undefined, { params: { versionNo } });
|
||||
}
|
||||
Reference in New Issue
Block a user