Prompt
Você está explicando este código para alguém competente que chegou ao time hoje
e não conhece o domínio.
```{{linguagem}}
{{codigo}}
```
Contexto que eu já tenho: {{contexto}}
Explique em três alturas, nesta ordem:
## 1. Altura do produto (5 frases)
O que este código faz para o usuário final? Se ele sumisse, o que quebraria?
## 2. Altura da estrutura
- Quais são as peças e como se chamam
- O caminho de execução principal, em passos numerados
- O que entra e o que sai
## 3. Altura da armadilha
- Trechos cuja intenção não é óbvia pelo nome
- Suposições implícitas (ordem, formato, estado global, efeito colateral)
- O que quebra se alguém mexer sem cuidado
## 4. Perguntas para o autor
Até 5 perguntas cuja resposta você não encontra lendo o código. Priorize as que mudam
como eu deveria alterá-lo.
Não invente história sobre o porquê de decisões. Se não dá para saber pelo código,
isso vira pergunta na seção 4.O que este prompt faz
Produz uma leitura em três alturas do mesmo arquivo: o que ele faz no produto, como está organizado, e onde estão as armadilhas. Termina com as perguntas que você deveria fazer a quem escreveu.
Preview
1. Altura do produto
Esta função prepara a lista de itens que vai virar cobrança. Ela aplica um desconto de 10% a itens marcados com t, opcionalmente descarta itens em um estado específico, e ordena do mais caro para o mais barato. Se sumisse, a fatura sairia sem desconto, com itens que deveriam ter sido excluídos, e em ordem arbitrária.
2. Altura da estrutura
Peças: uma função só, sem estado. items é uma lista de dicionários; flag é um interruptor booleano.
Caminho principal:
- Percorre cada item da entrada.
- Se
flagé verdadeiro e o campostvale exatamente2, pula o item. - Copia o item e sobrescreve
v: multiplica por0.9setfor truthy, senão por1. - Ordena o resultado por
vdecrescente.
Entra: lista de dicts com pelo menos a chave v. Sai: lista nova, ordenada. A entrada não é modificada, {**i} cria cópia rasa.
3. Altura da armadilha
st == 2é um número mágico. Não há nada no código que diga o que 2 significa. Provavelmente um enum de status que virou inteiro solto.té truthy, nãois True. Um item com"t": 0não ganha desconto, mas"t": "não"ganha, string não vazia é truthy. Se esse campo vem de JSON externo, é um bug esperando.i["v"]sem.get. As outras chaves usam.gete toleram ausência;vexplode comKeyError. A inconsistência sugere quevé obrigatório, mas isso não está validado.- Cópia rasa. Se um item tiver valor aninhado, ele é compartilhado entre entrada e saída. Alterar o resultado altera o original.
- Ponto flutuante em dinheiro.
* 0.9sobre float acumula erro de arredondamento. Em faturamento, isso costuma virar divergência de centavos. flag=Falseé o padrão. Quem chamar sem o argumento não filtra nada, o comportamento "seguro" aqui é o mais permissivo.
4. Perguntas para o autor
- O que é
st == 2? Existe um enum em algum lugar, ou o 2 é literal em todo o código? tsignifica "tributado"? O desconto de 10% é regra de negócio permanente ou uma promoção que ficou?vestá em centavos (int) ou em reais (float)? Se for float, o arredondamento já causou divergência?- Quem chama com
flag=Truee quem chama sem? A escolha do padrãoFalsefoi deliberada? - Alguém depende da ordenação por valor, ou ela é só apresentação?
Como usar
- 1
Copie o template
Use o botão de copiar no bloco acima. São 30 linhas de instrução.
- 2
Preencha as variáveis
Troque as 3 variáveis destacadas pelo seu conteúdo. Deixar em branco degrada a saída.
- 3
Escolha um dos modelos listados
Rode em um dos modelos listados na lateral. Modelo menor costuma degradar o resultado.
- 4
Cole e execute
Ou use o laboratório, com sua chave, e compare com o preview.