Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
5d891f3
fix: problemas de dependencia e compatibilide das dependencias
bedrohenr Sep 25, 2025
74e19af
docs: criação de backlog
liviahombre Oct 1, 2025
29a174d
docs: alterações backlog
liviahombre Oct 2, 2025
2fcc9ba
docs: alterações backlog
liviahombre Oct 2, 2025
8b1dcce
retirando item desnecessario, adicionando treinamento
aliciacapo Oct 16, 2025
a93c2ab
ajustando requirements e adicionando lengchain basico
aliciacapo Oct 24, 2025
1d2919c
Implementação de contexto com langchain
nascimentoVitor10 Oct 29, 2025
ef6619a
Implementação de contexto e gerenciamento de token com langchain
nascimentoVitor10 Oct 29, 2025
76e7355
correção de implementação de contexto e gerenciamento de token com la…
nascimentoVitor10 Oct 30, 2025
e602329
Merge pull request #25 from aliciacapo/main
bedrohenr Nov 2, 2025
80f4821
adicionando criacao de graficos no chat
aliciacapo Nov 2, 2025
8124667
Merge pull request #271 from aliciacapo/main
bedrohenr Nov 2, 2025
ce119ef
docs: adiciona arquivos andes e made
ThiagoFabiano Nov 10, 2025
771c2b0
inserção de memória contextual com langchain
nascimentoVitor10 Nov 25, 2025
556968b
correção de última PR
nascimentoVitor10 Nov 26, 2025
9536c95
Correção de requirements
nascimentoVitor10 Nov 27, 2025
e7178a8
Merge branch 'main' into branch_langchain
bedrohenr Nov 29, 2025
7cedeb7
Merge pull request #304 from nascimentoVitor10/branch_langchain
bedrohenr Nov 29, 2025
49642b3
loy
sofianasilva Dec 1, 2025
f4626dd
Merge pull request #1 from sofianasilva/main
aliciacapo Dec 2, 2025
a774c3c
pasta
sofianasilva Dec 2, 2025
a4686aa
Merge pull request #2 from sofianasilva/main
aliciacapo Dec 2, 2025
e4b021b
tirar foto
sofianasilva Dec 2, 2025
9063c7b
Merge pull request #3 from sofianasilva/main
aliciacapo Dec 2, 2025
076d69f
Enable superuser creation in example.env
sofianasilva Dec 3, 2025
b263d9f
django admin
sofianasilva Dec 3, 2025
8006f33
django admin
sofianasilva Dec 3, 2025
6055736
Merge pull request #4 from sofianasilva/main
aliciacapo Dec 3, 2025
cba7325
Merge branch 'main' into main
aliciacapo Dec 9, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .docker/back-end/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ WORKDIR /app
# Forçando output sem buffer (Error Handling?)
ENV PYTHONUNBUFFERED=1

# Indicate this is running in Docker
ENV DOCKER_CONTAINER=true

# Copia os arquivos do projeto para o contêiner
COPY requirements.txt .

Expand Down
30 changes: 30 additions & 0 deletions .docker/django-auth/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
FROM python:3.11-slim

WORKDIR /app

# Install system dependencies
RUN apt-get update && apt-get install -y \
gcc \
postgresql-client \
&& rm -rf /var/lib/apt/lists/*

# Copy requirements and install Python dependencies
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# Copy application code
COPY . .

# Copy and set up entrypoint script
COPY entrypoint.sh /app/entrypoint.sh
RUN chmod +x /app/entrypoint.sh

# Set Python path to include src directory
ENV PYTHONPATH=/app/src:/app

# Indicate this is running in Docker
ENV DOCKER_CONTAINER=true

EXPOSE 8001

CMD ["/app/entrypoint.sh"]
44 changes: 44 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Virtual environments
.venv/
.venv-*/
venv/
env/

# Python cache
__pycache__/
*.pyc
*.pyo
*.pyd
.Python

# IDE files
.vscode/
.idea/
*.swp
*.swo

# OS files
.DS_Store
Thumbs.db

# Git
.git/
.gitignore

# Documentation
*.md
docs/

# Test files
test_*.py
*_test.py

# Logs
*.log

# Database files
*.db
*.sqlite3

# Node modules (if any)
node_modules/
98 changes: 98 additions & 0 deletions backlog.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
## Backlog de Features

### Feature 1: Autenticação de Usuário e Controle de Acesso
- **Descrição (PT):** Desenvolvimento completo do subsistema de autenticação. Deve incluir **Registro** e **Login** seguro de usuários. Implementação de **Controle de Acesso (ACL)** para que cada usuário possa **apenas visualizar e gerenciar seus próprios repositórios e dados**. Este é o alicerce de segurança do sistema.
- **Prioridade:** Alta
- **Estimativa de Complexidade:** Alta
- **Status:** To Do

---

### Feature 2: Gerenciamento Dinâmico de Token
- **Descrição (PT):** Criação de uma funcionalidade direta na interface do usuário (UI) que permita ao usuário **inserir, visualizar (parcialmente) e atualizar o token de acesso** ao repositório (ex: GitHub Token). Essa gestão deve ser feita de forma segura e imediata, **eliminando a necessidade de configuração manual em arquivos** ou no backend.
- **Prioridade:** Média
- **Estimativa de Complexidade:** Alta
- **Status:** To Do

---

### Feature 3: Memória Contextual com LangChain
- **Descrição (PT):** Implementação de uma **camada de memória** nas interações com a IA, utilizando a biblioteca **LangChain**. O objetivo é que a IA consiga **lembrar e referenciar informações de interações anteriores** na mesma conversa, permitindo um fluxo de diálogo contínuo, coerente e com contexto mantido.
- **Prioridade:** Alta
- **Estimativa de Complexidade:** Média
- **Status:** To Do

---

### Feature 4: Geração de Gráficos e Visualização de Dados
- **Descrição (PT):** Capacidade de o sistema **responder a interações do usuário gerando gráficos (charts)**. Deve ser integrada a bibliotecas de visualização (ex: Matplotlib/Pandas) para renderizar e exibir dados estruturados de forma visual e analítica diretamente na interface do chat.
- **Prioridade:** Média
- **Estimativa de Complexidade:** Média
- **Status:** To Do

---

### Feature 5: Design de Frontend e Usabilidade (UX)
- **Descrição (PT):** Criação e implementação de uma **Interface de Usuário (UI) responsiva** e moderna, garantindo excelente experiência em desktop e dispositivos móveis. **Melhoria da UX** para que a aplicação (especialmente containers Docker) possa ser iniciada com **mínima ou nenhuma configuração manual**.
- **Prioridade:** Média
- **Estimativa de Complexidade:** Baixa
- **Status:** To Do

---

### Feature 6: Padronização de Respostas da IA
- **Descrição (PT):** Definição e implementação de um **sistema de controle de parâmetros** (como 'temperature', 'top_p' e 'estilo/formato de saída') para garantir que as respostas da IA sejam **consistentes, previsíveis e adequadas ao contexto técnico**. Isso garante a confiabilidade das respostas.
- **Prioridade:** Baixa
- **Estimativa de Complexidade:** Baixa
- **Status:** To Do

---

## Planejamento de Sprints (1 semana cada)

### Sprint 1: **Memória Inicial com LangChain** (02/10/2025 -- 08/10/2025)
- **Issue:** Feature 3 - Memória Contextual com LangChain

---

### Sprint 2: **Visualização e Gráficos** (09/10/2025 -- 15/10/2025)
- **Issue:** Feature 4 - Geração de Gráficos e Visualização de Dados

---

### Sprint 3: **Padronização da IA - Parte 1** (16/10/2025 -- 22/10/2025)
- **Issue:** Feature 6 - Padronização de Respostas da IA (início)

---

### Sprint 4: **Interface e UX** (23/10/2025 -- 29/10/2025)
- **Issue:** Feature 5 - Design de Frontend e Usabilidade (UX)

---

### Sprint 5: **Autenticação Segura** (30/10/2025 -- 05/11/2025)
- **Issue:** Feature 1 - Autenticação de Usuário e Controle de Acesso

---

### Sprint 6: **Gerenciamento de Token - Parte 1** (06/11/2025 -- 12/11/2025)
- **Issue:** Feature 2 - Gerenciamento Dinâmico de Token (início)

---

### Sprint 7: **Gerenciamento de Token - Parte 2** (13/11/2025 -- 19/11/2025)
- **Issue:** Feature 2 - Gerenciamento Dinâmico de Token (finalização)

---

### Sprint 8: **Estabilização e Revisão Final** (20/11/2025 -- 30/11/2025)
- **Issue:** Revisão e correção de problemas das issues realizadas anteriormente

---

## Marcos de Grandes Entregas (Milestones)

| Data da Entrega | Sprints Inclusas | Features Entregues (Escopo) |
| :--- | :--- | :--- |
| **02/11/2025** | Sprint 1 + Sprint 2 + Sprint 3 | Funcionalidades iniciais entregues: Memória Contextual (F3), Geração de Gráficos (F4) e Padronização da IA - Parte 1 (F6). |
| **30/11/2025** | Sprint 4 + Sprint 5 + Sprint 6 + Sprint 7 + Sprint 8 | Funcionalidades finais entregues: Design de Frontend e Usabilidade (F5), Autenticação/Controle de Acesso (F1), Gerenciamento Dinâmico de Token (F2), e Estabilização/Revisão Final. |
51 changes: 51 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ services:
context: .
dockerfile: .docker/db/Dockerfile
restart: always
env_file:
- .env
environment:
POSTGRES_USER: ${DB_USER}
POSTGRES_PASSWORD: ${DB_PASSWORD}
Expand All @@ -36,6 +38,8 @@ services:
volumes:
- .:/app # Monta o código local (opcional, para desenvolvimento)
- /var/run/docker.sock:/var/run/docker.sock # Monta o socket do host
env_file:
- .env
environment:
- GITHUB_TOKEN=${GITHUB_TOKEN}
- DB_HOST=${DB_HOST}
Expand All @@ -46,20 +50,66 @@ services:
- DB_URL=${DB_URL}
- GEMINI_API_KEY=${GEMINI_API_KEY}
- GEMINI_MODEL_NAME=${GEMINI_MODEL_NAME}
- INTERNAL_AUTH_TOKEN=${INTERNAL_AUTH_TOKEN}
- JWT_SECRET_KEY=${JWT_SECRET_KEY}
- DJANGO_VALIDATE_URL=http://django-auth:8001/internal/validate-token/
command: ["python", "main.py", "--etl"]
ports:
- 8000:8000
depends_on:
- db
- django-auth
networks:
- open
- oraculo

django-auth:
container_name: django-auth-container
build:
context: .
dockerfile: .docker/django-auth/Dockerfile
volumes:
- .:/app
env_file:
- .env
environment:
- DJANGO_SECRET_KEY=${DJANGO_SECRET_KEY}
- FERNET_KEY=${FERNET_KEY}
- DEBUG=${DEBUG}
- DB_HOST=${DB_HOST}
- DB_PORT=${DB_PORT}
- DB_NAME=${DB_NAME}
- DB_USER=${DB_USER}
- DB_PASSWORD=${DB_PASSWORD}
- CREATE_SUPERUSER=${CREATE_SUPERUSER:-false}
- DJANGO_SUPERUSER_USERNAME=${DJANGO_SUPERUSER_USERNAME:-admin}
- DJANGO_SUPERUSER_EMAIL=${DJANGO_SUPERUSER_EMAIL:-admin@example.com}
- DJANGO_SUPERUSER_PASSWORD=${DJANGO_SUPERUSER_PASSWORD:-}
- INTERNAL_AUTH_TOKEN=${INTERNAL_AUTH_TOKEN}
- JWT_SECRET_KEY=${JWT_SECRET_KEY}
ports:
- 8001:8001
depends_on:
- db
healthcheck:
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8001/api/me/')"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
networks:
- oraculo

front-end:
container_name: open-webui-container
build:
context: .
dockerfile: .docker/front-end/Dockerfile
env_file:
- .env
environment:
- INTERNAL_AUTH_TOKEN=${INTERNAL_AUTH_TOKEN}
- JWT_SECRET_KEY=${JWT_SECRET_KEY}
ports:
- 3000:8080
volumes:
Expand All @@ -68,5 +118,6 @@ services:
depends_on:
- db
- back-end
- django-auth
networks:
- oraculo
1 change: 1 addition & 0 deletions docs/andes/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
node_modules/
38 changes: 38 additions & 0 deletions docs/andes/artifacts/Oraculo.made
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@

project Oraculo {
name: "Oráculo"
description: "Chatbot para análise de repositórios GitHub"
startDate: 2025-11-01
dueDate: 2025-11-01
}

backlog Oraculo {
name: "Oráculo"
description: "Chatbot para análise de repositórios GitHub"
epic Authentication {
name: "Authentication"
}
epic TokenManagement {
name: "TokenManagement"
}
epic ChatInteraction {
name: "ChatInteraction"
}
epic DataVisualization {
name: "DataVisualization"
}
epic domaindiagram {
name: "domaindiagram"
story createmodule_OraculoApp {
name: "Create database infrastruture to module OraculoApp"
observation: ""
task create_module {
name: "Implements domain modules"
}
task create_repository {
name: "Implements data repository"
depends: Oraculo.domaindiagram.createmodule_OraculoApp.create_module
}
}
}
}
34 changes: 34 additions & 0 deletions docs/andes/artifacts/Oráculo.spark
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@

Configuration {
software_name: "Oráculo"
about: "Chatbot para análise de repositórios GitHub"
language: python
}

module OraculoApp {
entity User {
username: string
_email: email
password: string
github_token: string
}
entity Repository {
url: string
user ManyToOne User
}
entity Conversation {
conversation_date: date
user ManyToOne User
}
entity Message {
content: string
is_user: boolean
timestamp: date
conversation ManyToOne Conversation
}
enum Priority {
LOW
MEDIUM
HIGH
}
}
Loading