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.

Código-fonte, reprodução e contribuições

Comandos, código-fonte, prompts de exemplo, identificadores e dados exatos mantêm a forma original para que os exercícios continuem reproduzíveis.

Buscar

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