feat(ui): console d assistant pour l administration
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018BAUeCFpDkRD6tU5wGsc1C
This commit is contained in:
parent
177b70ea96
commit
8957eeb511
16
apps/frontend/app/[locale]/admin/assistant/page.tsx
Normal file
16
apps/frontend/app/[locale]/admin/assistant/page.tsx
Normal file
@ -0,0 +1,16 @@
|
||||
'use client';
|
||||
|
||||
import { AssistantWorkspace } from '@/components/assistant/assistant-workspace';
|
||||
import { ADMIN_STARTER_KEYS } from '@/components/assistant/starters';
|
||||
|
||||
/**
|
||||
* Console d'assistant de l'administration.
|
||||
*
|
||||
* Le meme ecran que l'espace produit, avec des amorces tournees vers le
|
||||
* pilotage de la plateforme. Ce qu'un administrateur peut faire ne vient pas
|
||||
* de cette page : le serveur ouvre les capacites `admin_*` sur la foi de son
|
||||
* role, ici comme depuis un client MCP.
|
||||
*/
|
||||
export default function AdminAssistantPage() {
|
||||
return <AssistantWorkspace starterKeys={ADMIN_STARTER_KEYS} welcomeKey="adminWelcome" />;
|
||||
}
|
||||
@ -3255,7 +3255,8 @@
|
||||
"blog": "Blog",
|
||||
"blogDesc": "Create and manage blog articles",
|
||||
"logs": "System logs",
|
||||
"logsDesc": "View and download application logs"
|
||||
"logsDesc": "View and download application logs",
|
||||
"assistant": "AI assistant"
|
||||
}
|
||||
},
|
||||
"csvUpload": {
|
||||
@ -4798,6 +4799,7 @@
|
||||
"conversations": "Conversations",
|
||||
"newConversation": "New conversation",
|
||||
"noConversations": "No conversations yet.",
|
||||
"actions": "Actions",
|
||||
"rename": "Rename",
|
||||
"delete": "Delete",
|
||||
"deleteConfirm": "Delete this conversation?",
|
||||
@ -4805,6 +4807,11 @@
|
||||
"save": "Save",
|
||||
"cancel": "Cancel",
|
||||
"sources": "Sources in the Xpeditis wiki",
|
||||
"groups": {
|
||||
"today": "Today",
|
||||
"lastWeek": "Last 7 days",
|
||||
"older": "Older"
|
||||
},
|
||||
"starters": {
|
||||
"lclFcl": "I have 4 m³ to ship from Shanghai to Marseille: LCL or FCL?",
|
||||
"documents": "Which documents do I need to export wine to the United States?",
|
||||
@ -4831,6 +4838,24 @@
|
||||
"title": "Booking or account issue",
|
||||
"answer": "Which booking or step is causing trouble? Note the booking reference and describe the expected result, then email support@xpeditis.com. Never share passwords or API keys."
|
||||
}
|
||||
},
|
||||
"actionsLabel": "Actions taken",
|
||||
"adminWelcome": "What would you like to manage?",
|
||||
"capabilities": {
|
||||
"whoami": "Checked your permissions",
|
||||
"get_subscription": "Read your subscription",
|
||||
"search_documentation": "Searched the wiki",
|
||||
"search_rates": "Searched rates",
|
||||
"list_carriers": "Listed carriers",
|
||||
"list_my_bookings": "Read your bookings",
|
||||
"list_organization_bookings": "Organisation bookings",
|
||||
"get_booking": "Booking details",
|
||||
"booking_statistics": "Booking statistics",
|
||||
"cancel_booking": "Cancelled a booking",
|
||||
"delete_unpaid_booking": "Deleted an unpaid booking",
|
||||
"admin_list_users": "Listed platform accounts",
|
||||
"admin_list_organizations": "Listed organisations",
|
||||
"admin_rate_grid_overview": "Rate grid overview"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -3255,7 +3255,8 @@
|
||||
"blog": "Blog",
|
||||
"blogDesc": "Créer et gérer les articles du blog",
|
||||
"logs": "Logs système",
|
||||
"logsDesc": "Visualiser et télécharger les logs applicatifs"
|
||||
"logsDesc": "Visualiser et télécharger les logs applicatifs",
|
||||
"assistant": "Assistant IA"
|
||||
}
|
||||
},
|
||||
"csvUpload": {
|
||||
@ -4798,6 +4799,7 @@
|
||||
"conversations": "Conversations",
|
||||
"newConversation": "Nouvelle conversation",
|
||||
"noConversations": "Aucune conversation pour le moment.",
|
||||
"actions": "Actions",
|
||||
"rename": "Renommer",
|
||||
"delete": "Supprimer",
|
||||
"deleteConfirm": "Supprimer cette conversation ?",
|
||||
@ -4805,6 +4807,11 @@
|
||||
"save": "Enregistrer",
|
||||
"cancel": "Annuler",
|
||||
"sources": "Sources dans le wiki Xpeditis",
|
||||
"groups": {
|
||||
"today": "Aujourd'hui",
|
||||
"lastWeek": "7 derniers jours",
|
||||
"older": "Plus ancien"
|
||||
},
|
||||
"starters": {
|
||||
"lclFcl": "J'ai 4 m³ à expédier de Shanghai à Marseille : LCL ou FCL ?",
|
||||
"documents": "Quels documents préparer pour exporter du vin vers les États-Unis ?",
|
||||
@ -4831,6 +4838,24 @@
|
||||
"title": "Réservation ou problème de compte",
|
||||
"answer": "Quelle réservation ou quelle étape pose problème ? Notez la référence du dossier et décrivez le résultat attendu, puis écrivez à support@xpeditis.com. Ne transmettez jamais votre mot de passe ou vos clés API."
|
||||
}
|
||||
},
|
||||
"actionsLabel": "Actions effectuées",
|
||||
"adminWelcome": "Que voulez-vous piloter ?",
|
||||
"capabilities": {
|
||||
"whoami": "Vérification de vos droits",
|
||||
"get_subscription": "Lecture de votre abonnement",
|
||||
"search_documentation": "Recherche dans le wiki",
|
||||
"search_rates": "Recherche de tarifs",
|
||||
"list_carriers": "Liste des transporteurs",
|
||||
"list_my_bookings": "Lecture de vos réservations",
|
||||
"list_organization_bookings": "Réservations de l'organisation",
|
||||
"get_booking": "Détail d'une réservation",
|
||||
"booking_statistics": "Statistiques de réservations",
|
||||
"cancel_booking": "Annulation d'une réservation",
|
||||
"delete_unpaid_booking": "Suppression d'une réservation impayée",
|
||||
"admin_list_users": "Liste des comptes de la plateforme",
|
||||
"admin_list_organizations": "Liste des organisations",
|
||||
"admin_rate_grid_overview": "État des grilles tarifaires"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -66,7 +66,7 @@ describe('buildAppNav', () => {
|
||||
});
|
||||
|
||||
describe('buildAdminNav', () => {
|
||||
it('expose les sept destinations d administration', () => {
|
||||
it('expose les huit destinations d administration', () => {
|
||||
const groups = buildAdminNav({ t, tShell });
|
||||
const keys = groups.flatMap(g => g.items).map(i => i.key);
|
||||
expect(keys).toEqual([
|
||||
@ -76,6 +76,7 @@ describe('buildAdminNav', () => {
|
||||
'documents',
|
||||
'csvRates',
|
||||
'blog',
|
||||
'assistant',
|
||||
'logs',
|
||||
]);
|
||||
});
|
||||
|
||||
@ -175,7 +175,10 @@ export function buildAdminNav({ t, tShell }: AdminNavParams): NavGroup[] {
|
||||
{
|
||||
key: 'system',
|
||||
label: tShell('groups.system'),
|
||||
items: [{ key: 'logs', label: t('items.logs'), href: '/admin/logs', icon: ScrollText }],
|
||||
items: [
|
||||
{ key: 'assistant', label: t('items.assistant'), href: '/admin/assistant', icon: Bot },
|
||||
{ key: 'logs', label: t('items.logs'), href: '/admin/logs', icon: ScrollText },
|
||||
],
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user