Awesome CopilotAdventures

Contrato de modernização do registro de pedidos

Interface existente

service.py --source <csv> [--customer <id>] emite exatamente um objeto JSON em stdout. Os registros são ordenados por id; os totais são centavos inteiros; um cliente desconhecido retorna uma lista vazia e total zero. Entrada inválida retorna código diferente de zero e um erro em stderr.

Alteração solicitada

Adicione a opção explícita --backend sqlite --source <database> com o mesmo contrato observável de consulta. Mantenha CSV como padrão durante o exercício. Implemente migrate.py separadamente das consultas.

Pontos de controle

  • MOD-1: a caracterização congelada do CSV continua passando.
  • MOD-2: contagem migrada, total inteiro, ordenação e versão do esquema correspondem.
  • MOD-3: entrada malformada/duplicada falha sem um destino parcial apresentado como bem-sucedido.
  • MOD-4: um destino existente nunca é sobrescrito, inclusive em uma reexecução.
  • MOD-5: ler um banco SQLite ausente não cria um.
  • MOD-6: a reversão para CSV funciona e o hash da fonte permanece inalterado.

O intervalo de inteiros aceito pelo Python não deve ser silenciosamente restringido ao intervalo de 64 bits com sinal de INTEGER/SUM do SQLite. Armazene texto decimal validado se necessário, converta-o em inteiros Python na leitura e reconcilie com aritmética inteira exata. Nunca troque para somas em ponto flutuante. O contrato JSON continua expondo centavos inteiros.

Contas, pagamentos, APIs HTTP, registros de produção, bancos de dados externos ou implantação na nuvem não fazem parte desta modernização.

Buscar

Busca em português do Brasil. Os caminhos e os exemplos executáveis mantêm o texto original.