Banco
Este sistema utiliza Microsoft SQL Server como banco relacional, com mapeamento feito via TypeORM.
Principais entidades do sistema:
# 🗄️ Estrutura do Banco de Dados (SQL Server + TypeORM)
📘 Tabelas Principais
├── usuarios # 👤 Usuários do sistema
│ ├── id (int, PK) # Identificador único
│ ├── setor_id (uuid, FK → setores.id) # Setor vinculado
│ ├── cpf (varchar[11], único) # CPF do usuário
│ ├── email (varchar[255], único) # E-mail institucional
│ ├── password (varchar) # Hash da senha
│ ├── nome (varchar) # Nome
│ ├── sobrenome (varchar) # Sobrenome
│ ├── matricula (varchar[20]) # Matrícula funcional
│ ├── permissao (varchar) # SUPERADMIN | ADMIN | ASSISTENTE
│ ├── otp (varchar) # Código OTP associado
│ ├── is_active (bit, default true) # Usuário ativo/inativo
│ ├── is_superuser (bit, default false) # Indica se é superusuário
│ ├── date_joined (datetime2) # Data de criação
│ ├── last_login (datetime2) # Último login
│
├── setores # 🏢 Departamentos e locais de trabalho
│ ├── id (uuid, PK) # Identificador único
│ ├── nome (varchar[100]) # Nome do setor
│ ├── abreviacao (varchar[20]) # Abreviação do setor
│ ├── comarca (varchar[100]) # Comarca associada
│ ├── defensoria (varchar[100]) # Nome da defensoria
│ ├── predio (varchar[100]) # Nome ou código do prédio
│ ├── is_supersetor (bit, default false) # Indica se é um setor principal
│ ├── expiration_date (datetime2, null) # Data de expiração
│ ├── validated_year (datetime2, null) # Último ano de validação
│ ├── is_active (bit, default true) # Setor ativo/inativo
│
├── patrimonios # 💼 Bens e ativos cadastrados
│ ├── id (uuid, PK) # Identificador único
│ ├── setor_id (uuid, FK → setores.id) # Setor responsável
│ ├── user_created_id (int, FK → usuarios.id) # Usuário que cadastrou
│ ├── user_edit_id (int, FK → usuarios.id, null)# Último editor
│ ├── user_validate_id (int, FK → usuarios.id, null)# Validador
│ ├── especificacao (varchar[255]) # Descrição detalhada
│ ├── gestao (varchar[5], null) # Código de gestão
│ ├── tombamento (varchar[16], null) # Número de tombamento
│ ├── serie (varchar[100], null) # Nº de série
│ ├── subitem (varchar[2], null) # Código de subitem
│ ├── valor (bigint, default 0, null) # Valor do bem
│ ├── qrcode (varchar[100], null) # Código QR associado
│ ├── observacao (varchar[300], null) # Observações adicionais
│ ├── status (int, default 0) # Estado do bem (novo, validado, etc.)
│ ├── is_new (bit, default true) # Indica se é um bem recém-criado
│ ├── is_active (bit, default true) # Indica se o bem está ativo
│ ├── date_create (datetime2) # Data de criação
│ ├── date_edit (datetime2, null) # Data de última edição
│ ├── date_validate (datetime2, null) # Data de validação
│
├── otps # 🔐 Códigos temporários de autenticação
│ ├── id (uuid, PK) # Identificador único
│ ├── user_id (int, FK → usuarios.id) # Usuário vinculado
│ ├── codigo (varchar[10]) # Código OTP
│ ├── data_criacao (datetime2, default GETDATE()) # Gerado em
│ ├── data_expiracao (datetime2, default +5min) # Expira em
│
└── logs # 🧾 Histórico de ações e auditoria
├── id (int, PK) # Identificador
├── user_id (int, FK → usuarios.id) # Usuário responsável
├── action_flag (smallint, unsigned) # Código da ação (ex: 1=CREATE, 2=UPDATE)
├── action_time (datetime2) # Data e hora da ação
├── object_id (varchar[100]) # ID do objeto afetado
├── object_repr (varchar[255]) # Representação legível do objeto
├── change_message (varchar[255]) # Descrição da mudança