Saltar al contenido principal

Tipos-de-usuarios-por-Espacio

Ver en Git


Tipos de usuario por espacio

Intro​

Para que los administradores de los espacios asignen a los usuarios el tipo de usuario, se definen cuotas de tipos de usuarios. Esto es, para cada espacio, una cantidad de cierto tipo de usuario disponible para asignar.

Una WorkspaceUserTypeQuota se define como:

  • workspace_id: int id del espacio
  • user_type_id: int id del tipo de usuario
  • user_type: str nombre del tipo de usuario
  • original_quota: int cantidad disponible
  • valid_from: str YYYY/MM/DD fecha desde la cual tiene vigencia
  • valid_to: str YYYY/MM/DD fecha hasta la cual tiene vigencia
  • consumed_quota: int cantidad asignada a usuarios
  • available_quota: int = original_quota - consumed_quota
  • users: [int] sólo disponible cuando consulta el administrador, listado de ids de usuarios que tienen asignada tal cuota

Importante!​

Hoy en día se dan de alta addons de usuarios a los espacios (por ejemplo 5 usuarios espacio Profesional al espacio X). Debido a que muchos espacios tienen sus propios tipos de usuarios con variantes, fue necesario desvincular los addons cargados al espacio de las cuotas de usuarios.

Funcionamiento​

Las cuotas se definen en la tabla escritorios_cuota_tipo_usuario.

Si hay una cuota de tipo de usuario vigente duplicada para un mismo espacio, se considera la más reciente.

  • CCSS da de alta las cuotas
  • Los administradores de espacios verán el tipo de usuario en el listado de usuarios.
  • En los espacios que no tengan cuota cargada, todo seguirá funcionando como de normal:
    • Al invitar usuarios, se crean con el plan base definido en la tabla escritorios
  • En los espacios que tengan cuota cargada:
    • Los administradores verán un listado de las vigentes en el admin del espacio, con su consumo.
    • Al invitar un usuario podrán elegir el tipo de usuario según las cuotas vigentes.
    • Podrán editar el tipo de usuario de cada usuario según las cuotas vigentes.
  • Se envía un mail semanal automático a soporte con las discrepancias que haya entre:
    • cuotas cargadas
    • addons cargados
    • tipos de usuarios asignados

CCSS: manejo de cuotas​

CCSS cuenta con apis para el manejo de cuotas de usuarios.

Listado de cuotas​

GET /api/internal/workspace_admin/user_types ? workspace_id = XXX

Respuesta JSON con array de WorkspaceUserTypeQuota:

{
"data": [{...}, {...}]
}

Carga de cuotas​

Si existe alguna vigente para el espacio con el mismo tipo de usuario, eliminará la cuota anterior con fecha de inicio de la nueva.

POST /api/internal/workspace_admin/user_types

Body JSON con WorkspaceUserTypeQuota:

{
"workspace_id": 1,
"user_type_id": 70,
"original_quota": 5,
"valid_from": "YYYY/MM/DD",
"valid_to": "YYYY/MM/DD"
}

Listado de tipos de usuario​

GET /api/internal/user_types

Respuesta JSON con array de objetos:

{
"data": [{
"user_type_id": 5,
"user_type": "Profesional Full 1000"
}]
}

Baja/modificación de cuotas​

Se modifica/elimina cuotas cambiando la fecha de validez. Se envía el objeto final.

PATCH /api/internal/workspace_admin/user_types

Body JSON con WorkspaceUserTypeQuota:

{
"workspace_id": 1,
"user_type_id": 70,
"original_quota": 5,
"valid_from": "YYYY/MM/DD",
"valid_to": "YYYY/MM/DD"
}

Administradores​

Los administradores del espacio verán en el panel de admin las cuotas y su consumo. En caso que el espacio no tenga cuotas asignadas, no mostrar el panel.

Listado de usuarios​

En el listado de usuarios ya existente, se agrega el tipo de usuario y su id.

GET /api/desktops

A cada objeto de usuario se agregan:

{
...,
"id_tipo_usuario": 5,
"tipo_usuario": "Profesional Full 1000"
}

Traducir. El FrontEnd ya dispone del diccionario con las traducciones.

Listado de cuotas​

GET /api/workspaces/user_types

Respuesta JSON con array de WorkspaceUserTypeQuota:

{
"data": [{...}, {...}]
}

Invitación usuarios​

EN caso que el espacio tenga cuotas, en la invitación de usuarios agregar el campo id_tipo_usuario Es necesraio validar en FrontEnd la disponibilidad de tipos de usuarios. Si el espacio no tiene cuotas, no enviar el parámetro porque fallará por falta de cuota.

POST /api/escritorio/usuario

Al Body JSON agregar:

{
....
"id_tipo_usuario": 5
}

Respuesta error en caso que no hay más cuota disponible:

{
"code": 6
}

Si la respuesta es HTTP 200, recargar el listado de cuotas.

Modificación usuarios​

EN caso que el espacio tenga cuotas, en la modificación de usuarios agregar el campo id_tipo_usuario. Es necesraio validar en FrontEnd la disponibilidad de tipos de usuarios. Si el espacio no tiene cuotas, no enviar el parámetro porque fallará por falta de cuota.

PATCH /api/escritorio/usuario

Al Body JSON agregar:

{
....
"id_tipo_usuario": 5
}

Respuesta error en caso que no hay más cuota disponible:

{
"code": 6
}

Si la respuesta es HTTP 200, recargar el listado de cuotas.

Discrepancias​

Una vez por semana se analizan las posibles discrepancias que pueda haber. Se enviará un mail a soporte en caso que un espacio tenga cuotas cargadas y:

  • Haya usuarios con un tipo de usuario no respaldado por una cuota (sea por cantidad disponible o por no existir la cuota)
  • La suma de cantidad de usuarios de addons que el espacio tenga cargados sea distinta a la suma de las cuotas vigentes.
    • Ejemplo: si un espacio tiene addons por 5 Gestión y 5 Profesional, pero tiene 2 cuotas, una de 10 y otra de 5. No se comparan los tipos de usuario sino las cantidades