Pular para o conteúdo principal

Estrutura do Backend

O backend segue uma arquitetura modular organizada por aplicações Django (apps), onde cada app é responsável por um domínio específico do sistema.

Estrutura de Diretórios

backend/
├── apps/
│ ├── accounts/
│ │ ├── models.py # User, Tokens
│ │ ├── presentations/
│ │ │ ├── views/ # Login, Register, Reset
│ │ │ └── serializers/
│ │ ├── permissions/
│ │ ├── tasks.py # Celery tasks
│ │ └── urls.py
│ │
│ ├── entrepreneurs/
│ │ ├── models.py # Entrepreneur, Documents
│ │ ├── presentations/
│ │ │ ├── views/
│ │ │ └── serializers/
│ │ ├── permissions/ # IsEntrepreneurOwner
│ │ └── urls.py
│ │
│ ├── structuring_agents/
│ │ ├── models.py # StructuringAgent, Approval
│ │ ├── presentations/
│ │ │ ├── views/
│ │ │ └── serializers/
│ │ ├── permissions/
│ │ ├── choices.py # ApprovalRequestStatus
│ │ └── urls.py
│ │
│ ├── business_plans/
│ │ ├── models.py # BusinessPlan, Mentorship
│ │ ├── presentations/
│ │ │ ├── views/
│ │ │ └── serializers/
│ │ ├── permissions/ # CanViewBusinessPlan
│ │ ├── choices.py # Setores, Status, etc
│ │ └── urls.py
│ │
│ ├── managers/
│ │ ├── models.py # Manager
│ │ ├── presentations/
│ │ │ ├── views/
│ │ │ └── serializers/
│ │ ├── permissions/
│ │ └── urls.py
│ │
│ ├── notifications/
│ │ ├── services/
│ │ │ └── email_service.py
│ │ └── tasks.py # Celery email tasks
│ │
│ └── reports/
│ ├── presentations/
│ │ ├── views/
│ │ └── serializers/
│ ├── services/ # Report generation
│ ├── tasks.py
│ └── urls.py

├── core/
│ ├── settings.py # Configurações
│ ├── urls.py # URLs raiz
│ ├── celery.py # Config Celery
│ ├── wsgi.py
│ ├── asgi.py
│ ├── storage_backends.py # MinIO storage
│ └── management/
│ └── commands/
│ ├── seed.py
│ ├── seed_all.py
│ └── setup_minio.py

├── templates/
│ └── emails/ # Templates de email
│ ├── welcome.html
│ ├── verification.html
│ └── password_reset.html

├── media/ # Arquivos (dev)
├── manage.py
├── requirements.txt
└── Dockerfile

Aplicações (Apps)

accounts

Gerencia autenticação e usuários do sistema.

Modelos:

  • User - Modelo de usuário customizado
  • PasswordResetToken - Tokens de reset de senha
  • EmailVerificationToken - Tokens de verificação de email
  • AccountDeletionRequest - Solicitações de exclusão

Endpoints:

  • /api/auth/login/ - Login
  • /api/auth/register/ - Registro
  • /api/auth/me/ - Perfil do usuário logado
  • /api/auth/verify-email/ - Verificação de email
  • /api/auth/password/reset/ - Reset de senha

entrepreneurs

Gerencia perfis de empreendedores.

Modelos:

  • Entrepreneur - Perfil do empreendedor
  • EntrepreneurDocument - Documentos de identificação

Endpoints:

  • /api/entrepreneurs/register/ - Registrar como empreendedor
  • /api/entrepreneurs/documents/<id>/ - Acessar documentos

structuring_agents

Gerencia agentes estruturadores (mentores).

Modelos:

  • StructuringAgent - Perfil do agente
  • StructuringAgentAffiliationDocument - Documentos de vínculo
  • StructuringAgentIdentificationDocument - Documentos de ID
  • StructuringAgentApprovalRequest - Solicitações de aprovação

Endpoints:

  • /api/structuring-agents/register/ - Registrar como agente
  • /api/structuring-agents/business-plans/board/ - Kanban Board
  • /api/structuring-agents/business-plans/review/ - Revisar plano
  • /api/structuring-agents/mentorships/assume/ - Assumir mentoria
  • /api/structuring-agents/corrections/ - Criar correção

business_plans

Gerencia planos de negócio e mentorias.

Modelos:

  • BusinessPlan - Plano de negócio
  • BusinessPlanDocument - Documentos anexos
  • Mentorship - Mentoria vinculada
  • CorrectionRequest - Solicitações de correção

Endpoints:

  • /api/business-plans/ - Listar planos
  • /api/business-plans/create/ - Criar plano
  • /api/business-plans/<id>/ - Detalhe do plano
  • /api/business-plans/<id>/correct/ - Enviar correções

managers

Gerencia gestores e aprovação de agentes.

Modelos:

  • Manager - Perfil do gestor

Endpoints:

  • /api/managers/approval-requests/ - Listar solicitações
  • /api/managers/approval-requests/approve/ - Aprovar agente
  • /api/managers/approval-requests/reject/ - Rejeitar agente

notifications

Sistema de envio de emails.

Serviços:

  • EmailService - Serviço de envio de emails
  • Templates HTML para diferentes tipos de email

Tasks Celery:

  • send_welcome_email - Email de boas-vindas
  • send_verification_email - Email de verificação
  • send_correction_request_email - Email de correção

reports

Geração de relatórios e métricas.

Endpoints:

  • /api/reports/ - Obter relatório
  • /api/reports/refresh/ - Solicitar atualização
  • /api/reports/task/<task_id>/ - Status da tarefa

Padrão de Estrutura por App

Cada app segue uma estrutura consistente:

app_name/
├── __init__.py
├── models.py # Modelos do banco
├── presentations/
│ ├── __init__.py
│ ├── views/ # Views/ViewSets
│ │ ├── __init__.py
│ │ └── nome_view.py
│ └── serializers/ # Serializers
│ ├── __init__.py
│ └── nome_serializer.py
├── permissions/ # Permissões customizadas
│ ├── __init__.py
│ └── nome_permission.py
├── choices.py # Choices/Enums
├── tasks.py # Tasks Celery
├── admin.py # Admin Django
├── urls.py # URLs do app
└── migrations/ # Migrations

URLs

core/urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path('api/auth/', include('apps.accounts.urls')),
path('api/entrepreneurs/', include('apps.entrepreneurs.urls')),
path('api/structuring-agents/', include('apps.structuring_agents.urls')),
path('api/business-plans/', include('apps.business_plans.urls')),
path('api/managers/', include('apps.managers.urls')),
path('api/reports/', include('apps.reports.urls')),

# Documentação
path('api/schema/', SpectacularAPIView.as_view(), name='schema'),
path('api/docs/', SpectacularSwaggerView.as_view(), name='swagger-ui'),
path('api/redoc/', SpectacularRedocView.as_view(), name='redoc'),
]