# Ollama

[![Pipeline Status](https://gitlab.auditto.com.br/ia/ollama/badges/main/pipeline.svg)](https://gitlab.auditto.com.br/ia/ollama/-/commits/main)
[![Cobertura de Testes](https://gitlab.auditto.com.br/ia/ollama/badges/main/coverage.svg)](https://gitlab.auditto.com.br/ia/ollama/-/commits/main)
[![Python](https://img.shields.io/badge/python-3.8%2B-blue)](https://www.python.org/downloads/)
[![License](https://img.shields.io/badge/license-Proprietary-red)](LICENSE)

## 📋 Descrição
Projeto que integra a API do Ollama para criar uma interface de chat interativa, permitindo a execução de modelos de linguagem localmente ou via nuvem. O sistema oferece uma solução completa para interação com modelos de IA, incluindo gerenciamento de conversas, processamento de mensagens, autenticação (incluindo Microsoft OAuth) e interface web responsiva.

## 🚀 Funcionalidades Principais
- Chat interativo com modelos de linguagem (Llama, Gemini, ChatGPT, etc.)
- Gerenciamento de conversas e histórico
- Interface web responsiva e intuitiva
- Suporte a múltiplos modelos de IA
- Processamento de mensagens em tempo real
- Sistema de autenticação (usuário/senha e Microsoft OAuth)
- API REST para integração com outros sistemas
- Upload de arquivos para treino/contexto

## 📁 Estrutura do Projeto
```
ollama/
├── src/                    # Código fonte do projeto principal
│   ├── routes/            # Controladores e endpoints
│   ├── templates/         # Templates HTML
│   └── config/            # Configurações
├── chat-ollama/           # Aplicação de chat
│   ├── src/              # Código fonte da aplicação
│   ├── tests/            # Testes automatizados
│   ├── docs/             # Documentação técnica
│   ├── uploads/          # Arquivos enviados
│   ├── run.py            # Script principal
│   ├── requirements.txt  # Dependências
│   └── requirements-dev.txt # Dependências de desenvolvimento
├── migrations/            # Migrações do banco de dados
└── tests/                # Testes do projeto principal
```

## 🏗️ Arquitetura
O projeto é dividido em duas partes principais:

- **Projeto Principal** (`/src`): Interface web, rotas, templates e configurações centrais.
- **Aplicação de Chat** (`/chat-ollama`): Backend Flask, lógica de chat, integração com modelos, autenticação, uploads e API REST.

### Diagrama de Arquitetura
```mermaid
graph TB
    subgraph "Projeto Principal (/src)"
        A[Interface Web] --> B[Controladores]
        B --> C[API Ollama]
    end
    subgraph "Aplicação de Chat (/chat-ollama)"
        D[Frontend] --> E[API REST]
        E --> F[Serviços]
        F --> G[API Ollama]
        F --> H[Banco de Dados]
    end
    style A fill:#f9f,stroke:#333,stroke-width:2px
    style D fill:#f9f,stroke:#333,stroke-width:2px
    style G fill:#bbf,stroke:#333,stroke-width:2px
```

## 🔧 Requisitos
- Python 3.8+
- Ollama instalado e configurado (ou acesso à API)
- Banco de dados SQLite (ou outro configurado)
- Memória RAM: mínimo 4GB recomendado
- Espaço em disco: mínimo 2GB

## 🛠️ Instalação
1. Clone o repositório:
```bash
git clone https://gitlab.auditto.com.br/ia/ollama.git
cd ollama
```
2. Crie e ative um ambiente virtual:
```bash
python -m venv venv
source venv/bin/activate  # Linux/Mac
venv\Scripts\activate     # Windows
```
3. Instale as dependências:
```bash
cd chat-ollama
pip install -r requirements.txt
pip install -r requirements-dev.txt  # Para desenvolvimento
```
4. Configure as variáveis de ambiente:
```bash
cp .env.example .env
# Edite o arquivo .env com suas configurações (banco, OAuth, etc)
```

## 🚀 Uso
1. Inicie a aplicação:
```bash
cd chat-ollama
python run.py
```
2. Acesse a interface web:
```
https://ditto.auditto.com.br
```
Ou, para desenvolvimento local:
```
http://localhost:5000
```

## 🔑 Autenticação Microsoft (OAuth)
- Certifique-se de que a URL de redirecionamento cadastrada no Azure seja **https://ditto.auditto.com.br/auth/getAToken**.
- O sistema força o uso de HTTPS para o callback OAuth.
- Configure as variáveis de ambiente relacionadas ao Azure AD no `.env`:
  - `SHAREPOINT_CLIENT_ID`, `SHAREPOINT_CLIENT_SECRET`, `SHAREPOINT_TENANT_ID`

## 🧪 Testes
Execute os testes automatizados:
```bash
pytest
```
Para verificar a cobertura de testes:
```bash
pytest --cov=src tests/
```

## 📚 Documentação
- [Documentação da API](chat-ollama/docs/api.md)
- [Guia de Contribuição](chat-ollama/docs/CONTRIBUTING.md)
- [Guia de Deploy](chat-ollama/docs/DEPLOY.md)
- [Troubleshooting](chat-ollama/docs/TROUBLESHOOTING.md)

## 🔒 Segurança
- Autenticação via JWT e OAuth
- Rate limiting
- Validação e sanitização de entrada
- Proteção contra CSRF
- Headers de segurança

## 📈 Monitoramento
- Logs estruturados
- Métricas de performance
- Alertas automáticos
- Dashboard de status

## 🤝 Contribuição
1. Fork o projeto
2. Crie uma branch para sua feature (`git checkout -b feature/AmazingFeature`)
3. Commit suas mudanças (`git commit -m 'Add some AmazingFeature'`)
4. Push para a branch (`git push origin feature/AmazingFeature`)
5. Abra um Pull Request

## 📄 Licença
Este projeto está sob a licença proprietária da Auditto.

## 📞 Suporte
Para suporte, envie um email para suporte@auditto.com.br ou abra uma issue no GitLab.

## 🔄 Status do Projeto
Em desenvolvimento ativo. Veja o [roadmap](chat-ollama/docs/ROADMAP.md) para mais detalhes.

