Skip to content

Commit 660cc7b

Browse files
committed
chore: update readme.
1 parent bd2c442 commit 660cc7b

File tree

1 file changed

+99
-25
lines changed

1 file changed

+99
-25
lines changed

README.md

Lines changed: 99 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,125 @@
11
# FIPE Data Pipeline
22

3-
Coleta dados de preços de veículos da Tabela FIPE oficial e armazena em PostgreSQL para análise histórica.
3+
[![GitHub Release](https://img.shields.io/github/v/release/caiopizzol/fipe-data-pipeline)](https://github.com/caiopizzol/fipe-data-pipeline/releases)
44

5-
## Configuração
5+
Crawler em TypeScript que coleta dados históricos de preços de veículos da Tabela FIPE e armazena em PostgreSQL.
6+
7+
## O Problema
8+
9+
A FIPE publica preços de veículos todo mês desde 2001, mas:
10+
11+
- **Não existe API oficial** - o site é só consulta manual
12+
- **5 níveis de hierarquia** - mês de referência → marca → modelo → ano/combustível → preço
13+
- **Escala massiva** - 320+ tabelas de referência, 90+ marcas, milhares de modelos
14+
- **Alternativas pagas** - existem, mas sem garantia de confiabilidade dos dados
15+
16+
## Features
17+
18+
- **Throttling inteligente** - 200ms entre requests + retry com backoff exponencial
19+
- **Fallback hierárquico** - se um modelo falha, continua com os outros
20+
- **Upserts idempotentes** - pode rodar de novo sem duplicar dados
21+
- **Classificação por segmento** - categoriza modelos (SUV, Sedã, Hatch, etc.) usando Claude
22+
23+
## Quick Start
624

725
```bash
8-
cp .env.example .env
9-
npm install
26+
# Sobe o banco
1027
docker compose up -d
11-
npm run db:push
28+
29+
# Instala dependências
30+
pnpm install
31+
32+
# Aplica schema
33+
pnpm db:push
34+
35+
# Crawla dados de 2025
36+
pnpm crawl
1237
```
1338

1439
## Uso
1540

1641
```bash
17-
npm run crawl # Coleta todos os dados de 2025
18-
npm run crawl -- --reference 328 # Mês específico
19-
npm run crawl -- --reference 328 --brand 59 # Marca específica (59 = VW)
20-
npm run crawl -- --classify # Classifica novos modelos por segmento (requer ANTHROPIC_API_KEY)
21-
npm run status # Estatísticas do banco
22-
npm run db:shell # Terminal PostgreSQL
42+
# Crawl completo do ano atual
43+
pnpm crawl
44+
45+
# Filtrar por referência específica
46+
pnpm crawl -- --reference 328
47+
48+
# Filtrar por marca (59 = Volkswagen)
49+
pnpm crawl -- --brand 59
50+
51+
# Filtrar por modelo específico (requer --brand)
52+
pnpm crawl -- --brand 59 --model 5940
53+
54+
# Classificar modelos durante o crawl
55+
pnpm crawl -- --classify
56+
57+
# Ver estatísticas do banco
58+
pnpm status
59+
60+
# Classificar todos os modelos sem segmento
61+
pnpm classify
62+
63+
# Dry-run da classificação
64+
pnpm classify -- --dry-run
2365
```
2466

25-
### Classificação de Segmentos (Opcional)
67+
## Arquitetura
2668

27-
Classifica modelos por tipo de carroceria (SUV, Sedã, Hatch, etc.) usando IA.
69+
```
70+
src/
71+
├── fipe/
72+
│ ├── client.ts # HTTP client com throttling
73+
│ └── schemas.ts # Validação Zod
74+
├── crawler/
75+
│ └── processor.ts # Orquestração do crawl
76+
├── db/
77+
│ ├── schema.ts # Drizzle ORM
78+
│ └── repository.ts # Upserts
79+
└── classifier/
80+
└── segment-classifier.ts # Claude API
81+
```
2882

29-
```bash
30-
npm run classify # Classifica todos os modelos sem segmento
31-
npm run classify -- --dry-run # Mostra o que seria classificado
32-
npm run classify -- --model 123 # Classifica modelo específico por ID
83+
## Stack
84+
85+
- Node.js 22 + TypeScript
86+
- Drizzle ORM
87+
- PostgreSQL 16
88+
- Zod (validação runtime)
89+
90+
## Schema
91+
92+
```mermaid
93+
flowchart LR
94+
reference_tables --> prices
95+
brands --> models --> model_years --> prices
3396
```
3497

35-
Requer `ANTHROPIC_API_KEY` no `.env`.
98+
**Exemplo:**
3699

37-
## Fonte de Dados
100+
| reference_tables | brands | models | model_years | prices |
101+
| ---------------- | ---------- | -------- | ----------- | --------- |
102+
| Jan/2025 (#328) | Volkswagen | Gol 1.0 | 2020 Flex | R$ 45.000 |
103+
| | | | 2021 Flex | R$ 48.000 |
104+
| | | Polo 1.6 | 2022 Flex | R$ 72.000 |
105+
| Fev/2025 (#329) | Volkswagen | Gol 1.0 | 2020 Flex | R$ 44.500 |
38106

39-
Dados oficiais da FIPE em `veiculos.fipe.org.br`. Que incluem:
107+
Cada preço vincula um veículo (modelo + ano + combustível) a um mês de referência.
108+
109+
Schema SQL completo em [`initial.sql`](./initial.sql).
110+
111+
## Dados
112+
113+
Fonte oficial: `veiculos.fipe.org.br`
40114

41115
- Tabelas de referência (snapshots mensais desde 2001)
42116
- Marcas, modelos, anos
43117
- Preços por tipo de combustível
44118

45-
## Schema
119+
## Demo
46120

47-
```
48-
reference_tables → brands → models → model_years → prices
49-
```
121+
Veja os dados em ação: [fipe.chat](https://fipe.chat)
122+
123+
## Licença
50124

51-
Cada registro de preço vincula um veículo (modelo + ano + combustível) a um mês de referência.
125+
MIT

0 commit comments

Comments
 (0)