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):
- Email verificado: El email debe estar verificado (
email_verified = true) - Perfil completo: Debe existir un perfil de empresa completo
- Perfil verificado: El perfil debe estar verificado por un administrador (
is_verified = true) - 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).
- Formato de Fecha: El campo
deadlinedebe enviarse como ISO datetime (YYYY-MM-DDTHH:MM:SS). - 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
minen 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 expertosselection.py- Selección de expertos y pagos inicialesworkflow.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úblicosGET /api/projects/- Listar proyectos con filtrosGET /api/projects/my- Mis proyectosGET /api/projects/all- Todos los proyectos (admin)
CRUD
POST /api/projects/- Crear proyecto. Soporta campo opcionalstatus(draftopending_publication). Si espending_publication, el backend establece automáticamentevalidation_status="pending"ysubmitted_at=now().GET /api/projects/{id}- Ver proyectoPUT /api/projects/{id}- Actualizar proyectoPATCH /api/projects/{id}/status- Cambiar estadoDELETE /api/projects/{id}- Eliminar proyecto
Aplicaciones y Selección
POST /api/projects/{id}/apply- Aplicar a proyectoGET /api/projects/{id}/applications- Listar aplicacionesPOST /api/projects/{id}/select/{expert_id}- Seleccionar expertoPOST /api/projects/{id}/selection/cancel- Cancelar selección
Validación y Curación
POST /api/projects/{id}/submit- Enviar para validaciónPOST /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ónPOST /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.