Competências com evidências
Este documento reúne evidências verificáveis dos projetos de portfólio publicados no GitHub. Não agrega automaticamente todo o seu GitHub: cada link aponta para artefato real em repositório específico.
| Ecossistema | Repositórios | Papel no portfólio |
|---|---|---|
| JurisSync | juris-sync, juris-sync-web | API + dashboard de estudo (Python/FastAPI, jurimetria, testes em camadas) |
| PayCore | paycore | Fintech de estudo (ledger double-entry, PIX mock, idempotência, conciliação) |
| MGI KPI | mgi-kpi-dashboard, mgi-kpi-pipeline | BI de engenharia (ETL Python + dashboard Next.js/Supabase) |
Os projetos são artefatos de portfólio (demo local ou deploy com auth), não serviços oficiais de órgãos públicos nem produtos em produção com dados sensíveis versionados.
Case study JurisSync: case-study-juris-sync.md · Case study PayCore: case-study-paycore.md · Site: mariahilmar.vercel.app · Guia do testador JurisSync: juris-sync-web · Demo MGI KPI: web-mgi-delog.vercel.app
Visão geral
| Área | Nível | Projeto | Evidência principal |
|---|---|---|---|
| Gestão de produto / projetos | Avançado | JurisSync | Roadmap em sprints, requisitos rastreáveis, BDD |
| Desenvolvimento backend | Avançado | JurisSync API | FastAPI async, camadas, Docker, CI |
| Frontend (stack de mercado) | Intermediário | JurisSync Web | Next.js, React, TypeScript, TanStack Query |
| Automação de testes | Avançado | JurisSync API (+ Vitest no web) | 43 testes em 5 camadas, Testcontainers, Schemathesis |
| Engenharia de dados | Intermediário-avançado | JurisSync API | Pipeline ETL idempotente, Alembic, integração DataJud |
| Análise de dados | Intermediário | JurisSync API + Web | Stats SQL + dashboard Recharts |
| BI / KPIs de engenharia | Avançado | MGI KPI Dashboard + Pipeline | ETL GitLab → Supabase, RPCs PostgreSQL, 358 testes Vitest |
| Full-stack (dados + UX) | Avançado | MGI KPI Dashboard | Next.js 16 Server Components, cache, GovBR DS, SonarCloud |
| Sistemas financeiros / ledger | Intermediário-avançado | PayCore | Double-entry, idempotência, SELECT FOR UPDATE, conciliação |
| Segurança (threat model documentado) | Intermediário | PayCore | paycore/docs/SEGURANCA.md |
Níveis são autoavaliação com base no escopo dos projetos de portfólio, não em anos de experiência formal.
Parte A - JurisSync (estudo Python / jurimetria)
1. Gestão de produto e projetos
O que demonstro: priorização em sprints, requisitos funcionais e não funcionais, critérios de aceite, rastreabilidade e entrega incremental.
| Evidência | Onde ver |
|---|---|
| Roadmap de 5 sprints com status | juris-sync/README.md |
| Visão do produto, glossário e escopo | juris-sync/docs/requisitos.md |
| 16 regras de negócio documentadas (RN01-RN16) | juris-sync/docs/requisitos.md |
| Histórias de usuário e cenários BDD | juris-sync/docs/requisitos.md |
| Rastreabilidade requisito → código → teste | juris-sync/docs/requisitos.md |
| Narrativa de entrega (case study) | case-study-juris-sync.md |
| Coleção Postman para demo e onboarding | juris-sync/postman/ |
Exemplo citável: "Requisitos escritos em paralelo ao código, com 16 regras de negócio rastreáveis até testes automatizados."
2. Desenvolvimento backend
O que demonstro: APIs REST assíncronas, arquitetura em camadas, validação na fronteira, containerização e pipeline de CI.
| Evidência | Onde ver |
|---|---|
| Entrypoint FastAPI | juris-sync/app/main.py |
| Rotas e contratos OpenAPI | juris-sync/app/api/process.py |
| Schemas Pydantic v2 | juris-sync/app/schemas/process.py |
| Modelos ORM SQLAlchemy 2.0 async | juris-sync/app/models/process.py |
| Config centralizada | juris-sync/app/core/config.py |
| Logs estruturados | juris-sync/app/core/logging.py |
| Dockerfile multi-stage | juris-sync/Dockerfile |
| Docker Compose (PostgreSQL) | juris-sync/docker-compose.yml |
| CI (lint + test + integração) | juris-sync/.github/workflows/ci.yml |
| Swagger UI (local) | http://localhost:8000/docs |
Stack: Python 3.12+, FastAPI, SQLAlchemy 2.0 async, Alembic, Pydantic v2, httpx, structlog, Docker.
Exemplo citável: "API REST async com camadas api/core/models/schemas/services, documentada via OpenAPI e validada com Pydantic na fronteira."
3. Automação de testes
O que demonstro: pirâmide de testes, mocks de HTTP, reconciliação de dados, integração com banco real e contract testing.
| Camada | O que valida | Arquivo(s) |
|---|---|---|
| Unitário / schemas | Validação Pydantic, regras isoladas | juris-sync/tests/test_schemas.py, test_sync_service.py, test_rag_enricher.py |
| API (ASGI) | Endpoints HTTP reais contra FastAPI | juris-sync/tests/test_api.py |
| Mock HTTP | Contrato da chamada DataJud, fallbacks | juris-sync/tests/test_datajud_client.py, test_datajud_client_contract.py |
| Reconciliação | Fidelidade dos dados, atomicidade, sem órfãos | juris-sync/tests/test_sync_reconciliation.py |
| Integração | PostgreSQL real via Testcontainers + Alembic | juris-sync/tests/integration/test_sync_service_postgres.py |
| Contrato OpenAPI | Fuzzing com Schemathesis | juris-sync/tests/contract/test_openapi_contract.py |
| Métrica | Valor | Onde ver |
|---|---|---|
| Total de testes | 43 | juris-sync/README.md |
| Cobertura (suíte padrão) | ~89,9% | juris-sync/pyproject.toml (--cov-fail-under=85) |
| CI verde | Badge | https://github.com/MariaHilmar/juris-sync/actions/workflows/ci.yml |
Ferramentas: pytest, pytest-asyncio, pytest-cov, httpx, respx, factory-boy, Testcontainers, Schemathesis, Hypothesis, Mypy.
Exemplo citável: "43 testes em 5 camadas, incluindo Postgres real via Testcontainers e fuzzing OpenAPI com Schemathesis."
4. Engenharia de dados
O que demonstro: pipeline de ingestão, normalização, persistência idempotente, versionamento de schema e integração com fonte externa.
| Evidência | O que prova | Onde ver |
|---|---|---|
| Cliente DataJud + mock determinístico | Extração e fallback sem chave API | juris-sync/app/services/datajud_client.py |
| Orquestrador de sync (ETL) | Extração → enriquecimento → validação → upsert | juris-sync/app/services/sync_service.py |
| Enriquecimento RAG | Normalização de classe, assunto, tribunal | juris-sync/app/services/rag/enricher.py |
| Migration inicial | Modelagem relacional versionada | juris-sync/alembic/versions/ |
| RN03 - idempotência incremental | Movimentações novas apenas | juris-sync/docs/requisitos.md |
| RN04 - atomicidade | Rollback em falha parcial | juris-sync/docs/requisitos.md |
| Teste de reconciliação | Fidelidade persistida vs. fonte | juris-sync/tests/test_sync_reconciliation.py |
| Integração Postgres | Pipeline contra banco real | juris-sync/tests/integration/test_sync_service_postgres.py |
Fluxo ETL:
DataJud (ou mock) → RAG (normalização) → Pydantic (validação) → upsert idempotente
Exemplo citável: "Pipeline ETL idempotente com reconciliação: re-sync não duplica processos nem movimentações."
5. Análise de dados
O que demonstro: agregações SQL sobre base persistida, endpoints de jurimetria e regra de negócio para análise local.
| Evidência | O que prova | Onde ver |
|---|---|---|
| Stats por tribunal | GROUP BY tribunal |
juris-sync/app/api/process.py (rota stats/por-tribunal) |
| Stats por assunto | GROUP BY assunto |
juris-sync/app/api/process.py (rota stats/por-assunto) |
| RN15 - jurimetria local | Análise sempre sobre base persistida | juris-sync/docs/requisitos.md |
| Testes dos endpoints de stats | Comportamento validado | juris-sync/tests/test_api.py (test_api_jurimetria_stats_endpoints) |
| Case study - seção jurimetria | Contexto de negócio | case-study-juris-sync.md |
Endpoints:
| Método | Rota | Descrição |
|---|---|---|
GET |
/api/v1/processos/stats/por-tribunal |
Contagem de processos por tribunal |
GET |
/api/v1/processos/stats/por-assunto |
Contagem de processos por assunto |
Exemplo citável: "Jurimetria via agregações SQL sobre a base local, sem nova consulta ao DataJud a cada análise."
6. Frontend (stack de mercado)
O que demonstro: cliente web Next.js/React/TypeScript consumindo a API JurisSync, com estados de UX e documentação de teste (mock vs real).
| Evidência | Onde ver |
|---|---|
| Dashboard + lista + detalhe + sync | juris-sync-web |
| Camada HTTP tipada | juris-sync-web/src/lib/api/ |
| TanStack Query + invalidação após sync | juris-sync-web/src/hooks/ |
| Guia do testador (clone local) | guia-do-testador.md |
| Testes Vitest + CI | juris-sync-web/.github/workflows/ci.yml |
Exemplo citável: "Dashboard Next.js separado da API Python, consumindo o mesmo contrato OpenAPI, com demo local em modo mock ou DataJud real."
Parte B - MGI KPI (BI de engenharia - projeto separado)
Aviso: projeto de portfólio inspirado em necessidades reais de monitoramento de equipes. Não é sistema oficial do MGI. Sem dados sensíveis ou credenciais no repositório.
7. MGI KPI Dashboard + Pipeline
O que demonstro: arquitetura full-stack para KPIs de engenharia - pipeline ETL Python (GitLab → regras em memória → Supabase) e dashboard Next.js somente leitura com agregações via RPC PostgreSQL.
| Evidência | O que prova | Onde ver |
|---|---|---|
| Dashboard web (este repo) | Visualização, auth, filtros globais, drill-down | mgi-kpi-dashboard |
| Pipeline ETL (repo irmão) | Extração GitLab/Git, transformação, upsert idempotente | mgi-kpi-pipeline |
| Server Components + cache | Performance e streaming com unstable_cache (TTL 24h) |
mgi-kpi-dashboard/lib/dashboard/ |
| Regras no banco (RPCs) | Agregações pesadas no PostgreSQL, frontend read-only | mgi-kpi-dashboard/supabase/migrations/ |
| KPIs e fluxo | CFD, throughput, lead time, alertas, sprint, parcerias | Rotas /, /fluxo, /sprint, /alertas (ver README do dashboard) |
| Testes frontend | 358 testes Vitest + Testing Library | mgi-kpi-dashboard/tests/ |
| CI + qualidade | Lint, tipos, testes, SonarCloud | .github/workflows/ci.yml |
| Lógica ETL testável | Funções puras (issue_fields.py), pytest + Ruff |
mgi-kpi-pipeline/tests/ |
| Demo deployada | Vercel com autenticação Supabase | web-mgi-delog.vercel.app |
Stack: Next.js 16, React 19, TypeScript, Tailwind 4, GovBR Design System, Recharts, Supabase (PostgreSQL + Auth), Python 3.11+, GitHub Actions, SonarCloud.
Fluxo:
GitLab / git log → mgi-kpi-pipeline (ETL Python) → Supabase (RPCs + views) → mgi-kpi-dashboard (Next.js)
Exemplo citável: "BI de engenharia com ETL Python idempotente e dashboard Next.js read-only: agregações em RPC PostgreSQL, 358 testes Vitest e CI com SonarCloud."
Parte C - PayCore (fintech / ledger)
Aviso: projeto educacional de portfólio. Não é PSP homologado. Limitações de segurança documentadas em
paycore/docs/SEGURANCA.md.
8. PayCore (carteira digital + ledger)
O que demonstro: correção financeira em backend - partidas dobradas, idempotência, concorrência sem overdraft, conciliação contábil e documentação SDD completa.
| Evidência | O que prova | Onde ver |
|---|---|---|
| Ledger double-entry | Saldo derivado, nunca armazenado | paycore/app/services/ledger.py |
| Conta de settlement | Soma-zero global (PIX in/out) | PaymentService.confirm_deposit |
| Idempotência | Idempotency-Key + constraint UNIQUE |
app/api/deps.py |
| Concorrência | SELECT FOR UPDATE na conta debitada |
test_transfers.py |
| Conciliação admin | Prova integridade do ledger | ReconciliationService |
| Requisitos RN01-RN17 | BDD + rastreabilidade | paycore/docs/requisitos.md |
| Segurança e limitações | Threat model explícito | paycore/docs/SEGURANCA.md |
| Case study | Narrativa de produto | case-study-paycore.md |
| CI | Ruff + Black + pytest (Postgres) | .github/workflows/ci.yml |
Stack: Python 3.11+, FastAPI, SQLAlchemy 2.0 async, PostgreSQL 16, Alembic, JWT, bcrypt, Docker Compose.
Exemplo citável: "Ledger de partidas dobradas com 33 testes incluindo corrida de transferências e dupla confirmação de depósito - documentação SDD com requisitos, C4 e matriz de segurança."
Mapa rápido: competência → artefato
JurisSync
graph LR
PM[Gestão de produto] --> REQ[requisitos.md]
PM --> CS[case-study]
PM --> ROAD[roadmap sprints]
DEV[Desenvolvimento] --> APP[app/]
DEV --> DOCKER[Docker + CI]
FE[Frontend] --> WEB[juris-sync-web]
FE --> GUIDE[guia-do-testador]
QA[Automação de testes] --> TESTS[tests/]
QA --> CI[GitHub Actions]
DATA[Eng. dados] --> SYNC[sync_service]
DATA --> ALEMBIC[alembic/]
ANALISE[Análise] --> STATS[stats endpoints]
ANALISE --> RN15[RN15]
PayCore
graph LR
PM[Gestão SDD] --> REQ[paycore/requisitos.md]
PM --> SEC[paycore/SEGURANCA.md]
PM --> CS_PAY[case-study-paycore]
LEDGER[Ledger] --> LS[LedgerService]
PAY[Pagamentos] --> PS[PaymentService]
PS --> LS
QA[Testes] --> T33[33 testes]
QA --> CI_PAY[GitHub Actions]
MGI KPI
graph LR
GL[GitLab / git log] --> PIPE[mgi-kpi-pipeline]
PIPE --> SB[(Supabase RPCs)]
SB --> DASH[mgi-kpi-dashboard]
DASH --> KPI[KPIs / fluxo / sprint]
DASH --> TESTS[358 testes Vitest]
Outros repositórios (fora deste documento)
| Repositório | Visibilidade | Incluir em competencias.md? |
|---|---|---|
| mgi-kpi-pipeline | Público | Sim - citado na Parte B (par do dashboard) |
| paycore | Público | Sim - Parte C (fintech / ledger) |
| Situação Jurídica (produto) | Privado | Narrativa pública em case-study-situacao-juridica.md - sem links de código |
contratos-v2-analise |
Público | Opcional - incluir só se README e escopo estiverem prontos para avaliação |
| Demais privados | Privado | Evitar links - recrutador não consegue verificar |
Próximas evidências (opcional)
| Item | Status |
|---|---|
| Site live | https://mariahilmar.vercel.app |
| Dashboard Next.js (JurisSync) | Repo juris-sync-web - demo local |
| Demo MGI KPI | web-mgi-delog.vercel.app (auth Supabase) |
| Screenshots locais (Swagger, CI) | Instruções em docs/assets/README.md |
| Domínio customizado | Opcional |
| API demo pública | Não implantada (avaliação esperada: local) |
Documento do hub de portfólio. Última atualização: 2026-07-21 (inclui PayCore como eixo fintech).