udistrital / autenticacion_mid

0 stars 0 forks source link

Prueba de concepto herramienta de automatización de código #79

Closed milo19980525 closed 9 months ago

milo19980525 commented 9 months ago

Se requiere desarrollar una prueba de concepto para automatización de código empleando alguna de las herrmientas encontradas en #75.

Especificaciones técnicas

Sub Tareas

Criterios de aceptación

Requerimientos

Dependencias

Definition of Ready - DoR

Definition of Done - DoD - Desarrollo

milo19980525 commented 9 months ago

@a52290451 Por favor comentar lo adelantado en el issue.

a52290451 commented 9 months ago

Herramienta utilizada

Para la automatización de código en la creación y refactorización de proyectos, se empleo Hygen, cuya investigación se encuentra en: #75

Creación de plantilla para API_MID en GO

Para la creación de la plantilla API_MID se utilizo como punto de referencia la API CUMPLIDOS_DVE_MID. La implementación inicial deja como resultado la siguiente estructura de archivos fuente:

image

Los datos que se configuraron para que sean ingresados por parte del usuario y lograr un mayor nivel de personalización de la API generada son:

Para la creación de la API se ejecuta el siguiente comando:

hygen api_mid_template with-prompt --appname api_mid_prueba

En donde:

Luego se solicita que se ingresen los datos anteriormente mencionados:

image

Y, finalmente, de forma automática, se crea el directorio con el nombre de la API señalado, y en su interior todos los archivos correspondientes:

image

La vista final de la estructura de archivos de la nueva API queda de la siguiente manera.

image

Nota: cabe aclarar que, al finalizar la generación de los archivos, de igual forma se instrumentan una serie de comandos que generan archivos complementarios como "go.mod", "go.sum", "swagger.json", "swagger.yml" entre otros. Todo esto con el fin de lograr que la API quede lista para su ejecución.

Creación de plantilla para API_CRUD en GO, con base en una BD

Para la creación de la plantilla API_CRUD, no se empleó una API base, en su lugar, a través del comando:

'bee api appname -driver=postgres -conn="postgres:// pguser:pgpass@pghost/dbname?sslmode=disable

Se realiza la creación de una API_CRUD inicial, con base en una Base de datos Postgres existente.

La implementación inicial deja como resultado la siguiente estructura de archivos fuente:

image

Tras la generación inicial de la API_CRUD, hygen sobrescribe y actualiza los archivos app.conf y main.go. El resto de los archivos, se mantienen iguales.

Los datos que se configuraron para que sean ingresados por parte del usuario y lograr un mayor nivel de personalización de la API generada son:

Para la creación de la API se ejecuta el siguiente comando:

hygen api_crud_template with-prompt --appname api_crud_prueba

En donde:

Luego se solicita que se ingresen los datos anteriormente mencionados:

image

Y, finalmente, de forma automática, se crea el directorio con el nombre de la API señalado, y en su interior todos los archivos correspondientes:

image

La vista final de la estructura de archivos de la nueva API queda de la siguiente manera.

image

Nota:

  1. cabe aclarar que, al finalizar la generación de los archivos, de igual forma se instrumentan una serie de comandos que generan archivos complementarios como "go.mod", "go.sum", "swagger.json", "swagger.yml" entre otros. Todo esto con el fin de lograr que la API quede lista para su ejecución.
  2. Para la creación de la API_CRUD se requiere tener creada una Base de Datos, la cual se utilizara como base para la generación de la estructura base.

DEUDA TÉCNICA

  1. Inyección de código: se requiere implementar inyección de código para ajustar partes específicas de la estructura base generada en la creación de la API.
  2. Refactor del API: se requiere automatizar el refactor del API.
  3. Migración del API: Ajustar la plantilla con los cambios sugeridos en Beego Migrations.

Creación de plantilla para Nuevos Clientes en Angular JS y TypeScript

Para la creación del generador de Nuevos Clientes se utilizó como base la plantilla señalada en los lineamientos de la OATIC.

La implementación inicial deja como resultado la siguiente estructura de archivos fuente:

image

Son aproximadamente 56 archivos base, lo cual supone una gran cuota inicial de archivos para un nuevo cliente.

Tras la generación inicial del cliente, hygen ejecuta una serie de comandos que copian los archivos estáticos, como assets y demás, a sus ubicaciones correspondientes.

Los datos que se configuraron para que sean ingresados por parte del usuario y lograr un mayor nivel de personalización de la API generada son:

Para la creación de la API se ejecuta el siguiente comando:

hygen cliente_oas_template with-prompt --appname cliente_prueba

En donde:

Luego se solicita que se ingresen los datos anteriormente mencionados:

image

Y, finalmente, de forma automática, se crea el directorio con el nombre del cliente señalado, y en su interior todos los archivos correspondientes:

image

La ejecución de este comando tarde un poco ya que internamente ejecuta el comando:

npm i --legacy-peer-deps

El cual se encarga de instalar todos los paquetes y dependencias del proyecto.

La vista final de la estructura de archivos del nuevo cliente queda de la siguiente manera.

image

Nota: cabe aclarar que, al finalizar la generación de los archivos, de igual forma se instrumentan una serie de comandos que generan y copian archivos complementarios y realizan la instalación de dependencias del proyecto. Todo esto con el fin de lograr que el cliente quede lista para su ejecución.

DEUDA TÉCNICA

  1. Automatización de estilos: de forma interactiva, se puede automatizar la selección de estilo que tendrá el nuevo cliente.
  2. Inclusión de archivos estáticos: queda pendiente la inclusión de archivos estáticos al interior de la plantilla. Actualmente se encuentran por fuera y son clonados desde una dirección externa.


DEUDA TÉCNICA GENERAL

Automatización y sincronización con GITHUB

a52290451 commented 9 months ago

@milo19980525 Se requiere especificar Repositorio para cargar las plantillas creadas

milo19980525 commented 9 months ago

@a52290451 porfa crear un nuevo repo para cada plantilla y subirlo allí, muy buen trabajo.

a52290451 commented 9 months ago

Creación de repositorios

  1. Repositorio para Plantilla API_MID: https://github.com/udistrital/plantilla_api_mid

  2. Repositorio para Plantilla API_CRUD: https://github.com/udistrital/plantilla_api_mid

  3. Repositorio para Plantilla de Nuevos Clientes: https://github.com/udistrital/plantilla_cliente_oas