GapFill Flowee

This commit is contained in:
2026-06-18 11:24:05 +02:00
parent 64442af182
commit c68daf4313
25 changed files with 2965 additions and 48 deletions
+31 -5
View File
@@ -22,6 +22,8 @@ export interface TenantSettingsResponse {
archival_mode: ArchivalMode
conservatore_id: string
conservatore_endpoint: string | null
/** Slug del tenant sul sistema del conservatore (es. 'pechub' per Aeterna) */
conservatore_tenant_slug: string | null
conservatore_username_configured: boolean
conservatore_password_configured: boolean
archival_notes: string | null
@@ -34,6 +36,8 @@ export interface TenantSettingsUpdate {
conservatore_id?: string
/** URL endpoint API del conservatore (obbligatorio in produzione) */
conservatore_endpoint?: string
/** Slug del tenant sul sistema del conservatore (es. 'pechub' per Aeterna) */
conservatore_tenant_slug?: string
/** Username in chiaro viene cifrata lato server. Stringa vuota = cancella */
conservatore_username?: string
/** Password in chiaro viene cifrata lato server. Stringa vuota = cancella */
@@ -41,6 +45,13 @@ export interface TenantSettingsUpdate {
archival_notes?: string
}
export interface ConservatoreTestResult {
success: boolean
message: string
latency_ms: number | null
provider_info: Record<string, unknown> | null
}
// ─── Tipi indicizzazione full-text ─────────────────────────────────────────
export interface IndexingStats {
@@ -76,20 +87,35 @@ export interface IndexingJobStatus {
export const settingsApi = {
/**
* Recupera le impostazioni del tenant corrente.
* Recupera le impostazioni del tenant.
* Se non esistono, il backend le crea con i valori di default (mock).
* @param tenantId - (solo super_admin) UUID del tenant target
*/
get: async (): Promise<TenantSettingsResponse> => {
const { data } = await apiClient.get<TenantSettingsResponse>('/settings')
get: async (tenantId?: string): Promise<TenantSettingsResponse> => {
const params = tenantId ? { tenant_id: tenantId } : undefined
const { data } = await apiClient.get<TenantSettingsResponse>('/settings', { params })
return data
},
/**
* Aggiorna le impostazioni del tenant.
* Solo i campi forniti vengono modificati (semantica PATCH).
* @param tenantId - (solo super_admin) UUID del tenant target
*/
update: async (payload: TenantSettingsUpdate): Promise<TenantSettingsResponse> => {
const { data } = await apiClient.put<TenantSettingsResponse>('/settings', payload)
update: async (payload: TenantSettingsUpdate, tenantId?: string): Promise<TenantSettingsResponse> => {
const params = tenantId ? { tenant_id: tenantId } : undefined
const { data } = await apiClient.put<TenantSettingsResponse>('/settings', payload, { params })
return data
},
/**
* Testa la connessione al conservatore configurato.
* Effettua una chiamata reale (login + verifica identità) senza modificare dati.
* @param tenantId - (solo super_admin) UUID del tenant target
*/
testConservatore: async (tenantId?: string): Promise<ConservatoreTestResult> => {
const params = tenantId ? { tenant_id: tenantId } : undefined
const { data } = await apiClient.post<ConservatoreTestResult>('/settings/test-conservatore', undefined, { params })
return data
},