Modelo Lógico
Modelo Lógico (MongoDB) - Projeto OBLIVION
Este documento descreve a estrutura das coleções e documentos para o banco de dados MongoDB do projeto OBLIVION. Ele serve como a "fonte da verdade" para a estrutura de dados que será implementada.
Coleção: usuarios
Armazena os dados de cada usuário cadastrado no sistema.
| Campo | Tipo | Descrição | Observações |
|---|---|---|---|
_id |
ObjectId | Identificador único gerado pelo MongoDB. | Chave Primária. |
nome |
String | Nome completo do usuário. | Obrigatório. |
email |
String | Email do usuário para login e contato. | Obrigatório, Índice Único. |
dataCadastro |
ISODate | Data e hora do cadastro do usuário. | Obrigatório. |
Coleção: midias
Armazena os metadados de qualquer fonte de mídia enviada (vídeo, áudio ou URL), implementando a generalização através do campo tipo.
| Campo | Tipo | Descrição | Observações |
|---|---|---|---|
_id |
ObjectId | Identificador único da mídia. | Chave Primária. |
usuarioId |
ObjectId | Referência ao _id do usuário que fez o upload. |
Chave Estrangeira (Obrigatório). |
hash |
String | Hash (ex: SHA-256) do conteúdo do arquivo. | Índice Único. Nulo se tipo="URL". |
urlNormalizada |
String | URL padronizada para evitar duplicidade de links. | Índice Único. Existe apenas se tipo="URL". |
tipo |
String | Tipo da mídia: "VIDEO", "AUDIO", ou "URL". | Obrigatório. |
nomeArquivo |
String | Nome original do arquivo enviado. | Não aplicável se tipo="URL". |
tamanhoBytes |
Number | Tamanho do arquivo em bytes. | |
tipoArquivo |
String | MIME type do arquivo (ex: "video/mp4"). | Não aplicável se tipo="URL". |
duracaoMs |
Number | Duração do conteúdo em milissegundos. | |
dataUpload |
ISODate | Data e hora do envio. | Obrigatório. |
resolucao |
String | Resolução do vídeo (ex: "1920x1080"). | Opcional (existe apenas se tipo="VIDEO"). |
canais |
String | Canais do áudio (ex: "stereo"). | Opcional (existe apenas se tipo="AUDIO"). |
linkOriginal |
String | A URL original enviada pelo usuário. | Opcional (existe apenas se tipo="URL"). |
plataforma |
String | Plataforma de origem da URL (ex: "YouTube"). | Opcional (existe apenas se tipo="URL"). |
Coleção: transcricoes
Armazena o estado e o resultado de cada processo de transcrição.
| Campo | Tipo | Descrição | Observações |
|---|---|---|---|
_id |
ObjectId | Identificador único da transcrição. | Chave Primária. |
midiaId |
ObjectId | Referência à _id da mídia que está sendo transcrita. |
Chave Estrangeira (Obrigatório). Índice. |
status |
String | Status do job: "pendente", "processando", "concluido", "erro". | Obrigatório. Índice. |
textoCompleto |
String | O texto final da transcrição. | |
dataCriacao |
ISODate | Data e hora do início do job. | Obrigatório. |
dataAtualizacao |
ISODate | Data e hora da última atualização de status. | Obrigatório. |
participantes |
Array de Objetos | Lista dos participantes identificados no texto. | Ver schema embutido abaixo. |
Schema Embutido: participantes
O campo participantes é um array de objetos, onde cada objeto segue a estrutura:
| Campo | Tipo | Descrição |
|---|---|---|
individuoDetectado |
String | Nome/rótulo do locutor (ex: "Locutor A"). |
trechosRelacionados |
Array de Objetos | Lista de trechos de fala daquele indivíduo. |