diff --git a/.env.example b/.env.example index 139836b..843f7b2 100644 --- a/.env.example +++ b/.env.example @@ -1,6 +1,2 @@ -# Supabase Configuration -SUPABASE_URL=https://your-project.supabase.co -SUPABASE_SERVICE_ROLE_KEY=your-service-role-key - # Authentik Configuration NUXT_PUBLIC_AUTHENTIK_URL=https://authentik.nucleoriofrio.com diff --git a/Untitled.png b/Untitled.png deleted file mode 100644 index 57956f7..0000000 Binary files a/Untitled.png and /dev/null differ diff --git a/nuxt4-app/app/components/app/AppSidebar.vue b/nuxt4-app/app/components/app/AppSidebar.vue index 1322fff..d717a1f 100644 --- a/nuxt4-app/app/components/app/AppSidebar.vue +++ b/nuxt4-app/app/components/app/AppSidebar.vue @@ -232,42 +232,6 @@ const navigationPrimary = computed(() => [ icon: 'i-lucide-home', to: '/', active: route.path === '/' - }, - { - label: 'Panorama Facturador', - icon: 'i-lucide-bar-chart-3', - to: '/panorama', - active: route.path === '/panorama' - }, - { - label: 'Informe Ingresos', - icon: 'i-lucide-file-bar-chart', - to: '/informe-ingresos', - active: route.path === '/informe-ingresos' - }, - { - label: 'Comparativa Cosechas', - icon: 'i-lucide-calendar-range', - to: '/comparativa-cosechas', - active: route.path === '/comparativa-cosechas' - }, - { - label: 'Explorador de datos', - icon: 'i-lucide-table', - to: '/explorer', - active: route.path === '/explorer' - }, - { - label: 'Metadatos', - icon: 'i-lucide-database', - to: '/metadatos', - active: route.path === '/metadatos' - }, - { - label: 'Explorador de datos raw', - icon: 'i-lucide-table', - to: '/rawExplorer', - active: route.path === '/rawExplorer' } ]) diff --git a/nuxt4-app/app/layouts/dashboard.vue b/nuxt4-app/app/layouts/dashboard.vue index 98d8397..3243776 100644 --- a/nuxt4-app/app/layouts/dashboard.vue +++ b/nuxt4-app/app/layouts/dashboard.vue @@ -14,8 +14,6 @@ diff --git a/nuxt4-app/app/pages/comparativa-cosechas.vue b/nuxt4-app/app/pages/comparativa-cosechas.vue deleted file mode 100644 index a937a77..0000000 --- a/nuxt4-app/app/pages/comparativa-cosechas.vue +++ /dev/null @@ -1,530 +0,0 @@ - - - diff --git a/nuxt4-app/app/pages/explorer.vue b/nuxt4-app/app/pages/explorer.vue deleted file mode 100644 index f47b85a..0000000 --- a/nuxt4-app/app/pages/explorer.vue +++ /dev/null @@ -1,378 +0,0 @@ - - - \ No newline at end of file diff --git a/nuxt4-app/app/pages/index.vue b/nuxt4-app/app/pages/index.vue index 185ff75..e198086 100644 --- a/nuxt4-app/app/pages/index.vue +++ b/nuxt4-app/app/pages/index.vue @@ -14,79 +14,42 @@ Analítica Núcleo Data Studio

- Bienvenido al panel principal. Selecciona una sección para comenzar a explorar tus datos Supabase. + Panel de administración y monitoreo de Núcleo Río Frío

- - Solo lectura - - - Multi-fuente + + Activo
-
- - - - - - - -
-
-

Tablas monitoreadas

-

{{ metadataCount }}

-
-
-

Última actividad

-

{{ lastUpdatedText }}

-
+
+
+
+
- +
+ +
+

+ Bienvenido a Analítica Núcleo +

+

+ Sistema de análisis y monitoreo empresarial +

+

+ Panel central para la gestión y visualización de métricas de negocio de Nucleo Río Frío. + Las funcionalidades de análisis de datos están actualmente en desarrollo. +

+
- - -
    -
  1. Abre “Explorador de datos” desde la barra lateral.
  2. -
  3. Elige el tipo de consulta y ajusta los filtros.
  4. -
  5. Ejecuta la solicitud para revisar los resultados.
  6. -
-
-

- Este panel opera con credenciales de solo lectura hacia Supabase. No se exponen operaciones de escritura - ni se almacenan datos sensibles en el cliente. + Acceso protegido mediante Authentik con autenticación de doble factor y gestión de permisos basada en grupos.

-

- Consulta la documentación interna o abre un ticket de soporte para integrar nuevas fuentes, automatizar - reportes o resolver incidentes. +

+ Gestiona tu información personal y preferencias del sistema.

+ + Ver perfil → + +
+ + + +

+ Personaliza tu experiencia y ajusta las preferencias del panel. +

+ + Ir a configuración → +
diff --git a/nuxt4-app/app/pages/informe-ingresos.vue b/nuxt4-app/app/pages/informe-ingresos.vue deleted file mode 100644 index 0e8095f..0000000 --- a/nuxt4-app/app/pages/informe-ingresos.vue +++ /dev/null @@ -1,1181 +0,0 @@ - - - - - diff --git a/nuxt4-app/app/pages/metadatos.vue b/nuxt4-app/app/pages/metadatos.vue deleted file mode 100644 index 30f054d..0000000 --- a/nuxt4-app/app/pages/metadatos.vue +++ /dev/null @@ -1,171 +0,0 @@ - - - \ No newline at end of file diff --git a/nuxt4-app/app/pages/panorama.vue b/nuxt4-app/app/pages/panorama.vue deleted file mode 100644 index 47bf73c..0000000 --- a/nuxt4-app/app/pages/panorama.vue +++ /dev/null @@ -1,359 +0,0 @@ - - - - diff --git a/nuxt4-app/app/pages/rawExplorer.vue b/nuxt4-app/app/pages/rawExplorer.vue deleted file mode 100644 index e637844..0000000 --- a/nuxt4-app/app/pages/rawExplorer.vue +++ /dev/null @@ -1,795 +0,0 @@ - - - diff --git a/nuxt4-app/nuxt.config.ts b/nuxt4-app/nuxt.config.ts index 622d05a..c6fae0b 100644 --- a/nuxt4-app/nuxt.config.ts +++ b/nuxt4-app/nuxt.config.ts @@ -117,27 +117,9 @@ export default defineNuxtConfig({ }, workbox: { globPatterns: ['**/*.{js,css,html,png,svg,webp,ico,json,woff2}'], - navigateFallback: undefined, // Disable navigation fallback for SPA + navigateFallback: undefined, cleanupOutdatedCaches: true, - maximumFileSizeToCacheInBytes: 4 * 1024 * 1024, - runtimeCaching: [ - { - urlPattern: /^https:\/\/szesytydotpnuiuwybwb\.supabase\.co\//, - handler: 'NetworkFirst', - method: 'GET', - options: { - cacheName: 'supabase-data', - networkTimeoutSeconds: 10, - expiration: { - maxEntries: 60, - maxAgeSeconds: 3600 - }, - cacheableResponse: { - statuses: [0, 200] - } - } - } - ] + maximumFileSizeToCacheInBytes: 4 * 1024 * 1024 }, client: { installPrompt: true, @@ -160,11 +142,6 @@ export default defineNuxtConfig({ ] }, runtimeConfig: { - supabase: { - url: process.env.SUPABASE_URL || process.env.NEXT_PUBLIC_SUPABASE_URL, - serviceRoleKey: - process.env.SUPABASE_SERVICE_ROLE_KEY || process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY - }, public: { authentikUrl: process.env.NUXT_PUBLIC_AUTHENTIK_URL || 'https://authentik.nucleoriofrio.com' } diff --git a/nuxt4-app/package.json b/nuxt4-app/package.json index a61284e..5cd1b38 100644 --- a/nuxt4-app/package.json +++ b/nuxt4-app/package.json @@ -14,7 +14,6 @@ "@nuxt/test-utils": "^3.19.2", "@nuxt/ui": "^4.0.0", "@pinia/nuxt": "^0.11.2", - "@supabase/supabase-js": "^2.48.0", "@vite-pwa/nuxt": "^0.9.1", "nuxt": "^4.1.2", "pinia": "^3.0.3", diff --git a/nuxt4-app/server/api/data/[table]/[...segment].get.ts b/nuxt4-app/server/api/data/[table]/[...segment].get.ts deleted file mode 100644 index 4ff61de..0000000 --- a/nuxt4-app/server/api/data/[table]/[...segment].get.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { parseQuerySegment } from '../../../services/query-parser' -import { fetchTableData, fetchTableRecord } from '../../../services/table-service' - -export default defineEventHandler(async (event) => { - const table = event.context.params?.table - const segmentParam = event.context.params?.segment - - if (!table || !segmentParam) { - throw createError({ statusCode: 400, statusMessage: 'Tabla o parámetro no especificados' }) - } - - const values = Array.isArray(segmentParam) ? segmentParam : [segmentParam] - const target = values[0] - - const parsedQuery = parseQuerySegment(target) - - if (parsedQuery) { - return await fetchTableData(table, { parsedQuery }) - } - - return await fetchTableRecord(table, target) -}) diff --git a/nuxt4-app/server/api/data/[table]/index.get.ts b/nuxt4-app/server/api/data/[table]/index.get.ts deleted file mode 100644 index 41ec602..0000000 --- a/nuxt4-app/server/api/data/[table]/index.get.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { parseQuerySegment } from '../../../services/query-parser' -import { fetchTableData } from '../../../services/table-service' - -export default defineEventHandler(async (event) => { - const table = event.context.params?.table - - if (!table) { - throw createError({ statusCode: 400, statusMessage: 'Tabla no especificada' }) - } - - const query = getQuery(event) - const limitValue = Number.parseInt((query.limit as string) ?? '', 10) - const limit = Number.isFinite(limitValue) ? Math.min(Math.max(limitValue, 1), 500) : undefined - - const offsetValue = Number.parseInt((query.offset as string) ?? '', 10) - const offset = Number.isFinite(offsetValue) ? Math.max(offsetValue, 0) : undefined - - const parsedQuery = parseQuerySegment(query.query as string | undefined) - - return await fetchTableData(table, { - parsedQuery, - limit, - offset, - filters: { - id: (query.id as string) || undefined, - createdFrom: (query.created_from as string) || undefined, - createdTo: (query.created_to as string) || undefined - } - }) -}) diff --git a/nuxt4-app/server/api/data/index.get.ts b/nuxt4-app/server/api/data/index.get.ts deleted file mode 100644 index 6f40ecb..0000000 --- a/nuxt4-app/server/api/data/index.get.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { fetchAllData } from '../../services/table-service' - -export default defineEventHandler(async (event) => { - const query = getQuery(event) - const requestedLimit = Number.parseInt((query.limit as string) ?? '', 10) - const limit = Number.isFinite(requestedLimit) ? Math.min(Math.max(requestedLimit, 1), 100) : 25 - - return await fetchAllData(limit) -}) diff --git a/nuxt4-app/server/api/metadata/[table]/[id].get.ts b/nuxt4-app/server/api/metadata/[table]/[id].get.ts deleted file mode 100644 index c677e30..0000000 --- a/nuxt4-app/server/api/metadata/[table]/[id].get.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { fetchTableRecordMetadata } from '../../../services/table-service' - -export default defineEventHandler(async (event) => { - const table = event.context.params?.table - const id = event.context.params?.id - - if (!table || !id) { - throw createError({ statusCode: 400, statusMessage: 'Tabla o id no especificados' }) - } - - return await fetchTableRecordMetadata(table, id) -}) diff --git a/nuxt4-app/server/api/metadata/[table]/index.get.ts b/nuxt4-app/server/api/metadata/[table]/index.get.ts deleted file mode 100644 index 6143dd8..0000000 --- a/nuxt4-app/server/api/metadata/[table]/index.get.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { parseQuerySegment } from '../../../services/query-parser' -import { fetchTableMetadata } from '../../../services/table-service' - -export default defineEventHandler(async (event) => { - const table = event.context.params?.table - - if (!table) { - throw createError({ statusCode: 400, statusMessage: 'Tabla no especificada' }) - } - - const query = getQuery(event) - const parsedQuery = parseQuerySegment(query.query as string | undefined) - - return await fetchTableMetadata(table, { parsedQuery }) -}) diff --git a/nuxt4-app/server/api/metadata/index.get.ts b/nuxt4-app/server/api/metadata/index.get.ts deleted file mode 100644 index e3e47db..0000000 --- a/nuxt4-app/server/api/metadata/index.get.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { fetchAllTablesMetadata } from '../../services/table-service' - -export default defineEventHandler(async () => { - return await fetchAllTablesMetadata() -})