trustgraph/docs/tech-specs/structured-diag-service.pt.md

282 lines
12 KiB
Markdown
Raw Normal View History

---
layout: default
title: "Especificação Técnica do Serviço de Diagnóstico de Dados Estruturados"
parent: "Portuguese (Beta)"
---
# Especificação Técnica do Serviço de Diagnóstico de Dados Estruturados
> **Beta Translation:** This document was translated via Machine Learning and as such may not be 100% accurate. All non-English languages are currently classified as Beta.
## Visão Geral
Esta especificação descreve um novo serviço invocável para diagnosticar e analisar dados estruturados dentro do TrustGraph. O serviço extrai a funcionalidade da ferramenta de linha de comando existente `tg-load-structured-data` e a expõe como um serviço de solicitação/resposta, permitindo o acesso programático às capacidades de detecção de tipo de dados e geração de descritores.
O serviço suporta três operações principais:
1. **Detecção de Tipo de Dados**: Analisa uma amostra de dados para determinar seu formato (CSV, JSON ou XML)
2. **Geração de Descritor**: Gera um descritor de dados estruturados do TrustGraph para uma determinada amostra de dados e tipo
3. **Diagnóstico Combinado**: Realiza a detecção de tipo e a geração de descritor em sequência
## Objetivos
**Modularização da Análise de Dados**: Extrai a lógica de diagnóstico de dados da CLI para componentes de serviço reutilizáveis
**Habilitar Acesso Programático**: Fornecer acesso baseado em API às capacidades de análise de dados
**Suportar Múltiplos Formatos de Dados**: Lidar com formatos de dados CSV, JSON e XML de forma consistente
**Gerar Descritores Precisos**: Produzir descritores de dados estruturados que mapeiem com precisão os dados de origem para os esquemas do TrustGraph
**Manter a Compatibilidade com Versões Anteriores**: Garantir que a funcionalidade existente da CLI continue a funcionar
**Habilitar a Composição de Serviços**: Permitir que outros serviços aproveitem as capacidades de diagnóstico de dados
**Melhorar a Testabilidade**: Separar a lógica de negócios da interface da CLI para melhor teste
**Suportar a Análise em Streaming**: Permitir a análise de amostras de dados sem carregar arquivos inteiros
## Contexto
Atualmente, o comando `tg-load-structured-data` fornece funcionalidade abrangente para analisar dados estruturados e gerar descritores. No entanto, essa funcionalidade está fortemente acoplada à interface da CLI, limitando sua reutilização.
As limitações atuais incluem:
Lógica de diagnóstico de dados incorporada no código da CLI
Sem acesso programático à detecção de tipo e à geração de descritores
Difícil integrar as capacidades de diagnóstico em outros serviços
Capacidade limitada de compor fluxos de trabalho de análise de dados
Esta especificação aborda essas lacunas, criando um serviço dedicado para o diagnóstico de dados estruturados. Ao expor essas capacidades como um serviço, o TrustGraph pode:
Permitir que outros serviços analisem dados programaticamente
Suportar pipelines de processamento de dados mais complexos
Facilitar a integração com sistemas externos
Melhorar a manutenção por meio da separação de responsabilidades
## Design Técnico
### Arquitetura
O serviço de diagnóstico de dados estruturados requer os seguintes componentes técnicos:
1. **Processador do Serviço de Diagnóstico**
Lida com solicitações de diagnóstico recebidas
Orquestra a detecção de tipo e a geração de descritores
Retorna respostas estruturadas com os resultados do diagnóstico
Módulo: `trustgraph-flow/trustgraph/diagnosis/structured_data/service.py`
2. **Detector de Tipo de Dados**
Usa a detecção algorítmica para identificar o formato de dados (CSV, JSON, XML)
Analisa a estrutura de dados, delimitadores e padrões de sintaxe
Retorna o formato detectado e as pontuações de confiança
Módulo: `trustgraph-flow/trustgraph/diagnosis/structured_data/type_detector.py`
3. **Gerador de Descritores**
Usa o serviço de prompt para gerar descritores
Invoca prompts específicos do formato (diagnosticar-csv, diagnosticar-json, diagnosticar-xml)
Mapeia campos de dados para campos de esquema do TrustGraph por meio de respostas de prompt
Módulo: `trustgraph-flow/trustgraph/diagnosis/structured_data/descriptor_generator.py`
### Modelos de Dados
#### StructuredDataDiagnosisRequest
Mensagem de solicitação para operações de diagnóstico de dados estruturados:
```python
class StructuredDataDiagnosisRequest:
operation: str # "detect-type", "generate-descriptor", or "diagnose"
sample: str # Data sample to analyze (text content)
type: Optional[str] # Data type (csv, json, xml) - required for generate-descriptor
schema_name: Optional[str] # Target schema name for descriptor generation
options: Dict[str, Any] # Additional options (e.g., delimiter for CSV)
```
#### StructuredDataDiagnosisResponse
Mensagem de resposta contendo os resultados do diagnóstico:
```python
class StructuredDataDiagnosisResponse:
operation: str # The operation that was performed
detected_type: Optional[str] # Detected data type (for detect-type/diagnose)
confidence: Optional[float] # Confidence score for type detection
descriptor: Optional[Dict] # Generated descriptor (for generate-descriptor/diagnose)
error: Optional[str] # Error message if operation failed
metadata: Dict[str, Any] # Additional metadata (e.g., field count, sample records)
```
#### Estrutura do Descritor
O descritor gerado segue o formato existente de descritor de dados estruturados:
```json
{
"format": {
"type": "csv",
"encoding": "utf-8",
"options": {
"delimiter": ",",
"has_header": true
}
},
"mappings": [
{
"source_field": "customer_id",
"target_field": "id",
"transforms": [
{"type": "trim"}
]
}
],
"output": {
"schema_name": "customer",
"options": {
"batch_size": 1000,
"confidence": 0.9
}
}
}
```
### Interface de Serviço
O serviço exporá as seguintes operações através do padrão de solicitação/resposta:
1. **Operação de Detecção de Tipo**
Entrada: Amostra de dados
Processamento: Analisar a estrutura de dados usando detecção algorítmica
Saída: Tipo detectado com pontuação de confiança
2. **Operação de Geração de Descritor**
Entrada: Amostra de dados, tipo, nome do esquema de destino
Processamento:
Chamar o serviço de prompt com o ID de prompt específico do formato (diagnosticar-csv, diagnosticar-json ou diagnosticar-xml)
Passar a amostra de dados e os esquemas disponíveis para o prompt
Receber o descritor gerado da resposta do prompt
Saída: Descritor de dados estruturados
3. **Operação de Diagnóstico Combinado**
Entrada: Amostra de dados, nome de esquema opcional
Processamento:
Usar a detecção algorítmica para identificar o formato primeiro
Selecionar o prompt específico do formato apropriado com base no tipo detectado
Chamar o serviço de prompt para gerar o descritor
Saída: Tanto o tipo detectado quanto o descritor
### Detalhes da Implementação
O serviço seguirá as convenções do serviço TrustGraph:
1. **Registro de Serviço**
Registrar como tipo de serviço `structured-diag`
Usar tópicos padrão de solicitação/resposta
Implementar a classe base FlowProcessor
Registrar PromptClientSpec para a interação com o serviço de prompt
2. **Gerenciamento de Configuração**
Acessar as configurações do esquema através do serviço de configuração
Armazenar em cache os esquemas para desempenho
Lidar com atualizações de configuração dinamicamente
3. **Integração de Prompt**
Usar a infraestrutura existente do serviço de prompt
Chamar o serviço de prompt com IDs de prompt específicos do formato:
`diagnose-csv`: Para análise de dados CSV
`diagnose-json`: Para análise de dados JSON
`diagnose-xml`: Para análise de dados XML
Os prompts são configurados na configuração do prompt, e não codificados no serviço
Passar esquemas e amostras de dados como variáveis de prompt
Analisar as respostas do prompt para extrair os descritores
4. **Tratamento de Erros**
Validar as amostras de dados de entrada
Fornecer mensagens de erro descritivas
Lidar com dados malformados de forma elegante
Lidar com falhas no serviço de prompt
5. **Amostragem de Dados**
Processar tamanhos de amostra configuráveis
Lidar com registros incompletos de forma apropriada
Manter a consistência da amostragem
### Integração de API
O serviço será integrado com as APIs TrustGraph existentes:
Componentes Modificados:
`tg-load-structured-data` CLI - Refatorado para usar o novo serviço para operações de diagnóstico
Flow API - Estendido para suportar solicitações de diagnóstico de dados estruturados
Novos Pontos de Extremidade do Serviço:
`/api/v1/flow/{flow}/diagnose/structured-data` - Endpoint WebSocket para solicitações de diagnóstico
`/api/v1/diagnose/structured-data` - Endpoint REST para diagnóstico síncrono
### Fluxo de Mensagens
```
Client → Gateway → Structured Diag Service → Config Service (for schemas)
Type Detector (algorithmic)
Prompt Service (diagnose-csv/json/xml)
Descriptor Generator (parses prompt response)
Client ← Gateway ← Structured Diag Service (response)
```
## Considerações de Segurança
Validação de entrada para prevenir ataques de injeção
Limites de tamanho em amostras de dados para prevenir ataques de negação de serviço (DoS)
Sanitização de descritores gerados
Controle de acesso através da autenticação TrustGraph existente
## Considerações de Desempenho
Cache de definições de esquema para reduzir o número de chamadas ao serviço de configuração
Limitar o tamanho das amostras para manter um desempenho responsivo
Usar processamento em fluxo para grandes amostras de dados
Implementar mecanismos de timeout para análises de longa duração
## Estratégia de Testes
1. **Testes Unitários**
Detecção de tipo para vários formatos de dados
Precisão da geração de descritores
Cenários de tratamento de erros
2. **Testes de Integração**
Fluxo de solicitação/resposta do serviço
Recuperação e cache de esquema
Integração com a interface de linha de comando (CLI)
3. **Testes de Desempenho**
Processamento de grandes amostras
Tratamento de solicitações concorrentes
Uso de memória sob carga
## Plano de Migração
1. **Fase 1**: Implementar o serviço com a funcionalidade principal
2. **Fase 2**: Refatorar a CLI para usar o serviço (manter a compatibilidade com versões anteriores)
3. **Fase 3**: Adicionar endpoints de API REST
4. **Fase 4**: Descontinuar a lógica da CLI incorporada (com aviso prévio)
## Cronograma
Semana 1-2: Implementar o serviço principal e a detecção de tipo
Semana 3-4: Adicionar geração de descritores e integração
Semana 5: Testes e documentação
Semana 6: Refatoração da CLI e migração
## Perguntas Abertas
O serviço deve suportar formatos de dados adicionais (por exemplo, Parquet, Avro)?
Qual deve ser o tamanho máximo da amostra para análise?
Os resultados do diagnóstico devem ser armazenados em cache para solicitações repetidas?
Como o serviço deve lidar com cenários de vários esquemas?
Os IDs de prompt devem ser parâmetros configuráveis para o serviço?
## Referências
[Especificação do Descritor de Dados Estruturados](structured-data-descriptor.md)
[Documentação de Carregamento de Dados Estruturados](structured-data.md)
`tg-load-structured-data` implementação: `trustgraph-cli/trustgraph/cli/load_structured_data.py`