# Manual concurrency validation Validacion manual de concurrencia para `document-series` sin introducir framework nuevo. ## Objetivo Comprobar que varias asignaciones simultaneas sobre la misma serie: - no generan duplicados - consumen numeros consecutivos - avanzan `next_number` exactamente `N` posiciones ## Precondiciones - BD de desarrollo segura - serie de `proforma` activa y conocida - backend arrancado contra esa BD - capacidad de lanzar varias peticiones HTTP casi simultaneas ## Caso base recomendado Serie inicial: - `document_type = 'proforma'` - `code = 'PF'` - `next_number = 100` Numero de asignaciones concurrentes: - `N = 10` Esperado: - referencias unicas `PF-000100` a `PF-000109` - `document_series.next_number = 110` - cero duplicados ## Preparacion SQL ```sql SELECT id, company_id, document_type, code, prefix, suffix, next_number, padding FROM document_series WHERE document_type = 'proforma' AND code = 'PF'; ``` Si hace falta preparar la serie manualmente en desarrollo, hacerlo de forma conservadora y reversible. ## Ejecucion HTTP manual 1. Preparar 10 peticiones de creacion de proforma para la misma empresa y misma serie destino. 2. Lanzarlas en paralelo desde el cliente HTTP disponible. 3. Registrar `proforma_reference`, `proforma_number` y `document_series_id` devueltos. ## Verificaciones SQL ```sql SELECT proforma_reference, proforma_number, document_series_id FROM proformas WHERE document_series_id = '' ORDER BY created_at DESC LIMIT 20; ``` ```sql SELECT proforma_reference, COUNT(*) AS duplicates FROM proformas WHERE document_series_id = '' GROUP BY proforma_reference HAVING COUNT(*) > 1; ``` ```sql SELECT id, next_number FROM document_series WHERE id = ''; ``` ## Criterio de aceptacion - no hay filas en la query de duplicados - aparecen `N` nuevas referencias distintas - `next_number_final = next_number_inicial + N` ## Bloqueo actual en este workspace En este workspace no se pudo ejecutar la prueba porque la terminal no pudo abrir conexion operativa a la BD de desarrollo. La configuracion detectada es de desarrollo, pero falta cliente `mysql` y el conector `mysql2` local no resuelve todas sus dependencias transitivas.