Repository navigation
feat(connectors): as quatro respostas gravadas do Mercado Livre e o dublê alinhado a elas (U2b) - #979
Merged
Merged
Conversation
…elo mesmo pedido do Hub, o corpo cru fica fora do repositório e a troca por valores inventados grava a gravação
…ura e o filtro de alteração, e a varredura recusa offset
…m como paginam, e o dublê pagina (U2b, sem gravações) O Sync de qualquer conector, U2, a parte de código, pela decisão do firstmate de 2026-11-11 (a U3 prova o motor pelo dublê do Mercado Livre): pedidos declara OFFSET (offset, limit, 50, sem teto) e o filtro do que mudou (changedFrom, date_last_updated); anuncios e perguntas declaram CURSOR (scrollId, limit, 100 e 50, a primeira página com scan, 5 minutos); reclamacoes e periodosDeFaturamento, OFFSET; mensagensDoPacote não declara. O dublê tem 120 pedidos com a data de alteração e o filtro, 1.300 anúncios e a varredura com scroll_id em anúncios e perguntas. A skill deixa de dizer que não há como passar de mil. As quatro respostas gravadas (critério 11, T29) entram quando a gravação chegar; se divergirem do dublê, o dublê muda.
… pedidos e a troca aceita o corpo gravado longe, com a marca no lugar do vendedor
…m com os valores trocados, e a troca cobre o id da conta que chama
…adas, a conformidade da lista anda por um campo escalar, e a varredura recusa offset sem o probe mandar um
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
O que muda
A U2b de "O Sync de qualquer conector": as quatro respostas reais do Mercado Livre entram no repositório com todos os valores trocados por inventados (T29, S40), o gravador que as produz, e o dublê passa a responder pelas formas gravadas. Já traz o commit
9df1bbce(as declarações de lista e a paginação do dublê, da branch da U3) mesclado: a resposta gravada vence onde divergiam.scripts/record-connector.ts(+-calls,-swap, teste): o pedido sai da declaração da operação, os bytes ficam crus só em pasta fora do repositório, e--swaptroca cada valor por um inventado da mesma forma (o mesmo valor real vira sempre o mesmo inventado; datas movidas juntas) e grava emrecordings/com serviço, rota, data e os campos trocados.--planimprime os quatro pedidos para quem grava de uma máquina onde só roda Python.packages/connectors/src/mercado-livre/recordings/:pedidos-alterados,anuncios-varredura-1,anuncios-varredura-2,perguntas-varredura; todos com status 200, gravados em 2026-11-12 pela loja do fundador, só leitura.fake-data.ts,fake-routes*.ts) lê as gravações (recordings.ts, só quando pedido): as 120 linhas de pedidos e as perguntas têm a forma gravada, e os envelopes das quatro respostas (query,orders,available_orders,filters,available_sorts…) saem delas. O comprador e o autor da pergunta continuam plantados com texto pessoal, de propósito, para o corte provar (critério 10); o serviço real não os manda nessas rotas e o teste os nomeia.fake.test.ts, "as respostas gravadas" (critério 11): rota e nomes de query do pedido que a declaração monta == o gravado; cada caminho e tipo gravado existe na resposta do dublê; nada além do plantado.operations-list.test.ts: o teste do cursor da varredura usa os corpos gravados no lugar dos digitados à mão; a recusa deoffsetcom varredura (N3) ganha as linhas. O arquivo segue a divisão que a branch da U3 já fez (operations.test.tspassava de 300 linhas).conformance-list.ts: a chave da caminhada é o primeiro campo escalar da linha (a primeira chave da linha gravada de um pedido não é texto).anuncioseperguntas: oprobedeixa de mandaroffset: 0(o padrão da API é 0): a caminhada o carregava como entrada fixa e a recusa deoffsetcom varredura (N3) a derrubava.biome.json:recordings/fora da checagem de formato, como ologo.svg: são os bytes gravados, trocados.O que a gravação mostrou
scroll_idna primeira página e também na página sem linhas que a segue;pagingtraz sótotalelimit(semoffset). Comlimitmaior que o total, a primeira página já traz tudo e a segunda vem vazia: o fim é a página sem linhas, como a declaração e o dublê já diziam.search_type=scan) devolvescroll_id: F-U2a-2 respondida, a "Parar se" do cartão não vale.order.date_last_updated.from:pagingcomtotal,offsetelimit; o comprador vem só comidenickname.search_type; a validade de 5 minutos (só a documentação a diz).Troca de valores
Campos trocados por gravação (caminhos sem índice, valores nunca impressos): pedidos 66, anúncios página 1 10, página 2 9, perguntas 19. A conferência contra os corpos crus: nenhum valor sensível (ids, apelidos, nomes, endereços, documentos, preços, scroll_id) de 166 conferidos aparece nas gravações. A conferência achou um vazamento que a troca ainda não cobria,
filters.caller(o id da conta, ecoado nos filtros das perguntas); a regra agora o cobre, com teste.Como foi provado
Testes tocados de
packages/connectorsescripts/record-connector.test.ts(194 testes, 0 falhas),tscdo pacote e dos scripts,biome check,npm run docs. Os testes do servidor que usam o dublê (connections-copies,connections-oauth-logs) precisam do banco de teste e ficam para o CI.