Modelo de Datos: Modulo de Organigrama¶
Este documento detalla la estructura de las tablas principales que componen el modulo de Organigrama en GDI, responsable de la gestion de la estructura municipal, usuarios y jerarquias.
Tabla: municipalities¶
Proposito: Almacena la informacion de cada municipio o entidad que utiliza la plataforma. Es el nivel mas alto de la jerarquia. Vive en el schema public.
| Columna | Tipo de Dato | Descripcion |
|---|---|---|
id_municipality |
uuid |
PK - Identificador unico del municipio. |
name |
varchar |
Nombre oficial del municipio. |
country |
country_enum |
Pais al que pertenece (AR, BR, UY, CL). |
acronym |
varchar |
Sigla unica para el municipio (ej. "TNV"). |
schema_name |
varchar |
Nombre del esquema de base de datos asignado. |
tax_identifier |
varchar |
Identificador fiscal del municipio (CUIT/RUC). |
is_active |
boolean |
true si el municipio esta activo en la plataforma. |
created_at |
timestamp |
Fecha de creacion del registro. |
audit_data |
jsonb |
Metadatos de auditoria. |
created_by |
uuid |
FK - Usuario que registro el municipio. |
CREATE TABLE public.municipalities (
id_municipality uuid NOT NULL,
name character varying(50) NOT NULL,
country public.country_enum NOT NULL,
acronym character varying(10) NOT NULL,
schema_name character varying(50) NOT NULL,
tax_identifier character varying(20),
is_active boolean DEFAULT true NOT NULL,
created_at timestamp without time zone DEFAULT now() NOT NULL,
audit_data jsonb,
created_by uuid NOT NULL
);
Tabla: departments¶
Proposito: Define las reparticiones, secretarias o direcciones que componen la estructura principal del municipio. Cada reparticion puede tener un titular (head_user_id) asignado.
| Columna | Tipo de Dato | Descripcion |
|---|---|---|
department_id |
uuid |
PK - Identificador unico de la reparticion. |
name |
varchar |
Nombre completo de la reparticion. |
acronym |
varchar |
Sigla unica de la reparticion. |
parent_jurisdiction_id |
uuid |
FK - ID de la reparticion padre para crear jerarquias. |
rank_id |
uuid |
FK - Nivel jerarquico o rango (ranks). |
head_user_id |
uuid |
FK - Usuario titular o responsable de la reparticion (users). |
is_active |
boolean |
true si la reparticion esta operativa. |
start_date |
timestamp |
Fecha de inicio de actividades. |
end_date |
timestamp |
Fecha de cese de actividades. |
primary_color |
varchar(7) |
Color visual asociado (formato hex, ej. "#3A3A9A"). |
audit_data |
jsonb |
Metadatos de auditoria. |
municipality_id |
uuid |
FK - Municipio al que pertenece (municipalities). |
CREATE TABLE departments (
department_id uuid NOT NULL,
name character varying(100) NOT NULL,
acronym character varying(20),
parent_jurisdiction_id uuid,
rank_id uuid,
head_user_id uuid,
is_active boolean DEFAULT true NOT NULL,
start_date timestamp without time zone DEFAULT CURRENT_DATE NOT NULL,
end_date timestamp without time zone,
primary_color varchar(7),
audit_data jsonb,
municipality_id uuid,
CONSTRAINT departments_pkey PRIMARY KEY (department_id),
CONSTRAINT departments_rank_fkey FOREIGN KEY (rank_id) REFERENCES ranks(rank_id)
);
Tabla: sectors¶
Proposito: Representa las subdivisiones o equipos de trabajo dentro de una reparticion.
| Columna | Tipo de Dato | Descripcion |
|---|---|---|
sector_id |
uuid |
PK - Identificador unico del sector. |
department_id |
uuid |
FK - Reparticion a la que pertenece el sector (departments). |
acronym |
varchar |
Sigla unica del sector dentro de su reparticion. |
is_active |
boolean |
true si el sector esta operativo. |
start_date |
timestamp |
Fecha de inicio de actividades. |
end_date |
timestamp |
Fecha de cese de actividades. |
primary_color |
varchar(7) |
Color visual asociado (formato hex). |
audit_data |
jsonb |
Metadatos de auditoria. |
CREATE TABLE sectors (
sector_id uuid NOT NULL,
department_id uuid NOT NULL,
acronym character varying(50) NOT NULL,
is_active boolean DEFAULT true NOT NULL,
start_date timestamp without time zone NOT NULL,
end_date timestamp without time zone,
primary_color varchar(7),
audit_data jsonb,
CONSTRAINT sectors_pkey PRIMARY KEY (sector_id)
);
Tabla: users¶
Proposito: Almacena la informacion de todos los usuarios del sistema, vinculandolos a la estructura organizacional y al sistema de autenticacion.
| Columna | Tipo de Dato | Descripcion |
|---|---|---|
user_id |
uuid |
PK - Identificador unico del usuario en la aplicacion. |
auth_id |
varchar |
ID del usuario en el sistema de autenticacion (Supabase Auth). |
full_name |
varchar |
Nombre completo del usuario. |
email |
varchar |
Correo electronico unico del usuario. |
cuit |
varchar |
CUIT/CUIL del usuario. |
profile_picture_id |
uuid |
FK - Referencia a la imagen de perfil (media_files). |
sector_id |
uuid |
FK - Sector principal al que pertenece el usuario (sectors). |
is_active |
boolean |
true si el usuario puede acceder al sistema. |
last_access |
timestamp |
Fecha y hora del ultimo acceso. |
created_at |
timestamp |
Fecha de creacion del usuario. |
identity_check |
jsonb |
Datos de verificacion de identidad (RENAPER, etc.). |
audit_data |
jsonb |
Metadatos de auditoria. |
default_seal_id |
bigint |
ID del sello por defecto para las firmas del usuario. |
CREATE TABLE users (
user_id uuid NOT NULL,
auth_id character varying(100) NOT NULL,
full_name character varying(100) NOT NULL,
email character varying(100) NOT NULL,
cuit character varying(20),
profile_picture_id uuid,
sector_id uuid,
is_active boolean DEFAULT true NOT NULL,
last_access timestamp without time zone NOT NULL,
created_at timestamp without time zone DEFAULT now() NOT NULL,
identity_check jsonb,
audit_data jsonb,
default_seal_id bigint,
CONSTRAINT users_pkey PRIMARY KEY (user_id)
);
Tabla: ranks¶
Proposito: Define los niveles jerarquicos o rangos funcionales (ej. Intendente, Secretario, Director) para asignarlos a las reparticiones. Esta tabla es per-tenant (vive en el schema del municipio).
| Columna | Tipo de Dato | Descripcion |
|---|---|---|
rank_id |
uuid |
PK - Identificador unico del rango. |
name |
varchar |
Nombre del rango (ej. "Secretaria"). |
level |
integer |
Nivel jerarquico numerico (menor = mas alto). |
head_signature |
varchar |
Cargo que aparecera en la firma (ej. "Secretario"). |
audit_data |
jsonb |
Metadatos de auditoria. |
CREATE TABLE ranks (
rank_id uuid NOT NULL,
name character varying(100) NOT NULL,
level integer,
head_signature character varying(255) NOT NULL,
audit_data jsonb,
CONSTRAINT ranks_pkey PRIMARY KEY (rank_id)
);
Tabla: user_sector_permissions¶
Proposito: Otorga permisos especiales a un usuario sobre un sector especifico, mas alla de los permisos de su rol. Permite que un usuario opere en sectores adicionales al suyo principal.
| Columna | Tipo de Dato | Descripcion |
|---|---|---|
user_id |
uuid |
PK, FK - Referencia al usuario (users). |
sector_id |
uuid |
PK, FK - Referencia al sector (sectors). |
audit_data |
jsonb |
Metadatos de auditoria. |