Skip to content

About

Investigação de incidentes com evidências, IA e revisão humana. FastAPI, PostgreSQL, Next.js e Azure OpenAI opcional.

Topics

Resources

Security policy

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

EvidenceDesk

Investigação de pedidos com fontes verificáveis e revisão por outra pessoa.

Demonstração Arquitetura Executar localmente Verificação e evidências Arthur Joanes no LinkedIn

Visão geral

O EvidenceDesk investiga casos em que o pagamento foi confirmado, mas o pedido continua pendente. A aplicação reúne eventos, snapshots e documentos; usa regras determinísticas, oferece rascunhos opcionais de IA e exige outra conta para aprovar uma revisão. Os dados da demonstração são sintéticos.

Demonstração

Investigação de pagamento: duas divergências do pedido PED-009-000 e a fonte selecionada ao lado

Captura real da aplicação em 22/09/2026, com dados sintéticos: 222 pedidos no snapshot, duas divergências do mesmo pedido e o evento de pagamento aberto no leitor de fontes. A geração por IA está desativada nesse ambiente. É um registro histórico da interface. Origem da captura.

Citação no leitor móvel, com a alegação e a fonte do mesmo snapshot

O leitor apresenta a alegação junto à fonte citada. A busca de fontes permanece ao navegar ou recarregar, e a aprovação exige uma decisão explícita e a conferência das alegações. O workbench local permite ler a fonte antes do julgamento e aponta campos incompletos.

Recorte da tabela: duas divergências do pedido PED-009-000

O recorte mostra duas divergências do mesmo pedido, entre 222 pedidos do snapshot sintético. Duas divergências não significam dois pedidos afetados. A jornada registrada em 22/09/2026, 12:34 UTC conferiu fontes, criou um dossiê, aprovou com outra conta e exportou a revisão. Prova da jornada · origem da captura.

No caso PED-009-000, as regras apontam incompatibilidade entre pagamento e snapshot e uma transição não observada dentro da cobertura. Elas não identificam a causa nem corrigem o sistema de origem.

  1. Importe fontes e confira a cobertura do snapshot.
  2. Investigue divergências, linha do tempo e originais.
  3. Edite o dossiê ou solicite um rascunho opcional de IA.
  4. Submeta a revisão para outra conta.
  5. Exporte a versão aprovada com as fontes da decisão.

Na jornada registrada acima, a consulta independente ao banco mostrou zero chamadas ao provedor antes e depois da execução. O teste da jornada cobre esse percurso. Contas distintas testaram o fluxo; a execução não avaliou a qualidade da revisão humana.

Arquitetura

O EvidenceDesk é um monólito modular com dois processos de backend: a API atende consultas e admite operações; o worker executa os trabalhos demorados. No perfil local do Compose, o banco concentra domínio, fila e orçamento.

flowchart TB
    UI["Next.js :3106<br/>Investigação e revisão"]
    API["FastAPI :8106<br/>Sessão, ACL e domínio"]
    DB[("PostgreSQL / pgvector<br/>Corpus, revisões e jobs")]
    Worker["Worker Python<br/>Ingestão, geração e exportação"]
    Files[("Volume privado /data<br/>Originais e artefatos")]
    Parser["Parser isolado<br/>Extração + localizadores"]
    Models["Serviço ML :8090<br/>Embeddings e reranker"]
    Azure["Azure OpenAI<br/>Rascunho estruturado"]

    UI -->|"Proxy /api/v1<br/>cookie + CSRF"| API
    API -->|"Consulta / revisão<br/>ou intenção + job"| DB
    API -->|"Upload e download<br/>com autorização"| Files
    DB -->|"Worker faz polling<br/>SKIP LOCKED + lease"| Worker
    Worker -->|"Commit com token<br/>e política atuais"| DB
    Worker -->|"Fontes e resultados"| Files
    Worker -->|"Extração"| Parser
    Worker -.->|"Busca híbrida opcional"| Models
    Worker -.->|"Reserva de tokens<br/>e fontes autorizadas"| Azure
Loading

Setas contínuas representam o caminho local; pontilhadas, integrações opcionais. O progresso passa pela API e pelo proxy, sem conexão direta do navegador ao banco. O worker compartilha código, banco e volumes com a API; os módulos de domínio não são microsserviços independentes.

Fronteira O que acontece nela Implementação
Navegador → API O proxy preserva sessão e streaming; o backend confere CSRF e acesso ao recorte. Proxy, identidade
HTTP → fila Finalizar importação, pedir geração ou exportar grava a intenção e o job antes de responder. Ingestão, jobs
Worker → publicação Parsing e rede ocorrem fora da transação; o commit revalida lease, token de execução e política. Dispatcher, processamento
Fontes → decisão O snapshot fixa o corpus; regras calculam divergências, e uma revisão imutável exige decisão de outra conta. Conciliação, revisões
Aplicação → IA Busca lexical funciona sem ML; geração recebe fontes delimitadas e não aprova nem altera pedidos. Ferramentas de leitura, admissão de tokens

O percurso começa no manifesto e upload, passa por extração, snapshot, incidente e conciliação, e termina no dossiê revisado e na exportação HTML autorizada. O dossiê pode ser manual ou partir de um rascunho opcional. A interface acompanha geração por eventos SSE persistidos, retomáveis com Last-Event-ID.

No perfil local, db_data, evidence_data e deletion_ledger são volumes distintos no mesmo host. O adaptador Blob e a infraestrutura Azure têm bloqueadores de implantação próprios. A arquitetura detalhada descreve contratos entre módulos, sequência de importação, modelo de dados, falhas e observabilidade.

Stack e decisões

Python FastAPI Pydantic, validação dos contratos SQLAlchemy PostgreSQL pgvector, extensão para busca vetorial TypeScript React Next.js Docker

Geração opcional por Azure OpenAI, integrada pelo SDK OpenAI:

SDK OpenAI para Python Azure OpenAI, geração opcional

O perfil ml usa PyTorch e Transformers/Sentence Transformers para embeddings e reranking locais. MLflow registra os experimentos do laboratório.

PyTorch, perfil ML opcional Hugging Face Transformers e Sentence Transformers, modelos locais MLflow, registro dos experimentos

Componente Papel e compromisso
Python, FastAPI e SQLAlchemy Domínio, autorização, persistência, importação e operações assíncronas
Pydantic Valida os contratos de ingestão, conciliação e geração
PostgreSQL Dados, fila, isolamento e recuperação; o mesmo banco concentra essas responsabilidades
pgvector Extensão do PostgreSQL para embeddings e busca vetorial no perfil opcional ml
TypeScript, React e Next.js Interface para investigar, editar, revisar e exportar
Docker Compose Operação local com volumes próprios
SDK OpenAI e Azure OpenAI Geração opcional; o fluxo manual e lexical permanece disponível
PyTorch, Transformers e Sentence Transformers Embeddings e reranker locais no perfil opcional ml
MLflow Registro dos experimentos do laboratório; candidato treinado sem promoção

Fontes e licenças dos ícones.

As versões estão fixadas nas dependências do backend, do frontend e no Compose. O nome do deployment Azure é configuração do operador; não prova a identidade ou versão do modelo, conforme o contrato da integração e a documentação Microsoft.

Conciliação, revisão e geração têm responsabilidades separadas: uma citação válida estruturalmente ainda precisa sustentar o texto. O candidato treinado permanece sem promoção e sem adjudicação humana. O model card reúne o protocolo, as medições e os limites dessa avaliação.

Executar localmente

Use Docker com containers Linux, Compose 2.24.4+ e Python 3.11+ para a CLI do host. Os overlays usam !override, que requer essa versão do Compose. O build baixa dependências; a geração Azure exige configuração própria e pode ter cobrança do provedor.

python scripts/ops.py config
python scripts/ops.py build
python scripts/ops.py start
python scripts/ops.py seed

Abra localhost:3106. Use ana@aurora.demo para investigar ou bruno@aurora.demo para revisar, com a senha pública da demonstração EvidenceDesk-demo-2026!. As contas do seed são sintéticas e os serviços ficam publicados em loopback.

python scripts/ops.py stop

stop preserva os volumes. O runbook local detalha instalação, Azure opcional e diagnóstico.

Verificação e evidências

Os comandos de testes, lint, tipos e build estão no guia de desenvolvimento. O guia do frontend descreve os contratos de navegação e autorização; o runbook de CI prepara bancos isolados para as jornadas de navegador.

O recibo de 12/10/2026 registra os snapshots, comandos e limites desta evolução. O workbench offline de avaliação, capturado em Chromium, tem versão móvel e prova automatizada. Essas imagens mostram a ferramenta de anotação, não a bancada de incidentes autenticada. Usam fixtures sintéticas, inclusive texto hostil exibido como texto para verificar escaping; o gate humano permanece inconclusivo. O executor adversarial registra contratos simulados, sem execução de modelo real.

Evidência Data e alcance
Jornada de pagamento 22/09/2026; UI/API reais, dados sintéticos e nenhuma avaliação humana
Chamadas ao provedor 22/09/2026; contagem no banco antes e depois da jornada manual
Reabertura após restauração 22/09/2026; execução histórica com identidade própria
Scan da rodada editorial 22/09/2026; imagens e base do scanner identificadas no registro

Os resultados se aplicam às versões e datas identificadas em cada registro. A lista de cenários e comandos está em verificação e desenvolvimento.

python -m pip install --require-hashes -r scripts/requirements-docs.lock
python scripts/check_repository_docs.py

O checker verifica caminhos e âncoras locais; não certifica conteúdo, sites externos ou qualidade semântica de respostas.

Limites e segurança

Política de segurança e relato de vulnerabilidades · Modelo de ameaças · Scans das imagens · Revisão dos controles em 3 de outubro de 2026.

A aplicação não corrige pedidos nem executa ferramentas de escrita nos sistemas de origem. As permissões são verificadas fora do modelo. Uma chamada com resultado desconhecido conserva sua reserva de tokens; a contabilidade é de tokens, não uma tabela monetária.

O pacote humano reúne 60 casos de desenvolvimento em oito famílias, marcado prepared_not_executed. Não há resultado de adjudicação nesse pacote; referências sintéticas não demonstram qualidade em incidentes reais. Manifesto do pacote, preparado em 22/09/2026. O conjunto reservado não foi usado nesta revisão.

O workbench local prepara rodadas dev, abre um HTML sem servidor e importa anotações com validação de versões e hashes. Cada resposta exige dois julgamentos independentes e uma decisão explícita de outro adjudicador. O relatório conserva falhas e respostas não executadas nos denominadores e mantém o gate humano inconclusivo até reunir a amostra exigida. A suíte adversarial exercita contratos com transporte simulado; comportamento de modelo real permanece not_run.

A infraestrutura Azure permanece não implantada por este projeto nos registros disponíveis: a validação local de fmt, init e validate não comprova quota, SKU, rede ou capacidade regional. O runbook hospedado detalha os bloqueadores. Scans e testes têm imagem e data próprias; não constituem garantia de ausência de falhas.

Documentação

Padrão compartilhado da documentação · Fontes e afirmações.

Para consultar Documento
Explorar o produto Demo · casos e decisões
Implementar e testar Arquitetura · API · dados · desenvolvimento
Operar e recuperar Local · backup/restore · retenção
Entender IA e orçamento Model card · modelos locais · tokens
Conferir riscos e resultados Política de segurança · threat model · publicação · fontes e afirmações
Conferir imagens Origem e reprodução
Desenvolver a interface Frontend · tipografia e acessibilidade

Autor e licença

Arthur Joanes no LinkedIn

Licença MIT. Ícones Devicon e Simple Icons: fontes e licenças. LinkedIn: Devicon, licença MIT.

About

Investigação de incidentes com evidências, IA e revisão humana. FastAPI, PostgreSQL, Next.js e Azure OpenAI opcional.

Topics

Resources

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages