Tipi
RPC ed Eventi
Request/response RPC e payload eventi MFE.
RPC — pianifica_attivita
Crea una nuova attività con assegnatari multipli.
interface PianificaAttivitaRequest {
p_idtipoattivita: number
p_entitasorgente: string
p_identitasorgente: number
p_datascadenza?: string // obbligatoria se p_completata_subito = false
p_idutente?: number
p_riepilogo?: string
p_nota?: string
p_priorita?: 1 | 2 | 3 | 4
p_orarioinizio?: string
p_orariofine?: string
p_assegnatari?: number[]
p_completata_subito?: boolean // true = segna come fatto subito
}
interface PianificaAttivitaResponse {
success: boolean
idattivita: number
tipo: string
icona: string
stato: 'pianificata' | 'completata'
statovisivo: StatoVisivo
datascadenza: string
assegnatari: Array<{ idutente: number; principale: boolean }>
}
RPC — completa_attivita
interface CompletaAttivitaRequest {
p_idattivita: number
p_risultato?: string
}
interface CompletaAttivitaResponse {
success: boolean
idattivita: number
datacompletamento: string
attivita_successive: AttivitaSuccessiva[]
ricorrenza_creata: { idattivita: number; datascadenza: string } | null
}
AttivitaSuccessiva
interface AttivitaSuccessiva {
tipo: 'attivata' | 'suggerita'
idattivita?: number // se tipo = 'attivata'
idtipoattivita?: number // se tipo = 'suggerita'
nometipo: string
icona?: string
datascadenza: string
}
RPC — annulla_attivita
interface AnnullaAttivitaRequest {
p_idattivita: number
p_motivo?: string
}
interface AnnullaAttivitaResponse {
success: boolean
idattivita: number
stato: 'annullata'
ricorrenza_creata: { idattivita: number; datascadenza: string } | null
}
RPC — conta_attivita_utente
// Response di GET /rpc/conta_attivita_utente
interface ContatoreAttivita {
in_ritardo: number
oggi: number
futuro: number
totale_pianificate: number
}
Firma digitale
interface RichiestafirmaRequest {
iddocumento: number | null
firmatari: Array<{ email: string; nome: string; ordine: number }>
messaggio: string
scadenzafirma: string | null
firmadelrichiedente?: string | null // base64 PNG
}
interface RichiestafirmaResult {
idrichiestafirma: string
stato: 'inviata' | 'completata' | 'rifiutata'
urlfirma: string
}
Upload documento
// POST /api/attivita/{id}/upload-documento
interface UploadDocumentoResult {
iddocumento: number
nome: string
url: string // URL MinIO
dimensione: number // bytes
}
Eventi MFE
Gli eventi vengono emessi tramite onEvent configurato nel plugin:
| Nome evento | Payload | Quando |
|---|---|---|
attivita:created | AttivitaCreatedPayload | Dopo pianificaAttivita |
attivita:completata | AttivitaCompletedPayload | Dopo completaAttivita |
attivita:annullata | AttivitaCancelledPayload | Dopo annullaAttivita |
attivita:scadenza-imminente | { totale_in_ritardo, oggi } | In fetchDashboard se ci sono urgenti |
// In main.ts
app.use(AttivitaPlugin, {
baseUrl: '/attivita',
onEvent: (name, payload) => {
if (name === 'attivita:created') {
notificheStore.add({ type: 'success', message: 'Attività pianificata' })
}
if (name === 'attivita:scadenza-imminente') {
headerStore.setBadge((payload as any).totale_in_ritardo)
}
},
})