Estados y Acciones de Notas¶
Ciclo de Vida de una Nota¶
Una Nota en GDI tiene un doble ciclo de vida: como documento oficial (draft → firma → official) y como comunicacion (recepcion → lectura → archivo). El primer ciclo sigue las mismas reglas que cualquier documento del sistema. El segundo es propio del modulo de Notas.
Ciclo de Vida como Documento¶
La Nota pasa por los mismos estados que cualquier documento oficial:
stateDiagram-v2
[*] --> draft: Creacion
draft --> sent_to_sign: Inicia circuito de firma
sent_to_sign --> signing_process: Numerador firma
signing_process --> official: Todos los firmantes firman
sent_to_sign --> rejected: Firmante rechaza
signing_process --> rejected: Firmante rechaza
rejected --> draft: Vuelve a edicion
official --> [*]: Visible en bandejas
| Estado | Descripcion |
|---|---|
draft |
Borrador en edicion. Se definen destinatarios, contenido y firmantes |
sent_to_sign |
Enviada al circuito de firma. Pendiente de numerador |
signing_process |
Numerador firmo, pendiente de firmantes restantes |
official |
Todos firmaron. Numero oficial asignado. Visible para destinatarios |
rejected |
Un firmante rechazo con observaciones. Vuelve a draft |
Ciclo de Vida como Comunicacion¶
Una vez que la Nota es official, inicia su ciclo como comunicacion:
Perspectiva del Destinatario¶
stateDiagram-v2
[*] --> sin_leer: Nota oficial recibida
sin_leer --> leida: Destinatario abre la nota
leida --> archivada: Destinatario archiva
sin_leer --> archivada: Destinatario archiva sin leer
archivada --> leida: Destinatario desarchiva
archivada --> sin_leer: Desarchiva (si no fue leida)
Perspectiva del Emisor¶
stateDiagram-v2
[*] --> enviada: Nota oficial completada
enviada --> parcialmente_leida: Al menos un destinatario leyo
parcialmente_leida --> leida_por_todos: Todos leyeron
leida_por_todos --> [*]
Estados del Destinatario¶
Sin Leer (sin registro en notes_openings)¶
La nota oficial fue recibida por el sector pero ningun usuario la ha abierto.
| Propiedad | Valor |
|---|---|
| Indicador visual | Resaltado / badge de "sin leer" |
| Condicion en BD | No existe registro en notes_openings para este usuario/documento |
| Bandeja | Entrada |
Acciones disponibles:
| Accion | Descripcion | Efecto |
|---|---|---|
| Abrir | Ver el detalle de la nota | Registra apertura en notes_openings |
| Archivar | Mover a archivados | is_archived = true, archived_at = NOW() |
Leida (existe registro en notes_openings)¶
Un usuario del sector abrio la nota y visualizo su contenido.
| Propiedad | Valor |
|---|---|
| Indicador visual | Sin resaltado |
| Condicion en BD | Existe registro en notes_openings con opened_at |
| Bandeja | Entrada |
Acciones disponibles:
| Accion | Descripcion | Efecto |
|---|---|---|
| Ver detalle | Consultar nuevamente la nota | Sin cambio de estado |
| Archivar | Mover a bandeja de archivados | is_archived = true, archived_at = NOW() |
Archivada (is_archived = true)¶
La nota fue archivada por el destinatario. Sigue accesible desde la bandeja de archivados.
| Propiedad | Valor |
|---|---|
| Indicador visual | Icono de archivo |
| Condicion en BD | notes_recipients.is_archived = true |
| Bandeja | Archivados |
Acciones disponibles:
| Accion | Descripcion | Efecto |
|---|---|---|
| Ver detalle | Consultar la nota archivada | Sin cambio de estado |
| Desarchivar | Volver a bandeja de entrada | is_archived = false, archived_at = NULL |
Bandejas del Sistema¶
El modulo de Notas organiza las comunicaciones en tres bandejas principales:
Bandeja de Entrada¶
Muestra las notas oficiales recibidas por los sectores del usuario que no han sido archivadas.
SELECT od.*, nr.recipient_type, nr.is_archived
FROM official_documents od
JOIN notes_recipients nr ON nr.document_id = od.id
WHERE nr.sector_id = ANY(:user_sector_ids::uuid[])
AND nr.is_archived = false
ORDER BY od.signed_at DESC;
| Informacion visible | Descripcion |
|---|---|
| Numero oficial | Numero de la nota (ej: NOTA-2026-000123-TN-LEGAL) |
| Asunto | Referencia/titulo de la nota |
| Emisor | Sector y departamento que envio |
| Fecha | Fecha de firma/oficializacion |
| Estado | Indicador de leida / sin leer |
| Tipo recipient | TO o CC (BCC no visible) |
Bandeja de Enviados¶
Muestra las notas oficiales que el usuario ha firmado/enviado, con informacion de lectura.
| Informacion visible | Descripcion |
|---|---|
| Numero oficial | Numero de la nota |
| Asunto | Referencia de la nota |
| Destinatarios | Sectores TO/CC/BCC |
| Fecha | Fecha de firma |
| Aperturas | Cantidad de destinatarios que abrieron la nota |
Bandeja de Archivados¶
Muestra las notas que el usuario ha archivado.
| Informacion visible | Descripcion |
|---|---|
| Numero oficial | Numero de la nota |
| Asunto | Referencia |
| Emisor | Sector emisor |
| Fecha de archivo | Cuando se archivo |
Resumen de Acciones por Estado¶
Como Documento¶
| Estado | Editar | Firmar | Rechazar | Visible en bandejas |
|---|---|---|---|---|
| draft | Si | No | No | No |
| sent_to_sign | No | Si (numerador) | Si | No |
| signing_process | No | Si (firmantes) | Si | No |
| official | No | No | No | Si |
| rejected | Si | No | No | No |
Como Comunicacion (solo estado official)¶
| Estado | Abrir | Archivar | Desarchivar | Ver Detalle |
|---|---|---|---|---|
| Sin leer | Si | Si | - | - |
| Leida | - | Si | - | Si |
| Archivada | - | - | Si | Si |
Lectura irreversible
La apertura de una nota es automatica e irreversible: una vez registrada en notes_openings, no se puede revertir. El archivado si es reversible (se puede desarchivar).
Visibilidad del emisor
El emisor siempre puede ver las aperturas (quien, cuando) desde el detalle de la nota, lo que permite hacer seguimiento sin confirmaciones adicionales.
Tabla Resumen de Transiciones¶
Documento¶
| Estado Origen | Accion | Estado Destino |
|---|---|---|
| draft | Iniciar firma | sent_to_sign |
| sent_to_sign | Numerador firma | signing_process |
| signing_process | Ultimo firmante firma | official |
| sent_to_sign/signing_process | Firmante rechaza | rejected |
| rejected | Editar y reenviar | draft |
Comunicacion¶
| Estado Origen | Accion | Estado Destino | Campo Afectado |
|---|---|---|---|
| Sin leer | Abrir nota | Leida | INSERT notes_openings |
| Sin leer | Archivar | Archivada (sin leer) | is_archived = true, archived_at = NOW() |
| Leida | Archivar | Archivada | is_archived = true, archived_at = NOW() |
| Archivada | Desarchivar | Leida/Sin leer | is_archived = false, archived_at = NULL |