Skip to main content

plandemovilidad-patterns

Patrones de proyecto PLANDEMOVILIDAD v3.0 — generador de Planes de Movilidad Sostenible (PMST/PTST). Arquitectura, módulos, helpers, convenciones, archivos sagrados, clases CSS.

Zur Installation springen

Quellinformationen

Repository
Ntizar/NtizarBrainMasterMind
Letzte Quellaktivität
16. Juli 2026 um 08:02
Erkannte Sprache von SKILL.md
Spanisch
Sterne
2
Forks
0

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
plandemovilidad-patterns
description
Patrones de proyecto PLANDEMOVILIDAD v3.0 — generador de Planes de Movilidad Sostenible (PMST/PTST). Arquitectura, módulos, helpers, convenciones, archivos sagrados, clases CSS.
# PLANDEMOVILIDAD — Patrones de Proyecto ## Identidad - **Proyecto:** PLANDEMOVILIDAD v3.0 — Generador de Planes de Movilidad Sostenible al Trabajo (PMST/PTST) - **Usuario/Dueño:** David Antizar (Ntizar) - **Stack:** Vanilla JS + IndexedDB + Leaflet + Chart.js + WeasyPrint (servidor para PDF) - **Propósito:** Generar informes profesionales de 60-80 páginas que cumplen la Ley 8/2021 de movilidad sostenible ## Estructura del Proyecto ``` PLANDEMOVILIDAD/ ├── index.html ← Entry point, importa todos los módulos como type="module" ├── style.css ← SAGRADO — diseño general ├── deploy.sh ← Despliegue ├── js/ │ ├── config.js ← SAGRADO — config global, constantes │ ├── utils.js ← SAGRADO — utilidades │ ├── graficas.js ← SAGRADO — gráficas Chart.js │ ├── export.js ← SAGRADO — export a PDF/DOCX/ZIP │ ├── informe.js ← Orquestador del informe │ ├── ia-generativa.js ← IA generativa (qwen3.6 vía api.nan.builders) │ ├── report.js ← SHIM — re-exporta desde js/report/index.js │ ├── report-maps.js ← Mapas Leaflet para el informe HTML │ └── report/ ← Módulos del generador de informe │ ├── helpers.js ← CONSTANTES + helpers (fmt, pct, safe, getCO2e...) │ ├── css.js ← CSS embebido para el informe HTML │ ├── index.js ← Orquestador: generarInformeCompleto(app) │ ├── 00-portada.js ← 22 capítulos (00-21) │ └── ... ``` ## Archivos SAGRADOS (NO MODIFICAR sin permiso) - `style.css`, `index.html`, `config.js`, `utils.js`, `graficas.js`, `export.js` ## Arquitectura del Generador de Informe ### Flujo de datos 1. `export.js` → `generarInformeCompleto(app)` (importado de `./report.js`) 2. `report.js` re-exporta desde `./report/index.js` 3. `index.js` importa 22 capítulos + helpers, ensambla HTML completo 4. Cada capítulo importa helpers desde `./helpers.js` 5. HTML completo → blob → WeasyPrint → PDF ~70 páginas ### Convenciones de código - Cada capítulo < 200 líneas. Si supera, extraer sub-funciones internas. - Los capítulos NO se llaman entre sí. Solo importan helpers. - helpers.js NO importa nada. Nivel más bajo de dependencia. - css.js NO importa nada. - index.js es el único que importa capítulos directamente. - `export function generarInformeCompleto(app)` = interfaz pública. ### Helpers principales ```js fmt(num, decimales=1) // Formato número español (1.234,5) pct(num) // Porcentaje (45,2%) fechaLarga() // "14 de julio de 2026" fechaCorta() // "2026-07-14" safe(obj, path, default) // Acceso seguro por ruta de puntos safeNum(obj, path, default) safeArr(obj, path) getEmpleados(app) // Extrae empleados de app.empleados getModalSplit(app) // Calcula reparto modal getCO2e(app) // Calcula huella de carbono getResumen(app) // Nivel de sostenibilidad + % motorizado + % sostenible getCSS() // String CSS completo A4 ``` ### Factores de emisión CO2e (kg/km) Coche particular: 0.192 | Compartido: 0.115 | Bus urbano: 0.089 | Bus interurbano: 0.045 Metro: 0.035 | Cercanías: 0.033 | Tranvía: 0.029 | Bici: 0.000 | Bici eléctrica: 0.006 A pie: 0.000 | VMP: 0.015 | Teletrabajo: 0.010 ### Regla crítica **N/D > dato inventado** — Si API no devuelve datos, mostrar "Sin datos" o "N/D". NUNCA inventar. ## Clases CSS del informe - `.chapter` / `.chapter-title` / `.section-title` / `.subsection-title` - `.highlight-box` (.warning, .success, .danger) - `.kpi-grid` / `.kpi-card` (.accent, .green) - `.dafo-grid` / `.dafo-box` (.fortalezas, .debilidades, .oportunidades, .amenazas) - `.cronograma-row` / `.cronograma-bar` / `.cronograma-header` - `.badge` (.alta, .media, .baja) - `.firma-grid` / `.firma-box` - `.portada` / `.indice` / `.indice-item` - `.informe-footer` - Utilidades: `.page-break`, `.no-break`, `.text-center`, `.text-sm`, `.font-bold`, `.text-blue`, `.text-orange` ## Navegación - Sin backend. Todo frontend estático + APIs externas. - IA: `api.nan.builders/v1` con key de localStorage. - PDF: HTML → WeasyPrint (servidor). - Mapas: Leaflet + OSM + GBFS + POIs + isocronas. - Canvas/Leaflet NO renderizan en PDF.
Auf GitHub ansehen