${t('adminDashboard.userManagement')}
| ${t('adminDashboard.id')} | ${t('adminDashboard.username')} | ${t('adminDashboard.email')} | ${t('adminDashboard.admin')} | ${t('adminDashboard.publicShare')} | ${t('adminDashboard.recordings')} | ${t('adminDashboard.storageUsed')} | ${t('adminDashboard.actions')} |
|---|---|---|---|---|---|---|---|
| ${ user.id } | ${ user.username } | ${ user.email } | Yes No | ${ user.recordings_count } | ${ formatFileSize(user.storage_used) } |
|
|
|
Loading users...
No users found.
|
|||||||
${t('adminDashboard.systemStatistics')}
${t('adminDashboard.totalUsers')}
${ stats.total_users }
${t('adminDashboard.totalRecordings')}
${ stats.total_recordings }
${t('adminDashboard.totalStorage')}
${ formatFileSize(stats.total_storage) }
${t('adminDashboard.totalQueries')}
${ stats.total_queries }
${t('adminDashboard.recordingStatusDistribution')}
${t('adminDashboard.topUsersByStorage')}
Token Usage Statistics
Usage Summary
Today
${ tokenStats.today?.tokens?.toLocaleString() || 0 }
This Month
${ tokenStats.current_month?.tokens?.toLocaleString() || 0 }
Monthly Cost
$${ (tokenStats.current_month?.cost || 0).toFixed(4) }
Warnings
${ tokenStats.users_at_100_percent } blocked ${ tokenStats.users_over_80_percent } warning None
User Token Usage (This Month)
Daily Token Usage (Last 30 Days)
Monthly Token Usage (Last 12 Months)
${t('adminDashboard.transcriptionUsage')}
Usage Summary
${t('adminDashboard.todaysMinutes')}
${ transcriptionStats.today?.minutes || 0 }
${t('adminDashboard.thisMonth')}
${ transcriptionStats.current_month?.minutes || 0 } min
${t('adminDashboard.monthlyCost')}
$${ (transcriptionStats.current_month?.cost || 0).toFixed(4) }
${t('adminDashboard.budgetWarnings')}
${ transcriptionStats.users_at_100_percent } ${t('adminDashboard.blocked')} ${ transcriptionStats.users_over_80_percent } ${t('adminDashboard.warning')} ${t('adminDashboard.none')}
${t('adminDashboard.userTranscriptionUsage')}
${t('adminDashboard.systemSettings')}
${ setting.key }
${ getSettingDescription(setting) }
${t('adminDashboard.defaultPrompts')}
${t('adminDashboard.promptDescription')}
${t('adminDashboard.promptHierarchy')}
${t('adminDashboard.promptPriorityDescription')}
- ${t('adminDashboard.tagCustomPrompt')}: ${t('adminDashboard.tagCustomPromptDesc')}
- Folder Custom Prompt: Applied when recording is in a folder with a custom prompt (if Folders feature enabled)
- ${t('adminDashboard.userCustomPrompt')}: ${t('adminDashboard.userCustomPromptDesc')}
- ${t('adminDashboard.adminDefaultPrompt')}: ${t('adminDashboard.adminDefaultPromptDesc')}
- ${t('adminDashboard.systemFallback')}: ${t('adminDashboard.systemFallbackDesc')}
${t('adminDashboard.systemPrompt')}:
You are an AI assistant that generates comprehensive summaries for meeting transcripts. Respond only with the summary in Markdown format. Do NOT use markdown code blocks (```markdown). Provide raw markdown content directly.
Context:
- Current date: {current_date}
- Tags applied to this transcript by the user: {tag_names} (if tags exist)
- Information about the user: Name: {name}, Job title: {job_title}, Company: {company} (if provided)
Language Requirement: You MUST generate the entire summary in {user_output_language}. This is mandatory. (if language preference is set)
${t('adminDashboard.userMessageTemplate')}:
Transcription:
"""
{transcript_text}
"""
Summarization Instructions:
/* This section is dynamically replaced with one of the following (in order of priority):
1. Combined tag prompts (if tags with custom prompts are selected)
2. User's personal summarization prompt (if set in account settings)
3. Admin default prompt (shown below)
4. System fallback prompt */
${ defaultSummaryPrompt || originalDefaultPrompt }
{language_directive} (e.g., "Ensure your response is in {language}." if language is set)
${t('adminDashboard.placeholdersNote')}
${t('adminDashboard.additionalContext')}:
- ${t('adminDashboard.contextNotes.transcriptLimit')}
- ${t('adminDashboard.contextNotes.jsonConversion')}
- ${t('adminDashboard.contextNotes.tagPrompts')}
- ${t('adminDashboard.contextNotes.modelConfig')}
${t('adminDashboard.vectorStoreManagement')}
${t('adminDashboard.aboutInquireMode')}
${t('adminDashboard.inquireModeDescription')}
${t('adminDashboard.totalRecordings')}
${ inquireStatus.total_completed_recordings || 0 }
${t('adminDashboard.processedForInquire')}
${ inquireStatus.processed_for_inquire || 0 }
${t('adminDashboard.needProcessing')}
${ inquireStatus.need_processing || 0 }
${t('adminDashboard.totalChunks')}
${ inquireStatus.total_chunks || 0 }
${t('adminDashboard.embeddingsStatus')}
${ inquireStatus.embeddings_available ? t('adminDashboard.available') : t('adminDashboard.textSearchOnly') }
${t('adminDashboard.processingProgress')}
${ getProcessingProgress() }% ${t('adminDashboard.complete')}
${t('adminDashboard.processingActions')}
${t('adminDashboard.recordingsNeedProcessing').replace('{{count}}', inquireStatus.need_processing)}
${ processingResult.message }
Failed recordings:
- ID ${ fail.id }: ${ fail.title } - ${ fail.reason }
${t('adminDashboard.allRecordingsProcessed')}
${t('adminDashboard.vectorStoreUpToDate')}
Group Management
| ${t('adminDashboard.groupName')} | ${t('adminDashboard.description')} | ${t('adminDashboard.members')} | ${t('adminDashboard.created')} | ${t('adminDashboard.actions')} |
|---|---|---|---|---|
|
${ group.name }
|
${ group.description || t('adminDashboard.noDescription') }
|
${ group.member_count || 0 } ${t('adminDashboard.membersCount')}
|
${ new Date(group.created_at).toLocaleDateString() } |
Journal d'audit
Journal d'audit désactivé
Ajoutez ENABLE_AUDIT_LOG=true dans le fichier .env pour activer la traçabilité Loi 25.
Chargement des journaux...
| Date | Utilisateur | Action | Ressource | Statut | IP |
|---|---|---|---|---|---|
| ${ formatDate(log.timestamp) } | ${ log.username || 'Anonyme' } | ${ auditActionLabel(log.action) } | ${ auditResourceLabel(log.resource_type) } #${ log.resource_id } | ${ log.status } | ${ log.ip_address || '-' } |
Aucun log d'accès enregistré
| Date | Utilisateur | Action | IP | Détails |
|---|---|---|---|---|
| ${ formatDate(log.timestamp) } | ${ log.username || '-' } | ${ auditActionLabel(log.action) } | ${ log.ip_address || '-' } | ${ log.details ? JSON.stringify(log.details) : '-' } |
Aucun log d'authentification enregistré
Page ${ auditPage } de ${ auditTotalPages } (${ auditSubTab === 'access' ? auditAccessTotal : auditAuthTotal } entrées)
DictIA