Añade impermeabilización, extras fijos y zonas al motor de presupuesto

Acerca el cálculo a tarifas de mercado sin rehacer el modelo lineal €/m²:
- Impermeabilización como partida propia en zonas húmedas (cocina/baño/integral)
- Extras fijos que no escalan con m²: boletín (siempre), tuberías (piso anterior
  a 2000) y cambio de distribución (mover inodoro/ducha/bañera)
- Intensidad por tipo en fontanería/electricidad (baseline cocina) para que un
  integral no escale como un baño
- Factor de zona por provincia en tramos (Madrid/BCN 1.40, islas 1.30, capitales
  1.20, rural 0.85, resto 1.00)
- 2 preguntas nuevas en el formulario del cliente para disparar los extras
- Panel de precios: campo de impermeabilización + sección de extras fijos
- Seed recalibrado (mano de obra, extras, catálogo suelo/pared)
- Migración 0009 (leads.anterior_a_2000, leads.cambio_distribucion, pricing_config.extras)
- Tests del motor ampliados (impermeabilización, extras, intensidad por tipo)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Goyo Cancio
2026-06-04 14:02:57 +02:00
parent daa58c39a1
commit 2e3cd78216
18 changed files with 1941 additions and 18 deletions

View File

@@ -271,10 +271,20 @@ export default function FormularioZonas({
</div>
</div>
<label className="flex items-center gap-3 text-sm font-medium text-dark cursor-pointer">
<input type="checkbox" name="estructural" className="w-4 h-4 accent-black" />
Hay que mover sanitarios, tirar algún muro o cambiar la distribución
</label>
<div className="flex flex-col gap-3">
<label className="flex items-center gap-3 text-sm font-medium text-dark cursor-pointer">
<input type="checkbox" name="estructural" className="w-4 h-4 accent-black" />
Hay que tirar algún muro u obra estructural
</label>
<label className="flex items-center gap-3 text-sm font-medium text-dark cursor-pointer">
<input type="checkbox" name="cambioDistribucion" className="w-4 h-4 accent-black" />
Hay que mover el inodoro, la ducha o la bañera
</label>
<label className="flex items-center gap-3 text-sm font-medium text-dark cursor-pointer">
<input type="checkbox" name="anteriorA2000" className="w-4 h-4 accent-black" />
El piso es anterior al año 2000
</label>
</div>
</div>
<SubmitButton />