| import { DocumentFile, Innovation } from '../types'; |
|
|
| export interface ProcessResponse { |
| id: string; |
| file_name: string; |
| answer: string; |
| classification: string; |
| } |
|
|
| export const backendService = { |
| |
| |
| |
| |
| processDocument: async (file: DocumentFile, workingGroup: string, meeting: string): Promise<Innovation | null> => { |
| if (!file.url) { |
| console.warn(`Skipping file ${file.filename}: No URL`); |
| return null; |
| } |
|
|
| try { |
| const payload = { |
| file_id: file.id, |
| filename: file.filename, |
| working_group: workingGroup, |
| meeting: meeting, |
| type: file.type, |
| status: file.status || "Unknown", |
| agenda_item: file.agendaItem || "Unknown", |
| url: file.url |
| }; |
|
|
| const response = await fetch(`/process`, { |
| method: 'POST', |
| headers: { 'Content-Type': 'application/json' }, |
| body: JSON.stringify(payload) |
| }); |
|
|
| if (!response.ok) { |
| console.error(`Backend processing failed for ${file.filename}: ${response.statusText}`); |
| return null; |
| } |
|
|
| const data: ProcessResponse = await response.json(); |
|
|
| |
| return { |
| id: file.id, |
| file_name: file.filename, |
| answer: data.answer, |
| classification: "UNCLASSIFIED", |
| } as Innovation; |
|
|
| } catch (error) { |
| console.error(`Error processing document ${file.filename}:`, error); |
| return null; |
| } |
| }, |
|
|
| getPatterns: async (): Promise<any[]> => { |
| try { |
| const response = await fetch(`/patterns`); |
| if (response.ok) { |
| return await response.json(); |
| } |
| return []; |
| } catch (error) { |
| console.error("Error fetching patterns:", error); |
| return []; |
| } |
| }, |
|
|
| analyzeContent: async (patternId: number, fileId?: string, text?: string): Promise<{ content: string; result_id: number; methodology: string; context: string; problem: string; pattern_name: string } | null> => { |
| try { |
| const response = await fetch(`/analyze`, { |
| method: 'POST', |
| headers: { 'Content-Type': 'application/json' }, |
| body: JSON.stringify({ |
| pattern_id: patternId, |
| file_id: fileId, |
| text: text |
| }) |
| }); |
|
|
| if (response.ok) { |
| const data = await response.json(); |
| return { content: data.content, result_id: data.id, methodology: data.methodology, context: data.context, problem: data.problem, pattern_name: data.pattern_name }; |
| } |
| return null; |
| } catch (error) { |
| console.error("Error analyzing content:", error); |
| return null; |
| } |
| }, |
|
|
| saveClassification: async (resultId: number, classification: string): Promise<boolean> => { |
| try { |
| const response = await fetch(`/classify`, { |
| method: 'POST', |
| headers: { 'Content-Type': 'application/json' }, |
| body: JSON.stringify({ result_id: resultId, classification }) |
| }); |
| return response.ok; |
| } catch (error) { |
| console.error("Error saving classification:", error); |
| return false; |
| } |
| }, |
|
|
| fetchClassifiedInnovations: async (): Promise<any[]> => { |
| try { |
| const response = await fetch(`/results`); |
| if (response.ok) { |
| return await response.json(); |
| } |
| return []; |
| } catch (error) { |
| console.error("Error fetching classified innovations:", error); |
| return []; |
| } |
| }, |
|
|
| fetchAllFiles: async (): Promise<DocumentFile[]> => { |
| try { |
| const response = await fetch(`/get_all`); |
| if (response.ok) { |
| const rows = await response.json(); |
| |
| |
| return rows.map((row: any) => ({ |
| id: row[0], |
| filename: row[7], |
| size: 'Unknown', |
| type: row[3], |
| uploaded: true, |
| status: row[4], |
| agendaItem: row[5], |
| url: '' |
| })); |
| } |
| return []; |
| } catch (error) { |
| console.error("Error fetching all files:", error); |
| return []; |
| } |
| } |
| }; |
|
|