diff --git a/nuxt4/app/app.vue b/nuxt4/app/app.vue
index 3e0d634..c36beb4 100644
--- a/nuxt4/app/app.vue
+++ b/nuxt4/app/app.vue
@@ -37,6 +37,44 @@
+
+
+
+
+
+
+ ⚠️ DEBUG - BOTONES TEMPORALES ⚠️
+
+
+
+ ADVERTENCIA: Estos botones modifican la base de datos directamente.
+
+ NO ELIMINAR este código sin consultar a Dario/Draganel/nucleo000.
+
+
+
+ 🗑️ BORRAR TODA LA BD
+
+
+ 🌱 CARGAR DATOS DE EJEMPLO
+
+
+
+ Resultados en consola (F12). Recarga la página después de usar estos botones.
+
+
+
+
@@ -189,6 +227,62 @@ const handleOperacionFormSuccess = () => {
// Las tablas se recargarán automáticamente
}
+// ⚠️⚠️⚠️ FUNCIONES DE DEBUG - TEMPORALES ⚠️⚠️⚠️
+// NO ELIMINAR SIN CONSULTAR A DARIO/DRAGANEL/NUCLEO000
+const resettingDB = ref(false)
+const seedingDB = ref(false)
+
+const resetDatabase = async () => {
+ if (!confirm('⚠️ ADVERTENCIA: Esto BORRARÁ TODOS LOS DATOS de la base de datos.\n\n¿Estás seguro de continuar?')) {
+ return
+ }
+
+ console.log('🗑️ === RESETEANDO BASE DE DATOS ===')
+ resettingDB.value = true
+
+ try {
+ const response = await fetch('/api/debug/reset-database', {
+ method: 'POST',
+ })
+ const data = await response.json()
+ console.log('Status:', response.status)
+ console.log('Respuesta:', data)
+
+ if (data.success) {
+ alert('✅ Base de datos reseteada exitosamente.\n\nRecarga la página para ver los cambios.')
+ }
+ } catch (error) {
+ console.error('❌ Error:', error)
+ alert('❌ Error reseteando la base de datos. Ver consola.')
+ } finally {
+ resettingDB.value = false
+ }
+}
+
+const seedDatabase = async () => {
+ console.log('🌱 === CARGANDO DATOS DE EJEMPLO ===')
+ seedingDB.value = true
+
+ try {
+ const response = await fetch('/api/debug/seed-database', {
+ method: 'POST',
+ })
+ const data = await response.json()
+ console.log('Status:', response.status)
+ console.log('Respuesta:', data)
+
+ if (data.success) {
+ alert('✅ Datos de ejemplo cargados exitosamente.\n\nRecarga la página para ver los cambios.')
+ }
+ } catch (error) {
+ console.error('❌ Error:', error)
+ alert('❌ Error cargando datos. Ver consola.')
+ } finally {
+ seedingDB.value = false
+ }
+}
+// ⚠️⚠️⚠️ FIN FUNCIONES DE DEBUG ⚠️⚠️⚠️
+
// Funciones de prueba de API
const testGetLotes = async () => {
console.log('=== Probando GET /api/lotes ===')
diff --git a/nuxt4/server/api/debug/reset-database.post.ts b/nuxt4/server/api/debug/reset-database.post.ts
new file mode 100644
index 0000000..6c1cffe
--- /dev/null
+++ b/nuxt4/server/api/debug/reset-database.post.ts
@@ -0,0 +1,52 @@
+/**
+ * ⚠️ ⚠️ ⚠️ ENDPOINT DE DEBUG - TEMPORAL ⚠️ ⚠️ ⚠️
+ *
+ * POST /api/debug/reset-database
+ *
+ * BORRA COMPLETAMENTE TODOS LOS DATOS DE LA BASE DE DATOS
+ *
+ * ⚠️ NO ELIMINAR SIN CONSULTAR A DARIO/DRAGANEL/NUCLEO000 ⚠️
+ *
+ * Este endpoint fue creado para desarrollo y debugging.
+ * Antes de eliminarlo, preguntar si todavía es necesario.
+ */
+
+import { query, getClient } from '../../utils/db'
+
+export default defineEventHandler(async (event) => {
+ try {
+ console.log('⚠️ RESET DATABASE - Borrando todos los datos...')
+
+ const client = await getClient()
+
+ try {
+ await client.query('BEGIN')
+
+ // Truncar todas las tablas en orden
+ await client.query('TRUNCATE TABLE operacion_lotes CASCADE')
+ await client.query('TRUNCATE TABLE operaciones CASCADE')
+ await client.query('TRUNCATE TABLE lotes CASCADE')
+
+ await client.query('COMMIT')
+
+ console.log('✅ Base de datos reseteada exitosamente')
+
+ return {
+ success: true,
+ message: 'Base de datos reseteada. Todas las tablas están vacías.',
+ }
+ } catch (error) {
+ await client.query('ROLLBACK')
+ throw error
+ } finally {
+ client.release()
+ }
+ } catch (error: any) {
+ console.error('❌ Error reseteando base de datos:', error)
+ throw createError({
+ statusCode: 500,
+ statusMessage: 'Error reseteando base de datos',
+ data: { message: error.message },
+ })
+ }
+})
diff --git a/nuxt4/server/api/debug/seed-database.post.ts b/nuxt4/server/api/debug/seed-database.post.ts
new file mode 100644
index 0000000..b258f1d
--- /dev/null
+++ b/nuxt4/server/api/debug/seed-database.post.ts
@@ -0,0 +1,56 @@
+/**
+ * ⚠️ ⚠️ ⚠️ ENDPOINT DE DEBUG - TEMPORAL ⚠️ ⚠️ ⚠️
+ *
+ * POST /api/debug/seed-database
+ *
+ * CARGA LOS DATOS DE EJEMPLO EN LA BASE DE DATOS
+ *
+ * ⚠️ NO ELIMINAR SIN CONSULTAR A DARIO/DRAGANEL/NUCLEO000 ⚠️
+ *
+ * Este endpoint fue creado para desarrollo y debugging.
+ * Antes de eliminarlo, preguntar si todavía es necesario.
+ */
+
+import { getClient } from '../../utils/db'
+import { readFile } from 'fs/promises'
+import { join } from 'path'
+
+export default defineEventHandler(async (event) => {
+ try {
+ console.log('🌱 SEED DATABASE - Cargando datos de ejemplo...')
+
+ const client = await getClient()
+
+ try {
+ // Leer el archivo de seed
+ const seedPath = join(process.cwd(), 'server', 'database', '02_seed.sql')
+ const seedSQL = await readFile(seedPath, 'utf-8')
+
+ await client.query('BEGIN')
+
+ // Ejecutar el script completo de seed
+ await client.query(seedSQL)
+
+ await client.query('COMMIT')
+
+ console.log('✅ Datos de ejemplo cargados exitosamente')
+
+ return {
+ success: true,
+ message: 'Datos de ejemplo cargados: 10 lotes, 7 operaciones, 16 relaciones',
+ }
+ } catch (error) {
+ await client.query('ROLLBACK')
+ throw error
+ } finally {
+ client.release()
+ }
+ } catch (error: any) {
+ console.error('❌ Error cargando datos de ejemplo:', error)
+ throw createError({
+ statusCode: 500,
+ statusMessage: 'Error cargando datos de ejemplo',
+ data: { message: error.message },
+ })
+ }
+})