Awesome CopilotAdventures

Contrato de modernización del registro de pedidos

Interfaz existente

service.py --source <csv> [--customer <id>] emite exactamente un objeto JSON en stdout. Los registros se ordenan por id; los totales son centavos enteros; un cliente desconocido devuelve una lista vacía y un total cero. Una entrada no válida devuelve un código distinto de cero y un error en stderr.

Cambio solicitado

Añade la selección explícita --backend sqlite --source <database> con el mismo contrato observable de consulta. Mantén CSV como opción predeterminada durante el ejercicio. Implementa migrate.py por separado de las consultas.

Puntos de control

  • MOD-1: la caracterización CSV fijada sigue pasando.
  • MOD-2: coinciden el recuento migrado, el total entero, el orden y la versión del esquema.
  • MOD-3: las entradas mal formadas o duplicadas fallan sin un destino parcial considerado exitoso.
  • MOD-4: nunca se sobrescribe un destino existente, tampoco al repetir la ejecución.
  • MOD-5: leer una base de datos SQLite ausente no la crea.
  • MOD-6: la reversión a CSV funciona y su hash de origen no cambia.

El rango de enteros aceptado por Python no debe reducirse silenciosamente al rango de 64 bits con signo de INTEGER/SUM de SQLite. Almacena texto decimal validado si es necesario, conviértelo a enteros de Python al leer y concilia con aritmética entera exacta. Nunca cambies a sumas en coma flotante. El contrato JSON sigue exponiendo centavos enteros.

No forman parte de esta modernización cuentas, pagos, API HTTP, registros de producción, bases de datos externas ni despliegue en la nube.

Buscar

Búsqueda en español. Las rutas y los ejemplos ejecutables conservan el texto original.