diff --git a/src/app/dashboard/legislation/page.tsx b/src/app/dashboard/legislation/page.tsx
index 6a223d8..c2fd7d2 100644
--- a/src/app/dashboard/legislation/page.tsx
+++ b/src/app/dashboard/legislation/page.tsx
@@ -1,26 +1,22 @@
'use client';
import { useState } from 'react';
-import { useSession } from '../../../lib/session';
+import { useQuery } from '@tanstack/react-query';
import { apiFetch } from '../../../lib/api';
+import { useSession } from '../../../components/session-provider';
interface LegResult {
country?: string;
section?: string;
text?: string;
source_id?: string;
- [key: string]: unknown;
-}
-
-interface ApiSearchResponse {
- scenario?: string;
- country_filter?: string;
- results?: LegResult[];
}
type Mode = 'search' | 'ask';
export default function LegislationPage() {
- const { session } = useSession();
+ const { activeTenant } = useSession();
+ const tenantId = activeTenant?.tenantId ?? null;
+
const [mode, setMode] = useState('ask');
const [input, setInput] = useState('');
const [country, setCountry] = useState('DE');
@@ -32,32 +28,29 @@ export default function LegislationPage() {
async function handleSubmit(e: React.FormEvent) {
e.preventDefault();
- if (!input.trim() || !session) return;
+ if (!input.trim()) return;
setLoading(true); setError(null); setResults([]); setAiAnswer(null);
try {
- const headers = {
- Authorization: `Bearer ${session.access_token}`,
- 'x-tenant-id': session.tenant_id,
- 'Content-Type': 'application/json',
- };
-
if (mode === 'search') {
- const data: ApiSearchResponse = await apiFetch('/v1/external/legislation/search', {
- method: 'POST', headers,
- body: JSON.stringify({ scenario: input.trim(), country, topK: 10 }),
+ const data = await apiFetch<{ results?: LegResult[] }>('/v1/external/legislation/search', {
+ method: 'POST',
+ body: { scenario: input.trim(), country, topK: 10 },
+ tenantId,
});
setResults(data.results ?? []);
} else {
- const data = await apiFetch('/v1/external/legislation/ask', {
- method: 'POST', headers,
- body: JSON.stringify({
+ const data = await apiFetch<{ textResponse?: string; response?: string }>('/v1/external/legislation/ask', {
+ method: 'POST',
+ body: {
message: `${input.trim()} (context juridic: ${country})`,
- sessionId: 'ceo-legislation-' + Date.now(),
- }),
- }) as Record;
- const text = (data?.textResponse ?? data?.response ?? data?.message ?? '') as string;
- setAiAnswer(text);
+ country,
+ type: 'general',
+ sessionId: `ceo-legislation-${Date.now()}`,
+ },
+ tenantId,
+ });
+ setAiAnswer(data?.textResponse ?? data?.response ?? '');
}
setSearched(true);
} catch {
@@ -79,7 +72,6 @@ export default function LegislationPage() {
- {/* Mode toggle */}
{(['ask', 'search'] as Mode[]).map((m) => (
setMode(m)}
@@ -88,7 +80,7 @@ export default function LegislationPage() {
? 'bg-background shadow-sm text-foreground'
: 'text-muted-foreground hover:text-foreground'
}`}>
- {m === 'ask' ? '🤖 Întreabă agentul AI' : '📄 Caută în corpus'}
+ {m === 'ask' ? 'Întreabă agentul AI' : 'Caută în corpus'}
))}
@@ -100,72 +92,52 @@ export default function LegislationPage() {
? 'ex: Am o firmă GmbH în Germania și vreau să angajez remote din România. Ce obligații legale am?'
: 'Descrie situația ta complet pentru a obține secțiunile de lege relevante...'
}
- className="w-full rounded-lg border bg-background px-4 py-3 text-sm
- focus:outline-none focus:ring-2 focus:ring-ring resize-none"
+ className="w-full rounded-lg border bg-background px-4 py-3 text-sm focus:outline-none focus:ring-2 focus:ring-ring resize-none"
/>
setCountry(e.target.value)}
- className="rounded-lg border bg-background px-3 py-2 text-sm
- focus:outline-none focus:ring-2 focus:ring-ring">
+ className="rounded-lg border bg-background px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-ring">
Germania (DE)
România (RO)
UE (EU)
- Austria (AT)
+ Franța (FR)
+ UK (UK)
+ className="rounded-lg bg-primary px-6 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50">
{loading ? (mode === 'ask' ? 'Agent răspunde...' : 'Se caută...') : (mode === 'ask' ? 'Întreabă' : 'Caută')}
{error && (
-
+
{error}
)}
- {/* AI Answer */}
{aiAnswer && (
-
- 🤖
- Răspuns agent legislație
-
-
- {aiAnswer}
-
+
Răspuns agent legislație
+
{aiAnswer}
Generat de agentul AnythingLLM · Nu constituie consultanță juridică
)}
- {/* Vector search results */}
{results.length > 0 && (
-
- {results.length} secțiuni relevante găsite
-
+
{results.length} secțiuni relevante găsite
{results.map((r, i) => (
{r.country && (
-
- {r.country}
-
- )}
- {r.section && (
- {r.section}
+ {r.country}
)}
+ {r.section && {r.section} }
- {r.text && (
-
- {r.text}
-
- )}
+ {r.text &&
{r.text}
}
{r.source_id}
))}
@@ -173,10 +145,8 @@ export default function LegislationPage() {
)}
{searched && !loading && results.length === 0 && !aiAnswer && !error && (
-
- Niciun rezultat pentru scenariul introdus.
-
+
Niciun rezultat pentru scenariul introdus.
)}
);
-}
+}
\ No newline at end of file