Saltar para o conteúdo
📐 Ficha de arquitetura técnica

A arquitetura do TranscribIA, explicada às suas equipas técnicas.

O documento de referência mais solicitado na fase de pré-venda. O TranscribIA é uma plataforma de transcrição de áudio concebida para organizações que precisam de compreender, auditar e controlar a cadeia de tratamento das suas gravações. Esta ficha descreve os componentes, o fluxo de dados, o isolamento entre organizações, as medidas de segurança integradas, os dois modelos de implementação e a cadeia de subcontratação — de forma factual, sem exagerar as garantias.

Ficha técnica v1.0 — 30 de junho de 2026. Editora: AMBASSADIA SARL (Mónaco). Contacto: contact@transcribia.eu.

Componentes

Uma arquitetura com serviços dedicados

Cada responsabilidade é assegurada por um serviço distinto, orquestrado através de Docker Compose (8 serviços). Nenhum dado passa por um componente cuja função não o exija.

# Diagrama geral dos componentes

┌─────────────────────────────────────────────────────────────┐
│  Utilisateurs — Frontend React 19 / TypeScript / Vite       │
└──────────────────────────┬──────────────────────────────────┘
                           ▼   HTTPS · TLS 1.2+
┌─────────────────────────────────────────────────────────────┐
│  Nginx — reverse proxy + termination TLS                    │
└─┬──────────────────────┬──────────────────────┬────────────┘
  ▼                      ▼                      ▼
┌──────────────┐   ┌──────────────────┐   ┌────────────────────┐
│  API Laravel │   │  Laravel Reverb  │   │  ClamAV            │
│  12 / PHP 8.3│   │  (WebSocket)     │   │  antivirus uploads │
│  + Sanctum   │   │  progression RT  │   │                    │
└──┬───────┬───┘   └──────────────────┘   └────────────────────┘
   │       │
   ▼       ▼
┌──────────────┐   ┌──────────────────────────────────────────┐
│  PostgreSQL  │   │  Redis 7 — cache · queues · sessions     │
│  16          │   └──────────────────────────────────────────┘
│  1 schéma /  │   ┌──────────────────────────────────────────┐
│  organisa-   │   │  Workers transcription (consommateurs)    │
│  tion        │   └─────────────────┬────────────────────────┘
└──────────────┘                     ▼
                          ┌────────────────────────────────────┐
                          │  Serveur GPU — WhisperX / pyannote │
                          │  transcription + diarisation       │
                          └─────────────────┬──────────────────┘
                                            ▼
                          ┌────────────────────────────────────┐
                          │  IA — OpenRouter (Anthropic/OpenAI)│
                          │  post-traitement · no-train        │
                          └────────────────────────────────────┘

  Sauvegardes : age (chiffrement) + rclone → Backblaze B2 / Scaleway (UE)
🖥️

Frontend

React 19 · TypeScript · Vite

  • SPA com compilação estática servida por Nginx
  • Progresso em tempo real através de Reverb (WebSocket)
  • Sem lógica de negócio no navegador
⚙️

API Laravel

Laravel 12 · PHP 8.3 · Sanctum

  • Lógica de negócio, REST, orquestração de tarefas
  • Autenticação Sanctum + 2FA TOTP
  • RBAC com 5 níveis, privilégio mínimo
🐘

PostgreSQL

PostgreSQL 16 · multi-inquilino

  • Um esquema dedicado por organização
  • Encriptação em repouso (disco + base de dados)
  • Sem consultas entre organizações
⚡

Redis

Redis 7 · cache · filas

  • Cache da aplicação e sessões
  • Filas de transcrição
  • Coordenação dos workers
📡

Laravel Reverb

WebSocket em tempo real

  • Progresso da transcrição em direto
  • Notificações e estados das tarefas
  • Canal isolado por organização
🔧

Workers de transcrição

Consumidores de filas

  • Orquestram ClamAV → GPU → IA
  • Tratamento assíncrono e reprodutível
  • Isolamento por tarefa e por organização
🎮

Servidor GPU

WhisperX · pyannote

  • Transcrição de áudio de alta precisão
  • Diarização (identificação dos intervenientes)
  • Servidor dedicado, externo à API
🤖

IA (pós-processamento)

OpenRouter · Anthropic / OpenAI

  • Formatação e pós-processamento do texto
  • Cláusula de não utilização para treino (no-train)
  • Dados temporários, sem conservação

O percurso de uma gravação

Do ficheiro de áudio ao resultado encriptado

Esta cadeia ilustra o percurso habitual de uma gravação. As medidas aplicáveis e o comportamento quando um componente está indisponível dependem da modalidade de implementação e do âmbito contratual; a política de segurança descreve, em particular, o comportamento do antivírus.

1

Carregamento encriptado

O ficheiro de áudio é transmitido por HTTPS (TLS 1.2+) até ao Nginx e depois à API Laravel.

2

Antivírus (ClamAV)

Análise sistemática do ficheiro antes de qualquer tratamento. Qualquer ficheiro suspeito é rejeitado.

3

Colocação em fila (Redis)

A tarefa de transcrição é colocada na fila Redis, isolada por organização.

4

Transcrição por GPU

Um worker transmite o áudio ao servidor GPU: WhisperX (transcrição) + pyannote (diarização).

5

Pós-processamento por IA

Chamada através de OpenRouter (Anthropic / OpenAI) para formatação. Cláusula no-train, dados temporários.

6

Armazenamento encriptado em repouso

A transcrição e os metadados são escritos no esquema PostgreSQL dedicado à organização (em repouso).

7

Exportação

O utilizador exporta o resultado (texto, legendas); o progresso é visível em tempo real através de Reverb.

Isolamento

Uma organização, um esquema PostgreSQL dedicado

O isolamento dos dados não assenta num simples filtro da aplicação: cada organização dispõe do seu próprio esquema na base de dados.

O TranscribIA aplica um modelo schema-per-organisation no PostgreSQL 16: os dados de um cliente nunca são armazenados na mesma estrutura que os de outro. O isolamento é estrutural, ao nível da base de dados, e não apenas lógico ao nível da aplicação.

Na prática, isto significa que nenhuma consulta pode, pela própria conceção, cruzar dados de duas organizações: o esquema de destino é determinado no início da sessão da organização. Esta abordagem também facilita a exportação integral, o apagamento (direito ao esquecimento) e uma eventual extração de uma organização para instalação local.

Os registos de atividade (activity_logs) também são mantidos por organização, e os registos da plataforma (audit_logs) documentam as ações sensíveis sem expor o conteúdo das transcrições.

Garantias de isolamento

  • Esquema dedicado. Um esquema PostgreSQL distinto por organização, determinado na sessão.
  • Sem consultas entre organizações. A conceção impede o cruzamento de dados de dois clientes.
  • Filas isoladas. As tarefas de transcrição são isoladas por organização no Redis.
  • Canal privado em tempo real. Os eventos Reverb (progresso) são isolados por organização.
  • Eliminação por organização. Exportação ZIP integral e apagamento seletivo de uma organização sem afetar as restantes.

Segurança desde a conceção

Controlos integrados na plataforma

As medidas abaixo são nativas e verificáveis. São apresentadas como controlos técnicos, sem prejulgar o enquadramento de conformidade específico da sua organização.

🔐

Encriptação (em trânsito e em repouso)

  • TLS 1.2+ obrigatório, HTTPS em todas as ligações (em trânsito)
  • Encriptação em repouso: disco e base de dados PostgreSQL
  • Cópias de segurança encriptadas com age (X25519 + ChaCha20-Poly1305)
  • Segredos da aplicação protegidos (AES-256-CBC)
🔑

Autenticação forte

  • Autenticação Laravel Sanctum
  • 2FA TOTP conforme com a RFC 6238, ativação por função
  • Confirmação adicional de palavra-passe para ações destrutivas
  • Limitação de pedidos, CORS restrito e política CSP
👥

Controlo de acesso (RBAC)

  • RBAC com 5 níveis: super_admin, agent, manager, team_lead, user
  • Princípio do privilégio mínimo
  • Permissões por função e por organização
  • Sem privilégios implícitos fora do âmbito da organização
📋

Registos e auditoria

  • activity_logs por organização + audit_logs da plataforma
  • Rastreabilidade de todas as ações sensíveis
  • Exportações CSV/JSON para as suas auditorias
  • Registos filtrados: sem conteúdo das transcrições
🛡️

Antimalware e reforço de segurança

  • ClamAV em todos os ficheiros carregados, antes do tratamento
  • Análise que rejeita ficheiros suspeitos
  • Componentes e assinaturas atualizados
  • Serviços isolados (Docker, uma função por serviço)
♻️

Resiliência e cópias de segurança

  • Cópias de segurança diárias encriptadas, externas, na UE
  • rclone para Backblaze B2 / Scaleway (UE)
  • Instantâneos antes do restauro (proteção contra substituição)
  • Restauro granular por organização

Dois modelos de implementação

SaaS soberano em França ou instalação local

Ambos os modos partilham exatamente o mesmo produto. A diferença reside em quem opera os controlos de segurança e onde os dados são alojados.

☁️

SaaS soberano (França)

Serviço gerido, alojado em França, rapidamente operacional.

Âmbito operado pela editora (AMBASSADIA SARL)

  • Alojamento Hostinger, centro de dados de Estrasburgo (França)
  • A editora supervisiona TLS, cópias de segurança, atualizações, ClamAV e reforço de segurança
  • Infraestrutura completa gerida (8 serviços Docker Compose)
  • Cópias de segurança externas na UE (Backblaze B2 / Scaleway)
  • DPA e documentação de conformidade prontos a utilizar
🏢

Instalação local (na sua infraestrutura)

Implementação autónoma no seu ambiente, sem saída de dados.

Âmbito operado pela sua organização

  • Docker Compose autónomo (8 serviços), na sua infraestrutura
  • O seu responsável de segurança gere o reforço, os registos, as cópias de segurança e a monitorização
  • Servidor GPU e IA configuráveis (possibilidade de modelos locais)
  • Controlo total do inventário e dos controlos
  • Adequado a ambientes classificados ou com fortes exigências de segurança

Em modo SaaS soberano, a editora opera e documenta os controlos para as suas auditorias. Em modo instalação local, a responsabilidade operacional pelas medidas (reforço, monitorização, cópias de segurança e atualizações) cabe à sua organização. Os 8 serviços Docker Compose são idênticos nos dois casos.

Cadeia de fornecimento

Subcontratantes e fluxos externos

O TranscribIA recorre a um número limitado de subcontratantes, todos situados na União Europeia. Sem transferências para fora da UE por predefinição.

🏗️

Hostinger

Alojamento SaaS (computação + armazenamento primário)

Localização
Estrasburgo, França
Dados
Ficheiros de áudio, metadados e base PostgreSQL (encriptados em repouso)
🗄️

Backblaze B2 + Scaleway

Cópias de segurança externas encriptadas (age + rclone)

Localização
União Europeia (B2 UE / Scaleway França)
Dados
Apenas cópias de segurança encriptadas — sem dados em claro
🤖

OpenRouter (Anthropic / OpenAI)

Encaminhamento de IA para pós-processamento do texto

Localização
Trânsito por API, cláusula no-train
Dados
Transcrições / instruções temporárias — sem conservação nem treino
🎮

Servidor GPU (WhisperX / pyannote)

Transcrição de áudio + diarização dos intervenientes

Localização
Infraestrutura dedicada, União Europeia
Dados
Ficheiros de áudio temporários, tratados e depois eliminados

A lista completa de subcontratantes, as suas garantias contratuais e a política de conservação estão detalhadas no dossiê público de conformidade.

Documentação e contacto

Para os seus diretores de TI, responsáveis de segurança e compradores

O dossiê completo de conformidade — registo de tratamentos, modelo de DPA, medidas de segurança, política de conservação, subcontratantes e diagramas de arquitetura — pode ser consultado publicamente, sem criar conta. A nossa equipa acompanha a análise técnica da sua organização.

Editora: AMBASSADIA SARL (Mónaco). Contacto: contact@transcribia.eu. Ficha técnica v1.0 — 30 de junho de 2026.