Add "Agente de Parecer" feature

This commit is contained in:
gpt-engineer-app[bot]
2025-10-17 16:24:42 +00:00
parent 530e829680
commit 4ca7b2ff64
6 changed files with 498 additions and 5 deletions
+74
View File
@@ -0,0 +1,74 @@
import { useState } from "react";
import { AgentSidebar } from "./AgentSidebar";
import { AgentChat } from "./AgentChat";
import { AgentSearch } from "./AgentSearch";
export interface LegalOpinion {
id: string;
title: string;
content: string;
createdAt: Date;
category?: string;
}
export const AgentView = () => {
const [opinions, setOpinions] = useState<LegalOpinion[]>([]);
const [selectedOpinion, setSelectedOpinion] = useState<LegalOpinion | null>(null);
const [isCreatingNew, setIsCreatingNew] = useState(false);
const [showSearch, setShowSearch] = useState(false);
const handleCreateNew = () => {
setIsCreatingNew(true);
setSelectedOpinion(null);
setShowSearch(false);
};
const handleSelectOpinion = (opinion: LegalOpinion) => {
setSelectedOpinion(opinion);
setIsCreatingNew(false);
setShowSearch(false);
};
const handleSearch = () => {
setShowSearch(true);
setIsCreatingNew(false);
setSelectedOpinion(null);
};
const handleOpinionCreated = (newOpinion: LegalOpinion) => {
setOpinions([newOpinion, ...opinions]);
setSelectedOpinion(newOpinion);
setIsCreatingNew(false);
};
const handleDeleteOpinion = (id: string) => {
setOpinions(opinions.filter(op => op.id !== id));
if (selectedOpinion?.id === id) {
setSelectedOpinion(null);
}
};
return (
<div className="flex h-full">
<AgentSidebar
opinions={opinions}
onCreateNew={handleCreateNew}
onSelectOpinion={handleSelectOpinion}
onDeleteOpinion={handleDeleteOpinion}
onSearch={handleSearch}
selectedOpinionId={selectedOpinion?.id}
/>
<div className="flex-1">
{showSearch ? (
<AgentSearch onSelectOpinion={handleSelectOpinion} />
) : (
<AgentChat
selectedOpinion={selectedOpinion}
isCreatingNew={isCreatingNew}
onOpinionCreated={handleOpinionCreated}
/>
)}
</div>
</div>
);
};