# Fase 2 — Mapear o Processo

Objetivo: extrair de A a Z a lógica embutida na planilha e traduzi-la em **entidades** + **fluxo**, antes de pensar em código.

## Sumário
- Como ler a saída do analisador
- Classificar cada aba (catálogo vs. trabalho vs. relatório)
- Identificar entidades e atributos
- Reconstruir o fluxo do processo
- Saída desta fase (o que entra no BLUEPRINT.md)

## 1. Ler a saída do analisador

Rode `scripts/analyze_spreadsheet.py CAMINHO.xlsx --out /tmp/analise.json`. O JSON traz por aba: `cabecalhos`, `amostra`, `formulas` (classificadas), `validacoes_dados`, `formatacao_condicional`, e `intervalos_nomeados` no topo.

Leia também a planilha "com os olhos da pessoa": peça pra ela descrever o passo a passo que faz hoje. A estrutura técnica + a narrativa dela = o processo real.

## 2. Classificar cada aba

| Tipo de aba | Como reconhecer | Vira no app |
|---|---|---|
| **Catálogo / Domínio** | Listas estáveis consultadas por outras abas (tabela de preços, cores, materiais, status). Costuma ser alvo de PROCV e de listas suspensas. | Tabela de referência + tela de cadastro CRUD |
| **Trabalho / Transação** | Onde a pessoa digita o dia a dia (orçamentos, pedidos, atendimentos). Tem muitas fórmulas e cresce com o tempo. | Entidade principal + formulário + listagem |
| **Relatório / Painel** | Resumos, totais, gráficos, tabelas dinâmicas. | Dashboard (somente leitura) |
| **Parâmetros / Config** | Constantes (alíquota, margem, frete). | Tela de configurações |
| **Rascunho / Lixo** | Abas soltas, contas de canto. | Geralmente descartar — confirmar com a pessoa |

## 3. Identificar entidades e atributos

Cada aba de catálogo ou de trabalho é candidata a **entidade** (= tabela no banco = "cadastro" pra pessoa leiga).

Para cada entidade, liste os **atributos** a partir dos cabeçalhos. Para cada atributo defina:
- **Nome** (limpo, sem acento no banco; rótulo amigável na tela)
- **Tipo** (texto, número, moeda, data, sim/não, seleção, foto/arquivo)
- **Obrigatório?** (se a coluna nunca fica vazia na amostra, provavelmente sim)
- **Origem** (digitado, calculado por fórmula, ou puxado de outra aba)

Pista de tipo pela amostra: valores monetários → moeda; `2025-...` → data; só "Sim/Não" → booleano; valores repetidos vindos de lista suspensa → seleção (enum) ou relação com catálogo.

## 4. Reconstruir o fluxo

Monte a frase: **"A pessoa abre [aba X], preenche [campos], o sistema calcula [Y] puxando de [aba Z], e o resultado é [saída]."**

Identifique:
- **Entradas** (o que é digitado manualmente)
- **Cálculos/decisões** (fórmulas — detalhadas na Fase 3)
- **Saídas** (o orçamento final, o pedido, o relatório, um PDF impresso?)
- **Gatilhos** (o que faz a pessoa usar a planilha — chegou cliente? fechou mês?) — isso vira candidato a automação na Fase 5.

## 5. Relações entre abas

Todo PROCV/ÍNDICE+CORRESP que aponta pra outra aba é uma **relação** (chave estrangeira). Ex.: `Orcamento.Material` → `Catalogo.Cor`. Anote como "Orçamento pertence a um item do Catálogo". Isso define o schema na Fase 7.

## Saída desta fase (para o BLUEPRINT.md)

```
## Fase 2 — Processo
**O que a planilha faz:** [1 frase]
**Entidades:**
- [Entidade] (origem: aba X) — atributos: campo (tipo, obrigatório, origem), ...
**Relações:** [Entidade A] → [Entidade B] (via PROCV em ...)
**Fluxo:** [entrada] → [cálculo] → [saída]
**Abas descartadas:** [...] (motivo)
```

Feche com o **checkpoint** do SKILL.md.
