feat: deliver first finance preview with setup wizard
Release / release (push) Failing after 18s

This commit is contained in:
Qiufeng
2026-08-17 14:08:40 +08:00
parent 47403fd337
commit c8b0151769
558 changed files with 140774 additions and 3 deletions
+61
View File
@@ -0,0 +1,61 @@
import { request } from '@/utils/request';
export interface SetupStatus {
required: boolean;
locked: boolean;
supportedDatabaseTypes: string[];
message: string;
}
export interface SetupDatabaseRequest {
setupCode: string;
databaseType: 'MYSQL' | 'POSTGRESQL';
host: string;
port: number;
database: string;
username: string;
password: string;
}
export interface SetupConnection {
successful: boolean;
databaseType: string;
serverVersion: string;
schemaReady: boolean;
message: string;
}
export interface SetupCompleteRequest extends SetupDatabaseRequest {
adminUsername: string;
adminDisplayName: string;
adminPassword: string;
adminPasswordConfirmation: string;
}
export interface SetupCompleted {
completed: boolean;
username: string;
message: string;
restartAfterSeconds: number;
}
function normalizeStatus(value: SetupStatus): SetupStatus {
return {
required: Boolean(value?.required),
locked: Boolean(value?.locked),
supportedDatabaseTypes: Array.isArray(value?.supportedDatabaseTypes) ? value.supportedDatabaseTypes : [],
message: value?.message || '',
};
}
export function getSetupStatus() {
return request.get<SetupStatus>({ url: '/setup/status' }).then(normalizeStatus);
}
export function testSetupConnection(data: SetupDatabaseRequest) {
return request.post<SetupConnection>({ url: '/setup/test-connection', data }).then((value) => value);
}
export function completeSetup(data: SetupCompleteRequest) {
return request.post<SetupCompleted>({ url: '/setup/complete', data }).then((value) => value);
}