개요
사용자의 지식베이스 파일 목록 조회 및 삭제, 대화 세션 삭제 기능을 구현하여, 프로젝트별 데이터 관리를 강화함.
주요 기능 및 동작 흐름
지식베이스 파일 목록 조회 (useEffect
=> /getInfoBase
)
컴포넌트 초기 로딩 시, activeProject
값을 기준으로 해당 프로젝트에 등록된 지식베이스 파일들을 조회.
응답받은 파일 정보를 files
상태에 추가.
API 경로 : POST / getInfoBase
요청 파라미터 :
{
"activeProject": { /* 프로젝트 정보 */ }
}
useEffect(() => {
const fetchGetInfoBase = async () => {
const response = await fetch(`${process.env.NEXT_PUBLIC_API_URL}/getInfoBase`, { ... });
...
const newFiles = data.map(f => ({
name: f.file_url,
source: 'local',
id: f.id
}));
setFiles([...files, ...newFiles]);
};
if (!initialized.current) {
initialized.current = true;
fetchGetInfoBase();
newChat();
}
}, []);
지식베이스 파일 삭제 (handleDeleteFile
)
유저가 Trash2 아이콘을 클릭하면 해당 파일을 백엔드 서버에 삭제 요청.
삭제 성공 시 files
상태에서 해당 파일 제거.
API 경로 : POST / DeleteFile
요청 파라미터 :
{
"activeProject": { /* 프로젝트 정보 */ },
"file": {
"name": "파일명",
...
}
}
const handleDeleteFile = async (file) => {
const response = await fetch(`${process.env.NEXT_PUBLIC_API_URL}/DeleteFile`, { ... });
if (response.ok) {
setFiles(files.filter(pre => pre.name !== file.name));
} else {
alert("지식베이스 삭제 오류발생");
}
};
세션 삭제 기능 (handleEeletSession
)
대화 세션 앞 Trash2 아이콘 클릭 시 삭제 요청
삭제 성공 시 currentSessionLogs
상태에서 제거됨.
API 경로 : POST / DeleteSession
요청 파라미터 :
{
"session_id": "세션 ID"
}
const handleDeleteSession = async (session_id) => {
const response = await fetch(`${process.env.NEXT_PUBLIC_API_URL}/DeleteSession`, { ... });
if (response.ok) {
setcurrentSessionLogs(currentSessionLogs.filter(pre => pre.id !== session_id));
} else {
alert("세션 삭제 오류발생");
}
};
UI 구성
