diff --git a/CHANGELOG.md b/CHANGELOG.md index 12632d1..4bb7a1a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -120,6 +120,17 @@ e este projeto adere ao [Semantic Versioning](https://semver.org/lang/pt-BR/). - Timer de gravação no Modo Foco - Transições suaves entre modos - Controles flutuantes durante o Modo Foco +- Documentação completa da estrutura do banco de dados em `/docs/banco-dados.md`: + - Escolas e Classes + - Sistema de Alunos + - Histórias + - Interesses + - Sistema de Conquistas + - Sistema Fonético completo + - Relacionamentos e índices + - Políticas de segurança + - Triggers e funções + - Considerações de performance ### Modificado - Componente AudioRecorder atualizado para suportar Modo Foco @@ -133,3 +144,7 @@ e este projeto adere ao [Semantic Versioning](https://semver.org/lang/pt-BR/). - Callbacks de início e fim de gravação - Sistema de transição entre modos normal e foco - Otimização de performance para transições suaves +- Atualização das definições de tabelas para refletir a estrutura atual do Supabase +- Adição de diagramas ER para visualização dos relacionamentos +- Documentação de índices e políticas de segurança +- Inclusão de considerações de performance e backup diff --git a/docs/banco-dados.md b/docs/banco-dados.md new file mode 100644 index 0000000..8251f8c --- /dev/null +++ b/docs/banco-dados.md @@ -0,0 +1,315 @@ +# Estrutura do Banco de Dados + +## Visão Geral +O banco de dados foi projetado para suportar um sistema educacional de leitura, geração de histórias e exercícios fonéticos, com foco em rastreamento de progresso e gamificação. + +## Entidades + +### 1. Escolas e Classes +```sql +create table schools ( + id uuid primary key default uuid_generate_v4(), + name text not null, + address text, + phone text, + email text, + director_name text, + created_at timestamptz default now(), + updated_at timestamptz default now() +); + +create table classes ( + id uuid primary key default uuid_generate_v4(), + school_id uuid references schools(id), + teacher_id uuid references users(id), + name text not null, + grade text, + year integer, + period text, + created_at timestamptz default now(), + updated_at timestamptz default now() +); + +create table students ( + id uuid primary key default uuid_generate_v4(), + user_id uuid references users(id), + class_id uuid references classes(id), + reading_level text, + birth_date date, + active boolean default true, + created_at timestamptz default now(), + updated_at timestamptz default now() +); +``` + +### 2. Histórias +```sql +create table stories ( + id uuid primary key default uuid_generate_v4(), + student_id uuid references users(id), + title text not null, + content jsonb not null, + status text, + theme_id uuid, + subject_id uuid, + character_id uuid, + setting_id uuid, + created_at timestamptz default now(), + updated_at timestamptz default now() +); +``` + +### 3. Interesses +```sql +create table interests ( + id uuid primary key default uuid_generate_v4(), + student_id uuid references users(id), + category text not null, + item text not null, + created_at timestamptz default now(), + updated_at timestamptz default now() +); +``` + +### 4. Sistema de Conquistas +```sql +create table achievement_types ( + id uuid primary key default uuid_generate_v4(), + name varchar not null, + description text, + created_at timestamptz default now() +); + +create table achievements ( + id uuid primary key default uuid_generate_v4(), + name text not null, + description text +); +``` + +### 5. Sistema Fonético + +#### Categorias e Palavras +```sql +create table phonics_categories ( + id uuid primary key default uuid_generate_v4(), + name varchar not null, + description text, + level integer, + order_index integer, + created_at timestamptz default now(), + updated_at timestamptz default now() +); + +create table phonics_words ( + id uuid primary key default uuid_generate_v4(), + word varchar not null, + phonetic_transcription varchar, + syllables_count integer, + created_at timestamptz default now() +); + +create table phonics_word_audio ( + id uuid primary key default uuid_generate_v4(), + word text not null, + audio_url text, + audio_path text, + created_at timestamptz default now() +); +``` + +#### Exercícios +```sql +create table phonics_exercise_types ( + id uuid primary key default uuid_generate_v4(), + name varchar not null, + description text, + created_at timestamptz default now() +); + +create table phonics_exercises ( + id uuid primary key default uuid_generate_v4(), + category_id uuid references phonics_categories(id), + type_id uuid references phonics_exercise_types(id), + title varchar not null, + description text, + difficulty_level integer, + estimated_time_seconds integer, + instructions text, + points integer, + is_active boolean default true, + required_score double precision, + created_at timestamptz default now(), + updated_at timestamptz default now() +); + +create table phonics_exercise_words ( + id uuid primary key default uuid_generate_v4(), + exercise_id uuid references phonics_exercises(id), + word_id uuid references phonics_words(id), + is_correct_answer boolean, + order_index integer, + created_at timestamptz default now() +); +``` + +#### Mídia +```sql +create table media_types ( + id uuid primary key default uuid_generate_v4(), + name varchar not null, + description text, + created_at timestamptz default now() +); + +create table phonics_exercise_media ( + id uuid primary key default uuid_generate_v4(), + exercise_id uuid references phonics_exercises(id), + media_type_id uuid references media_types(id), + url text, + alt_text text, + order_index integer, + created_at timestamptz default now() +); +``` + +#### Conquistas Fonéticas +```sql +create table phonics_achievements ( + id uuid primary key default uuid_generate_v4(), + type_id uuid references achievement_types(id), + name varchar not null, + description text, + points integer, + icon_url text, + required_count integer, + created_at timestamptz default now() +); +``` + +## Relacionamentos + +### Hierarquia Principal +```mermaid +erDiagram + Schools ||--o{ Classes : "has" + Classes ||--o{ Students : "contains" + Students ||--o{ Stories : "creates" + Students ||--o{ Interests : "has" + Students ||--o{ Achievements : "earns" + + PhonicsCategories ||--o{ PhonicsExercises : "contains" + PhonicsExercises ||--o{ PhonicsExerciseWords : "has" + PhonicsWords }|--o{ PhonicsExerciseWords : "used_in" + PhonicsExercises ||--o{ PhonicsExerciseMedia : "has" + MediaTypes ||--o{ PhonicsExerciseMedia : "defines" +``` + +## Índices e Otimizações + +### Performance +```sql +-- Busca de exercícios por categoria +create index idx_exercises_category on phonics_exercises(category_id); + +-- Busca de histórias por aluno +create index idx_stories_student on stories(student_id); + +-- Busca de palavras por exercício +create index idx_exercise_words on phonics_exercise_words(exercise_id); + +-- Busca por conteúdo de história +create index idx_stories_content on stories using gin (content); +``` + +## Considerações de Segurança + +### RLS (Row Level Security) +```sql +-- Alunos só podem ver suas próprias histórias +create policy "Students view own stories" on stories + for select using (auth.uid() = student_id); + +-- Professores podem ver histórias de seus alunos +create policy "Teachers view class stories" on stories + for select using ( + auth.uid() in ( + select teacher_id from classes c + join students s on s.class_id = c.id + where s.id = stories.student_id + ) + ); +``` + +## Triggers + +### Atualização Automática +```sql +-- Atualizar student_progress após nova gravação +create trigger update_student_progress + after insert or update on story_recordings + for each row + execute function update_student_progress(); + +-- Calcular duração da sessão de leitura +create trigger calculate_session_duration + before update on reading_sessions + for each row + when (NEW.end_time is not null) + execute function calculate_session_duration(); +``` + +## Funções + +### Análise de Progresso +```sql +-- Calcular nível de leitura +create function calculate_reading_level( + student_id uuid +) returns text as $$ + -- Lógica de cálculo baseada em: + -- - Média de palavras por minuto + -- - Scores de fluência + -- - Quantidade de histórias lidas +$$ language plpgsql; + +-- Atualizar métricas de progresso +create function update_student_progress() returns trigger as $$ + -- Atualiza: + -- - Médias de performance + -- - Total de tempo lido + -- - Histórias completadas + -- - Pontos fortes e melhorias +$$ language plpgsql; +``` + +## Considerações de Performance + +### 1. Particionamento +- Gravações particionadas por mês +- Sessões particionadas por aluno +- Histórias particionadas por complexidade + +### 2. Vacuum +- Análise regular de dead tuples +- Vacuum automático configurado +- Monitoramento de bloat + +### 3. Cache +- Histórias populares em cache +- Métricas de progresso em cache +- Configurações de usuário em cache + +## Backup e Recuperação + +### 1. Estratégia +- Backup completo diário +- WAL archiving contínuo +- Retenção de 30 dias +- Teste mensal de recuperação + +### 2. Monitoramento +- Tamanho do banco +- Tempo de queries +- Uso de índices +- Deadlocks diff --git a/docs/controles-texto.md b/docs/controles-texto.md new file mode 100644 index 0000000..86dfc1f --- /dev/null +++ b/docs/controles-texto.md @@ -0,0 +1,117 @@ +# Controles de Texto + +## Visão Geral +Os controles de texto são um conjunto de funcionalidades que permitem aos usuários personalizar a apresentação do texto para melhor legibilidade e compreensão. + +## Componentes Principais + +### 1. TextControls +Componente principal que agrupa todos os controles de texto. + +#### Seção 1: Controles de Formatação Básica +- **Maiúsculas/Minúsculas** + - Alterna entre texto em maiúsculas e minúsculas + - Útil para leitores iniciantes + - Mantém estado global da preferência + +- **Sílabas** + - Ativa/desativa a separação silábica + - Ajuda na compreensão da estrutura das palavras + - Usa hífens para separação visual + +- **Destaque de Palavras** + - Realça palavras sequencialmente + - Auxilia no acompanhamento da leitura + - Velocidade ajustável + +#### Seção 2: Controles de Formatação Avançada +- **Tamanho da Fonte** + - Range: 12px - 32px + - Incrementos de 2px + - Ícone visual indicativo + +- **Espaçamento entre Letras** + - Ajuste fino do kerning + - Melhora legibilidade + - Suporte para necessidades especiais + +- **Espaçamento entre Palavras** + - Controle da distância entre palavras + - Facilita a leitura + - Ajuda na compreensão do texto + +- **Altura da Linha** + - Ajuste do espaçamento vertical + - Melhora conforto visual + - Previne confusão entre linhas + +### 2. AdaptiveText +Componente que implementa as transformações de texto. + +```typescript +interface AdaptiveTextProps { + text: string; + isUpperCase: boolean; + preserveWhitespace?: boolean; + highlightSyllables?: boolean; +} +``` + +## Funcionalidades Técnicas + +### 1. Gestão de Estado +- Uso de hooks personalizados para gerenciar preferências +- Persistência de configurações por usuário +- Sincronização em tempo real + +### 2. Transformações de Texto +- Conversão maiúsculo/minúsculo +- Separação silábica +- Destaque sequencial de palavras + +### 3. Acessibilidade +- Suporte a ARIA labels +- Alto contraste +- Feedback visual claro +- Suporte a leitores de tela + +## Integração com Modo Foco +- Controles permanecem acessíveis +- Transições suaves +- Estado preservado entre modos + +## Exemplos de Uso + +### Implementação Básica +```typescript + +``` + +### Uso com AdaptiveText +```typescript + +``` + +## Considerações de Performance +- Memoização de componentes +- Otimização de re-renders +- Lazy loading de recursos + +## Próximas Melhorias +1. Adicionar mais opções de formatação +2. Implementar temas personalizados +3. Melhorar algoritmo de separação silábica +4. Adicionar suporte a mais idiomas \ No newline at end of file diff --git a/docs/geracao-historia.md b/docs/geracao-historia.md new file mode 100644 index 0000000..e19dfb3 --- /dev/null +++ b/docs/geracao-historia.md @@ -0,0 +1,166 @@ +# Geração de Histórias + +## Visão Geral +O sistema de geração de histórias permite criar conteúdo personalizado baseado em parâmetros fornecidos pelo usuário, utilizando IA para gerar narrativas educativas e envolventes. + +## Parâmetros de Entrada + +### StoryChoices +```typescript +interface StoryChoices { + protagonist: string; // Nome/tipo do protagonista + setting: string; // Ambiente da história + theme: string; // Tema principal + genre: string; // Gênero da história + educationalGoal: string; // Objetivo educacional + ageGroup: string; // Faixa etária + length: 'short' | 'medium' | 'long'; // Extensão da história + complexity: 'easy' | 'medium' | 'hard'; // Nível de complexidade + language: 'pt-BR'; // Idioma (fixo em português) +} +``` + +## Modos de Entrada + +### 1. Formulário +- Interface gráfica com campos estruturados +- Validação em tempo real +- Sugestões pré-definidas +- Preview instantâneo + +### 2. Comando de Voz +- Reconhecimento de fala natural +- Extração automática de parâmetros +- Confirmação por voz +- Correção por voz ou texto + +### 3. Texto Livre +- Processamento de linguagem natural +- Identificação de parâmetros-chave +- Sugestão de complementos +- Refinamento interativo + +## Fluxo de Geração + +### 1. Coleta de Parâmetros +```typescript +// Exemplo de validação de parâmetros +const validateStoryParams = (choices: StoryChoices): boolean => { + return ( + !!choices.protagonist && + !!choices.setting && + !!choices.theme && + !!choices.genre && + !!choices.educationalGoal && + !!choices.ageGroup + ); +}; +``` + +### 2. Processamento +1. **Validação** + - Verificação de campos obrigatórios + - Validação de conteúdo apropriado + - Checagem de restrições de idade + +2. **Preparação** + - Formatação dos parâmetros + - Ajuste de complexidade + - Definição de estrutura + +3. **Geração** + - Criação do conteúdo via IA + - Revisão automática + - Formatação do texto + +### 3. Pós-processamento +- Verificação de adequação +- Ajustes de formatação +- Adição de metadados +- Geração de recursos visuais + +## Controles de Qualidade + +### 1. Adequação de Conteúdo +- Filtro de conteúdo impróprio +- Verificação de complexidade +- Adequação à faixa etária +- Alinhamento educacional + +### 2. Estrutura Narrativa +- Coerência da história +- Desenvolvimento de personagens +- Arco narrativo apropriado +- Conclusão educativa + +### 3. Linguagem +- Vocabulário adequado +- Estruturas gramaticais +- Pontuação correta +- Ritmo de leitura + +## Integração com Modo Foco + +### 1. Formatação Adaptativa +- Ajuste automático de fonte +- Espaçamento otimizado +- Quebras de linha estratégicas +- Destaque de palavras-chave + +### 2. Recursos de Acessibilidade +- Suporte a leitura em voz alta +- Marcadores visuais +- Controles de navegação +- Ajustes de contraste + +## Armazenamento + +### 1. Estrutura de Dados +```typescript +interface Story { + id: string; + title: string; + content: string; + parameters: StoryChoices; + metadata: { + wordCount: number; + readingTime: number; + complexity: number; + keywords: string[]; + }; + created_at: string; + updated_at: string; +} +``` + +### 2. Indexação +- Busca por parâmetros +- Filtros de complexidade +- Tags educacionais +- Histórico de geração + +## Próximas Melhorias + +1. **Personalização Avançada** + - Perfis de aprendizado + - Adaptação dinâmica + - Temas customizados + - Integração curricular + +2. **Geração Multimodal** + - Ilustrações automáticas + - Efeitos sonoros + - Animações simples + - Recursos interativos + +3. **Análise de Impacto** + - Métricas de engajamento + - Progresso educacional + - Feedback do usuário + - Ajustes automáticos + +4. **Colaboração** + - Edição compartilhada + - Biblioteca de recursos + - Compartilhamento social + - Feedback comunitário \ No newline at end of file diff --git a/docs/gravacao-audio.md b/docs/gravacao-audio.md new file mode 100644 index 0000000..2f18e71 --- /dev/null +++ b/docs/gravacao-audio.md @@ -0,0 +1,151 @@ +# Sistema de Gravação de Áudio + +## Visão Geral +O sistema de gravação de áudio permite aos alunos gravar suas leituras para análise posterior, com integração ao Modo Foco e recursos de acessibilidade. + +## Componentes + +### 1. AudioRecorder +Componente principal responsável pela gravação de áudio. + +#### Props +```typescript +interface AudioRecorderProps { + storyId: string; + studentId: string; + onAudioUploaded: (audioUrl: string) => void; + onRecordingStart?: () => void; + onRecordingStop?: () => void; + focusModeActive?: boolean; + onFocusModeToggle?: () => void; +} +``` + +### 2. Estados de Gravação +- **Não Iniciado**: Exibe botão "Iniciar Gravação" +- **Gravando**: Exibe botão "Parar Gravação" +- **Gravado**: Exibe opções de ouvir e enviar +- **Enviando**: Exibe indicador de progresso + +## Funcionalidades + +### 1. Controle de Gravação +- Início/parada de gravação +- Feedback visual do estado atual +- Integração com Modo Foco +- Controle de permissões do microfone + +### 2. Processamento de Áudio +- Formato: WebM +- Armazenamento temporário em Blob +- Conversão e compressão antes do upload +- Validação de qualidade + +### 3. Upload e Armazenamento +- Upload para Supabase Storage +- Geração de URLs públicas +- Organização por aluno/história +- Backup e cache + +### 4. Integração com Modo Foco +- Ativação automática do Modo Foco +- Desativação ao finalizar gravação +- Sincronização de estados +- Transições suaves + +## Fluxo de Gravação + +### 1. Início da Gravação +```typescript +const startRecording = async () => { + // 1. Ativar Modo Foco + if (!focusModeActive && onFocusModeToggle) { + onFocusModeToggle(); + } + + // 2. Solicitar permissões + const stream = await navigator.mediaDevices.getUserMedia({ audio: true }); + + // 3. Configurar gravador + mediaRecorderRef.current = new MediaRecorder(stream); + + // 4. Iniciar gravação + mediaRecorderRef.current.start(); +}; +``` + +### 2. Finalização da Gravação +```typescript +const stopRecording = () => { + // 1. Parar gravação + mediaRecorderRef.current?.stop(); + + // 2. Liberar recursos + mediaRecorderRef.current?.stream.getTracks().forEach(track => track.stop()); + + // 3. Desativar Modo Foco + if (focusModeActive && onFocusModeToggle) { + onFocusModeToggle(); + } +}; +``` + +### 3. Upload do Áudio +```typescript +const uploadAudio = async () => { + // 1. Preparar arquivo + const filePath = `${studentId}/${storyId}/${fileId}.webm`; + + // 2. Fazer upload + await supabase.storage + .from('recordings') + .upload(filePath, audioBlob); + + // 3. Obter URL pública + const { publicUrl } = supabase.storage + .from('recordings') + .getPublicUrl(filePath); + + // 4. Criar registro + await supabase + .from('story_recordings') + .insert({ + id: fileId, + story_id: storyId, + student_id: studentId, + audio_url: publicUrl + }); +}; +``` + +## Tratamento de Erros + +### 1. Permissões +- Verificação de disponibilidade do microfone +- Solicitação de permissões do usuário +- Feedback claro em caso de negação + +### 2. Gravação +- Monitoramento de qualidade +- Detecção de silêncio +- Limite de duração +- Feedback de volume + +### 3. Upload +- Retry em caso de falha +- Limpeza de arquivos temporários +- Validação de formato +- Feedback de progresso + +## Considerações de Segurança +- Validação de tipos de arquivo +- Sanitização de nomes de arquivo +- Controle de acesso por usuário +- Expiração de URLs temporárias + +## Próximas Melhorias +1. Adicionar visualização de forma de onda +2. Implementar edição básica de áudio +3. Melhorar feedback de qualidade +4. Adicionar suporte a mais formatos +5. Implementar detecção de ruído \ No newline at end of file diff --git a/docs/modo-foco.md b/docs/modo-foco.md new file mode 100644 index 0000000..2c9b2af --- /dev/null +++ b/docs/modo-foco.md @@ -0,0 +1,90 @@ +# Modo Foco + +## Visão Geral +O Modo Foco é uma funcionalidade projetada para melhorar a experiência de leitura e gravação de histórias, focando na concentração e acessibilidade. + +## Funcionalidades + +### 1. Ativação Automática +- Inicia automaticamente ao começar uma gravação +- Desativa automaticamente ao parar a gravação +- Pode ser ativado/desativado manualmente através do botão dedicado + +### 2. Interface Adaptativa +- Remove distrações visuais durante a leitura +- Aumenta o foco no texto atual +- Transições suaves entre estados + +### 3. Controles de Acessibilidade +- Ajuste de tamanho da fonte (12px - 32px) +- Controle de espaçamento entre letras +- Controle de espaçamento entre palavras +- Ajuste de altura da linha +- Velocidade de leitura personalizável + +### 4. Organização dos Controles +#### Seção 1 (Controles Principais) +- Maiúsculas/Minúsculas +- Sílabas +- Destacar palavras + +#### Seção 2 (Controles de Formatação) +- Tamanho da fonte +- Espaçamento entre letras +- Espaçamento entre palavras +- Altura da linha +- Velocidade de leitura + +### 5. Indicadores Visuais +- Ícones intuitivos para cada função +- Feedback visual do estado atual +- Timer de gravação +- Destaque de palavras durante a leitura + +## Estilos e Temas +- Modo claro com fundo suave +- Contraste adequado para leitura +- Sombras sutis para hierarquia visual +- Design responsivo para diferentes tamanhos de tela + +## Integração +- Componente `AudioRecorder` para gravações +- Componente `TextControls` para formatação +- Sistema de destaque de palavras +- Gerenciamento de estado global + +## Uso Técnico + +### Ativação do Modo Foco +```typescript +// Em AudioRecorder +const startRecording = async () => { + if (!focusModeActive && onFocusModeToggle) { + onFocusModeToggle(); + } + // ... resto do código +}; +``` + +### Desativação do Modo Foco +```typescript +// Em AudioRecorder +const stopRecording = () => { + // ... código de parada da gravação + if (focusModeActive && onFocusModeToggle) { + onFocusModeToggle(); + } +}; +``` + +## Considerações de Acessibilidade +- Alto contraste para melhor legibilidade +- Suporte a diferentes tamanhos de fonte +- Controles de espaçamento para dislexia +- Feedback visual claro das ações + +## Próximos Passos +1. Implementar persistência das preferências do usuário +2. Adicionar mais opções de temas +3. Expandir controles de acessibilidade +4. Melhorar feedback de progresso da leitura \ No newline at end of file diff --git a/docs/processamento-audio.md b/docs/processamento-audio.md new file mode 100644 index 0000000..305dd20 --- /dev/null +++ b/docs/processamento-audio.md @@ -0,0 +1,150 @@ +# Processamento de Áudio (Edge Function) + +## Visão Geral +O sistema de processamento de áudio é uma Edge Function que analisa gravações de leitura, fornecendo métricas detalhadas sobre fluência, pronúncia e compreensão. + +## Estrutura de Dados + +### AudioRecord +```typescript +interface AudioRecord { + id: string + story_id: string + student_id: string + audio_url: string + status: 'pending_analysis' | 'processing' | 'completed' | 'error' + analysis: any + created_at: string + transcription: string | null + processed_at: string | null + error_message: string | null + fluency_score: number | null + pronunciation_score: number | null + accuracy_score: number | null + comprehension_score: number | null + words_per_minute: number | null + pause_count: number | null + error_count: number | null + self_corrections: number | null + strengths: string[] + improvements: string[] + suggestions: string | null +} +``` + +## Fluxo de Processamento + +### 1. Recebimento da Requisição +- Validação inicial dos dados recebidos +- Configuração de CORS e headers +- Inicialização do logger + +### 2. Processamento Principal +O processamento ocorre em etapas sequenciais: + +1. **Verificação e Atualização de Status** + - Verifica existência do registro + - Cria registro se necessário + - Atualiza status para 'processing' + +2. **Processamento do Áudio** + - Transcrição via Whisper API + - Análise do texto transcrito + +3. **Análise da Leitura** + - Cálculo de métricas de fluência + - Avaliação de pronúncia + - Identificação de pontos fortes e melhorias + +4. **Atualização do Banco** + - Preparação dos dados de análise + - Verificação pré-update + - Atualização do registro + - Verificação pós-update + +## Tratamento de Erros + +### 1. Validação de Dados +```typescript +if (!data?.record?.id || !data?.record?.audio_url) { + throw new Error('Dados inválidos: ID ou URL do áudio ausentes') +} +``` + +### 2. Atualização de Status de Erro +- Em caso de falha, atualiza o registro com status 'error' +- Armazena mensagem de erro para diagnóstico +- Retorna resposta com detalhes do erro + +## Métricas Analisadas + +### Pontuações +- Fluência (0-100) +- Pronúncia (0-100) +- Precisão (0-100) +- Compreensão (0-100) + +### Métricas Quantitativas +- Palavras por minuto +- Contagem de pausas +- Contagem de erros +- Autocorreções + +### Feedback Qualitativo +- Pontos fortes identificados +- Áreas para melhoria +- Sugestões personalizadas + +## Logs e Monitoramento + +### Eventos Registrados +- Recebimento de requisição +- Atualizações de status +- Resultados de processamento +- Erros e exceções + +### Formato dos Logs +```typescript +logger.info('event_name', 'Descrição do evento', { + contextData: 'dados adicionais' +}) +``` + +## Considerações de Segurança + +### 1. Autenticação +- Validação de tokens +- Verificação de permissões +- Controle de acesso por usuário + +### 2. Dados Sensíveis +- Sanitização de inputs +- Validação de URLs +- Proteção contra injeção + +### 3. Rate Limiting +- Controle de requisições +- Proteção contra sobrecarga +- Cache de resultados + +## Próximas Melhorias + +1. **Análise Avançada** + - Detecção de padrões de erro + - Análise de entonação + - Reconhecimento de emoção + +2. **Performance** + - Otimização de processamento + - Cache distribuído + - Processamento em lote + +3. **Feedback** + - Relatórios detalhados + - Visualizações gráficas + - Recomendações personalizadas + +4. **Integração** + - Webhooks para notificações + - API para consultas em tempo real + - Exportação de dados \ No newline at end of file