portal_publico/projects/Controladoria - Analise NCs/analise-ncs_SKILL.md

7.6 KiB

name description
analise-ncs Gera o Relatório de Qualidade ISO 9001 multi-abas da De Paula Contadores a partir do PAR de arquivos exportados do Sigsistem: o .xlsx de OCORRÊNCIAS (dados estruturados) e o .xls de AÇÕES (HTML, fonte dos relatos de acompanhamento). Use SEMPRE que o usuário anexar esses dois arquivos (nomes típicos: "ocorrencias_pa_DDMMAAAA.xlsx" e "acoes_DDMMAAAA.xls" / "acoesDDMMAAAA.xls") e pedir para "gerar o relatório", "rodar o relatório de qualidade", "analisar as ocorrências", "fazer a análise da planilha", "formatar a planilha de ocorrências", ou mencionar ações em atraso, acompanhamentos, NCs sem ação corretiva, ocorrências sem análise ou auditoria do SGQ. O resultado é um único .xlsx estilizado salvo em /mnt/user-data/outputs/ e apresentado via present_files.

Análise NCs — Relatório de Qualidade ISO 9001 (De Paula Contadores)

Consultor de qualidade sênior ISO 9001. Recebe DOIS arquivos exportados do Sigsistem e produz um relatório Excel multi-abas para acompanhamento do SGQ e preparação de auditoria.

Arquivos de entrada (SEMPRE dois)

Arquivo Formato real Papel
ocorrencias_pa_DDMMAAAA.xlsx Excel 2007+ Dados estruturados: ocorrências, ações, datas, análise, responsáveis. Fonte principal.
acoes_DDMMAAAA.xls (às vezes acoesDDMMAAAA.xls) HTML (apesar da extensão .xls) Blocos "Ocorrência N / Ação M" com a seção "Relato(s) do Acompanhamento". Única fonte confiável da data do último acompanhamento.

O .xls NÃO é Excel — é HTML. Ler com open(..., encoding='latin-1') e parsear por regex. Nunca tente pd.read_excel nele.

Conceitos-chave

  • Ocorrência: registro com código único. 1 código = 1 ocorrência. Tipos: Não Conformidade, Reclamação de Cliente, Oportunidade de Melhoria, Planejamento Estratégico, Mudança Planejada, Gerenciamento de Riscos, Observação em Auditoria, etc.
  • NC (Não Conformidade e Reclamação de Cliente): exige Correção (imediata) + Ação Corretiva (causa raiz). NC só com Correção, sem Ação Corretiva = erro grave (aba NCs Críticas).
  • Ocorrência/Ação: identificador exibido no formato 3856/5646 (código da ocorrência / código da ação). Usar esse formato em TODAS as abas de ações.
  • Vencimento efetivo de uma ação = Prazo Prorrogado se preenchido, senão Data da Conclusão da Ação (que no export é a data-limite prevista, não a conclusão real — todas as ações do export estão em aberto).
  • Último acompanhamento: data da última ENTRADA de relato no .xls, extraída por Ocorrência/Ação.

Regras de negócio (consolidadas — NÃO alterar sem pedido explícito)

  1. Linhas válidas: apenas linhas cujo Código da Ocorrência é numérico. Exports antigos podem trazer um bloco de lixo ao final (valores 0, 0,0%, ------, "Mai/2023"); descartar. Valores-lixo tratados como nulos: ------, 0, 0,0%, 0.0%.

  2. Datas: extrair sempre o padrão DD/MM/AAAA (a coluna de emissão vem com data+hora misturadas; pegar só a data). dayfirst=True.

  3. Data de referência (HOJE): verificar a data real do sistema (date) antes de rodar. Nunca reutilizar data de ciclo anterior nem inventar. O script aceita --hoje AAAA-MM-DD; sem ela usa a data atual do sistema.

  4. Último acompanhamento vem do .xls, por (Ocorrência, Ação). Cada entrada da seção "Relato(s) do Acompanhamento" começa com DD/MM/AAAA - Nome - texto. Pegar a última entrada por data. IGNORAR as datas embutidas em linhas de prorrogação ("Prazo Prorrogado Para: ...") — elas são datas-alvo futuras, não datas de relato.

  5. Ações em Atraso: vencimento efetivo < HOJE. Vão para cá mesmo que tenham acompanhamento. Ordenar por maior atraso. Colunas incluem Dias em Atraso.

  6. Acompanhamentos Realizados (ações a priorizar): têm último acompanhamento ANTES do vencimento efetivo E o vencimento ainda não passou (>= HOJE) E o último acompanhamento NÃO é uma prorrogação de prazo. Se a última entrada for "Inclusão/Alteração de Prorrogação de Prazo", a ação é EXCLUÍDA desta aba (não há mais o que fazer até um novo relato de andamento real).

  7. Sem Análise (por ocorrência): campo Descrição da Análise da Ocorrência vazio. Trazer código da ocorrência, data de emissão, área, emissor, indicado para análise (usar "Indicado para Descrever Análise" e, na ausência, o "Responsável pela Descrição da Análise").

  8. Análise sem Ação: análise preenchida mas SEM código de ação (análise feita, ação não aberta). Trazer ocorrência/ação, data de emissão, área, emissor, responsável p/ análise e descrição.

  9. NCs Críticas: ocorrências do tipo NC/Reclamação que NÃO possuem nenhuma "Ação Corretiva" (só têm Correção ou nenhuma ação). Coluna "Tipos de Ação Existentes" mostra o que há.

  10. Clientes com +1 NC nos últimos 6 meses (no Resumo): ocorrências NC/Reclamação com emissão nos últimos 6 meses a partir de HOJE, agrupadas por cliente, mostrando quem tem mais de uma.

  11. Todas as Ações: TODAS as ações abertas (vencidas ou não), ordenadas por vencimento, com coluna Status (VENCIDA / Vence em ≤7 dias / Vence em ≤30 dias / No prazo / Sem vencimento) e Dias p/ Vencer. Serve para cobrança antecipada dos responsáveis.

  12. Colunas obrigatórias nas abas de ações: sempre incluir Tipo de Ação e Ação (o texto da ação em si), além de Ocorrência/Ação e Área, para facilitar a análise.

Abas do relatório (nesta ordem)

  1. Resumo — data, indicadores (ocorrências abertas, ações abertas, em atraso, sem análise, análises sem ação, NCs sem ação corretiva, acompanhamentos a priorizar), ocorrências por tipo, e clientes com +1 NC (6 meses).
  2. Ações em Atraso — vermelho.
  3. Acompanhamentos Realizados — vermelho (prioridade de andamento).
  4. Todas as Ações — cor por status (vermelho=vencida, amarelo=vence em breve).
  5. Sem Análise.
  6. Análise sem Ação.
  7. NCs Críticas — vermelho.

Formatação

Cabeçalho azul-escuro (1F4E79) com texto branco; zebra sutil (D6E4F0); linhas de alerta em vermelho claro (F9D7D5) com fonte vinho; "vence em breve" em amarelo (FFF2CC); bordas finas; largura de coluna automática; freeze_panes na primeira linha de dados.

Como executar

  1. Rodar date para confirmar HOJE.
  2. Identificar os dois arquivos anexados (o .xlsx de ocorrências e o .xls de ações).
  3. Executar o script:
python scripts/gerar_relatorio.py \
  --ocorrencias /mnt/user-data/uploads/ocorrencias_pa_DDMMAAAA.xlsx \
  --acoes       /mnt/user-data/uploads/acoes_DDMMAAAA.xls \
  --hoje AAAA-MM-DD \
  --saida /mnt/user-data/outputs

Dependências: pandas openpyxl lxml html5lib (instalar com pip install ... --break-system-packages se necessário).

  1. Chamar present_files com o .xlsx gerado.
  2. Responder no chat de forma factual e enxuta: total de ações em atraso e principais responsáveis; ocorrências sem análise; NCs sem ação corretiva (alerta de risco); e anomalias estruturais da planilha, se houver.

Notas de robustez

  • O encoding do .xls pode variar entre exports ("ISO-8859" ou "Non-ISO extended-ASCII"); latin-1 decodifica ambos e preserva os marcadores de prorrogação.
  • A coluna Cliente(s) Relacionado(s) pode estar vazia em muitas linhas — normal.
  • O script é idempotente: reexecutar sobrescreve o arquivo do dia (Relatorio_Qualidade_AAAAMMDD.xlsx).