Se implemento la conexion a la base de datos mongodb, para alojar en ella el dataframe generado a partir de los archivos csv. Al cargar archivos pequeños no se noto ningun problema, pero al intentar cargar archivos con miles de registros un error aparecio. Resulta ser que cada collecion dentro de mongodb no puede sobrepasar los 16mb de tamaño. Buscando soluciones encontre la funcion de gridfs, que permite alzar archivos con tamaños mayores dividiendo el archivo en varios pequeños pedazos.
Se creo un archivo con la especificacion open api para la descripcion del servicio. Se actualizo el archivo readme, con diagramas con la explicacion del funcionamiento de la api.
Se creado un nuevo modelo, retail_store, con una propiedad para la ubicacion, con este nuevo requerimiento se realizan unos cambios en el setup del proyecto, se cambia la base de datos por una que es especializada en datos geoespaciales, postgis, y se agrego para descargar una libreria para el correcto uso de datos geoespaciales, geo, en el archivo Dockerfile1
Para poder usar la version de python mas liviana posible, y tambien tener las librerias para la utilizacion de datos geospaciales se crea un dockerfile con dos stages, el primer baja e instala las librerias necesarias, y luego en el segundo stage, se copian los binarios necesarios para poder utilizarlos, de esta forma podemos tener una imagen liviana con las librerias necesarias para poder correr nuestra aplicacion. Este build en dos stages aumenta el tiempo de puesta en marcha de la aplicacion.
Luego de aplicar el two stages build, encontre un error, se soluciono simplemente agregando la libreria que faltaba ser instalada, la libreria es libpng16-16
problemas al crear grupos entre customer y user, hay un bug que no permite realizar cambios, se soluciona parcialmente comentando la linea de users dentro del modelo de customer, la solucion final seria eliminar todos los migrations files, borrar la database y hacer un fresh start. Muy costoso de momento, tal vez mas adelante.
Queda pendiente la actualizacion del archivo OpenApi, y agregar mas detalles dentro del README
El problema del grupo entre customer y user al parecer queda solucionado agregando db_column en la columna user y customer de customer_user_group. Se actualizo el archivo OpenApi3.0.2.yml
Aun persiste el problema con el grupo entre customer y el nuevo usuario. Se ha realizado la traduccion del readme.
Se agrego un nuevo endpoint para retail-stores, ahora se puede realizar un listado por customer_code, se actualizo el archivo openapi con dicho enpoint.
Se removio el campo customer_input_customer del model CustomerInput, se modificaron los endpoints para levantar los archivos csv, con los consiguientes cambios en los archivos de view, manager, logic, etc.
Bug encontrado, al dar de alta un nuevo usuario, este puede ver todos los customers registrados. Para solucionar esto se plantea continuar con el desarrollo de los grupos y los memberships.
Se realizo el fix de un bug detectado al intentar crear un nuevo retail-store y pasar mal los parametros de longitude y latitude
Bug, al utilizar el token luego de actualizarlo por el endpoint /data/users/login/refresh, en cada request se obtenia un error en el token fix, se actualizo la funcion de refresh_token dentro de login.py.
Se agrego un nuevo container (mongo-express) al docker-compose, ahora se puede ingresar a administrar por web el mongodb en el puerto 8443
Se actualizan las dependencias.