diff --git a/supabase/functions/process-audio/hooks.ts b/supabase/functions/process-audio/hooks.ts deleted file mode 100644 index 615e8cf..0000000 --- a/supabase/functions/process-audio/hooks.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { serve } from 'https://deno.land/std@0.168.0/http/server.ts' -import { processAudio } from './index.ts' - -interface WebhookPayload { - type: 'INSERT' | 'UPDATE' | 'DELETE' - table: string - schema: string - record: { - id: string - story_id: string - student_id: string - audio_url: string - status: string - [key: string]: any - } - old_record: null | Record -} - -serve(async (req) => { - try { - const payload: WebhookPayload = await req.json() - - // Verifica se é uma inserção em story_recordings - if ( - payload.type === 'INSERT' && - payload.table === 'story_recordings' && - payload.schema === 'public' && - payload.record.status === 'pending_analysis' - ) { - await processAudio(payload.record) - } - - return new Response(JSON.stringify({ success: true }), { - headers: { 'Content-Type': 'application/json' } - }) - - } catch (error) { - console.error('Hook error:', error) - return new Response( - JSON.stringify({ error: error.message }), - { status: 500, headers: { 'Content-Type': 'application/json' } } - ) - } -}) \ No newline at end of file diff --git a/supabase/functions/process-audio/index.ts b/supabase/functions/process-audio/index.ts index 6e679ef..98b8767 100644 --- a/supabase/functions/process-audio/index.ts +++ b/supabase/functions/process-audio/index.ts @@ -72,6 +72,7 @@ serve(async (req) => { ) const audioRecord = data.record as AudioRecord + console.log('AudioRecord', audioRecord) // 1. Atualiza status para processing await supabase @@ -84,30 +85,38 @@ serve(async (req) => { // 3. Analisa a leitura const analysis = await analyzeReading(transcription, audioRecord.story_id) + console.log('Análise concluída', analysis) // 4. Atualiza o registro com os resultados + const updateData = { + status: 'completed', + transcription, + processed_at: new Date().toISOString(), + fluency_score: analysis.fluency_score || 0, + pronunciation_score: analysis.pronunciation_score || 0, + accuracy_score: analysis.accuracy_score || 0, + comprehension_score: analysis.comprehension_score || 0, + words_per_minute: analysis.words_per_minute || 0, + pause_count: analysis.pause_count || 0, + error_count: analysis.error_count || 0, + self_corrections: analysis.self_corrections || 0, + strengths: Array.isArray(analysis.strengths) ? analysis.strengths : [], + improvements: Array.isArray(analysis.improvements) ? analysis.improvements : [], + suggestions: analysis.suggestions || '', + analysis: JSON.stringify(analysis.raw_data) + } + + console.log('Dados para atualização:', updateData) + const { error: updateError } = await supabase .from('story_recordings') - .update({ - status: 'completed', - transcription, - processed_at: new Date().toISOString(), - fluency_score: analysis.fluency_score, - pronunciation_score: analysis.pronunciation_score, - accuracy_score: analysis.accuracy_score, - comprehension_score: analysis.comprehension_score, - words_per_minute: analysis.words_per_minute, - pause_count: analysis.pause_count, - error_count: analysis.error_count, - self_corrections: analysis.self_corrections, - strengths: analysis.strengths, - improvements: analysis.improvements, - suggestions: analysis.suggestions, - analysis: analysis.raw_data - }) + .update(updateData) .eq('id', audioRecord.id) - if (updateError) throw updateError + if (updateError) { + console.error('Erro na atualização:', updateError) + throw updateError + } return new Response( JSON.stringify({ @@ -136,7 +145,7 @@ serve(async (req) => { status: 'error', error_message: error.message }) - .eq('id', data.record.id) + .eq('id', audioRecord.id) } return new Response(