From dbd93d0be2fbfd00b77b5d09d0ae38b010b43987 Mon Sep 17 00:00:00 2001 From: admin-valentin Date: Sat, 1 Aug 2026 09:57:56 +0000 Subject: [PATCH] feat(cc-050): AI Activity Privacy page --- .../dashboard/privacy/ai-activity/page.tsx | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 src/app/dashboard/privacy/ai-activity/page.tsx diff --git a/src/app/dashboard/privacy/ai-activity/page.tsx b/src/app/dashboard/privacy/ai-activity/page.tsx new file mode 100644 index 0000000..ae19013 --- /dev/null +++ b/src/app/dashboard/privacy/ai-activity/page.tsx @@ -0,0 +1,89 @@ +'use client'; + +import { useQuery } from '@tanstack/react-query'; +import { apiFetch } from '../../../../lib/api'; +import type { AiRequest } from '../../../../lib/api'; +import { useSession } from '../../../../components/session-provider'; + +export default function AiActivityPrivacyPage() { + const { activeTenant } = useSession(); + const tenantId = activeTenant?.tenantId ?? ''; + + const { data: requests = [], isLoading } = useQuery({ + queryKey: ['ai-activity-privacy', tenantId], + queryFn: () => apiFetch('/v1/ai-requests?limit=200', { tenantId }), + enabled: Boolean(tenantId), + staleTime: 30_000, + }); + + return ( +
+
+

Activitate AI

+

+ Transparență completă asupra accesului AI la datele workspace-ului. Fiecare cerere este + identificată printr-un context_manifest_hash{' '} + unic ce atestă setul de date permis. +

+
+ +
+

+ Notă privind confidențialitatea: Conținutul + contextelor AI nu este reținut de platformă. Hash-ul contextului permite auditarea tipului + de date accesate fără a expune datele în sine. +

+
+ + {isLoading ? ( +

Se încarcă…

+ ) : requests.length === 0 ? ( +
+

+

Nicio activitate AI înregistrată

+

AI-ul nu a accesat nicio dată din workspace.

+
+ ) : ( +
    + {requests.map((req) => ( +
  • +
    +
    +

    + {req.purpose.replace(/_/g, ' ')} +

    +
    + + {req.actionClass} + + · + {req.model} + · + + #{req.contextManifestHash.slice(0, 12)}… + +
    +
    +
    +

    + {new Date(req.createdAt).toLocaleDateString('ro-RO', { + day: 'numeric', month: 'short', year: 'numeric', + })} +

    +

    + {new Date(req.createdAt).toLocaleTimeString('ro-RO', { + hour: '2-digit', minute: '2-digit', + })} +

    +
    +
    +
  • + ))} +
+ )} +
+ ); +}