Programación y desarrollo

Crear una función a partir de una especificación

Genera una función limpia y comentada en el lenguaje que elijas a partir de su objetivo, entradas, salida y casos límite.
Eres un desarrollador senior en [LENGUAJE]. Escribe una función que cumpla esta especificación:

Objetivo: [qué debe hacer]
Entradas: [parámetros y tipos]
Salida: [qué devuelve]
Casos límite a tener en cuenta: [casos]

Requisitos: código limpio y comentado, nombres descriptivos y manejo de errores. Añade 2-3 ejemplos de uso.
por JofranNET

Refactorizar código manteniendo el comportamiento

Mejora la legibilidad, estructura y rendimiento de un código sin cambiar lo que hace, y resume cada cambio realizado.
Actúa como revisor de código. Refactoriza el siguiente código en [LENGUAJE] sin cambiar su comportamiento.

Código:
[PEGAR CÓDIGO]

Mejora: legibilidad, nombres, duplicación, complejidad y rendimiento cuando aplique. Devuelve el código refactorizado y una lista de los cambios y por qué mejoran el código.
por JofranNET

Documentar una función o módulo

Genera documentación técnica de un código: descripción, parámetros, retorno, errores y un ejemplo de uso.
Eres redactor técnico. Genera la documentación del siguiente código en [LENGUAJE].

Código:
[PEGAR CÓDIGO]

Incluye: descripción general, parámetros (tipo y significado), valor de retorno, errores/excepciones, y un ejemplo de uso. Usa el formato de docstrings/comentarios habitual del lenguaje.
por JofranNET

Generar pruebas unitarias

Crea pruebas unitarias para una función cubriendo casos normales, límite y de error con el framework que indiques.
Eres experto en testing. Escribe pruebas unitarias para la siguiente función en [LENGUAJE] usando [FRAMEWORK DE TESTS].

Código:
[PEGAR CÓDIGO]

Cubre: casos normales, casos límite y casos de error. Nombra cada test de forma descriptiva y añade comentarios donde el caso no sea evidente.
por JofranNET

Escribir y optimizar una consulta SQL

Construye una consulta SQL a partir de tu objetivo y esquema, la explica paso a paso y sugiere índices o mejoras.
Actúa como experto en bases de datos. Necesito una consulta SQL para [MOTOR: MySQL/PostgreSQL/SQLite].

Objetivo: [qué quiero obtener]
Tablas y columnas relevantes:
[ESQUEMA]

Devuelve la consulta, explícala paso a paso y sugiere índices o mejoras de rendimiento si procede.
por JofranNET

Importación automática de cartas mediante IA

# Implementación: Importación automática de cartas mediante IA

## Objetivo

Permitir a los restaurantes crear su carta digital a partir de una fotografía o PDF de su carta física, reduciendo el tiempo de configuración inicial.

---

## Flujo de funcionamiento

### 1. Subida de archivo

El usuario podrá subir:

* Fotografías (JPG, PNG, WEBP)
* Documentos PDF

### 2. Extracción de texto

Se utilizará Tesseract OCR para extraer el texto del documento.

Ejemplo:

```text
Entrantes
Patatas Bravas 6,50€
Croquetas Caseras 8,00€

Pizzas
Barbacoa 12,50€
Carbonara 11,90€
```

### 3. Procesamiento mediante IA

El texto obtenido se enviará a Ollama mediante API local.

Prompt sugerido:

```text
Extrae las categorías, productos, descripción y precio.

Devuelve únicamente JSON válido.

Formato:

{
  "categorias": [
    {
      "nombre": "",
      "productos": [
        {
          "nombre": "",
          "descripcion": "",
          "precio": ""
        }
      ]
    }
  ]
}
```

### 4. Respuesta esperada

```json
{
  "categorias": [
    {
      "nombre": "Entrantes",
      "productos": [
        {
          "nombre": "Patatas Bravas",
          "descripcion": "",
          "precio": "6.50"
        },
        {
          "nombre": "Croquetas Caseras",
          "descripcion": "",
          "precio": "8.00"
        }
      ]
    },
    {
      "nombre": "Pizzas",
      "productos": [
        {
          "nombre": "Barbacoa",
          "descripcion": "",
          "precio": "12.50"
        }
      ]
    }
  ]
}
```

### 5. Pantalla de revisión

Antes de guardar:

* Mostrar categorías detectadas.
* Mostrar productos detectados.
* Permitir modificar precios.
* Permitir mover productos entre categorías.
* Permitir eliminar elementos incorrectos.

### 6. Guardado automático

Tras la validación:

* Crear categorías.
* Crear productos.
* Asociar productos a la carta.
* Generar la carta digital.

---

## Tecnologías

### OCR

* Tesseract OCR

### Inteligencia Artificial

* Ollama
* Modelo recomendado:

  * Llama 3.2
  * Qwen 3

### Backend

* PHP 8.x
* API REST interna

### Base de datos

* MariaDB / MySQL

---

## Endpoint interno sugerido

```http
POST /api/menu/import
```

Parámetros:

```json
{
  "restaurant_id": 123,
  "file": "menu.pdf"
}
```

Respuesta:

```json
{
  "success": true,
  "categorias": [...]
}
```

---

## Ventajas para el cliente

* Configuración inicial en menos de 2 minutos.
* Menor trabajo manual.
* Menos errores de introducción de datos.
* Mayor conversión de nuevos restaurantes.

---

## Posible modelo comercial

### Plan gratuito

* Creación manual de cartas.

### Plan Pro

* Importación desde foto.
* Importación desde PDF.
* Procesamiento automático mediante IA.

---

## Recursos del servidor

Servidor actual:

* AlmaLinux 9
* Plesk
* 32 GB RAM

Capacidad suficiente para ejecutar:

* Aplicación principal.
* Tesseract OCR.
* Ollama.
* Procesamiento concurrente de cartas.

---

## Fases de desarrollo

### Fase 1

* Instalación de Tesseract.
* Instalación de Ollama.
* Prueba de extracción de texto.

### Fase 2

* Generación automática de JSON.

### Fase 3

* Pantalla de revisión.

### Fase 4

* Integración con la base de datos.

### Fase 5

* Lanzamiento en producción.

Encontrar el bug en un fragmento de código

Analiza un fragmento de código que falla, identifica la causa raíz del error y devuelve la versión corregida explicada.
Eres un ingeniero de software senior. Te paso un fragmento de código que no funciona como espero.

Lenguaje: [lenguaje]
Comportamiento esperado: [qué debería hacer]
Comportamiento actual: [qué hace / error que aparece]

Código:
[PEGAR CÓDIGO AQUÍ]

Analiza el código, identifica la causa raíz del problema, explícamela de forma concisa y dame la versión corregida con un comentario en la línea que cambiaste.