3.8 KiB
Criteri per Tenant Attivi - Sistema Duxiter
📊 Panoramica
Questo documento descrive i criteri utilizzati dal sistema Duxiter per determinare quando un tenant è considerato "attivo" nelle statistiche del pannello amministrativo.
✅ Criterio Principale
Un tenant è considerato attivo se ha utilizzato almeno una valutazione (evaluation).
Dettagli Tecnici
Il sistema determina l'attività di un tenant attraverso i seguenti passaggi:
-
Ricerca nelle operazioni di credito: Il sistema cerca nella collezione
CreditOperationtutte le operazioni con:operationType: 'evaluation'creditsChanged < 0(deduzioni di credito, che indicano valutazioni effettive)
-
Raggruppamento per tenant: Le operazioni vengono raggruppate per
tenantIdper contare quante valutazioni ha utilizzato ogni tenant -
Conteggio tenant attivi: Il numero di tenant attivi corrisponde al numero di tenant unici che appaiono nel risultato dell'aggregazione
🔍 Implementazione nel Codice
Posizione
- File:
/server/src/controllers/tenant.controller.ts - Funzione:
getTenantStatistics - Linee: circa 244-254
Codice di Riferimento
// Aggregazione per trovare tenant con valutazioni utilizzate
const tenantEvaluationStats = await CreditOperation.aggregate([
{
$match: {
operationType: 'evaluation',
creditsChanged: { $lt: 0 } // Solo deduzioni (valutazioni effettive)
}
},
{
$group: {
_id: '$tenantId',
evaluationsUsed: { $sum: 1 },
lastEvaluationDate: { $max: '$createdAt' }
}
}
]);
// Il numero di tenant attivi = numero di tenant nel risultato
const activeTenants = tenantEvaluationStats.length;
📈 Distinzioni Aggiuntive
Tenant Recentemente Attivi
Il sistema distingue anche i tenant recentemente attivi (ultimi 30 giorni) da quelli attivi in generale:
const thirtyDaysAgo = new Date();
thirtyDaysAgo.setDate(thirtyDaysAgo.getDate() - 30);
const recentlyActiveTenants = tenantEvaluationStats.filter(stat =>
stat.lastEvaluationDate && new Date(stat.lastEvaluationDate) > thirtyDaysAgo
).length;
Distribuzione dell'Utilizzo
I tenant attivi vengono ulteriormente categorizzati in base al loro livello di utilizzo:
- Heavy users: > 50 valutazioni utilizzate
- Moderate users: 11-50 valutazioni utilizzate
- Light users: 1-10 valutazioni utilizzate
🎯 Esempi Pratici
Scenario 1: Tenant Attivo
- Tenant ID:
6827419eecdd4cff1cd6ad69 - Ha 2 operazioni di tipo
'evaluation'concreditsChanged: -1ecreditsChanged: -10 - Risultato: Considerato attivo
Scenario 2: Tenant Inattivo
- Tenant ID:
68655c938b15fbb6b1ed48be - Non ha operazioni di tipo
'evaluation'concreditsChanged < 0 - Risultato: Non considerato attivo
🔄 Aggiornamenti Recenti
Data: Agosto 2025
Modifica: Il sistema è stato aggiornato per calcolare le statistiche basandosi sulle operazioni di credito reali (CreditOperation) invece che sui campi usageStats dei tenant, che erano obsoleti.
Benefici:
- Dati più accurati e aggiornati in tempo reale
- Eliminazione di discrepanze tra statistiche e dati effettivi
- Maggiore affidabilità del pannello amministrativo
📝 Note Importanti
- Solo deduzioni contano: Solo le operazioni con
creditsChanged < 0sono considerate valutazioni effettive - Tempo reale: Le statistiche si aggiornano automaticamente quando vengono create nuove operazioni di credito
- Persistenza: Un tenant rimane "attivo" finché ha almeno una valutazione utilizzata, indipendentemente da quando è stata effettuata
🔗 File Correlati
/server/src/models/creditOperation.model.ts- Modello delle operazioni di credito/server/src/models/tenant.model.ts- Modello dei tenant/server/src/controllers/tenant.controller.ts- Controller con la logica delle statistiche