Skip to content

Latest commit

 

History

History
801 lines (625 loc) · 24.9 KB

File metadata and controls

801 lines (625 loc) · 24.9 KB

Sistema do Agente @data-engineer

Versão: 1.0.0 Criado: 2026-02-04 Owner: @data-engineer (Dara - The Sage) Status: Documentação Oficial


Visão Geral

O agente @data-engineer (Dara) e o Database Architect & Operations Engineer do AIOX, responsavel pelo design de schemas, migracoes, seguranca (RLS), otimizacao de performance e operacoes de DBA. Este agente atua como um Sage que modela dominios de negocio, implementa migracoes seguras com snapshots e rollback, e garante integridade e seguranca dos dados.

Caracteristicas Principais

Caracteristica Descrição
Persona Dara - The Sage
Arquetipo Sage / Gemini
Tom Tecnico, preciso, metodico, consciente de seguranca
Foco Design de schema, migracoes, RLS, performance, operacoes DBA
Fechamento "-- Dara, arquitetando dados"

Principios Criticos de Database

  • Corretude antes de velocidade - Acertar primeiro, otimizar depois
  • Tudo versionado e reversivel - Snapshots + scripts de rollback
  • Seguranca por padrao - RLS, constraints, triggers para consistencia
  • Idempotencia em todo lugar - Seguro executar operacoes multiplas vezes
  • Design orientado a dominio - Entender negocio antes de modelar dados
  • Access pattern first - Design baseado em como dados serao consultados
  • Defesa em profundidade - RLS + defaults + check constraints + triggers
  • Observabilidade integrada - Logs, metricas, explain plans
  • Zero-downtime como objetivo - Planejar migracoes cuidadosamente

Vocabulario Caracteristico

  • Consultar
  • Modelar
  • Armazenar
  • Configurar
  • Normalizar
  • Indexar
  • Migrar

Lista Completa de Arquivos

Arquivos Core de Tasks do @data-engineer

Arquivo Comando Propósito
.aiox-core/development/tasks/db-domain-modeling.md *model-domain Sessao interativa de modelagem de dominio
.aiox-core/development/tasks/setup-database.md *setup-database [type] Setup de projeto de database (Supabase, PostgreSQL, MongoDB, MySQL, SQLite)
.aiox-core/development/tasks/db-bootstrap.md *bootstrap Cria estrutura padrao de projeto Supabase
.aiox-core/development/tasks/db-env-check.md *env-check Valida variaveis de ambiente do database
.aiox-core/development/tasks/db-apply-migration.md *apply-migration {path} Aplica migracao com snapshot e lock advisory
.aiox-core/development/tasks/db-dry-run.md *dry-run {path} Testa migracao sem commit
.aiox-core/development/tasks/db-seed.md *seed {path} Aplica seed data (idempotent)
.aiox-core/development/tasks/db-snapshot.md *snapshot {label} Cria snapshot do schema
.aiox-core/development/tasks/db-rollback.md *rollback {snapshot_or_file} Restaura snapshot ou executa rollback
.aiox-core/development/tasks/db-smoke-test.md *smoke-test {version} Testes abrangentes de database
.aiox-core/development/tasks/security-audit.md *security-audit {scope} Auditoria de seguranca (rls, schema, full)
.aiox-core/development/tasks/analyze-performance.md *analyze-performance {type} Analise de performance (query, hotpaths, interactive)
.aiox-core/development/tasks/db-policy-apply.md *policy-apply {table} {mode} Instala politica RLS (KISS ou granular)
.aiox-core/development/tasks/test-as-user.md *test-as-user {user_id} Emula usuario para testar RLS
.aiox-core/development/tasks/db-verify-order.md *verify-order {path} Valida ordenacao DDL para dependencias
.aiox-core/development/tasks/db-load-csv.md *load-csv {table} {file} Carregador seguro de CSV (staging->merge)
.aiox-core/development/tasks/db-run-sql.md *run-sql {file_or_inline} Executa SQL raw com transacao
.aiox-core/development/tasks/create-deep-research-prompt.md *research {topic} Gera prompt de pesquisa profunda
.aiox-core/development/tasks/execute-checklist.md *execute-checklist {checklist} Executa checklist DBA
.aiox-core/development/tasks/create-doc.md *doc-out Output de documento completo

Tasks Depreciadas (Backward Compatibility v2.0->v3.0)

Task Antiga Nova Task Migracao
db-rls-audit.md security-audit.md *security-audit rls
schema-audit.md security-audit.md *security-audit schema
db-explain.md analyze-performance.md *analyze-performance query
db-analyze-hotpaths.md analyze-performance.md *analyze-performance hotpaths
query-optimization.md analyze-performance.md *analyze-performance interactive
db-impersonate.md test-as-user.md *test-as-user {user_id}
db-supabase-setup.md setup-database.md *setup-database supabase

Arquivos de Definição do Agente

Arquivo Propósito
.aiox-core/development/agents/data-engineer.md Definição core do agente @data-engineer (persona, comandos, workflows)
.claude/commands/AIOX/agents/data-engineer.md Comando Claude Code para ativar @data-engineer

Arquivos de Templates SQL

Arquivo Propósito
schema-design-tmpl.yaml Template de documentacao de schema
rls-policies-tmpl.yaml Template de politicas RLS
migration-plan-tmpl.yaml Template de plano de migracao
index-strategy-tmpl.yaml Template de estrategia de indices
tmpl-migration-script.sql Template de script de migracao
tmpl-rollback-script.sql Template de script de rollback
tmpl-smoke-test.sql Template de smoke test
tmpl-rls-kiss-policy.sql Template de politica RLS KISS
tmpl-rls-granular-policies.sql Template de politicas RLS granulares
tmpl-staging-copy-merge.sql Template de staging para CSV
tmpl-seed-data.sql Template de seed data
tmpl-comment-on-examples.sql Exemplos de COMMENT ON

Arquivos de Checklists

Arquivo Propósito
dba-predeploy-checklist.md Checklist pre-deploy DBA
dba-rollback-checklist.md Checklist de rollback
database-design-checklist.md Checklist de design de database

Arquivos de Data/Conhecimento

Arquivo Propósito
database-best-practices.md Melhores praticas de database
supabase-patterns.md Padroes Supabase
postgres-tuning-guide.md Guia de tuning PostgreSQL
rls-security-patterns.md Padroes de seguranca RLS
migration-safety-guide.md Guia de seguranca de migracao

Workflows que Usam @data-engineer

Arquivo Propósito
.aiox-core/development/workflows/brownfield-discovery.yaml Workflow de discovery brownfield (Fase 2 e 5)

Flowchart: Sistema Completo do @data-engineer

flowchart TB
    subgraph ACTIVATION["ATIVACAO DO AGENTE"]
        A["@data-engineer"] --> B["ActivationRuntime -> UnifiedActivationPipeline"]
        B --> C["Exibe Greeting Sage"]
        C --> D["Quick Commands"]
        D --> E["HALT - Aguarda Usuario"]
    end

    subgraph COMMANDS["CATEGORIAS DE COMANDOS"]
        E --> F{"Comando Recebido"}

        F -->|"Arquitetura"| G["Design Commands"]
        F -->|"Operacoes"| H["DBA Commands"]
        F -->|"Seguranca"| I["Security Commands"]
        F -->|"Performance"| J["Performance Commands"]
        F -->|"Dados"| K["Data Commands"]
    end

    subgraph DESIGN["DESIGN & ARQUITETURA"]
        G --> G1["*create-schema"]
        G --> G2["*create-rls-policies"]
        G --> G3["*model-domain"]
        G --> G4["*design-indexes"]
        G --> G5["*create-migration-plan"]
    end

    subgraph DBA["OPERACOES DBA"]
        H --> H1["*setup-database"]
        H --> H2["*bootstrap"]
        H --> H3["*apply-migration"]
        H --> H4["*dry-run"]
        H --> H5["*snapshot"]
        H --> H6["*rollback"]
        H --> H7["*smoke-test"]
        H --> H8["*seed"]
    end

    subgraph SECURITY["SEGURANCA"]
        I --> I1["*security-audit"]
        I --> I2["*policy-apply"]
        I --> I3["*test-as-user"]
        I --> I4["*verify-order"]
    end

    subgraph PERF["PERFORMANCE"]
        J --> J1["*analyze-performance query"]
        J --> J2["*analyze-performance hotpaths"]
        J --> J3["*analyze-performance interactive"]
    end

    subgraph DATA["OPERACOES DE DADOS"]
        K --> K1["*load-csv"]
        K --> K2["*run-sql"]
    end

    style ACTIVATION fill:#e3f2fd
    style COMMANDS fill:#e8f5e9
    style DESIGN fill:#fff8e1
    style DBA fill:#f3e5f5
    style SECURITY fill:#ffebee
    style PERF fill:#e1f5fe
    style DATA fill:#f1f8e9
Loading

Diagrama do Ciclo de Migracao

stateDiagram-v2
    [*] --> Design: Novo Requisito

    state Design {
        D1: Entender Dominio
        D2: Modelar Entidades
        D3: Definir Relacionamentos
        D4: Criar Schema SQL

        D1 --> D2
        D2 --> D3
        D3 --> D4
    }

    Design --> PreMigration: Schema Pronto

    state PreMigration {
        P1: *snapshot pre_migration
        P2: *verify-order migration.sql
        P3: *dry-run migration.sql
        P4: Validar Output

        P1 --> P2
        P2 --> P3
        P3 --> P4
    }

    PreMigration --> Migration: Dry-run OK

    state Migration {
        M1: *apply-migration
        M2: Advisory Lock
        M3: Execute SQL
        M4: Release Lock
        M5: *snapshot post_migration

        M1 --> M2
        M2 --> M3
        M3 --> M4
        M4 --> M5
    }

    Migration --> PostMigration: Aplicado

    state PostMigration {
        PM1: *smoke-test
        PM2: *security-audit
        PM3: *analyze-performance
        PM4: Validar RLS

        PM1 --> PM2
        PM2 --> PM3
        PM3 --> PM4
    }

    PostMigration --> [*]: Completo

    Migration --> Rollback: Falha
    PostMigration --> Rollback: Issues Criticos

    state Rollback {
        R1: *rollback snapshot
        R2: Verificar Estado
        R3: Investigar Causa
    }

    Rollback --> Design: Fix e Retry
Loading

Fluxo de Security Audit

flowchart TB
    subgraph AUDIT["SECURITY AUDIT (*security-audit)"]
        A["Selecionar Escopo"] --> B{"Tipo?"}

        B -->|"rls"| C["RLS Audit Only"]
        B -->|"schema"| D["Schema Audit Only"]
        B -->|"full"| E["RLS + Schema + Best Practices"]

        subgraph RLS_AUDIT["RLS AUDIT"]
            C --> C1["Listar Tabelas"]
            C1 --> C2["Verificar RLS Enabled"]
            C2 --> C3["Listar Policies"]
            C3 --> C4["Coverage por Comando"]
            C4 --> C5["Tabelas Sem RLS"]
        end

        subgraph SCHEMA_AUDIT["SCHEMA AUDIT"]
            D --> D1["Primary Keys"]
            D1 --> D2["NOT NULL Constraints"]
            D2 --> D3["Foreign Keys"]
            D3 --> D4["Audit Timestamps"]
            D4 --> D5["Indices em FKs"]
        end

        subgraph FULL_AUDIT["FULL AUDIT"]
            E --> E1["RLS Audit"]
            E1 --> E2["Schema Audit"]
            E2 --> E3["PII/Sensitive Check"]
            E3 --> E4["Permissions Check"]
        end

        C5 --> F["Gerar Relatorio"]
        D5 --> F
        E4 --> F

        F --> G{"Issues Criticos?"}
        G -->|"Sim"| H["Recomendar Fixes"]
        G -->|"Nao"| I["Schema Seguro"]

        H --> J["*policy-apply para RLS"]
        H --> K["ALTER TABLE para Constraints"]
    end

    style C fill:#e1f5fe
    style D fill:#fff8e1
    style E fill:#ffebee
    style I fill:#c8e6c9
    style H fill:#ffcdd2
Loading

Fluxo de Snapshot e Rollback

flowchart TB
    subgraph SNAPSHOT["SISTEMA DE SNAPSHOTS"]
        direction TB

        A["*snapshot {label}"] --> B["Criar Diretorio<br/>supabase/snapshots/"]
        B --> C["pg_dump --schema-only"]
        C --> D["Gerar Metadata"]
        D --> E["Verificar Conteudo"]
        E --> F["Snapshot Criado"]

        F --> G["supabase/snapshots/<br/>{TS}_{label}.sql"]
        F --> H["supabase/snapshots/<br/>{TS}_{label}.meta"]
    end

    subgraph MIGRATION["MIGRACAO COM AUTO-SNAPSHOT"]
        I["*apply-migration"] --> J["Pre-Snapshot Automatico"]
        J --> K["Advisory Lock"]
        K --> L["Execute Migration"]
        L --> M{"Sucesso?"}

        M -->|"Sim"| N["Post-Snapshot"]
        M -->|"Nao"| O["Transaction Rollback"]

        N --> P["Gerar Diff"]
        P --> Q["Release Lock"]
    end

    subgraph ROLLBACK["SISTEMA DE ROLLBACK"]
        R["*rollback {target}"] --> S["Confirmar ROLLBACK"]
        S --> T["Emergency Snapshot"]
        T --> U["Validar Target"]
        U --> V["Advisory Lock"]
        V --> W["Execute Restore"]

        W --> X{"Sucesso?"}
        X -->|"Sim"| Y["Post-Rollback Validation"]
        X -->|"Nao"| Z["Restore Emergency"]

        Y --> AA["Release Lock"]
        Z --> AA
    end

    F -.-> R
    J -.-> G
    T -.-> G

    style F fill:#c8e6c9
    style O fill:#ffcdd2
    style Z fill:#ffcdd2
    style Y fill:#c8e6c9
Loading

Mapeamento de Comandos para Tasks

Comandos de Arquitetura e Design

Comando Task File Operacao
*create-schema (inline) Design de schema de database
*create-rls-policies (inline) Design de politicas RLS
*create-migration-plan (inline) Cria estrategia de migracao
*design-indexes (inline) Design de estrategia de indices
*model-domain db-domain-modeling.md Sessao interativa de modelagem

Comandos de Operacoes DBA

Comando Task File Operacao
*setup-database [type] setup-database.md Setup de projeto (supabase/postgresql/mongodb/mysql/sqlite)
*bootstrap db-bootstrap.md Scaffold de estrutura Supabase
*env-check db-env-check.md Valida variaveis de ambiente
*apply-migration {path} db-apply-migration.md Aplica migracao com snapshot de seguranca
*dry-run {path} db-dry-run.md Testa migracao sem commit
*seed {path} db-seed.md Aplica seed data idempotente
*snapshot {label} db-snapshot.md Cria snapshot de schema
*rollback {target} db-rollback.md Restaura snapshot ou executa rollback
*smoke-test {version} db-smoke-test.md Testes de validação

Comandos de Seguranca e Performance (Consolidados - Story 6.1.2.3)

Comando Task File Operacao
*security-audit rls security-audit.md Auditoria de cobertura RLS
*security-audit schema security-audit.md Auditoria de qualidade de schema
*security-audit full security-audit.md Auditoria completa
*analyze-performance query analyze-performance.md EXPLAIN ANALYZE de query
*analyze-performance hotpaths analyze-performance.md Detecta bottlenecks do sistema
*analyze-performance interactive analyze-performance.md Sessao de otimizacao interativa
*policy-apply {table} {mode} db-policy-apply.md Instala politica RLS (KISS ou granular)
*test-as-user {user_id} test-as-user.md Emula usuario para testar RLS
*verify-order {path} db-verify-order.md Valida ordenacao DDL

Comandos de Operacoes de Dados

Comando Task File Operacao
*load-csv {table} {file} db-load-csv.md Carregador seguro de CSV
*run-sql {file_or_inline} db-run-sql.md Executa SQL com transacao

Comandos de Contexto e Sessao

Comando Operacao
*help Mostra todos os comandos disponiveis
*guide Mostra guia de uso completo
*yolo Toggle de confirmacao (skip/require)
*exit Sai do modo data-engineer
*doc-out Output de documento completo
*execute-checklist {checklist} Executa checklist DBA
*research {topic} Gera prompt de pesquisa profunda

Integracoes entre Agentes

Diagrama de Colaboracao

flowchart TB
    subgraph DATA_ECOSYSTEM["ECOSSISTEMA DO @data-engineer"]
        DATA["@data-engineer (Dara)"]
    end

    subgraph UPSTREAM["UPSTREAM - Fornece Requisitos"]
        ARCH["@architect (Aria)<br/>System Architecture"]
    end

    subgraph DOWNSTREAM["DOWNSTREAM - Recebe Schema"]
        DEV["@dev (Dex)<br/>Developer"]
    end

    subgraph COLLABORATION["COLABORACAO EM DISCOVERY"]
        QA["@qa (Quinn)<br/>Quality Gate"]
    end

    ARCH -->|"Requisitos de Arquitetura<br/>Gate 2 Decision"| DATA
    DATA -->|"Schema Design<br/>Migrations<br/>RLS Policies"| DEV

    DATA -->|"DB Audit<br/>Fase 2 brownfield-discovery"| QA
    QA -->|"Validacao<br/>Fase 7"| DATA

    style DATA fill:#e8f5e9
    style ARCH fill:#e3f2fd
    style DEV fill:#fff3e0
    style QA fill:#fce4ec
Loading

Fluxo de Colaboracao

De Para Trigger Acao
@architect @data-engineer Gate 2 Decision @data-engineer recebe requisitos de schema
@data-engineer @dev Schema pronto @dev implementa data layer
@data-engineer @qa brownfield-discovery Fase 2 @data-engineer documenta schema e debitos
@qa @data-engineer Fase 5 validation @qa valida e @data-engineer ajusta

Delegacao do @architect (Gate 2 Decision)

O @architect delega para @data-engineer:

  • Database schema design
  • Query optimization
  • RLS policies design
  • Index strategy
  • Migration planning

Quando Usar Outro Agente

Tarefa Agente Motivo
System architecture @architect Padroes de app-level, design de API
Application code @dev Implementacao de repository pattern, DAL
Frontend design @ux-design-expert Design de UI/UX
Git operations @github-devops Push, PR, deploy

Workflow: Brownfield Discovery

O @data-engineer participa do workflow brownfield-discovery.yaml em duas fases criticas:

Fase 2: Coleta de Database

step: database_documentation
phase: 2
phase_name: "Coleta: Database"
agent: data-engineer
action: db-schema-audit
creates:
  - supabase/docs/SCHEMA.md
  - supabase/docs/DB-AUDIT.md
duration_estimate: "20-40 min"

Analises realizadas:

  • Schema completo (tabelas, colunas, tipos)
  • Relacionamentos e foreign keys
  • Indices existentes e faltantes
  • RLS policies (cobertura e qualidade)
  • Views e functions
  • Performance (queries lentas conhecidas)

Debitos identificados (nivel dados):

  • Tabelas sem RLS
  • Indices faltantes
  • Normalizacao inadequada
  • Constraints ausentes
  • Migrations não versionadas
  • Dados orfaos

Fase 5: Validacao Database

step: database_specialist_review
phase: 5
phase_name: "Validacao: Database"
agent: data-engineer
action: review_and_validate
creates: docs/reviews/db-specialist-review.md
duration_estimate: "20-30 min"

Responsabilidades:

  1. Validar debitos identificados
  2. Estimar custos (horas)
  3. Priorizar (perspectiva DB)
  4. Responder perguntas do @architect

Configuracao

Variaveis de Ambiente Necessarias

# Supabase Database Connection
SUPABASE_DB_URL="postgresql://postgres.[PASSWORD]@[PROJECT-REF].supabase.co:6543/postgres?sslmode=require"

# Para backups/analise (conexao direta)
# SUPABASE_DB_URL="postgresql://postgres.[PASSWORD]@[PROJECT-REF].supabase.co:5432/postgres"

Estrutura de Diretorio Padrao (Supabase)

supabase/
├── migrations/      # Arquivos de migracao
│   └── README.md
├── seeds/           # Seed data
│   └── README.md
├── tests/           # Smoke tests
│   └── README.md
├── rollback/        # Scripts de rollback
│   └── README.md
├── snapshots/       # Schema snapshots
├── docs/            # Documentação
│   ├── SCHEMA.md
│   └── migration-log.md
├── config.toml      # Configuracao local
└── .gitignore

CodeRabbit Integration

coderabbit_integration:
  enabled: true
  focus: SQL quality, schema design, query performance, RLS security, migration safety

  when_to_use:
    - Before applying migrations (review DDL changes)
    - After creating RLS policies (check policy logic)
    - When adding database access code (review query patterns)
    - During schema refactoring (validate changes)

  severity_handling:
    CRITICAL:
      action: Block migration/deployment
      focus: SQL injection risks, RLS bypass, data exposure
    HIGH:
      action: Fix before migration or create rollback plan
      focus: Performance issues, missing constraints
    MEDIUM:
      action: Document as technical debt
      focus: Schema design, normalization
    LOW:
      action: Note for future refactoring
      focus: SQL style, readability

Best Practices

Quando Usar o @data-engineer

USE @data-engineer para:

  • Design de schema de database
  • Modelagem de dominio
  • Migracoes e versionamento
  • Politicas RLS e seguranca
  • Otimizacao de queries e performance
  • Operacoes DBA (backup, restore, smoke-test)
  • Auditoria de seguranca e qualidade

NAO USE @data-engineer para:

  • System architecture (use @architect)
  • Codigo de aplicacao (use @dev)
  • Git operations (use @github-devops)
  • Frontend/UI (use @ux-design-expert)

Workflow de Migracao Segura

# 1. Antes de qualquer migracao
*snapshot pre_migration

# 2. Testar migracao
*dry-run path/to/migration.sql

# 3. Aplicar migracao
*apply-migration path/to/migration.sql

# 4. Validar resultado
*smoke-test
*security-audit rls

# 5. Se problemas
*rollback supabase/snapshots/{TS}_pre_migration.sql

Padrao de Tabela

Toda tabela deve ter como baseline:

  • id (UUID PRIMARY KEY)
  • created_at (TIMESTAMPTZ)
  • updated_at (TIMESTAMPTZ)
  • Foreign keys para relacionamentos
  • RLS enabled por padrao
  • Indices em FKs e colunas de query frequente

Seguranca

  • Nunca expor secrets - redact passwords/tokens automaticamente
  • Preferir conexao Pooler (porta 6543) com SSL
  • Quando não ha Auth layer, avisar que auth.uid() retorna NULL
  • RLS deve ser validado com casos positivos/negativos
  • Service role key bypassa RLS - usar com extremo cuidado
  • Sempre usar transacoes para operacoes multi-statement
  • Validar input do usuario antes de construir SQL dinamico

Troubleshooting

Database connection failed

Erro: pg_dump: error: connection failed

Solucao:

  1. Verificar SUPABASE_DB_URL: *env-check
  2. Checar formato da connection string
  3. Verificar SSL mode
  4. Testar conexao manual: psql "$SUPABASE_DB_URL"

Migration failed mid-execution

Situacao: *apply-migration falhou no meio

Acao: PostgreSQL ja fez rollback da transacao automaticamente

Proximos passos:

  1. Fix no arquivo de migracao
  2. *dry-run para testar
  3. *apply-migration novamente

Lock already held

Erro: Another migration is running

Solucao:

  1. Aguardar conclusao da outra migracao
  2. Verificar locks travados:
    SELECT * FROM pg_locks WHERE locktype = 'advisory';
  3. Se necessario, cancelar lock manualmente

Snapshot file is empty

Problema: Nenhum objeto de schema ou conexao falhou

Solucao:

  1. Verificar se database tem tabelas: SELECT * FROM pg_tables WHERE schemaname='public';
  2. Checar compatibilidade de versao do pg_dump
  3. Verificar conectividade de rede

RLS policies not working

Sintomas: Usuarios veem dados que não deveriam

Solucao:

  1. Verificar se RLS esta enabled: *security-audit rls
  2. Testar como usuario especifico: *test-as-user {user_id}
  3. Verificar se ha policy com USING clause correta
  4. Checar se auth.uid() esta retornando valor esperado

Referencias

Tasks do @data-engineer

Agente

Workflows

Relacionados


Resumo

Aspecto Detalhes
Total de Tasks Core 20 task files
Comandos Principais 25+ comandos (*setup-database, *apply-migration, *security-audit, etc.)
Databases Suportados 5 (Supabase, PostgreSQL, MongoDB, MySQL, SQLite)
Tipos de Audit 3 (rls, schema, full)
Tipos de Performance Analysis 3 (query, hotpaths, interactive)
Templates SQL 12 templates
Checklists DBA 3 checklists
Data Files 5 arquivos de conhecimento
Workflows Integrados 1 (brownfield-discovery)
Agentes Colaboradores 3 (@architect, @dev, @qa)
Fases no brownfield-discovery 2 (Fase 2: Coleta, Fase 5: Validacao)

Changelog

Data Autor Descrição
2026-02-04 @data-engineer Documento inicial criado

-- Dara, arquitetando dados