/v2/stocks, campo amount = gerencial) →
Shopee (leitura ao vivo do anúncio, 27/08 13:54, e cada divergente reconferido um a um)./home/diego/anymarket/censo-v2-2026-08-27/censo.csv (1.443 linhas). Esta missão foi só leitura — nenhum estoque foi escrito em lugar nenhum.| SKU | Anúncio | M8 total | Depósito 196 | Anymarket | Vitrine | Peças invisíveis |
|---|---|---|---|---|---|---|
| 25843 | Bieleta Dianteira Toyota Corolla | 39 | 1 | 1 | 1 | 38 |
| 25853 | Bieletas Dianteiras Cross Fox | 48 | 24 | 24 | 24 | 24 |
| 25355 | Aromatizante Natuar Men London 45ml | 58 | 34 | 34 | 34 | 24 |
| 25505 | Bieleta Estabilizadora Dianteira Chevrolet | 26 | 6 | 6 | 6 | 20 |
| 25845 | Bieleta Dianteira Volkswagen | 29 | 9 | 9 | 9 | 20 |
| 27908 | Bico Injetor Escavadeira Caterpillar 320D | 6 | 0 | 0 | 0 | 6 (R$ 2.784) |
| 24311 | Bico Injetor Mitsubishi Pajero Full / Triton | 16 | 12 | 12 | 12 | 4 (R$ 2.384) |
Observação importante: nesses 44 casos ninguém está com dado corrompido. O M8 está certo, o Anymarket está certo (recebeu o que a ponte mandou) e a Shopee está certa (recebeu o que o hub mandou). O que está errado é o escopo da ponte. A decisão é de negócio: o marketplace deve vender o que está no depósito 199 e na filial, ou não? Isso é pergunta pro Vinicius, não conserto nosso.
| Veredito | Anúncios | Quem está errado | Confiança |
|---|---|---|---|
| OK — 3 camadas batendo | 1.357 | Ninguém. 94,0% da loja | alta |
| Escopo da ponte — hub espelha só o depósito 196/Matriz | 46 | Ninguém tem dado errado; a configuração da ponte é que ignora outros depósitos e a filial | alta |
| Ponte M8→Anymarket (KIT) — hub recebe o saldo cru do kit = 0 | 7 | A ponte. Kit não tem saldo próprio no M8 (é sempre 0 por desenho); a ponte manda esse 0 em vez do estoque montável | alta |
| Anymarket→Shopee: vitrine promete a mais | 7 | A transmissão. São bombas-relógio: hoje vendem, e não tem peça | alta |
| Anymarket→Shopee: vitrine estrangulada | 2 | A transmissão. Vende menos do que podia | alta |
| Suspeita real — hub abaixo do M8, sem explicação | 6 | Provavelmente o hub. Não é depósito, não é pedido em aberto | média |
| Suspeita real — hub acima do M8, sem explicação | 3 | Provavelmente o hub. Risco de vender sem ter, direto da fonte | média |
| Duas quebras — os três números diferentes | 5 | Mais de um elo ao mesmo tempo | média |
| Não é erro — total da empresa não desconta pedido em aberto | 4 | Ninguém. Diferença esperada entre físico e disponível | alta |
| Sem como comparar — SKU sem vínculo cfg=2 no M8 | 6 | Cadastro do M8 (fila da Sara) | n/a |
| Situação | Anúncios | Antes (régua errada) | O que significa no caixa |
|---|---|---|---|
| Batendo certo | 1.362 | 1.377 | 94,4% da loja correta |
| Vende sem ter | 12 | 20 | Cliente compra e a peça não existe — cancelamento e risco de punição da Shopee |
| Zerado na vitrine | 17 | 9 | Tem peça, anúncio esgotado. 10 dos 17 são o caso do depósito 196: a peça está fora do alcance da ponte |
| Estrangulado (2+ a menos) | 26 | 10 | Vende menos do que podia. 20 dos 26 também são depósito 196 |
| Sobra de exatamente 1 | 20 | — | Regra do Diego: sobra de 1 é pedido em aberto, não erro. Não entra em fila |
| Sem mapeamento no M8 | 6 | 6 | O robô não consegue nem conferir |
| Recorte | Manhã (régua errada) | Agora (régua certa) | Leitura |
|---|---|---|---|
| Divergências M8 × Anymarket | 100 | 71 | 65 sobreviventes + 6 novas; 35 miragens |
| — das quais eram KIT | 50 | 30 | 25 das 35 miragens eram kit. A conta antiga inflava os componentes, então o kit parecia ter estoque que não existia |
| — "hub com 0 e M8 com peça" | 47 | 18 | O grosso do alarme da manhã não existia |
| Kit realmente zerado pela ponte | 50 (estimado) | 7 | O problema do kit é real, mas é sete vezes menor do que a manhã dizia |
| Divergências Anymarket × vitrine Shopee | 80 | 14 | A manhã comparou contra a foto das 03:30 e antes das correções do dia; aqui é leitura ao vivo |
| — "vitrine maior que o cadastro" | 74 | 9 | Os outros 65 já tinham sido resolvidos pelas correções de hoje (23 de manhã + 73 re-corrigidas à tarde) |
| Problemas de verdade na ponte M8→Anymarket | 100 | 21 | 7 kit + 9 suspeitas sem explicação + 5 duas quebras. O resto (46) é escopo de depósito e 4 são pedido em aberto |
Por que a régua mudou duas vezes hoje: de manhã a conta do M8 usava o maior saldo entre as linhas do produto, que ignora depósito negativo e infla (corrigido no M8-MANUAL.md §3.1). À tarde ficou definido que estoque oficial é o gerencial, não o físico. Este censo usa a linha de total da empresa no M8 — que é o físico correto — e o gerencial do Anymarket como segunda camada, deixando os dois lado a lado em vez de escolher um.
Estoque no Anymarket não é editável pela API (provado em 19/08: o comando responde "ok" e não aplica). Quem escreve é a integração do M8. Nada disso sai do nosso lado.
| # | O que pedir | Tamanho | Por que importa |
|---|---|---|---|
| 1 | Decidir o escopo da ponte: o Anymarket deve enxergar só o depósito 196 da Matriz, ou o total da empresa (incluindo depósito 199 e a filial 3692)? | 46 anúncios 44 com peça invisível: 245 peças · R$ 11.058 | É o maior item da fila. Hoje 245 peças estão no galpão sem aparecer em nenhum marketplace. Se a resposta for "deve enxergar tudo", é uma mudança de configuração que resolve 46 anúncios de uma vez |
| 2 | Consertar a ponte para KITS — ela manda o saldo cru do kit (sempre 0 no M8) em vez do estoque montável pela composição | 7 anúncios | Menor do que se pensava de manhã, mas é bug de verdade: todo kit novo nasce zerado. Ex.: Corrente Motor Pequena New Actyon (SKU 12529, M8 12 × hub 0) e Jogo Bico Injetor S10 2.8 (24723, M8 2 × hub 0) |
| 3 | Investigar 9 cadastros onde o hub não bate com o M8 e não é depósito nem pedido em aberto | 9 anúncios | São os únicos casos em que suspeitamos do hub em si. Padrão curioso: 5 deles são bicos Ssangyong / Amarok com gap de exatamente 4 unidades (SKUs 21903, 21905, 21907, 11533, 11535, 23977) — cheira a reserva presa no hub |
| 4 | Ver por que 9 anúncios têm na vitrine mais do que o hub manda (transmissão Anymarket→Shopee) | 9 anúncios | Estes vendem hoje o que não existe. 5 deles estão com M8 e hub em 0 e a vitrine em 1 |
| 5 | Destravar os 6 SKUs sem vínculo cfg=2 no M8 (25693, 22689, 18815, 24551, 26019, 10253) | 6 anúncios | Sem vínculo a ponte nunca toca neles. Um congelado desde abr/2021. Só a Pastilha Azera (18815) tem estoque na vitrine. Cadastro = Sara |
| 6 | Contagem física do Atuador Korando (SKU 10959) e ajuste do saldo | 1 item | É a peça que gerou tudo isso. Já vendida, sistema ainda com 1 |
| 7 | Higiene dos cadastros com transmissão em erro (Part Number / atributos) | 12 restantes | Prioridade baixa e já em tratamento por outro agente — 83 dos 95 foram corrigidos hoje por API. A varredura mostrou que esse erro não prevê estoque errado |
| SKU | Anúncio | M8 | Anymarket | Vitrine |
|---|---|---|---|---|
| 22687 | Cilindro Freio Roda Esquerdo Hyundai HR | 0 | 0 | 1 |
| 26149 | Bico Injetor Mercedes Sprinter 311 / 313 | 0 | 0 | 1 |
| 26101 | Bico Injetor Mitsubishi Pajero / Triton L200 | 0 | 0 (−1 disp.) | 1 |
| 26159 | Jogo Bico Injetor Mitsubishi Pajero Full | 0 | 0 | 1 |
| 12457 | Kit Filtros + Óleo + Kit Tensor Ssangyong | 0 | 0 | 1 |
| 18047 | Kit Amortecedor Dianteiro Completo Lifan | 2 | 2 | 3 |
| 27942 | Bico Injetor Volkswagen Constellation Euro | 13 | 13 | 14 |
| 15613 | Kit Coxim Motor Chery Tiggo 2.0 | 1 | 0 | 1 |
| 21903 | Bico Injetor Ssangyong Actyon Sports 2.0 | 20 | 16 | 20 |
Recomendação (NÃO aplicada): baixar esses 7 na vitrine para o número do hub. Como a régua mudou duas vezes hoje, o próximo write fica com o Diego — este censo é leitura.
produtos_estoques guarda uma linha de total da empresa e linhas de cada depósito. No Atuador hoje: total = 0 · depósito 196 = 1 · depósito 199 = −1. Ou seja, o M8 sabe que não tem a peça.
M8-MANUAL.md §3.1 e é a razão desta página existir em v2.lote_publicado.csv), mas a vinculação em massa de 03/08 ligou esses anúncios no hub. Os dois pedidos acusados na semana (260827DMRJHA35 e 260826CPPPM0VX) estão no Anymarket. Efeito: Claudenice e Sara sendo chamadas para lançar manualmente pedidos que já existem — risco de duplicidade. Conserto: trocar a lista fixa por conferência ao vivo. Não mexido (muda rotina de terceiros)./v2/products?partnerId= do Anymarket ignora o filtro e devolve sempre a página 1 — por isso o produto-anuncios.sh mostra o produto errado. Use /v2/skus/partnerId/{sku} ou /v2/stocks?sku=.docker exec -w /app apolo node m8q.js) corta a saída em 64 KB — consultas grandes precisam ser paginadas com OFFSET/FETCH e ORDER BY por coluna única, senão vêm linhas repetidas ou faltando.Fontes desta página, todas medidas em 27/08 entre 13:50 e 14:05:
M8 via SQL cru (produtos_estoques linha rollup, servicos_aplicados, produtos_dados_marketplace cfg=2, pedidos_itens) ·
Anymarket GET /v2/stocks paginado (8.490 SKUs, 1.443/1.443 casados) ·
Shopee get_item_base_info ao vivo nos 1.443 ativos + reconferência 1 a 1 dos 19 divergentes (19/19 confirmados).
Arquivos: /home/diego/anymarket/censo-v2-2026-08-27/censo.csv · censo.json · montar_censo.py (só leitura). Gerado em 27/08/2026, tarde.