feat(GOV-010): 建立前端 API 分域边界

This commit is contained in:
2026-08-13 23:14:22 +08:00
parent 4105336cb2
commit d2c18634ed
4 changed files with 215 additions and 2 deletions
+36
View File
@@ -0,0 +1,36 @@
import { describe, expect, it, vi } from 'vitest';
import request from '@/utils/request';
import type { components } from '../generated/schema';
import { getHealth } from './index';
vi.mock('@/utils/request', () => ({ default: vi.fn() }));
type HealthResponseDto = components['schemas']['HealthResponseDto'];
const healthyDto: HealthResponseDto = {
status: 'healthy',
process: 'api',
checkedAt: '2026-08-13T09:30:00.000Z',
dependencies: {
mysql: { status: 'healthy', detail: 'ready' },
redis: { status: 'healthy', detail: 'ready' },
rocketMq: { status: 'disabled', detail: 'disabled' },
},
};
describe('健康业务 API', () => {
it('通过统一 request 请求版本化路径并返回 OpenAPI DTO', async () => {
const signal = new AbortController().signal;
vi.mocked(request).mockResolvedValue(healthyDto);
const result: HealthResponseDto = await getHealth(signal);
expect(result).toEqual(healthyDto);
expect(request).toHaveBeenCalledWith({
url: '/api/v1/health',
method: 'get',
signal,
});
});
});
+13
View File
@@ -0,0 +1,13 @@
import type { components } from '@/api/generated/schema';
import request from '@/utils/request';
export type HealthResponseDto = components['schemas']['HealthResponseDto'];
/** 健康接口只返回 OpenAPI DTO,不把 Axios 响应对象扩散到功能层。 */
export function getHealth(signal?: AbortSignal): Promise<HealthResponseDto> {
return request<HealthResponseDto>({
url: '/api/v1/health',
method: 'get',
signal,
});
}