# Actualización de Versión: Symfony 8.1.6 y PHP 8.4

Aprovechando que el proyecto se encuentra en etapa inicial de desarrollo y modernización, actualizaremos el framework a **Symfony 8.1.6** (la versión más reciente) y la plataforma base a **PHP 8.4**.

---

## User Review Required

> [!IMPORTANT]
> **Compatibilidad comprobada (Dry-Run)**: Se ejecutó una prueba preliminar de resolución de dependencias en DDEV (con PHP 8.4.24). Todos los paquetes esenciales de Symfony (`v8.1.6`), `doctrine/orm` (`v3.7.0`), `vich/uploader-bundle` (`v3.0.0`), `knplabs/knp-paginator-bundle` (`v6.11.0`), `babdev/pagerfanta-bundle` (`v4.6.0`) y `symfony/ai-*` (`v0.13.0`) resuelven de forma limpia, sin conflictos de dependencias ni paquetes bloqueantes.

> [!NOTE]
> El entorno DDEV (`.ddev/config.yaml`) ya está configurado con PHP 8.4 (`8.4.24`). No se requieren cambios en la configuración de la infraestructura de contenedores.

---

## Proposed Changes

### Dependencias y Configuración de Composer

#### [MODIFY] [composer.json](file:///media/facu/data/dev/est-sou/estsou-sf8/composer.json)
1. Actualizar el constraint de PHP:
   - De: `"php": "^8.2"`
   - A: `"php": ">=8.4"`
2. Actualizar las dependencias de componentes Symfony en `require`:
   - De: `"symfony/*": "7.*"`
   - A: `"symfony/*": "8.1.*"`
   (Afecta a `symfony/asset`, `symfony/console`, `symfony/dotenv`, `symfony/expression-language`, `symfony/form`, `symfony/framework-bundle`, `symfony/mailer`, `symfony/process`, `symfony/property-access`, `symfony/property-info`, `symfony/security-bundle`, `symfony/serializer`, `symfony/translation`, `symfony/twig-bundle`, `symfony/validator`, `symfony/web-link`, `symfony/yaml`).
3. Actualizar las herramientas de desarrollo en `require-dev`:
   - De: `"symfony/*": "7.*"`
   - A: `"symfony/*": "8.1.*"`
   (Afecta a `symfony/browser-kit`, `symfony/css-selector`, `symfony/debug-bundle`, `symfony/stopwatch`, `symfony/web-profiler-bundle`).
4. Actualizar la directiva de versión de Symfony en `extra`:
   - De: `"extra.symfony.require": "7.*"`
   - A: `"extra.symfony.require": "8.1.*"`

---

### Instalación y Actualización de Bundles

#### Ejecución de Composer en DDEV
- Ejecutar `ddev composer update "symfony/*" "doctrine/*" "vich/*" "babdev/*" "knplabs/*" --with-all-dependencies` para descargar e instalar Symfony 8.1.6, actualizar los bundles compatibles a sus versiones nativas de Symfony 8 y regenerar `composer.lock` y `symfony.lock`.
- Limpiar y regenerar la caché de Symfony: `ddev exec bin/console cache:clear`.

---

### Ajustes de Compatibilidad y Configuración

#### [MODIFY] [rector.php](file:///media/facu/data/dev/est-sou/estsou-sf8/rector.php)
- Adaptar las reglas de Rector para apuntar al nivel de PHP 8.4 y Symfony 8.

---

## Verification Plan

### Automated Tests
1. **Comprobación de versión activa**:
   ```bash
   ddev exec bin/console about
   ```
   *Criterio de éxito*: Reporta `Symfony 8.1.6` y `PHP 8.4.24`.

2. **Validación del Contenedor de Servicios (Dependency Injection)**:
   ```bash
   ddev exec bin/console lint:container
   ```
   *Criterio de éxito*: Contenedor compila sin advertencias ni definiciones de servicio rotas.

3. **Validación de Plantillas Twig**:
   ```bash
   ddev exec bin/console lint:twig templates/
   ```
   *Criterio de éxito*: Sintaxis de todas las plantillas Twig válida.

4. **Validación de Mapeos Doctrine**:
   ```bash
   ddev exec bin/console doctrine:schema:validate
   ```
   *Criterio de éxito*: Esquema y metadatos de entidades sincronizados.

5. **Pruebas Unitarias de Dominio**:
   ```bash
   ddev exec vendor/bin/phpunit tests/Domain
   ```
   *Criterio de éxito*: Todos los tests de lógica de negocio pasan al 100%.

### Manual Verification
1. **Interfaz Web y Profiler**:
   - Abrir `https://estsou-sf8.ddev.site/` en el navegador.
   - Comprobar que la barra de depuración (Symfony Web Debug Toolbar) se renderiza correctamente mostrando Symfony 8.1.6.
   - Navegar a `/login` y verificar el formulario y sesión.
