CVTech — Sistema de Integração Municipal
Camada Municipal de Integração que conecta sistemas legados sem substituí-los.
2 min de leitura
Propósito
Camada Municipal de Integração
Sistema que conecta sistemas legados da prefeitura — saúde, educação, fazenda — sem substituí-los, unificando dados em um modelo canônico auditável.
Arquitetura
Camada 1
API Gateway (NestJS)
Entrada única
AuthRate LimitingLogging
Camada 2
Connector Manager
Gestão de conectores
RegistryHealth ChecksFallback
Camada 3
Data Transformation Engine
ETL canônico
MapeamentoValidaçãoNormalização
Camada 4
Sync Engine
Sincronização
CDCConflict ResolutionAudit Trail
Sub-módulos Detalhados
Modelo de Dados
prisma
model Municipality {
id String @id @default(cuid())
ibgeCode String @unique
name String
state String
connectors Connector[]
createdAt DateTime @default(now())
}
model Connector {
id String @id @default(cuid())
municipalityId String
name String
type ConnectorType
config Json
enabled Boolean @default(true)
mappings DataMapping[]
syncConfigs SyncConfig[]
municipality Municipality @relation(fields: [municipalityId], references: [id])
}
model DataMapping {
id String @id @default(cuid())
connectorId String
sourceField String
targetField String
transform Json
connector Connector @relation(fields: [connectorId], references: [id])
}
model SyncConfig {
id String @id @default(cuid())
connectorId String
mode SyncMode
cron String?
strategy ConflictStrategy
connector Connector @relation(fields: [connectorId], references: [id])
jobs SyncJob[]
}
model SyncJob {
id String @id @default(cuid())
syncConfigId String
status JobStatus
startedAt DateTime
finishedAt DateTime?
recordsRead Int @default(0)
recordsWritten Int @default(0)
errors Json?
syncConfig SyncConfig @relation(fields: [syncConfigId], references: [id])
}
model CitizenData {
id String @id @default(cuid())
cpfHash String @index
domain String
payload Json
sourceConnector String
updatedAt DateTime @updatedAt
}
model AuditLog {
id String @id @default(cuid())
actor String
action String
resource String
payload Json
occurredAt DateTime @default(now())
}API Endpoints
- GET
/connectorsListar conectores - POST
/connectorsCriar novo conector - GET
/connectors/{id}Detalhes do conector - PUT
/connectors/{id}Atualizar conector - DELETE
/connectors/{id}Remover conector - POST
/connectors/{id}/testTestar conexão - POST
/connectors/{id}/discoverDescobrir schema - POST
/connectors/{id}/syncDisparar sincronização - GET
/sync-jobsListar jobs de sync - GET
/audit-logsTrilha de auditoria
Interface de Administração
cvtech.admin / municípios / sp / connectors
Status
🟢 Ativo
Última sync
há 12 min
Registros/h
3.421
Throughput (últimas 24h)
Boas práticas
Sempre habilite health check e configure fallback para conectores críticos. Use secret-ref em vez de credenciais inline.

