Saltar al contenido principal

Proyectos

Sistema de gestión de proyectos en Floutic.

Características

  • Creación de proyectos (requiere email verificado, perfil completo, perfil verificado y datos fiscales)
  • Sistema de aplicaciones
  • Selección de expertos
  • Gestión de estados
  • Sistema de hitos

Requisitos para Crear Proyectos

Para crear un proyecto, el usuario empresa debe cumplir con los siguientes requisitos (en orden de verificación):

  1. Email verificado: El email debe estar verificado (email_verified = true)
  2. Perfil completo: Debe existir un perfil de empresa completo
  3. Perfil verificado: El perfil debe estar verificado por un administrador (is_verified = true)
  4. Datos fiscales: Para el primer proyecto, se requieren datos fiscales completos (CIF, país, etc.). La validación se realiza tanto en frontend (Zod) como en backend (Pydantic).
  5. Formato de Fecha: El campo deadline debe enviarse como ISO datetime (YYYY-MM-DDTHH:MM:SS).
  6. Validación de Fecha Límite: La fecha límite no puede ser anterior a la fecha actual. Esta validación se aplica tanto en frontend (atributo min en input de fecha y validación en formulario) como en backend (validación en endpoints de creación/actualización).

Estructura Modular

Los endpoints de proyectos están organizados en módulos especializados:

  • listing.py - Listado de proyectos (público y autenticado)
  • crud.py - Operaciones CRUD básicas (crear, leer, actualizar, eliminar)
  • applications.py - Gestión de aplicaciones de expertos
  • selection.py - Selección de expertos y pagos iniciales
  • workflow.py - Flujo de validación y curación (admin)
  • disputes.py - Gestión de disputas

Endpoints Principales

Listado

  • GET /api/projects/public - Listar proyectos públicos
  • GET /api/projects/ - Listar proyectos con filtros
  • GET /api/projects/my - Mis proyectos
  • GET /api/projects/all - Todos los proyectos (admin)

CRUD

  • POST /api/projects/ - Crear proyecto. Soporta campo opcional status (draft o pending_publication). Si es pending_publication, el backend establece automáticamente validation_status="pending" y submitted_at=now().
  • GET /api/projects/{id} - Ver proyecto
  • PUT /api/projects/{id} - Actualizar proyecto
  • PATCH /api/projects/{id}/status - Cambiar estado
  • DELETE /api/projects/{id} - Eliminar proyecto

Aplicaciones y Selección

  • POST /api/projects/{id}/apply - Aplicar a proyecto
  • GET /api/projects/{id}/applications - Listar aplicaciones
  • POST /api/projects/{id}/select/{expert_id} - Seleccionar experto
  • POST /api/projects/{id}/selection/cancel - Cancelar selección

Validación y Curación

  • POST /api/projects/{id}/submit - Enviar para validación
  • POST /api/projects/{id}/validate - Validar proyecto (admin)
  • POST /api/projects/{id}/curate - Curar expertos (admin)
  • POST /api/projects/{id}/auto-curate - Auto-curación (admin)
  • GET /api/projects/{id}/curation-suggestions - Sugerencias de curación
  • POST /api/projects/{id}/request-budget - Solicitar presupuesto

Disputas

  • POST /api/projects/{id}/dispute - Crear disputa

Más Información

Consulta la Documentación de la API para más detalles sobre cada endpoint.