feat: Implement main application shell with navigation and color scheme toggle

- Added Appshell component with responsive navbar and main content area
- Integrated ColorSchemeToggle for light/dark mode switching
- Created Welcome component with styled title and introductory text
- Developed ChatPage for LLM interaction with WebSocket support
- Implemented Biblioteca for managing notes with rich text editor
- Added LoginPage for user authentication with error handling
- Introduced MessageList and MessageBubble components for chat messages
- Styled components with CSS modules for consistent design
This commit is contained in:
2025-06-21 02:01:21 +02:00
parent 3d5deef0fb
commit aef8791151
101 changed files with 169 additions and 166 deletions
+5 -3
View File
@@ -1,4 +1,6 @@
cd ./frontend # Inicia el frontend en una nueva ventana de PowerShell
npm run dev Start-Process powershell -ArgumentList "-NoExit", "-Command", 'cd ./frontend; npm run dev; pause'
cd ..
# Inicia el backend en una nueva ventana de PowerShell
Start-Process powershell -ArgumentList "-NoExit", "-Command", 'cd ./backend; uvicorn backend.main:app --reload --host 0.0.0.0 --port 8000; pause'
@@ -5,8 +5,8 @@ from fastapi.responses import StreamingResponse
from pydantic import BaseModel from pydantic import BaseModel
from fastapi.concurrency import run_in_threadpool from fastapi.concurrency import run_in_threadpool
from backend.domains.llms.llm_chat_srvc import construir_agente_llm, responder, responder_stream from backend.backend_domains.llms.llm_chat_srvc import construir_agente_llm, responder, responder_stream
from src.Logger.logger_db import LoggerDB, logger from domains.Logger.logger_db import LoggerDB, logger
from entrypoint.init_db import db_credencial from entrypoint.init_db import db_credencial
LoggerDB(db_credencial, "logger_llm", created_by="sistema") LoggerDB(db_credencial, "logger_llm", created_by="sistema")
@@ -1,16 +1,16 @@
# src/services/agent_service.py # src/services/agent_service.py
from src.ApiKeys.openai_apikey_mmr import OpenAICredencialRepo from domains.ApiKeys.openai_apikey_mmr import OpenAICredencialRepo
from src.ConexionSql.Postgres_conexion import PostgresConexion from domains.ConexionSql.Postgres_conexion import PostgresConexion
from src.ConexionApis.OpenAi_conexion import OpenAICliente from domains.ConexionApis.OpenAi_conexion import OpenAICliente
from src.Llms.Modelos.Openai_model import ModeloOpenAI from domains.Llms.Modelos.Openai_model import ModeloOpenAI
from src.Llms.Agente import AgenteAI from domains.Llms.Agente import AgenteAI
from src.Llms.Memory.postgres_MemoryConv import MemoryConvPostgres from domains.Llms.Memory.postgres_MemoryConv import MemoryConvPostgres
from src.Llms.MCPs.McpClient import MCPClient from domains.Llms.MCPs.McpClient import MCPClient
from src.Llms.MCPs.McpClient_Registry import ClientRegistry from domains.Llms.MCPs.McpClient_Registry import ClientRegistry
from entrypoint.init_db import db_credencial from entrypoint.init_db import db_credencial
from src.Logger.logger_db import LoggerDB, logger from domains.Logger.logger_db import LoggerDB, logger
LoggerDB(db_credencial, "logger_llm", created_by="sistema") LoggerDB(db_credencial, "logger_llm", created_by="sistema")
from typing import AsyncGenerator from typing import AsyncGenerator
@@ -1,6 +1,6 @@
from fastapi import WebSocket, APIRouter, WebSocketDisconnect from fastapi import WebSocket, APIRouter, WebSocketDisconnect
from backend.domains.llms.llm_chat_srvc import construir_agente_llm from backend.backend_domains.llms.llm_chat_srvc import construir_agente_llm
from src.Logger.logger_db import LoggerDB, logger from domains.Logger.logger_db import LoggerDB, logger
from entrypoint.init_db import db_credencial from entrypoint.init_db import db_credencial
import json import json
@@ -1,15 +1,15 @@
from fastapi import APIRouter, Depends, HTTPException from fastapi import APIRouter, Depends, HTTPException
from fastapi import Path from fastapi import Path
from backend.domains.text_manager.text_manager_schema import BibliotecaInput, NotaInput from backend.backend_domains.text_manager.text_manager_schema import BibliotecaInput, NotaInput
from fastapi.concurrency import run_in_threadpool from fastapi.concurrency import run_in_threadpool
from backend.db.conexion import get_conexion from backend.db.conexion import get_conexion
from backend.domains.text_manager.text_manager_srvc import * from backend.backend_domains.text_manager.text_manager_srvc import *
from src.ConexionSql.Postgres_conexion import PostgresConexion from domains.ConexionSql.Postgres_conexion import PostgresConexion
from entrypoint.init_db import db_credencial from entrypoint.init_db import db_credencial
from src.Logger.logger_db import LoggerDB, logger from domains.Logger.logger_db import LoggerDB, logger
LoggerDB(db_credencial, "logger_textos", created_by="sistema") LoggerDB(db_credencial, "logger_textos", created_by="sistema")
router = APIRouter() router = APIRouter()
@@ -1,15 +1,15 @@
from src.TextManager.biblioteca import Biblioteca from domains.TextManager.biblioteca import Biblioteca
from src.TextManager.biblioteca_mmr import BibliotecaRepo from domains.TextManager.biblioteca_mmr import BibliotecaRepo
from src.Llms.Embedders.Openai_embedder import OpenAIEmbedder from domains.Llms.Embedders.Openai_embedder import OpenAIEmbedder
from src.ApiKeys.openai_apikey_mmr import OpenAICredencialRepo from domains.ApiKeys.openai_apikey_mmr import OpenAICredencialRepo
from src.ConexionSql.Postgres_conexion import PostgresConexion from domains.ConexionSql.Postgres_conexion import PostgresConexion
from src.TextManager.nota import Nota from domains.TextManager.nota import Nota
from src.TextManager.notas_mmr import generar_tabla_nota_para_biblioteca, NotaRepo from domains.TextManager.notas_mmr import generar_tabla_nota_para_biblioteca, NotaRepo
from sqlalchemy import MetaData from sqlalchemy import MetaData
from backend.domains.text_manager.text_manager_schema import NotaInput from backend.backend_domains.text_manager.text_manager_schema import NotaInput
from entrypoint.init_db import db_credencial from entrypoint.init_db import db_credencial
from src.Logger.logger_db import LoggerDB, logger from domains.Logger.logger_db import LoggerDB, logger
LoggerDB(db_credencial, "logger_textos", created_by="sistema") LoggerDB(db_credencial, "logger_textos", created_by="sistema")
def crear_biblioteca(nombre_biblioteca: str, conexion: PostgresConexion, descripcion: str = None): def crear_biblioteca(nombre_biblioteca: str, conexion: PostgresConexion, descripcion: str = None):
@@ -1,6 +1,6 @@
from fastapi import APIRouter, Depends, HTTPException from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from src.Usuario.usuario_mmr import UsuarioRepo, Usuario, UsuarioModel from domains.Usuario.usuario_mmr import UsuarioRepo, Usuario, UsuarioModel
from backend.db.conexion import get_conexion from backend.db.conexion import get_conexion
router = APIRouter() router = APIRouter()
+1 -1
View File
@@ -1,6 +1,6 @@
# backend/db/conexion.py # backend/db/conexion.py
from entrypoint.init_db import db_credencial from entrypoint.init_db import db_credencial
from src.ConexionSql.Postgres_conexion import PostgresConexion from domains.ConexionSql.Postgres_conexion import PostgresConexion
def get_conexion(): def get_conexion():
conexion = PostgresConexion(db_credencial) conexion = PostgresConexion(db_credencial)
+1 -1
View File
@@ -3,7 +3,7 @@
from fastapi import FastAPI from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware from fastapi.middleware.cors import CORSMiddleware
from backend.router_v1 import router from backend.router_v1 import router
from backend.domains.llms import llm_chat_ws_endpoint_v1 from backend.backend_domains.llms import llm_chat_ws_endpoint_v1
app = FastAPI( app = FastAPI(
+5 -5
View File
@@ -1,11 +1,11 @@
# backend/api/router_v1.py # backend/api/router_v1.py
from fastapi import APIRouter from fastapi import APIRouter
from backend.domains.experiments import charts_examples_endpoint_v1 as charts from backend.backend_domains.experiments import charts_examples_endpoint_v1 as charts
from backend.domains.experiments import ping_endpoint_v1 from backend.backend_domains.experiments import ping_endpoint_v1
from backend.domains.text_manager import text_manager_endpoint_v1 from backend.backend_domains.text_manager import text_manager_endpoint_v1
from backend.domains.llms import llm_chat_endpoint_v1 from backend.backend_domains.llms import llm_chat_endpoint_v1
from backend.domains.usuarios_endpoint_v1 import router as usuarios_router from backend.backend_domains.usuarios_endpoint_v1 import router as usuarios_router
router = APIRouter() router = APIRouter()
router.include_router(ping_endpoint_v1.router, prefix="/ping") router.include_router(ping_endpoint_v1.router, prefix="/ping")
@@ -1,4 +1,4 @@
from src.Security.GenerarIDs import GeneradorIDUnico from domains.Security.GenerarIDs import GeneradorIDUnico
class OpenAICredencial: class OpenAICredencial:
def __init__(self, titulo: str, api_key: str, organizacion: str = None, id: str = None): def __init__(self, titulo: str, api_key: str, organizacion: str = None, id: str = None):
@@ -3,17 +3,17 @@ import base64
from dotenv import load_dotenv from dotenv import load_dotenv
from sqlalchemy import Column, Integer, String from sqlalchemy import Column, Integer, String
from src.ConexionSql.Base_conexion import ConexionBase from domains.ConexionSql.Base_conexion import ConexionBase
from src.base import Base from domains.base import Base
from src.ApiKeys.openai_apikey import OpenAICredencial from domains.ApiKeys.openai_apikey import OpenAICredencial
from src.Security.Encriptar import Encriptar_fernet from domains.Security.Encriptar import Encriptar_fernet
from entrypoint import ENV_PATH from entrypoint import ENV_PATH
from src.ArquitectureLayer.Mapper import Mapper_base from domains.ArquitectureLayer.Mapper import Mapper_base
from sqlalchemy import Column, String from sqlalchemy import Column, String
from src.ArquitectureLayer.Model import Model_base from domains.ArquitectureLayer.Model import Model_base
from src.ArquitectureLayer.Repo import Repo_base from domains.ArquitectureLayer.Repo import Repo_base
# ---------------------- # ----------------------
@@ -6,7 +6,7 @@ from sqlalchemy.orm import Session
from sqlalchemy import func from sqlalchemy import func
from datetime import datetime from datetime import datetime
from src.ArquitectureLayer.Mapper import Mapper_base # Asegúrate de importar tu ABC base from domains.ArquitectureLayer.Mapper import Mapper_base # Asegúrate de importar tu ABC base
TModelo = TypeVar("TModelo") TModelo = TypeVar("TModelo")
TDominio = TypeVar("TDominio") TDominio = TypeVar("TDominio")
@@ -1,5 +1,5 @@
import requests import requests
from src.Credenciales.ollama_credencial import OllamaCredencial from domains.Credenciales.ollama_credencial import OllamaCredencial
class OllamaCliente: class OllamaCliente:
def __init__(self, credencial: OllamaCredencial): def __init__(self, credencial: OllamaCredencial):
@@ -1,5 +1,5 @@
from openai import OpenAI from openai import OpenAI
from src.ApiKeys.openai_apikey import OpenAICredencial from domains.ApiKeys.openai_apikey import OpenAICredencial
class OpenAICliente: class OpenAICliente:
def __init__(self, credencial: OpenAICredencial): def __init__(self, credencial: OpenAICredencial):
@@ -4,8 +4,8 @@ from sqlalchemy.exc import SQLAlchemyError
from sqlalchemy.orm import sessionmaker, Session from sqlalchemy.orm import sessionmaker, Session
from sqlalchemy.engine import Engine from sqlalchemy.engine import Engine
from src.ConexionSql.Base_conexion import ConexionBase from domains.ConexionSql.Base_conexion import ConexionBase
from src.Credenciales.postgres_credencial import PostgresCredencial from domains.Credenciales.postgres_credencial import PostgresCredencial
class PostgresConexion(ConexionBase): class PostgresConexion(ConexionBase):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
@@ -1,4 +1,4 @@
from src.Security.GenerarIDs import GeneradorIDUnico from domains.Security.GenerarIDs import GeneradorIDUnico
class OllamaCredencial: class OllamaCredencial:
def __init__(self, titulo: str, base_url: str = "http://localhost:11434", id: str = None): def __init__(self, titulo: str, base_url: str = "http://localhost:11434", id: str = None):
@@ -1,4 +1,4 @@
from src.Security.GenerarIDs import GeneradorIDUnico from domains.Security.GenerarIDs import GeneradorIDUnico
class PostgresCredencial: class PostgresCredencial:
def __init__(self, titulo: str, host: str, port: int, dbname: str, user: str, password: str, id: str = None): def __init__(self, titulo: str, host: str, port: int, dbname: str, user: str, password: str, id: str = None):
@@ -6,14 +6,14 @@ from sqlalchemy import DateTime, Text, func
import base64 import base64
from src.ArquitectureLayer.Mapper import Mapper_base from domains.ArquitectureLayer.Mapper import Mapper_base
from src.ArquitectureLayer.Model import Model_base from domains.ArquitectureLayer.Model import Model_base
from src.ArquitectureLayer.Repo import Repo_base from domains.ArquitectureLayer.Repo import Repo_base
from src.ConexionSql.Base_conexion import ConexionBase from domains.ConexionSql.Base_conexion import ConexionBase
from src.base import Base from domains.base import Base
from src.Credenciales.postgres_credencial import PostgresCredencial from domains.Credenciales.postgres_credencial import PostgresCredencial
from src.Security.Encriptar import Encriptar_fernet from domains.Security.Encriptar import Encriptar_fernet
# ---------------------- # ----------------------
# Cargar clave maestra # Cargar clave maestra
@@ -1,13 +1,13 @@
from src.Llms.Modelos.Base_model import ModeloABC from domains.Llms.Modelos.Base_model import ModeloABC
from src.Llms.Memory.Base_MemoryConv import MemoryConvABC from domains.Llms.Memory.Base_MemoryConv import MemoryConvABC
from src.Llms.MCPs.McpClient_Registry import ClientRegistry from domains.Llms.MCPs.McpClient_Registry import ClientRegistry
from datetime import datetime from datetime import datetime
from typing import Optional, List, Union, AsyncGenerator from typing import Optional, List, Union, AsyncGenerator
import re import re
import json import json
from entrypoint.init_db import db_credencial from entrypoint.init_db import db_credencial
from src.Logger.logger_db import LoggerDB, logger from domains.Logger.logger_db import LoggerDB, logger
LoggerDB(db_credencial, "logger_agentes", created_by="sistema") LoggerDB(db_credencial, "logger_agentes", created_by="sistema")
@@ -1,8 +1,8 @@
from typing import List from typing import List
from src.Llms.Embedders.Base_Embedder import EmbedderABC # Asegúrate de que EmbedderABC esté en este módulo from domains.Llms.Embedders.Base_Embedder import EmbedderABC # Asegúrate de que EmbedderABC esté en este módulo
from src.ApiKeys.openai_apikey import OpenAICredencial from domains.ApiKeys.openai_apikey import OpenAICredencial
from src.ConexionApis.OpenAi_conexion import OpenAICliente from domains.ConexionApis.OpenAi_conexion import OpenAICliente
from src.Security.GenerarIDs import GeneradorIDUnico from domains.Security.GenerarIDs import GeneradorIDUnico
class OpenAIEmbedder(EmbedderABC): class OpenAIEmbedder(EmbedderABC):
def __init__(self, credencial: OpenAICredencial, def __init__(self, credencial: OpenAICredencial,
@@ -3,15 +3,15 @@ from dotenv import load_dotenv
from sqlalchemy import Column, String from sqlalchemy import Column, String
from sqlalchemy import Column, String, ForeignKey from sqlalchemy import Column, String, ForeignKey
from src.ArquitectureLayer.Mapper import Mapper_base from domains.ArquitectureLayer.Mapper import Mapper_base
from src.ArquitectureLayer.Model import Model_base from domains.ArquitectureLayer.Model import Model_base
from src.ArquitectureLayer.Repo import Repo_base from domains.ArquitectureLayer.Repo import Repo_base
from src.ConexionSql.Base_conexion import ConexionBase from domains.ConexionSql.Base_conexion import ConexionBase
from src.base import Base from domains.base import Base
from src.Security.GenerarIDs import GeneradorIDUnico from domains.Security.GenerarIDs import GeneradorIDUnico
from src.Llms.Embedders.Openai_embedder import OpenAIEmbedder from domains.Llms.Embedders.Openai_embedder import OpenAIEmbedder
from src.ApiKeys.openai_apikey import OpenAICredencial from domains.ApiKeys.openai_apikey import OpenAICredencial
# ---------------------- # ----------------------
# Cargar configuración desde .env si se requiere # Cargar configuración desde .env si se requiere
@@ -1,4 +1,4 @@
from src.Llms.MCPs.McpClient import MCPClient from domains.Llms.MCPs.McpClient import MCPClient
from typing import Any from typing import Any
class ClientRegistry: class ClientRegistry:
@@ -1,9 +1,9 @@
from sqlalchemy import Table, Column, Integer, String, MetaData, insert, select, delete from sqlalchemy import Table, Column, Integer, String, MetaData, insert, select, delete
from typing import Literal from typing import Literal
from src.Credenciales.postgres_credencial import PostgresCredencial from domains.Credenciales.postgres_credencial import PostgresCredencial
from src.ConexionSql.Postgres_conexion import PostgresConexion # Usamos la clase específica from domains.ConexionSql.Postgres_conexion import PostgresConexion # Usamos la clase específica
from src.Llms.Memory.Base_MemoryConv import MemoryConvABC from domains.Llms.Memory.Base_MemoryConv import MemoryConvABC
class MemoryConvPostgres(MemoryConvABC): class MemoryConvPostgres(MemoryConvABC):
@@ -1,7 +1,7 @@
from src.Llms.Modelos.Base_model import ModeloABC from domains.Llms.Modelos.Base_model import ModeloABC
from src.Security.GenerarIDs import GeneradorIDUnico from domains.Security.GenerarIDs import GeneradorIDUnico
from typing import AsyncGenerator, Union from typing import AsyncGenerator, Union
from src.ConexionApis.Ollama_cliente import OllamaCliente # Asegúrate de importar correctamente from domains.ConexionApis.Ollama_cliente import OllamaCliente # Asegúrate de importar correctamente
import asyncio import asyncio
class ModeloOllama(ModeloABC): class ModeloOllama(ModeloABC):
@@ -1,6 +1,6 @@
from src.Llms.Modelos.Base_model import ModeloABC from domains.Llms.Modelos.Base_model import ModeloABC
from src.ConexionApis.OpenAi_conexion import OpenAICliente from domains.ConexionApis.OpenAi_conexion import OpenAICliente
from src.Security.GenerarIDs import GeneradorIDUnico from domains.Security.GenerarIDs import GeneradorIDUnico
import asyncio import asyncio
from typing import AsyncGenerator, Union from typing import AsyncGenerator, Union
@@ -2,15 +2,15 @@ import os
from dotenv import load_dotenv from dotenv import load_dotenv
from sqlalchemy import Column, Integer, String, Float, Boolean from sqlalchemy import Column, Integer, String, Float, Boolean
from src.ArquitectureLayer.Mapper import Mapper_base from domains.ArquitectureLayer.Mapper import Mapper_base
from src.ArquitectureLayer.Model import Model_base from domains.ArquitectureLayer.Model import Model_base
from src.ArquitectureLayer.Repo import Repo_base from domains.ArquitectureLayer.Repo import Repo_base
from typing import Optional from typing import Optional
from src.ConexionSql.Base_conexion import ConexionBase from domains.ConexionSql.Base_conexion import ConexionBase
from src.base import Base from domains.base import Base
from src.Llms.Modelos.Openai_model import ModeloOpenAI # Clase real de lógica from domains.Llms.Modelos.Openai_model import ModeloOpenAI # Clase real de lógica
# ---------------------- # ----------------------
# Cargar clave maestra # Cargar clave maestra
@@ -3,9 +3,9 @@ from sqlalchemy import Column, Integer, String, Text, TIMESTAMP
from sqlalchemy.orm import sessionmaker from sqlalchemy.orm import sessionmaker
from sqlalchemy.exc import SQLAlchemyError from sqlalchemy.exc import SQLAlchemyError
from src.ArquitectureLayer.Model import Model_base from domains.ArquitectureLayer.Model import Model_base
from src.ConexionSql.Postgres_conexion import PostgresConexion from domains.ConexionSql.Postgres_conexion import PostgresConexion
from src.Credenciales.postgres_credencial import PostgresCredencial from domains.Credenciales.postgres_credencial import PostgresCredencial
class LoggerDB: class LoggerDB:
_sink_removido = False # ← evita múltiples remove() si se crean varias instancias _sink_removido = False # ← evita múltiples remove() si se crean varias instancias
@@ -1,11 +1,11 @@
from src.Security.GenerarIDs import GeneradorIDUnico from domains.Security.GenerarIDs import GeneradorIDUnico
from src.Llms.Embedders.Base_Embedder import EmbedderABC # Asegúrate de que esta ruta sea correcta from domains.Llms.Embedders.Base_Embedder import EmbedderABC # Asegúrate de que esta ruta sea correcta
from typing import List, Optional from typing import List, Optional
from src.ConexionSql.Base_conexion import ConexionBase from domains.ConexionSql.Base_conexion import ConexionBase
from sqlalchemy import MetaData # Asegúrate de importar esto from sqlalchemy import MetaData # Asegúrate de importar esto
from src.TextManager.notas_mmr import generar_tabla_nota_para_biblioteca # Ajusta si es necesario from domains.TextManager.notas_mmr import generar_tabla_nota_para_biblioteca # Ajusta si es necesario
from sqlalchemy import inspect from sqlalchemy import inspect
from src.base import Base from domains.base import Base
class Biblioteca: class Biblioteca:
@@ -3,16 +3,16 @@ import base64
from dotenv import load_dotenv from dotenv import load_dotenv
from sqlalchemy import Column, String, Integer from sqlalchemy import Column, String, Integer
from src.ArquitectureLayer.Mapper import Mapper_base from domains.ArquitectureLayer.Mapper import Mapper_base
from src.ArquitectureLayer.Model import Model_base from domains.ArquitectureLayer.Model import Model_base
from src.ArquitectureLayer.Repo import Repo_base from domains.ArquitectureLayer.Repo import Repo_base
from src.ConexionSql.Base_conexion import ConexionBase from domains.ConexionSql.Base_conexion import ConexionBase
from src.base import Base from domains.base import Base
from src.Security.Encriptar import Encriptar_fernet from domains.Security.Encriptar import Encriptar_fernet
from src.Security.GenerarIDs import GeneradorIDUnico from domains.Security.GenerarIDs import GeneradorIDUnico
from src.Llms.Embedders.Base_Embedder import EmbedderABC from domains.Llms.Embedders.Base_Embedder import EmbedderABC
from src.TextManager.biblioteca import Biblioteca # Suponiendo que defines la clase lógica Biblioteca aquí from domains.TextManager.biblioteca import Biblioteca # Suponiendo que defines la clase lógica Biblioteca aquí
# ---------------------- # ----------------------
# Cargar clave maestra # Cargar clave maestra
@@ -1,4 +1,4 @@
from src.Security.GenerarIDs import GeneradorIDUnico from domains.Security.GenerarIDs import GeneradorIDUnico
from typing import List from typing import List
class Nota: class Nota:
@@ -3,17 +3,17 @@ from dotenv import load_dotenv
from sqlalchemy import Table, Column, String, Text, MetaData from sqlalchemy import Table, Column, String, Text, MetaData
from pgvector.sqlalchemy import Vector from pgvector.sqlalchemy import Vector
from sqlalchemy.orm import registry, Session from sqlalchemy.orm import registry, Session
from src.TextManager.nota import Nota from domains.TextManager.nota import Nota
from src.ConexionSql.Base_conexion import ConexionBase from domains.ConexionSql.Base_conexion import ConexionBase
from typing import Tuple from typing import Tuple
import re import re
from src.ArquitectureLayer.Mapper import Mapper_base from domains.ArquitectureLayer.Mapper import Mapper_base
from src.ArquitectureLayer.Model import Model_base from domains.ArquitectureLayer.Model import Model_base
from src.ArquitectureLayer.Repo import Repo_base from domains.ArquitectureLayer.Repo import Repo_base
from src.Credenciales.postgres_credencial import PostgresCredencial # Asegúrate de tener esta clase implementada correctamente from domains.Credenciales.postgres_credencial import PostgresCredencial # Asegúrate de tener esta clase implementada correctamente
titulo = os.getenv('DB_TITLE') titulo = os.getenv('DB_TITLE')
@@ -34,11 +34,11 @@ db_credencial = PostgresCredencial(
) )
# from entrypoint.init_db import db_credencial # from entrypoint.init_db import db_credencial
from src.Logger.logger_db import LoggerDB, logger from domains.Logger.logger_db import LoggerDB, logger
LoggerDB(db_credencial, "logger_textos", created_by="sistema") LoggerDB(db_credencial, "logger_textos", created_by="sistema")
from src.base import Base # Este es tu declarative_base() from domains.base import Base # Este es tu declarative_base()
# ---------------------- # ----------------------
# Cargar .env # Cargar .env
@@ -1,8 +1,8 @@
from sqlalchemy import Column, Integer, String, Boolean from sqlalchemy import Column, Integer, String, Boolean
from src.ArquitectureLayer.Model import Model_base from domains.ArquitectureLayer.Model import Model_base
from src.ArquitectureLayer.Mapper import Mapper_base from domains.ArquitectureLayer.Mapper import Mapper_base
from src.ArquitectureLayer.Repo import Repo_base from domains.ArquitectureLayer.Repo import Repo_base
from src.Usuario.usuario import Usuario from domains.Usuario.usuario import Usuario
# ---------------------- # ----------------------
# MODELO (SQLAlchemy) # MODELO (SQLAlchemy)
View File
+8 -8
View File
@@ -1,14 +1,14 @@
# entrypoint/init_db.py # entrypoint/init_db.py
from src.base import Base from domains.base import Base
from src.ConexionSql.Postgres_conexion import PostgresConexion # Asegúrate de tener esta clase implementada correctamente from domains.ConexionSql.Postgres_conexion import PostgresConexion # Asegúrate de tener esta clase implementada correctamente
from src.Credenciales.postgres_credencial import PostgresCredencial # Asegúrate de tener esta clase implementada correctamente from domains.Credenciales.postgres_credencial import PostgresCredencial # Asegúrate de tener esta clase implementada correctamente
from src.Credenciales.postgres_credencial_mmr import PostgresCredencialModel from domains.Credenciales.postgres_credencial_mmr import PostgresCredencialModel
from src.ApiKeys.openai_apikey_mmr import OpenAICredencialModel from domains.ApiKeys.openai_apikey_mmr import OpenAICredencialModel
from src.Llms.Modelos.Openai_model_mmr import ModeloOpenAIConfigModel from domains.Llms.Modelos.Openai_model_mmr import ModeloOpenAIConfigModel
from src.Llms.Embedders.Openai_embedder_mmr import OpenAIEmbedderModel from domains.Llms.Embedders.Openai_embedder_mmr import OpenAIEmbedderModel
from src.TextManager.biblioteca_mmr import BibliotecaModel from domains.TextManager.biblioteca_mmr import BibliotecaModel
from dotenv import load_dotenv from dotenv import load_dotenv
+10 -10
View File
@@ -1,14 +1,14 @@
import { createBrowserRouter, RouterProvider } from 'react-router-dom'; import { createBrowserRouter, RouterProvider } from 'react-router-dom';
import { HomePage } from './domains/Home/Home.page'; import { HomePage } from './frontend_domains/Home/Home.page';
import { Consulta_API } from './domains/Experiments/Consulta_api'; import { Consulta_API } from './frontend_domains/Experiments/Consulta_api';
import { Error_404 } from './domains/FitzStudio/404/404'; // Ajusta si está en otra carpeta import { Error_404 } from './frontend_domains/FitzStudio/404/404'; // Ajusta si está en otra carpeta
import { Grid_Dashboard } from './domains/Experiments/Grid_dashboard'; // Ajusta si está en otra carpeta import { Grid_Dashboard } from './frontend_domains/Experiments/Grid_dashboard'; // Ajusta si está en otra carpeta
import { Biblioteca } from './domains/TextEditor/Biblioteca'; import { Biblioteca } from './frontend_domains/TextEditor/Biblioteca';
import { VisualizacionesRandom } from './domains/Experiments/Visualizaciones_Random'; import { VisualizacionesRandom } from './frontend_domains/Experiments/Visualizaciones_Random';
import { Camara_noir } from './domains/CamaraNoir/Camaras_noir'; import { Camara_noir } from './frontend_domains/CamaraNoir/Camaras_noir';
import EditorTest from "./domains/TextEditor/Editor_Test"; import EditorTest from "./frontend_domains/TextEditor/Editor_Test";
import { ChatPage } from './domains/Llms/Chat/ChatPage'; import { ChatPage } from './frontend_domains/Llms/Chat/ChatPage';
import { LoginPage } from './domains/Usuarios/Login.page'; import { LoginPage } from './frontend_domains/Usuarios/Login.page';
const router = createBrowserRouter([ const router = createBrowserRouter([
+1 -1
View File
@@ -1,6 +1,6 @@
// src/data/submenuLinks.ts // src/data/submenuLinks.ts
import { Biblioteca } from "@/domains/TextEditor/Biblioteca"; import { Biblioteca } from "@/frontend_domains/TextEditor/Biblioteca";
export const submenuLinks = { export const submenuLinks = {
@@ -3,7 +3,7 @@ import { useMantineTheme } from '@mantine/core';
import { IconArrowLeft } from '../../../assets/icons'; import { IconArrowLeft } from '../../../assets/icons';
import { Link } from 'react-router-dom'; import { Link } from 'react-router-dom';
import { MantineCardWithShader } from './HoloShader_404'; // Ajusta ruta si es necesario import { MantineCardWithShader } from './HoloShader_404'; // Ajusta ruta si es necesario
import { AppShellWithMenu } from '../../FitzStudio/Appshell/Appshell'; import { AppShellWithMenu } from '../Appshell/Appshell';
@@ -1,4 +1,4 @@
import { AppShellWithMenu } from '../FitzStudio/Appshell/Appshell'; import { AppShellWithMenu } from './Appshell/Appshell';
export function Plantilla() { export function Plantilla() {
@@ -1,6 +1,6 @@
import { AppShellWithMenu } from '../FitzStudio/Appshell/Appshell'; import { AppShellWithMenu } from '../FitzStudio/Appshell/Appshell';
import { Welcome } from '@/domains/FitzStudio/Welcome/Welcome'; import { Welcome } from '@/frontend_domains/FitzStudio/Welcome/Welcome';
import { ColorSchemeToggle } from '@/domains/FitzStudio/ColorSchemeToggle/ColorSchemeToggle'; import { ColorSchemeToggle } from '@/frontend_domains/FitzStudio/ColorSchemeToggle/ColorSchemeToggle';
export function HomePage() { export function HomePage() {
@@ -1,6 +1,7 @@
import { useState } from 'react'; import { useState } from 'react';
import { TextInput, PasswordInput, Button, Paper, Title, Container, Group, Alert } from '@mantine/core'; import { TextInput, PasswordInput, Button, Paper, Title, Container, Group, Alert } from '@mantine/core';
import { IconUser, IconLock } from '@tabler/icons-react'; import UserIcon from '../../assets/icons/outlined/user.svg?react';
import LockIcon from '../../assets/icons/outlined/lock.svg?react';
export function LoginPage() { export function LoginPage() {
const [email, setEmail] = useState(''); const [email, setEmail] = useState('');
@@ -37,7 +38,7 @@ export function LoginPage() {
<TextInput <TextInput
label="Email" label="Email"
placeholder="tucorreo@ejemplo.com" placeholder="tucorreo@ejemplo.com"
icon={<IconUser size={18} />} icon={<UserIcon style={{ width: 18, height: 18 }} />}
value={email} value={email}
onChange={e => setEmail(e.target.value)} onChange={e => setEmail(e.target.value)}
required required
@@ -46,7 +47,7 @@ export function LoginPage() {
<PasswordInput <PasswordInput
label="Contraseña" label="Contraseña"
placeholder="Tu contraseña" placeholder="Tu contraseña"
icon={<IconLock size={18} />} icon={<LockIcon style={{ width: 18, height: 18 }} />}
value={password} value={password}
onChange={e => setPassword(e.target.value)} onChange={e => setPassword(e.target.value)}
required required
+13 -13
View File
@@ -1,20 +1,20 @@
import asyncio import asyncio
from src.ApiKeys.openai_apikey import OpenAICredencial from domains.ApiKeys.openai_apikey import OpenAICredencial
from src.ApiKeys.openai_apikey_mmr import OpenAICredencialRepo from domains.ApiKeys.openai_apikey_mmr import OpenAICredencialRepo
from src.ConexionSql.Postgres_conexion import PostgresConexion from domains.ConexionSql.Postgres_conexion import PostgresConexion
from entrypoint.init_db import db_credencial from entrypoint.init_db import db_credencial
from src.ConexionApis.OpenAi_conexion import OpenAICliente from domains.ConexionApis.OpenAi_conexion import OpenAICliente
from src.Llms.Modelos.Openai_model import ModeloOpenAI from domains.Llms.Modelos.Openai_model import ModeloOpenAI
from src.Llms.Agente import AgenteAI from domains.Llms.Agente import AgenteAI
from src.Llms.Memory.postgres_MemoryConv import MemoryConvPostgres from domains.Llms.Memory.postgres_MemoryConv import MemoryConvPostgres
from fastmcp.client.transports import StreamableHttpTransport from fastmcp.client.transports import StreamableHttpTransport
from fastmcp.client import Client from fastmcp.client import Client
from src.Llms.MCPs.McpClient import MCPClient # ya tienes esta clase from domains.Llms.MCPs.McpClient import MCPClient # ya tienes esta clase
from src.Llms.MCPs.McpClient_Registry import ClientRegistry # o ajusta según tu estructura from domains.Llms.MCPs.McpClient_Registry import ClientRegistry # o ajusta según tu estructura
from src.Credenciales.ollama_credencial import OllamaCredencial from domains.Credenciales.ollama_credencial import OllamaCredencial
from src.ConexionApis.Ollama_cliente import OllamaCliente from domains.ConexionApis.Ollama_cliente import OllamaCliente
from src.Llms.Modelos.Ollama_model import ModeloOllama from domains.Llms.Modelos.Ollama_model import ModeloOllama
from src.Llms.MCPs.McpServer import MCPServerRunner from domains.Llms.MCPs.McpServer import MCPServerRunner
import asyncio import asyncio
+1 -1
View File
@@ -1,5 +1,5 @@
import asyncio import asyncio
from src.Llms.MCPs.McpServer import MCPServerRunner from domains.Llms.MCPs.McpServer import MCPServerRunner
async def main(): async def main():
venv_python = r"E:\Fitz_Studio\.venv\Scripts\python.exe" venv_python = r"E:\Fitz_Studio\.venv\Scripts\python.exe"
+1 -1
View File
@@ -2,7 +2,7 @@ import asyncio
import os import os
import pyperclip import pyperclip
import re import re
from src.ScrappingWeb.Scrapper import Scrapper from domains.ScrappingWeb.Scrapper import Scrapper
def sanitizar(nombre: str) -> str: def sanitizar(nombre: str) -> str:
return re.sub(r'[\\/*?:"<>|]', "_", nombre).strip()[:100] return re.sub(r'[\\/*?:"<>|]', "_", nombre).strip()[:100]
+3 -3
View File
@@ -1,9 +1,9 @@
import asyncio import asyncio
import os import os
import re import re
from src.ScrappingWeb.Navegador import Navegador from domains.ScrappingWeb.Navegador import Navegador
from src.ScrappingWeb.Scrapper import Scrapper from domains.ScrappingWeb.Scrapper import Scrapper
from src.ScrappingWeb.Tab import Tab from domains.ScrappingWeb.Tab import Tab
import aiohttp import aiohttp
import csv import csv
+1 -1
View File
@@ -1,5 +1,5 @@
from entrypoint.init_db import db_credencial from entrypoint.init_db import db_credencial
from src.Logger.logger_db import LoggerDB, logger from domains.Logger.logger_db import LoggerDB, logger
LoggerDB(db_credencial, "logger_eventos", created_by="sistema_agente") LoggerDB(db_credencial, "logger_eventos", created_by="sistema_agente")
View File

Some files were not shown because too many files have changed in this diff Show More