Refactor project structure and implement new features

- Removed unused security module and updated import paths.
- Enhanced OpenAI client with streaming capabilities for chat completions.
- Added new backend API endpoints for health check (ping).
- Established a new FastAPI application with CORS configuration.
- Created a new Appshell component for the frontend with navigation links.
- Integrated SVG icons and improved styling for the Appshell component.
- Implemented memory management for conversation history using PostgreSQL.
- Developed abstract classes for AI agents and models, with OpenAI integration.
- Added encryption utilities for secure data handling.
This commit is contained in:
2025-05-06 23:33:41 +02:00
parent 234639a34a
commit b4ca0cf600
51 changed files with 2026 additions and 338 deletions
+18
View File
@@ -0,0 +1,18 @@
// OUTLINED
export { default as IconArrowLeft } from './outlined/arrow-left.svg?react';
export { default as IconHomeOutline } from './outlined/home.svg?react';
export { default as IconUserOutline } from './outlined/user.svg?react';
export { default as IconCalendarStats } from './outlined/calendar-stats.svg?react';
export { default as IconDeviceDesktopAnalytics } from './outlined/device-desktop-analytics.svg?react';
export { default as IconFingerprint } from './outlined/fingerprint.svg?react';
export { default as IconGauge } from './outlined/gauge.svg?react';
export { default as IconHome2 } from './outlined/home-2.svg?react';
export { default as IconSettings } from './outlined/settings.svg?react';
export { default as IconArrowBarLeft } from './outlined/arrow-bar-left.svg?react';
export { default as IconArrowBarRight } from './outlined/arrow-bar-right.svg?react';
export { default as IconCheck } from './outlined/check.svg?react';
// FILLED
export { default as IconHomeFilled } from './filled/home.svg?react';
export { default as IconUserFilled } from './filled/user.svg?react';
@@ -5,10 +5,10 @@ import {
IconGauge,
IconHome2,
IconSettings,
IconUser,
IconUserOutline as IconUser,
IconArrowBarLeft,
IconArrowBarRight,
} from '@tabler/icons-react';
} from '../../assets/icons';
import {
AppShell,
@@ -109,7 +109,7 @@ import {
className={classes.mainLink}
data-active={link.label === active || undefined}
>
<link.icon size={22} stroke={1.5} />
<link.icon />
</UnstyledButton>
</Tooltip>
));
@@ -154,7 +154,7 @@ import {
<Group h="100%" px="md">
<Burger opened={mobileOpened} onClick={toggleMobile} hiddenFrom="sm" size="sm" />
<Burger opened={desktopOpened} onClick={toggleDesktop} visibleFrom="sm" size="sm" />
<img src="/src/favicon.svg" alt="Logo" style={{ width: 30, height: 30 }} />
<img src="/public/favicon.svg" alt="Logo" style={{ width: 30, height: 30 }} />
</Group>
</AppShell.Header>
+2 -2
View File
@@ -1,5 +1,5 @@
import { Select, Group } from '@mantine/core';
import { IconCheck } from '@tabler/icons-react';
import { IconCheck } from '../assets/icons';
interface MetodoSelectProps {
metodo: string;
@@ -37,7 +37,7 @@ export function MetodoSelect({ metodo, setMetodo }: MetodoSelectProps) {
renderOption={({ option, checked }) => (
<Group style={{ color: colorMap[option.value], fontWeight: 600 }}>
{option.label}
{checked && <IconCheck size={14} />}
{checked && <IconCheck/>}
</Group>
)}
styles={{
-1
View File
@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 163 163"><path fill="#339AF0" d="M162.162 81.5c0-45.011-36.301-81.5-81.08-81.5C36.301 0 0 36.489 0 81.5 0 126.51 36.301 163 81.081 163s81.081-36.49 81.081-81.5z"/><path fill="#fff" d="M65.983 43.049a6.234 6.234 0 00-.336 6.884 6.14 6.14 0 001.618 1.786c9.444 7.036 14.866 17.794 14.866 29.52 0 11.726-5.422 22.484-14.866 29.52a6.145 6.145 0 00-1.616 1.786 6.21 6.21 0 00-.694 4.693 6.21 6.21 0 001.028 2.186 6.151 6.151 0 006.457 2.319 6.154 6.154 0 002.177-1.035 50.083 50.083 0 007.947-7.39h17.493c3.406 0 6.174-2.772 6.174-6.194s-2.762-6.194-6.174-6.194h-9.655a49.165 49.165 0 004.071-19.69 49.167 49.167 0 00-4.07-19.692h9.66c3.406 0 6.173-2.771 6.173-6.194 0-3.422-2.762-6.193-6.173-6.193H82.574a50.112 50.112 0 00-7.952-7.397 6.15 6.15 0 00-4.578-1.153 6.189 6.189 0 00-4.055 2.438h-.006z"/><path fill="#fff" fill-rule="evenodd" d="M56.236 79.391a9.342 9.342 0 01.632-3.608 9.262 9.262 0 011.967-3.077 9.143 9.143 0 012.994-2.063 9.06 9.06 0 017.103 0 9.145 9.145 0 012.995 2.063 9.262 9.262 0 011.967 3.077 9.339 9.339 0 01-2.125 10.003 9.094 9.094 0 01-6.388 2.63 9.094 9.094 0 01-6.39-2.63 9.3 9.3 0 01-2.755-6.395z" clip-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

+26 -20
View File
@@ -1,31 +1,38 @@
import { Box, Title, Text, Button, Group, Stack, Image, Center } from '@mantine/core';
import { IconArrowLeft } from '@tabler/icons-react';
import { IconArrowLeft } from '../assets/icons';
import { Link } from 'react-router-dom';
import { MantineCardWithShader } from '../components/HoloShader'; // Ajusta ruta si es necesario
import { AppShellWithMenu } from '../components/Appshell';
import { AppShellWithMenu } from '../components/Appshell/Appshell';
export function Error_404() {
return (
<AppShellWithMenu>
<Box style={{
flex: 1,
display: 'flex',
justifyContent: 'center',
alignItems: 'flex-start', // alinea arriba
padding: '2rem',
paddingTop: '0.5rem', // agrega espacio desde arriba si deseas
}}>
<Box style={{ flex: 1, display: 'flex', justifyContent: 'center', alignItems: 'center', padding: '2rem' }}>
<Box
style={{
flex: 1,
display: 'flex',
justifyContent: 'center',
alignItems: 'flex-start',
padding: '2rem',
paddingTop: '0.5rem',
}}
>
<Box
style={{
flex: 1,
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
padding: '2rem',
}}
>
<Stack align="center" maw={500} mx="auto">
<MantineCardWithShader />
<Title order={1}>
Página no encontrada
</Title>
<MantineCardWithShader />
<Title order={1}>Página no encontrada</Title>
<Text size="lg">
Parece que la página que estás buscando no existe o fue removida. Pero no te preocupes, puedes volver al inicio fácilmente.
Parece que la página que estás buscando no existe o fue removida. Pero no te preocupes,
puedes volver al inicio fácilmente.
</Text>
<Group mt="md">
@@ -35,7 +42,7 @@ export function Error_404() {
size="md"
variant="gradient"
gradient={{ from: 'blue', to: 'cyan' }}
leftSection={<IconArrowLeft size={18} />}
leftSection={<IconArrowLeft width={18} height={18} />}
>
Volver al inicio
</Button>
@@ -44,6 +51,5 @@ export function Error_404() {
</Box>
</Box>
</AppShellWithMenu>
);
}
+1 -5
View File
@@ -1,8 +1,4 @@
import { ColorSchemeToggle } from '../components/ColorSchemeToggle/ColorSchemeToggle';
import { Welcome } from '../components/Welcome/Welcome';
import MiBoton from '../components/botoncito';
import { Center, Box } from '@mantine/core';
import { AppShellWithMenu } from '../components/Appshell';
import { AppShellWithMenu } from '../components/Appshell/Appshell';
+2 -2
View File
@@ -1,6 +1,6 @@
import { Box } from '@mantine/core';
import { LlamadorAPI } from '../components/LlamadorAPI';
import { AppShellWithMenu } from '../components/Appshell';
import { AppShellWithMenu } from '../components/Appshell/Appshell';
export function Consulta_API() {
+1 -1
View File
@@ -1,4 +1,4 @@
import { AppShellWithMenu } from '../components/Appshell';
import { AppShellWithMenu } from '../components/Appshell/Appshell';
export function HomePage() {
+1 -1
View File
@@ -1,4 +1,4 @@
import { AppShellWithMenu } from '../components/Appshell';
import { AppShellWithMenu } from '../components/Appshell/Appshell';
export function Plantilla() {
+1 -6
View File
@@ -1,9 +1,4 @@
import { ColorSchemeToggle } from '../components/ColorSchemeToggle/ColorSchemeToggle';
import { Welcome } from '../components/Welcome/Welcome';
import MiBoton from '../components/botoncito';
import { Center, Box } from '@mantine/core';
import { MantineCardWithShader } from '../components/HoloShader';
import { AppShellWithMenu } from '../components/Appshell';
import { AppShellWithMenu } from '../components/Appshell/Appshell';
export function Prueba_appshell() {
return (
+7
View File
@@ -0,0 +1,7 @@
declare module '*.svg' {
import * as React from 'react';
export const ReactComponent: React.FunctionComponent<React.SVGProps<SVGSVGElement>>;
const src: string;
export default src;
}
+1
View File
@@ -0,0 +1 @@
/// <reference types="vite-plugin-svgr/client" />