Map Editor y Auto-Plan AI
Map Editor y Auto-Plan AI
Qué es
El Map Editor es el canvas interactivo donde los usuarios colocan racks sobre un plano, definen conexiones de cable y añaden anotaciones visuales (paredes, textos, símbolos). Cada plano es un Blueprint que contiene múltiples BlueprintPlacement (posición x/y, rotación, estilo) y MapAnnotation (líneas, textos, símbolos, conexiones de cable tipo grafo).
Auto-Plan AI es la función de digitalización automática: el usuario sube foto o imagen de un plano físico y un LLM multimodal extrae posición de racks, conexiones y elementos decorativos, generando atómicamente todos los objetos de BD sin intervención manual.
Por qué existe
Los data centers suelen documentarse en planos en papel o PDFs escaneados. Recrear ese mapa manualmente implica posicionar decenas de racks uno a uno. Auto-Plan elimina la fricción: en una llamada a la API se digitalizan racks, cables y zonas, reduciendo el tiempo de incorporación de horas a segundos.
Componentes
BlueprintService (blueprints/services/blueprints.py): servicio de dominio con CRUD sobre Blueprint y BlueprintPlacement. Métodos clave:
create_blueprint: crea mapa con config visual (escala, opacidad fondo, modo oscuro, routingmanhattan/smooth, cable spread/curvature).update_placement: mueve o crea en@transaction.atomicposición de rack individual al arrastrarlo.bulk_update_placements: actualiza en bloque posiciones, rotaciones,style_props,parent_rackpara cables. Pre-fetch conRack.objects.in_bulkevita N+1.update_background: persiste ruta de imagen de fondo.
AutoPlanService (blueprints/services/autoplan.py, 606 LOC): servicio que orquesta digitalización IA. 3 proveedores via AUTOPLAN_PROVIDER:
| Provider | SDK / Modelo | Notas |
|---|---|---|
google_genai (default) | google-genai + gemma-4-26b-a4b-it (GEMMA4_GENAI_MODEL) | Google AI Studio · modelo primario único (Regla 8) · retry 503/504 |
ollama | OpenAI client local | OLLAMA_BASE_URL, timeout 5min, ctx 32768, modelos como gemma4 (solo desarrollo self-host) |
(deepseek retirado el 16-05-2026, PR #36; gemini como primario sustituido por Gemma 4 en google_genai. Actualizado 10-09-2026 contra config/settings/base.py:305.)
Los 3 comparten preprocesado: resize a 2048px máx lado mayor, conversión RGB, compresión JPEG.
Constante GRID_SNAP = 15 (px) es el paso de cuadrícula. snap(val, step) redondea coordenadas al múltiplo más cercano para alineación IA ↔ canvas.
Flujos
Crear mapa manual:
POST /api/blueprints/→BlueprintService.create_blueprint.- Usuario arrastra racks desde panel; frontend llama
POST /{bp_id}/rack(rack + placement atómico). - Movimientos →
PUT /{bp_id}/placements/{rack_id}→update_placement. - Múltiples elementos soltados →
POST /{bp_id}/update_positions→bulk_update_placements.
Digitalizar con IA:
POST /api/blueprints/autoplan/importrecibe imagen + nombre.- Endpoint guarda imagen en
MEDIA_ROOT/uploads/blueprints/, calcula factores de escala (scale_x,scale_y) respecto a cuadrícula 1000×1000 lógica. - Lee prompt desde
prompts/blueprint_analyst.mdy delega enAutoPlanService.analyze_blueprint_imagecon provider configurado. - Con JSON IA,
AutoPlanService.create_blueprint_entitiesejecuta@transaction.atomic:- Crea
Rackpor cada elemento con coordenadas snap-grid. - Racks
NODALrecibenstyle_propsdinámicos (ancho proporcional a conectividad, color#ff9900). - Crea
MapAnnotationde tiporack_connectionpara cada cable, evitando duplicados A↔B con set ordenado. - Crea anotaciones
drawing_line,drawing_text,symbolpara paredes, textos, símbolos.
- Crea
- Devuelve 201 con
iddel nuevo blueprint y nº de racks importados.
bulk_update_placements sincroniza parent_rack en Rack al dibujar/eliminar cables en el editor, manteniendo topología coherente.
Related
entity--blueprints--model--blueprint— contenedor raíz.entity--blueprints--model--blueprintplacement— posición de cada rack.concept--racks--editor— editor hermano para contenido dentro de racks.
Véase también
- [[entity—blueprints—model—blueprint]]
- [[entity—blueprints—model—blueprintplacement]]
- [[concept—racks—editor]]
- [[decision—20260401—gemini-3-flash-preview]] — ADR modelo Gemini fijo para Auto-Plan AI