--- name: extrai-movimentacoes-print description: Extrai movimentacoes de negociacao (compra/venda e outros tipos) a partir de printscreens de sites de corretora/carteira, valida formato, detecta duplicidade contra o arquivo de operacoes atual, e apresenta linhas prontas para colar manualmente em export_operacoes.txt. Use quando o usuario fornecer um ou mais paths de imagem de extrato/movimentacoes e pedir para extrair/conferir essas movimentacoes. --- # Extrai movimentações via printscreen Converte printscreens de extrato de movimentações (qualquer site — investidor10, portal da B3, corretora, etc.) em linhas prontas para colar manualmente no arquivo de operações do projeto `ir`. Nunca escreve no arquivo sozinha — a inserção final é sempre manual. > **REGRA ABSOLUTA — SOMENTE LEITURA:** esta skill NUNCA, em hipótese > nenhuma, escreve, edita, sobrescreve ou apaga qualquer arquivo de operações > (`export_operacoes.txt`, `export_operacoes_egs.txt` ou qualquer variante). > Todo acesso a esse arquivo é read-only, mesmo durante sincronização com o > Dropbox. A inserção das linhas "prontas" é sempre manual, feita pelo > usuário fora desta skill. ## Quando usar O usuário fornece um ou mais paths de imagem (printscreens já salvos localmente) mostrando uma tabela de movimentações e pede para extrair, conferir ou validar essas movimentações. ## Passo a passo ### 1. Sincronizar a cópia canônica do arquivo de operações Antes de checar duplicidade, baixe a versão mais recente do arquivo de operações do Dropbox (mesma função usada pelo resto do projeto): ```bash python3 -c "from src.dropbox_files import download_dropbox_file; download_dropbox_file()" ``` Isso atualiza o arquivo local em `OPERATIONS_FILEPATH` (`export_operacoes.txt`, na raiz do projeto — ver `src/dropbox_files.py`). Use esse caminho — não uma cópia antiga — nos passos seguintes. ### 2. Ler cada printscreen Para cada imagem fornecida, use a ferramenta de leitura de imagem para identificar todas as linhas de movimentação visíveis na tabela. Para cada linha, extraia: - `ticker` (código de negociação, ex: `ITRI11`, `BBAS3`) - `tipo` (rótulo literal como aparece na tela: `Compra`, `Venda`, `Desdobramento`, `Bonificação`, `Subscrição`, `Conversão`, etc. — não traduza nem normalize, use exatamente o que está escrito) - `qtd` (quantidade, numérico) - `data` (formato `DD/MM/AAAA` ou `DD/MM/AA`, como aparece na tela — o script normaliza a saída sempre para `DD/MM/AA` (ano com 2 dígitos), igual ao restante do arquivo de operações; nunca gere linha com ano de 4 dígitos, isso quebra a inferência de tipo de data no pandas) - `preco` (preço unitário, numérico) - `valor` (valor total da operação, se visível — numérico; omita a chave se não estiver visível) Um print pode conter várias linhas — extraia todas. Vários prints no mesmo lote são normais — junte todas as linhas extraídas de todos os prints numa única lista, na ordem em que aparecem. Monte essa lista como um array JSON e escreva num arquivo temporário, por exemplo `/tmp/candidatos_movimentacoes.json`: ```json [ {"ticker": "BBAS3", "tipo": "Compra", "qtd": 1500, "data": "16/05/2025", "preco": 25.70, "valor": 38550}, {"ticker": "ITRI11", "tipo": "Desdobramento", "qtd": 100, "data": "20/05/2025", "preco": 0, "valor": 0} ] ``` ### 3. Rodar a classificação determinística O script é auto-contido dentro desta skill (não depende de `src/`): ```bash python3 .claude/skills/extrai-movimentacoes-print/movimentacoes_print.py /tmp/candidatos_movimentacoes.json export_operacoes.txt ``` O segundo argumento é o mesmo arquivo baixado no passo 1 (`OPERATIONS_FILEPATH`, `export_operacoes.txt` na raiz do projeto). Se não tiver certeza do caminho, confirme com: ```bash python3 -c "from src.dropbox_files import OPERATIONS_FILEPATH; print(OPERATIONS_FILEPATH)" ``` A saída é um JSON com um item por candidato, cada um com: - `categoria`: `"pronto"` ou `"observacao"` - `linha_txt`: a linha formatada (só quando `categoria == "pronto"`) - `motivo`: por que caiu em observação (só quando `categoria == "observacao"`) ### 4. Apresentar o resultado ao usuário em dois blocos Nunca escreva no arquivo de operações. Apresente sempre neste formato: ``` ## PRONTO PARA COPIAR ## OBSERVAÇÕES - (, ): - ... (uma linha por item com categoria "observacao") ``` Se não houver nenhum item em "pronto", diga isso explicitamente (não omita a seção). Se não houver nenhuma observação, também diga isso explicitamente. ## Fora de escopo Não faça login em nenhum site, não acesse a internet para buscar dados, não escreva em `export_operacoes.txt`. Esta skill só processa imagens já fornecidas pelo usuário e o arquivo de operações já sincronizado do Dropbox.