8 Commits

Author SHA1 Message Date
Davidson Gomes
21e67e43a3 Merge branch 'release/0.0.11' 2025-05-16 12:15:48 -03:00
Davidson Gomes
c916b7a660 chore(changelog): update changelog for version 0.0.11 with service fixes 2025-05-16 12:15:41 -03:00
Davidson Gomes
c6916eabc5 Merge pull request #9 from Rodribm10/patch-2
Update docker-compose.yml
2025-05-16 09:51:19 -03:00
Davidson Gomes
7f35a9a6bc Merge pull request #10 from oriondesign2015/develop
⚙️ Fix: importação, seeders automáticos e verificação por e-mail
2025-05-16 09:50:36 -03:00
OrionDesign
6d7b1194d0 ✉️ Verificação manual por e-mail
### 📋 Descrição

Esta PR modifica o comportamento padrão de verificação de usuários no sistema, alterando o parâmetro `auto_verify` de `True` para `False` durante a criação de novos usuários.

####  Alteração específica

- Aplica-se ao serviço `client_service`.
- O valor `auto_verify=True` foi alterado para `False`.

---

### 🚀 Motivação

Atualmente, as contas são aprovadas automaticamente sem que o usuário defina uma senha, o que obriga o uso da funcionalidade de "Esqueci minha senha" para definir uma senha e acessar o painel. Esta PR tem como objetivo permitir que o usuário verifique a conta via e-mail, o que ativa a conta e permite que ele defina a senha de forma imediata, melhorando a experiência do usuario.

Objetivos principais:

- **Maior segurança:** Forçar a verificação por e-mail de novos usuários, garantindo que apenas contas confirmadas possam acessar o sistema.
- **Melhoria na experiência do usuário:** Eliminar a dependência do fluxo de "Esqueci minha senha" logo após o cadastro pelo administrador.

---

### 💥 Impacto

- Será necessário que o usuário confirme o cadastro via e-mail para ativar a conta e definir a senha.
- O processo de onboarding de novos usuários se torna mais controlado e seguro.

---

###  Testes realizados

- Verificado que novos usuários são criados com status de **não verificado**.
- Confirmado que apenas após a confirmação via e-mail o usuário pode acessar e definir a senha.
- Testado o **fluxo completo de registro e verificação manual por e-mail**.

---

### 📝 Observações

- Esta alteração **não afeta usuários já existentes** no sistema.
- O administrador pode cadastrar um novo usuário informando apenas nome e e-mail.
- O próprio usuário deve confirmar a conta por e-mail para poder criar a senha e acessar o sistema.
2025-05-16 03:44:23 -03:00
OrionDesign
1bcd76595c ⚙️ Fix: importação e seeders automáticos
### 📋 Descrição

Esta PR aborda dois pontos críticos identificados durante a execução do container da aplicação:

####  Correção de importação no `email_service.py`

- Corrigido o caminho da importação:
  - **De:** `from config.settings import settings`
  - **Para:** `from src.config.settings import settings`
- Essa alteração soluciona o erro `ModuleNotFoundError: No module named 'config'`, que impedia a inicialização da aplicação.

####  Execução automática dos seeders via Dockerfile

- Adicionado o script de seeders à sequência de inicialização da aplicação no Dockerfile.
- O comando de inicialização foi alterado para:
  ```bash
  alembic upgrade head && python -m scripts.run_seeders && uvicorn src.main:app --host $HOST --port $PORT
  ```
- Isso garante que os seeders (incluindo o usuário admin) sejam executados automaticamente após as migrações.

---

### 💥 Impacto

- Corrige o erro de importação, permitindo que a aplicação seja iniciada corretamente.
- Automatiza a criação do usuário admin e outros dados iniciais essenciais.
- Melhora a experiência de primeira execução, eliminando etapas manuais.

---

###  Testes realizados

- Verificado que a aplicação inicia corretamente após as alterações.
- Confirmado que os seeders são executados com sucesso, criando o usuário admin e outros dados iniciais conforme esperado.

---

### 📝 Observações

- O novo caminho de importação em `email_service.py` está alinhado com o padrão utilizado nos demais arquivos do projeto.
- Os seeders são executados somente após a conclusão bem-sucedida das migrações do banco de dados.
2025-05-16 01:51:47 -03:00
Rodribm10
6234e3838f Update docker-compose.yml 2025-05-15 20:39:14 -03:00
Davidson Gomes
ddb7650f59 Merge tag '0.0.10' into develop
v
2025-05-15 19:31:12 -03:00
5 changed files with 18 additions and 27 deletions

View File

@@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [0.0.11] - 2025-05-16
### Changed
- Fixes on email service and client service
## [0.0.10] - 2025-05-15 ## [0.0.10] - 2025-05-15
### Added ### Added

View File

@@ -34,4 +34,4 @@ ENV PORT=8000 \
# Expose port # Expose port
EXPOSE 8000 EXPOSE 8000
CMD alembic upgrade head && uvicorn src.main:app --host $HOST --port $PORT CMD alembic upgrade head && python -m scripts.run_seeders && uvicorn src.main:app --host $HOST --port $PORT

View File

@@ -3,19 +3,15 @@ version: "3.8"
services: services:
api: api:
image: evo-ai-api:latest image: evo-ai-api:latest
build: .
container_name: evo-ai-api
depends_on: depends_on:
postgres: - postgres
condition: service_healthy - redis
redis:
condition: service_healthy
ports: ports:
- "8000:8000" - "8000:8000"
environment: environment:
POSTGRES_CONNECTION_STRING: postgresql://postgres:${POSTGRES_PASSWORD:-postgres}@postgres:5432/evo_ai POSTGRES_CONNECTION_STRING: postgresql://postgres:${POSTGRES_PASSWORD:-postgres}@postgres:5432/evo_ai
REDIS_HOST: redis REDIS_HOST: redis
REDIS_PORT: 6379 REDIS_PORT: ${REDIS_PORT:-6379}
REDIS_PASSWORD: ${REDIS_PASSWORD:-""} REDIS_PASSWORD: ${REDIS_PASSWORD:-""}
REDIS_SSL: "false" REDIS_SSL: "false"
REDIS_KEY_PREFIX: "a2a:" REDIS_KEY_PREFIX: "a2a:"
@@ -29,7 +25,6 @@ services:
volumes: volumes:
- ./logs:/app/logs - ./logs:/app/logs
- ./static:/app/static - ./static:/app/static
restart: unless-stopped
healthcheck: healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/"] test: ["CMD", "curl", "-f", "http://localhost:8000/"]
interval: 30s interval: 30s
@@ -41,12 +36,9 @@ services:
limits: limits:
cpus: "1" cpus: "1"
memory: 1G memory: 1G
networks:
- evo-network
postgres: postgres:
image: postgres:14-alpine image: postgres:14-alpine
container_name: evo-ai-postgres
environment: environment:
POSTGRES_USER: postgres POSTGRES_USER: postgres
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres}
@@ -55,15 +47,12 @@ services:
- "${POSTGRES_PORT:-5432}:5432" - "${POSTGRES_PORT:-5432}:5432"
volumes: volumes:
- postgres_data:/var/lib/postgresql/data - postgres_data:/var/lib/postgresql/data
restart: unless-stopped
healthcheck: healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"] test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s interval: 10s
timeout: 5s timeout: 5s
retries: 5 retries: 5
start_period: 10s start_period: 10s
networks:
- evo-network
deploy: deploy:
resources: resources:
limits: limits:
@@ -72,8 +61,12 @@ services:
redis: redis:
image: redis:alpine image: redis:alpine
container_name: evo-ai-redis command:
command: redis-server --appendonly yes ${REDIS_PASSWORD:+--requirepass ${REDIS_PASSWORD}} - redis-server
- --appendonly
- "yes"
- --requirepass
- "${REDIS_PASSWORD}"
ports: ports:
- "${REDIS_PORT:-6379}:6379" - "${REDIS_PORT:-6379}:6379"
volumes: volumes:
@@ -83,9 +76,6 @@ services:
interval: 5s interval: 5s
timeout: 30s timeout: 30s
retries: 50 retries: 50
restart: unless-stopped
networks:
- evo-network
deploy: deploy:
resources: resources:
limits: limits:
@@ -97,8 +87,3 @@ volumes:
name: ${POSTGRES_VOLUME_NAME:-evo-ai-postgres-data} name: ${POSTGRES_VOLUME_NAME:-evo-ai-postgres-data}
redis_data: redis_data:
name: ${REDIS_VOLUME_NAME:-evo-ai-redis-data} name: ${REDIS_VOLUME_NAME:-evo-ai-redis-data}
networks:
evo-network:
name: ${NETWORK_NAME:-evo-network}
driver: bridge

View File

@@ -154,7 +154,7 @@ def create_client_with_user(
# Use client ID to create the associated user # Use client ID to create the associated user
user, message = create_user( user, message = create_user(
db, user_data, is_admin=False, client_id=client.id, auto_verify=True db, user_data, is_admin=False, client_id=client.id, auto_verify=False
) )
if not user: if not user:

View File

@@ -37,7 +37,7 @@ import smtplib
from email.mime.text import MIMEText from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart from email.mime.multipart import MIMEMultipart
from pathlib import Path from pathlib import Path
from config.settings import settings from src.config.settings import settings
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)