Uecko_ERP/docs/document-series/manual-concurrency-validation.md
david 5ed6556036 feat(document-series): implement document series management API
- 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.
2026-07-28 18:04:57 +02:00

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_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

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

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 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.