- Add UpdateDocumentSeriesController for updating document series. - Create documentSeriesApiErrorMapper for error handling. - Define document series routes including CRUD operations. - Implement Sequelize-based persistence layer for document series. - Add DTOs for request and response schemas for document series operations. - Establish common structures for document series data handling. - Configure TypeScript settings for the document series module.
2.2 KiB
2.2 KiB
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_numberexactamenteNposiciones
Precondiciones
- BD de desarrollo segura
- serie de
proformaactiva 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-000100aPF-000109 document_series.next_number = 110- cero duplicados
Preparacion 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
- Preparar 10 peticiones de creacion de proforma para la misma empresa y misma serie destino.
- Lanzarlas en paralelo desde el cliente HTTP disponible.
- Registrar
proforma_reference,proforma_numberydocument_series_iddevueltos.
Verificaciones SQL
SELECT proforma_reference, proforma_number, document_series_id
FROM proformas
WHERE document_series_id = '<document_series_id>'
ORDER BY created_at DESC
LIMIT 20;
SELECT proforma_reference, COUNT(*) AS duplicates
FROM proformas
WHERE document_series_id = '<document_series_id>'
GROUP BY proforma_reference
HAVING COUNT(*) > 1;
SELECT id, next_number
FROM document_series
WHERE id = '<document_series_id>';
Criterio de aceptacion
- no hay filas en la query de duplicados
- aparecen
Nnuevas 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.