feat: Implement initial agent integration management system with role-based dashboards, status tracking, and activity timelines.

This commit is contained in:
jeremy bayse
2026-02-16 19:22:18 +01:00
parent af060a8847
commit e7bff2ae80
19 changed files with 533 additions and 24 deletions

View File

@@ -1,5 +1,6 @@
<script setup>
import { computed } from 'vue';
import { getStatusLabel, getModelLabel } from '@/Utils/statuses';
const props = defineProps({
activities: Array,
@@ -46,12 +47,12 @@ const getBadgeColor = (description) => {
<span class="font-medium text-gray-900 dark:text-gray-100">{{ activity.causer?.name || 'Système' }}</span>
{{ activity.description === 'created' ? ' a créé ' : ' a mis à jour ' }}
<span class="font-medium text-gray-900 dark:text-gray-100">
{{ activity.subject_type.split('\\').pop() }}
{{ getModelLabel(activity.subject_type) }}
</span>
</p>
<div v-if="activity.properties?.attributes" class="mt-2 text-xs text-gray-400 bg-gray-50 dark:bg-gray-900/50 p-2 rounded">
<div v-for="(val, key) in activity.properties.attributes" :key="key">
<span v-if="key === 'status'">Nouveau statut: <span class="font-bold text-blue-500">{{ val }}</span></span>
<span v-if="key === 'status'">Nouveau statut: <span class="font-bold text-blue-500">{{ getStatusLabel(val) }}</span></span>
</div>
</div>
</div>

View File

@@ -8,17 +8,7 @@ const props = defineProps({
},
});
const statusConfig = {
draft: { label: 'Brouillon', class: 'bg-gray-100 text-gray-800 dark:bg-gray-800 dark:text-gray-200' },
pending_rh_validation: { label: 'Attente RH', class: 'bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-300' },
in_progress: { label: 'En cours', class: 'bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-300 animate-pulse' },
waiting_services: { label: 'Attente Services', class: 'bg-orange-100 text-orange-800 dark:bg-orange-900/30 dark:text-orange-300' },
completed: { label: 'Terminé', class: 'bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-300' },
cancelled: { label: 'Annulé', class: 'bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-300' },
rejected: { label: 'Refusé', class: 'bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-300' },
pending: { label: 'En attente', class: 'bg-gray-100 text-gray-800 dark:bg-gray-800 dark:text-gray-200' },
waiting_validation: { label: 'Attente Validation', class: 'bg-purple-100 text-purple-800 dark:bg-purple-900/30 dark:text-purple-300 animate-pulse' },
};
import { statusConfig } from '@/Utils/statuses';
const config = computed(() => statusConfig[props.status] || { label: props.status, class: 'bg-gray-100 text-gray-800' });
</script>