# Propuesta de Lizette: backend (servidor y motor) Documentación de la parte del **backend**: el servidor (API REST, cuentas, historial y base de datos) y el motor de procesado que convierte el plano en pieza 3D. | Documento | Contenido | | --- | --- | | [01-requisitos-backend.md](01-requisitos-backend.md) | Requisitos funcionales y no funcionales del backend | | [02-tecnologias-backend.md](02-tecnologias-backend.md) | Tecnologías elegidas y por qué | | [03-arquitectura-backend.md](03-arquitectura-backend.md) | Componentes, API, modelo de datos, estructura del código y Docker | | [04-prueba-pieza-plana.md](04-prueba-pieza-plana.md) | Prueba técnica del plan B (pieza plana por extrusión) | ## Planteamiento | Parte | Responsable | Qué hace | | --- | --- | --- | | Frontend (`app/`) | Joel | Aplicación de escritorio: interfaz, visor 3D, inicio de sesión. Habla con el servidor por la API REST. | | Servidor (`servidor/`) | Lizette | API REST con FastAPI: cuentas, proyectos, historial de conversiones, archivos. | | Motor (`motor/`) | Lizette | Reconstrucción de la pieza desde las tres vistas, verificación del plano y exportación STEP/STL. | | Base de datos | Lizette | MySQL: usuarios, proyectos, conversiones, avisos y archivos. | | Pruebas | Los dos | `pytest` dentro de Docker, contra un MySQL de pruebas. | ## Cambios que hay que reflejar en el resto del repositorio Este planteamiento cambia decisiones que ahora mismo están escritas de otra forma en el repositorio. Hay que acordarlas con Joel y actualizarlas en un *pull request* propio, según `CONTRIBUTING.md`: | Dónde | Dice ahora | Debe decir | | --- | --- | --- | | `docs/decisiones.md` (14-10) | «Aplicación de escritorio, no web»; sin servidor | Aplicación de escritorio **con servidor**: el frontend se conecta a una API REST que guarda cuentas e historial | | `docs/decisiones.md` (22-10) | Joel: aplicación; compañera: motor | Joel: frontend; Lizette: backend (servidor, base de datos y motor) | | `docs/guia-tecnica.md` | «No hay servidor ni cuentas»; historial en SQLite | Servidor FastAPI con cuentas (JWT) e historial en MySQL; Docker para pruebas y despliegue | | `README.md` | Tabla de carpetas sin `servidor/` | Añadir `servidor/` y el arranque con `docker compose` | | `motor/api.py` | Contrato entre motor y aplicación | Contrato entre motor y **servidor**. El contrato del frontend pasa a ser la API REST (OpenAPI en `/docs`) | | `pyproject.toml` | PySide6 entre las dependencias comunes | PySide6 en un grupo `app`, para que la imagen Docker del servidor no lo instale | Se mantiene lo que ya estaba decidido sobre el producto: piezas mecánicas, reconstrucción desde tres vistas con verificación del plano, plan B de pieza plana, y avisar siempre de lo que no se soporta.