Skip to content

Mosaite es un entorno de práctica para la enseñanza y práctica de la contabilidad básica.

Notifications You must be signed in to change notification settings

luantorv/mosaite

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mosaite

Mosaite es una plataforma que sirve como entorno de práctica para la enseñanza y práctica de la contabilidad básica.

Permite registrar asientos contables, generar libros diarios y explorar conceptos clave desde una interfaz web intuitiva.

Además, incluye herramientas basadas en lenguaje natural —como búsquedas y un asistente contable (RAG)— que ayudan a comprender el porqué de cada registro y a reforzar el aprendizaje.

Mosaite está diseñado para su uso tanto individual como en entornos educativos, permitiendo que profesores y estudiantes trabajen sobre el mismo sistema.

Logo Mosaite

Ask DeepWiki


Important

En este README.md solo se tratarán algunas cuestiones generales del proyecto, ya que al estar dividido en partes que pueden funcionar por separado, se hizo un archivo README.md para cada una de las partes de forma más detallada.


Manual de Usuario

Se ha incluído un Manual de Usuario hecho en LaTeX donde se explicarán en detalle distintas cuestiones relacionadas a la instalación y configuración del sistema, como también del modo de uso.

En éste repositorio también se dejarán los archivos .tex para quien quiera verlos y/o compilarlos, así como el .pdf correspondiente para su lectura.

Estado: Completo respecto a las funcionalidades finalizadas hasta la fecha.


Instalación del Proyecto

  1. Tener instaladas las dependencias:
  1. Clonar el repositorio:
git clone https://github.com/luantorv/mosaite.git

Tip

Se recomienda eliminar la carpeta .git que se creará:

rm -rf .git
  1. Instalar las librerías para el backend:
# Instalar virtualenv si no lo tiene instalado
pip install virtualenv

# Cambiar a la carpeta del backend
cd ./backend

# Crear el entorno virtual
python venv -m venv

# Activar el entorno virtual
source venv/bin/activate # En Linux/MacOS
.venv/Scripts/activate # En Windows

# Instalar las librerías mediante pip
pip install -r requirements.txt
  1. Migrar los modelos a la base de datos y crear el superusuario de Django:
# Crear las migraciones
python manage.py makemigrations

# Realizar las migraciones
python manage.py migrate

# Crear el superusuario de Django
python manage.py createsuperuser 
  1. Instalar las librerías del frontend mediante npm:
# Cambiar a la carpeta del frontend
cd .. && cd ./frontend/front/

# Instalar las librerías
npm install

Tip

Es recomendable crear una versión optimizada:

npm run build
npm install -g serve

Levantar el Proyecto

  1. Abrir una terminal en la carpeta del backend y hacer:
python manage.py runserver 0.0.0.0:8000
  1. Abrir una segunda terminal en la carpeta del frontend y hacer:
# Si creaste la version optimizada
serve -s build

# Sino
npm start
  1. En la terminal aparecerá algo como:
You can now view front in the browser.

  Local:            http://localhost:3000
  On Your Network:  http://*.*.*.*:3000

Note that the development build is not optimized.
To create a production build, use npm run build.

webpack compiled successfully

Haciendo Ctrl+Click en el primer link podrá acceder al proyecto, de igual forma las máquinas dentro de la misma red prodrán acceder al proyecto usando el segundo enlace.

Caution

La aplicación se sirve en 0.0.0.0, lo que permite acceder desde otros dispositivos dentro de la LAN (por ejemplo: http://192.168.x.x:3000).

Sin embargo, algunos routers o puntos de acceso tienen activada la opción AP Isolation / Client Isolation, que bloquea la comunicación entre dispositivos conectados a la misma red WiFi.

Si no podés acceder desde otro dispositivo aún estando en la misma red, probablemente sea por esta configuración del router.


Gestor de Proyecto TUI (Terminal User Interface)

Se ha implementado un gestor de proyecto interactivo basado en una Interfaz de Usuario por Terminal (TUI) utilizando la librería Textual de Python. Esta herramienta simplifica el proceso de instalación, configuración y ejecución del proyecto Mosaite, eliminando la necesidad de comandos manuales en la consola.

Funcionalidades Principales

El TUI guía al usuario a través de los siguientes pasos:

  • Verificación de Dependencias: Chequea automáticamente las versiones de Python, NodeJS y TeXLive instaladas en el sistema para asegurar la compatibilidad.

  • Instalación Inicial: Gestiona la creación del entorno virtual de Python (venv), la instalación de dependencias de Pip y la inicialización de dependencias de NPM (NodeJS).

  • Gestión de Entornos de Datos: Permite crear, renombrar y seleccionar entornos de datos separados, definiendo rutas específicas para el archivo SQLite de la base de datos y la carpeta de PDFs generados.

  • Configuración de Django: Facilita la ejecución de migraciones de base de datos (migrate) y la creación de un Superusuario de Django.

  • Ejecución del Proyecto: Permite iniciar y detener los servidores de Django (Backend) y React (Frontend) simultáneamente desde una única terminal, mostrando los logs en tiempo real.

Uso

Para iniciar el gestor TUI, ejecuta el archivo principal del proyecto:

python3 main.py # en Windows
python main.py # en MacOS o Linux

Estado: No terminado.


Consultas por Lenguaje Natural

El sistema permitirá a los usuarios hacer preguntas como:

"¿Cuánto gasté en proveedores en abril?"

Y obterner respuestas automáticas usando un modelo de lenguaje que interpreta la intensión y busca los datos contables correspondientes.

Estado: Está listo para implementarlo en el backend (todavía no está terminado el backend).


Tecnologías Utilizadas

BackEnd:

  • Python (3.12.7)
  • Django (5.2.4)
  • Django REST FrameWork (3.16.0)
  • Simple JWT (5.5.1)
  • Django CORS Headers (4.9.0)
  • llama-cpp-python (0.3.16)
  • sentence-transformers (5.1.0)
  • faiss-cpu (1.12.0)
  • PyTest (9.0.0)
  • PyTest-Cov (7.0.0)
  • PyTest-Django (4.11.1)
  • Meta Llama 3.1 8B

FrontEnd:

  • NodeJS (24.7.0)
  • React (19.1.1)
  • Axios (1.11.0)
  • BootStrap (5.3.7)
  • Recharts (3.2.1)

Otros:

  • Textual (6.4.0)
  • TeXLive (3.141592653)

Caution

Estas son las versiones en las que fueron hechas y probadas todas las funcionalidades del proyecto, podría no llegar a funcionar en otras versiones o configuraciones.


Funcionalidades

  • ConsultarIA (el módulo de búsqueda impulsada por IA) ya funciona, falta implementarlo.
  • Daily (el módulo de creación de libros diarios en PDF) está listo para su implementación.
  • Hay un POC para experimentar el flujo de uso del proyecto.
  • Hay un Ayudante basado en LLM/RAG para consultar información contable.
  • Las funcionalidades terminadas en el backend también lo está en el frontend; las que no, tienen un spaceholder de momento.
  • La documentación y el manual de usuarios están al día con las funcionalidades terminadas.

Prueba de Concepto (PoC):

Se agregó una versión duplicada del frontend con funcionalidades simuladas.

Sirve solo para mostrar el flujo y la apariencia: no hay lógica real detrás de los botones ni llamadas a la API.

Estado: Terminado.

Important

No usar en producción.


Por hacer

  • Hacer la app daily para la creación y manejo de libros diarios y el frontend correspondiente.
  • Hacer la app search para el consumo del servicio consultoIA y el frontend correspondiente.
  • Mejorar el testing.
  • Hacer testing en el frontend.
  • Terminar el manual de usuario cuando se terminen las features principales.

Estrucutra del Proyecto

mosaite/
|   backend/
|   |   apps/
|   |   |   accounts/
|   |   |   |   data/
|   |   |   |   |   __init__.py
|   |   |   |   |   plan_cuentas_inicial.py
|   |   |   |   management/
|   |   |   |   |   commands/
|   |   |   |   |   |   __init__.py
|   |   |   |   |   |   init_plan_cuentas.py
|   |   |   |   |   __init__.py
|   |   |   |   tests/
|   |   |   |   |   test_accounts_models.py
|   |   |   |   |   test_accounts_serializers.py
|   |   |   |   |   test_accounts_views.py
|   |   |   |   __init__.py
|   |   |   |   admin.py
|   |   |   |   apps.py
|   |   |   |   models.py
|   |   |   |   serializers.py
|   |   |   |   tests.py
|   |   |   |   urls.py
|   |   |   |   views.py
|   |   |   chat/
|   |   |   |   management/
|   |   |   |   |   commands/
|   |   |   |   |   |   __init__.py
|   |   |   |   |   |   init_chat.py
|   |   |   |   |   |   rebuild_chat_index.py
|   |   |   |   |   __init__.py
|   |   |   |   tests/
|   |   |   |   |   test_chat_models.py
|   |   |   |   |   test_chat_permissions.py
|   |   |   |   |   test_chat_serializers.py
|   |   |   |   |   test_chat_views.py
|   |   |   |   __init__.py
|   |   |   |   admin.py
|   |   |   |   apps.py
|   |   |   |   models.py
|   |   |   |   permissions.py
|   |   |   |   serializers.py
|   |   |   |   tasks.py
|   |   |   |   urls.py
|   |   |   |   views.py
|   |   |   config/
|   |   |   |   tests/
|   |   |   |   |   test_config_middleware.py
|   |   |   |   |   test_config_models.py
|   |   |   |   |   test_config_serializers.py
|   |   |   |   |   test_config_views.py
|   |   |   |   __init__.py
|   |   |   |   admin.py
|   |   |   |   apps.py
|   |   |   |   middleware.py
|   |   |   |   models.py
|   |   |   |   serializers.py
|   |   |   |   urls.py
|   |   |   |   views.py
|   |   |   dash/
|   |   |   |   management/
|   |   |   |   |   commands/
|   |   |   |   |   |   __init__.py
|   |   |   |   |   |   check_dashboard_stats.py
|   |   |   |   |   |   clear_dahsboard_data.py
|   |   |   |   |   |   init_dashboard_data.py
|   |   |   |   |   __init__.py
|   |   |   |   tests/
|   |   |   |   |   test_dash_views.py
|   |   |   |   __init__.py
|   |   |   |   admin.py
|   |   |   |   apps.py
|   |   |   |   models.py
|   |   |   |   serializers.py
|   |   |   |   urls.py
|   |   |   |   views.py
|   |   |   trans/
|   |   |   |   tests/
|   |   |   |   |   test_trans_models.py
|   |   |   |   |   test_trans_permissions.py
|   |   |   |   |   test_trans_serializers.py
|   |   |   |   |   test_trans_views.py
|   |   |   |   __init__.py
|   |   |   |   admin.py
|   |   |   |   apps.py
|   |   |   |   models.py
|   |   |   |   permissions.py
|   |   |   |   serializers.py
|   |   |   |   urls.py
|   |   |   |   views.py
|   |   |   users/
|   |   |   |   tests/
|   |   |   |   |   test_users_models.py
|   |   |   |   |   test_users_serializers.py
|   |   |   |   |   test_users_views.py
|   |   |   |   __init__.py
|   |   |   |   admin.py
|   |   |   |   apps.py
|   |   |   |   models.py
|   |   |   |   permissions.py
|   |   |   |   urls.py
|   |   |   |   utils.py
|   |   |   |   views.py
|   |   config/
|   |   |   __init__.py
|   |   |   asgi.py
|   |   |   settings.py
|   |   |   urls.py
|   |   |   wsgi.py
|   |   services/
|   |   |   chat/
|   |   |   |   data/
|   |   |   |   |   manual_cuentas.md
|   |   |   |   |   manual_usuario.md
|   |   |   |   |   SIC1.md
|   |   |   |   __init__.py
|   |   |   |   config.py
|   |   |   |   embedder.py
|   |   |   |   init_index.py
|   |   |   |   llm_client.py
|   |   |   |   rag_service.py
|   |   |   |   vector_store.py
|   |   |   consultorIA/
|   |   |   |   __init__.py
|   |   |   |   config.py
|   |   |   |   consultor_service.py
|   |   |   |   examples.json
|   |   |   |   llm_client.py
|   |   |   |   main.py
|   |   |   |   schema.txt
|   |   |   |   sql_classifier.py
|   |   |   |   sql_validator.py
|   |   |   daily/
|   |   |   |   __init__.py
|   |   |   |   main.py
|   |   |   llm_gateway/
|   |   |   |   core/
|   |   |   |   |   Meta-Llama-3.1-8B-Instruct-Q3_K_S.gguf
|   |   |   |   providers/
|   |   |   |   |   __init__.py
|   |   |   |   |   anthropic_provider.py
|   |   |   |   |   base.py
|   |   |   |   |   google_provider.py
|   |   |   |   |   local_provider.py
|   |   |   |   |   openai_provider.py
|   |   |   |   __init__.py
|   |   |   |   .env.example
|   |   |   |   config.py
|   |   |   |   llm_gateway.py
|   |   |   |   test.py
|   |   conftest.py
|   |   manage.py
|   |   pytest.ini
|   |   README.md
|   |   requirements.txt
|   frontend/
|   |   front/
|   |   |   public/
|   |   |   |   icon.png
|   |   |   |   index.html
|   |   |   |   logo.png
|   |   |   |   manifest.json
|   |   |   |   robots.txt
|   |   |   src/
|   |   |   |   assets/
|   |   |   |   |   icon.png
|   |   |   |   |   logo.png
|   |   |   |   components/
|   |   |   |   |   Content/
|   |   |   |   |   |   Chat.js
|   |   |   |   |   |   Configuracion.js
|   |   |   |   |   |   CuentaCrear.js
|   |   |   |   |   |   DashboardHome.js
|   |   |   |   |   |   index.js
|   |   |   |   |   |   LibroDiarioCard.js
|   |   |   |   |   |   LibroDiarioBuscar.js
|   |   |   |   |   |   LibroDiarioCrear.js
|   |   |   |   |   |   LibroDiariosRecientes.js
|   |   |   |   |   |   TransaccionBuscar.js
|   |   |   |   |   |   TransaccionCard.js
|   |   |   |   |   |   TransaccionCrear.js
|   |   |   |   |   |   TransaccionRecientes.js
|   |   |   |   |   |   UsuariosLista.js
|   |   |   |   |   Dashboard.js
|   |   |   |   |   Login.js
|   |   |   |   |   LogoutButton.js
|   |   |   |   |   ProtectedRoute.js
|   |   |   |   |   Searchbar.js
|   |   |   |   |   SideBar.js
|   |   |   |   |   SidebarMenu.js
|   |   |   |   |   ThemeToggle.js
|   |   |   |   |   UserMenu.js
|   |   |   |   context/
|   |   |   |   |   AuthContext.js
|   |   |   |   |   ThemeContext.js
|   |   |   |   services/
|   |   |   |   |   AccountService.js
|   |   |   |   |   api.js
|   |   |   |   |   AuthService.js
|   |   |   |   |   ChatService.js
|   |   |   |   |   ConfigService.js
|   |   |   |   |   DashboardService.js
|   |   |   |   |   TransactionService.js
|   |   |   |   |   UserService.js
|   |   |   |   App.css
|   |   |   |   App.js
|   |   |   |   App.test.js
|   |   |   |   index.css
|   |   |   |   index.js
|   |   |   |   reportWebVitals.js
|   |   |   |   setupTests.js
|   |   |   .gitignore
|   |   |   package-lock.json
|   |   |   package.json
|   |   |   README.md
|   manual/
|   |   chapter/
|   |   |   faq.tex
|   |   |   glosario.tex
|   |   |   herramientas.tex
|   |   |   interfaz.tex
|   |   |   introduccion.tex
|   |   |   libros_diarios.tex
|   |   |   primeros_pasos.tex
|   |   |   roles_permisos.tex
|   |   |   transacciones.tex
|   |   img/
|   |   |   buscar_transacciones.png
|   |   |   chat_rag.png
|   |   |   configuracion.png
|   |   |   crear_transaccion.png
|   |   |   dashboard_principal.png
|   |   |   estados_transaccion.png
|   |   |   gestion_usuarios.png
|   |   |   graficos_dashboard.png
|   |   |   interfaz_completa.png
|   |   |   lista_usuarios.png
|   |   |   login.png
|   |   |   logo.png
|   |   |   plan_cuentas.png
|   |   |   tema_claro.png
|   |   |   tema_oscuro.png
|   |   main.pdf
|   |   main.tex
|   POC/
|   |   front/
|   |   |   public/
|   |   |   |   icon.png
|   |   |   |   index.html
|   |   |   |   manifest.json
|   |   |   |   logo.png
|   |   |   |   robots.txt
|   |   |   src/
|   |   |   |   assets/
|   |   |   |   |   icon.png
|   |   |   |   |   logo.png
|   |   |   |   components/
|   |   |   |   |   Content/
|   |   |   |   |   |   Chat.js
|   |   |   |   |   |   Configuracion.js
|   |   |   |   |   |   CuentaCrear.js
|   |   |   |   |   |   DashboardHome.js
|   |   |   |   |   |   index.js
|   |   |   |   |   |   LibroDiarioCard.js
|   |   |   |   |   |   LibroDiarioBuscar.js
|   |   |   |   |   |   LibroDiarioCrear.js
|   |   |   |   |   |   LibroDiariosRecientes.js
|   |   |   |   |   |   TransaccionBuscar.js
|   |   |   |   |   |   TransaccionCard.js
|   |   |   |   |   |   TransaccionCrear.js
|   |   |   |   |   |   TransaccionRecientes.js
|   |   |   |   |   |   UsuariosLista.js
|   |   |   |   |   Dashboard.js
|   |   |   |   |   Login.js
|   |   |   |   |   LogoutButton.js
|   |   |   |   |   ProtectedRoute.js
|   |   |   |   |   Searchbar.js
|   |   |   |   |   SideBar.js
|   |   |   |   |   SidebarMenu.js
|   |   |   |   |   ThemeToggle.js
|   |   |   |   |   UserMenu.js
|   |   |   |   context/
|   |   |   |   |   AuthContext.js
|   |   |   |   |   ThemeContext.js
|   |   |   |   App.css
|   |   |   |   App.js
|   |   |   |   App.test.js
|   |   |   |   index.css
|   |   |   |   index.js
|   |   |   |   reportWebVitals.js
|   |   |   |   setupTests.js
|   |   |   .gitignore
|   |   |   package-lock.json
|   |   |   package.json
|   |   |   README.md
|   tui/
|   |   __init__.py
|   |   app.py
|   |   constants.py
|   |   logic.py
|   |   README.md
|   |   screens.py
|   .env
|   .gitignore
|   main.py
|   main.tcss
|   README.md

Licencia

Este proyecto es de uso libre para fines académicos y de investigación. Para otros usos contactar al autor.


Autor

Luis Antonio Reis Viera

Estudiante de la Tecnicatura Superior en Ciencia de Datos e Inteligencia Articial | Instituto Superior de Formación Docente y Técnica.

Este proyecto fue desarrollado como parte de las materias Práctica Profesionalizante I e Inteligencia Artificial de 1er Año.

Contacto: