--- name: descobrindo-odoo-estrutura description: "Descobre campos e estrutura de qualquer modelo do Odoo. Lista campos de tabela, busca campo por nome, inspeciona registro, faz consulta generica. Use quando: nao conhecer um modelo Odoo, precisar descobrir nome de campo, explorar estrutura de tabela, consulta em modelo nao mapeado." --- # Descobrindo Odoo Estrutura Skill para **descoberta de campos e estrutura** de modelos do Odoo. > **QUANDO USAR:** Quando o Agent nao conhecer um modelo/campo especifico do Odoo > e precisar descobrir a estrutura para enriquecer a resposta ao usuario. ## Casos de Uso 1. **Usuario pergunta sobre dado que nao esta mapeado** - Agent usa esta skill para descobrir campos - Retorna informacao enriquecida ao usuario 2. **Implementar nova consulta** - Descobrir estrutura do modelo - Mapear campos relevantes - Documentar em rastreando-odoo (references/relacionamentos.md) 3. **Debug de integracoes** - Inspecionar registro especifico - Verificar valores de campos ## Script Disponivel ### descobrindo.py ```bash source .venv/bin/activate && \ python .claude/skills/descobrindo-odoo-estrutura/scripts/descobrindo.py [opcoes] ``` ### Operacoes Disponiveis | Operacao | Flag | Descricao | Exemplo | |----------|------|-----------|---------| | Listar campos | `--listar-campos` | Lista todos os campos do modelo | `--modelo res.partner --listar-campos` | | Buscar campo | `--buscar-campo` | Busca campo por nome/descricao | `--modelo res.partner --buscar-campo cnpj` | | Inspecionar | `--inspecionar` | Mostra todos os campos de um registro | `--modelo res.partner --inspecionar 123` | | Consulta generica | `--filtro` | Consulta com filtro JSON | `--modelo res.partner --filtro '[["name","ilike","teste"]]'` | ### Parametros | Parametro | Obrigatorio | Descricao | |-----------|-------------|-----------| | `--modelo` | Sim | Nome do modelo Odoo (ex: `res.partner`, `account.move`) | | `--listar-campos` | Nao | Lista todos os campos do modelo | | `--buscar-campo` | Nao | Termo para buscar nos nomes/descricoes dos campos | | `--inspecionar` | Nao | ID do registro para inspecionar | | `--filtro` | Nao | Filtro em formato JSON | | `--campos` | Nao | Campos a retornar (JSON), usado com --filtro | | `--limit` | Nao | Limite de resultados (padrao: 10) | | `--json` | Nao | Saida em formato JSON | ## Exemplos de Uso ### Descobrir campos de um modelo ```bash python .../descobrindo.py --modelo l10n_br_ciel_it_account.dfe --listar-campos ``` ### Buscar campo especifico ```bash python .../descobrindo.py --modelo res.partner --buscar-campo cnpj ``` ### Inspecionar registro ```bash python .../descobrindo.py --modelo res.partner --inspecionar 123 ``` ### Consulta generica com filtro ```bash python .../descobrindo.py \ --modelo res.partner \ --filtro '[["vat","ilike","93209765"]]' \ --campos '["id","name","vat"]' \ --limit 5 ``` --- ## Cenarios Praticos de Descoberta ### Cenario 1: Usuario pergunta sobre campo desconhecido **Situacao**: "Qual o campo que guarda o codigo de barras do produto?" ```bash # Passo 1: Buscar campos relacionados a "barcode" no modelo product.product source .venv/bin/activate && \ python .claude/skills/descobrindo-odoo-estrutura/scripts/descobrindo.py \ --modelo product.product \ --buscar-campo barcode # Resultado esperado: Lista campos como barcode, barcode_ids, etc. ``` **Acao apos descoberta**: Documentar no CLAUDE.md ou references/MODELOS_CAMPOS.md se for campo frequentemente usado. --- ### Cenario 2: Debug de campo com valor inesperado **Situacao**: "Qual o valor do campo X no registro Y?" > **NOTA**: Para RASTREAR documentos (NF, PO, SO), use a skill `rastreando-odoo` em vez desta. ```bash # Inspecionar TODOS os campos de um registro especifico source .venv/bin/activate && \ python .claude/skills/descobrindo-odoo-estrutura/scripts/descobrindo.py \ --modelo res.partner \ --inspecionar 12345 ``` **Resultado**: Ver todos os valores de campos do registro para debug. --- ### Cenario 3: Preparar nova integracao **Situacao**: "Preciso criar integracao com modelo stock.picking (movimentacao de estoque)" ```bash # Passo 1: Listar TODOS os campos do modelo source .venv/bin/activate && \ python .claude/skills/descobrindo-odoo-estrutura/scripts/descobrindo.py \ --modelo stock.picking \ --listar-campos \ --json > /tmp/stock_picking_campos.json # Passo 2: Buscar campos especificos de interesse python .claude/skills/descobrindo-odoo-estrutura/scripts/descobrindo.py \ --modelo stock.picking \ --buscar-campo partner python .claude/skills/descobrindo-odoo-estrutura/scripts/descobrindo.py \ --modelo stock.picking \ --buscar-campo origin # Passo 3: Pegar um registro de exemplo para entender estrutura python .claude/skills/descobrindo-odoo-estrutura/scripts/descobrindo.py \ --modelo stock.picking \ --filtro '[["state","=","done"]]' \ --limit 1 \ --inspecionar ``` **Proximo passo**: Usar skill `integracao-odoo` para criar o Service com os campos descobertos. ## Modelos Conhecidos (Referencia) | Modelo | Descricao | Skill Relacionada | |--------|-----------|-------------------| | `l10n_br_ciel_it_account.dfe` | Documentos Fiscais | rastreando-odoo | | `l10n_br_ciel_it_account.dfe.line` | Linhas dos DFE | rastreando-odoo | | `res.partner` | Parceiros (clientes, fornecedores) | rastreando-odoo | | `account.move` | Faturas/Lancamentos | rastreando-odoo | | `account.move.line` | Linhas de fatura | rastreando-odoo | | `purchase.order` | Pedidos de compra | rastreando-odoo | | `sale.order` | Pedidos de venda | rastreando-odoo | | `product.product` | Produtos | - | ## Fluxo de Trabalho ``` Usuario pergunta sobre dado desconhecido │ ▼ Agent verifica: modelo/campo conhecido? │ ├── SIM → Usa rastreando-odoo para consultar fluxos │ └── NAO → Usa esta skill para descobrir │ ▼ descobrindo.py --modelo X --listar-campos │ ▼ Retorna informacao ao usuario ``` ## Relacionado | Skill | Uso | |-------|-----| | rastreando-odoo | Consultas e rastreamento de fluxos documentais (NF, PO, SO, titulos) | | integracao-odoo | Desenvolvimento de novas integracoes | | gerindo-expedicao | Consultas de carteira, separacoes e estoque |