📋 O que é CLARA?
CLARA é uma assistente virtual de IA especializada em orientações sobre legislação e procedimentos administrativos para servidores públicos.
Propósito
Fornecer orientações passo a passo sobre:
- SEI - Sistema Eletrônico de Informações (versões SEI!Rio e SEI 4.0)
- Legislação administrativa - Normas e regulamentos aplicáveis
- Procedimentos administrativos - Rotinas e processos em geral
Público-alvo
Servidores públicos e profissionais da administração pública que necessitam de orientações sobre rotinas administrativas.
Diferencial
A CLARA cita fontes documentais oficiais em suas respostas, permitindo que o usuário verifique as informações diretamente nos documentos originais.
⚡ Funcionalidades Principais
- Chat com IA em tempo real - Respostas via streaming SSE (Server-Sent Events)
- Busca semântica - Encontra informações relevantes usando embeddings vetoriais
- Citação de fontes - Referencia documentos oficiais nas respostas
- RAG (Retrieval Augmented Generation) - Combina busca na base de conhecimento com geração de IA
- Login opcional via Google - Autenticação OAuth 2.0
- Interface responsiva - Funciona em desktop e dispositivos móveis
- Atalhos de teclado - Ctrl+N (nova conversa), / (focar busca)
🛠️ Stack Tecnológica
Frontend
- React 18.3.1
- TypeScript
- Vite (build tool)
- Tailwind CSS
- shadcn/ui (componentes)
- Framer Motion (animações)
- TanStack Query (estado)
Backend (Supabase)
- PostgreSQL
- pgvector (embeddings)
- Edge Functions (Deno)
- Storage (documentos)
- Auth (OAuth 2.0)
Inteligência Artificial
- gemini-2.0-flash (chat)
- text-embedding-004 (embeddings)
- 768 dimensões vetoriais
- API Gemini (direta)
🏗️ Arquitetura do Sistema
┌─────────────────────────────────────────────────────────────┐
│ FRONTEND (React SPA) │
│ ┌─────────────────┐ ┌─────────────────┐ ┌──────────────┐ │
│ │ Landing Page │ │ Login Google │ │ Painel Admin │ │
│ │ + Chat Panel │ │ OAuth 2.0 │ │ (Restrito) │ │
│ └────────┬────────┘ └────────┬────────┘ └──────┬───────┘ │
└───────────┼────────────────────┼──────────────────┼─────────┘
│ │ │
▼ ▼ ▼
┌─────────────────────────────────────────────────────────────┐
│ SUPABASE (Backend) │
│ ┌─────────────────┐ ┌─────────────────┐ ┌──────────────┐ │
│ │ PostgreSQL │ │ Edge Functions │ │ Storage │ │
│ │ + pgvector │ │ (clara-chat) │ │ (Documentos) │ │
│ └────────┬────────┘ └────────┬────────┘ └──────────────┘ │
│ │ │ │
│ └────────────────────┼─────────────────────────────│
└────────────────────────────────┼─────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ GOOGLE GEMINI API (Direct) │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ gemini-2.0-flash │ Streaming SSE │ Rate Limit││
│ └─────────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────────┘
Fluxo de uma Consulta
- Usuário envia pergunta no chat
- Frontend envia request para Edge Function
clara-chat - Edge Function gera embedding da pergunta via
text-embedding-004 - Busca semântica no PostgreSQL/pgvector encontra chunks relevantes
- Contexto + pergunta são enviados ao
gemini-2.0-flash - Resposta é transmitida via SSE (streaming) ao frontend
- Frontend renderiza resposta em tempo real com citações de fontes
🔒 Segurança Implementada
Tabelas Protegidas por RLS
- profiles - Dados do usuário (SELECT/INSERT/UPDATE restritos ao owner)
- chat_sessions - Histórico de conversas (CRUD restrito ao owner)
- user_roles - Permissões (apenas leitura própria)
- rate_limits - Controle de requisições (apenas service role)
- documents - Base de conhecimento (leitura pública, escrita admin)
- document_chunks - Chunks vetorizados (leitura pública)
🔗 URLs e Recursos do Projeto
Contato
Email: wilsonmp2@gmail.com
⚙️ Edge Functions Disponíveis
- clara-chat - Endpoint principal de chat com IA (POST)
- search - Busca semântica na base de conhecimento (POST)
- documents - CRUD de documentos (GET/POST/DELETE)
- admin-auth - Autenticação do painel administrativo
- admin-upload - Upload de documentos para a base de conhecimento
🗄️ Schema do Banco de Dados
profiles
- id (UUID, PK)
- display_name
- avatar_url
- created_at
- last_seen_at
documents
- id (UUID, PK)
- title
- category
- content_text
- file_path
- created_at / updated_at
document_chunks
- id (UUID, PK)
- document_id (FK)
- chunk_index
- content
- embedding (vector 768)
- metadata (JSONB)
chat_sessions
- id (UUID, PK)
- user_id (FK profiles)
- title
- messages (JSONB)
- created_at / updated_at