# LloretIA — Paquete de código abierto

> Recursos técnicos en la intersección de derecho público español, regulación
> de IA y desarrollo software. Publicados con licencia abierta desde
> [lloretia.com/codigo](https://lloretia.com/codigo).

Última revisión: mayo 2026.

---

## Contenido

| Archivo | Lenguaje | Función |
|---|---|---|
| `baja-temeraria.js` | JavaScript (Node.js 18+) | Análisis art. 85 RGLCAP — detección de ofertas anormalmente bajas |
| `baja-temeraria.py` | Python 3.10+ | Equivalente Python del módulo JS — mismo algoritmo |
| `eu-ai-act-watermark.ts` | TypeScript | Capa de cumplimiento del art. 50 EU AI Act (Reg. UE 2024/1689) |
| `placsp-fetcher.py` | Python 3.10+ | Cliente del feed Atom del PLACSP con filtros CPV / keywords / importe |
| `generate-plantillas.mjs` | Node.js ESM | Generador de plantillas LCSP en .docx y .xlsx (requiere `docx` + `exceljs`) |

---

## Uso rápido por archivo

### `baja-temeraria.js`

```bash
node baja-temeraria.js 100000 85000 78000 92000 88000 75000
```

```javascript
import { analizarOfertas } from './baja-temeraria.js';

const resultado = analizarOfertas(100000, [85000, 78000, 92000, 88000, 75000]);
console.log(resultado);
```

### `baja-temeraria.py`

```bash
python baja_temeraria.py 100000 85000 78000 92000 88000 75000
```

```python
from baja_temeraria import analizar_ofertas

resultado = analizar_ofertas(100000, [85000, 78000, 92000, 88000, 75000])
print(resultado)
```

### `eu-ai-act-watermark.ts`

```typescript
import { generateWithDisclosure } from './eu-ai-act-watermark';

const { content, disclosure } = await generateWithDisclosure(
  async () => /* tu llamada a LLM aquí */,
  {
    modelId: 'claude-sonnet-4-20250514',
    providerId: 'urn:org:tu-aapp:asistente',
    language: 'es',
  }
);
// content + disclosure listo para servir al usuario con etiqueta EU AI Act
```

### `placsp-fetcher.py`

```bash
# Filtro por CPV
python placsp_fetcher.py --cpv 4521

# Filtro por keywords + importe
python placsp_fetcher.py --keyword calderería --keyword metalurgia --min 50000

# Salida JSON
python placsp_fetcher.py --cpv 45 --json
```

### `generate-plantillas.mjs`

```bash
# Requiere npm install docx exceljs
node generate-plantillas.mjs
```

Genera tres plantillas LCSP en el directorio actual:
- `declaracion-responsable-lcsp.docx` (art. 140 LCSP)
- `acta-recepcion-obra.docx` (art. 210 LCSP)
- `calculadora-baja-temeraria.xlsx` (art. 85 RGLCAP con fórmulas Excel)

---

## Normativa de referencia

- **Ley 9/2017** de Contratos del Sector Público (LCSP)
- **Real Decreto 1098/2001** (Reglamento General LCAP, RGLCAP)
- **Reglamento (UE) 2024/1689** (EU AI Act) — efectividad escalonada
  2025-2027
- **Reglamento (UE) 2016/679** (RGPD) y **Ley Orgánica 3/2018** (LOPDGDD)

---

## Licencia

MIT. Uso libre con atribución a [lloretia.com](https://lloretia.com).

Los archivos contienen modelos jurídico-administrativos derivados de
normativa pública. **No sustituyen al asesoramiento profesional
especializado**: para aplicación a expedientes concretos, se recomienda
revisión por jurista o asesor cualificado.

---

## Contribuciones y feedback

Este es un paquete personal en evolución. Si encuentras un bug, una
mejora doctrinal o un caso que no contempla, escribe vía el formulario
de la newsletter en [lloretia.com](https://lloretia.com).
