135 lines
7.6 KiB
Markdown
135 lines
7.6 KiB
Markdown
---
|
|
name: analise-ncs
|
|
description: >
|
|
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:
|
|
|
|
```bash
|
|
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).
|
|
|
|
4. Chamar `present_files` com o `.xlsx` gerado.
|
|
5. 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`).
|