MasterTech SpA MASTERTECH SpA
Volver al Inicio
Ingeniería Interna & Blueprint

Documentación de Arquitectura Web y Scripts

Registro técnico de cómo está construida esta plataforma: principios de cero-backend innecesario, compilador estático en Python y pipelines de procesamiento de datos reales.

01

Motor SSG en Python: Generador de Reportes de Estudio

Para mantener el sitio liviano y prescindir de servidores pesados de backend (Django/Node con bases de datos SQL para simples lecturas), creamos un generador estático (SSG) minimalista. Lee archivos .md desde la carpeta posts/ y produce archivos HTML listos para producción con las clases de Tailwind y estilos corporativos.

// build_blog.py - Script compilador de Markdown a HTML
import os import markdown POSTS_DIR = "posts" OUTPUT_DIR = "blog" TEMPLATE_FILE = "template_post.html" def parse_frontmatter(content): meta = {} body = content if content.startswith("---"): parts = content.split("---", 2) if len(parts) >= 3: raw_meta, body = parts[1], parts[2] for line in raw_meta.strip().split("\n"): if ":" in line: k, v = line.split(":", 1) meta[k.strip()] = v.strip().strip('"').strip("'") return meta, body def build(): if not os.path.exists(OUTPUT_DIR): os.makedirs(OUTPUT_DIR) with open(TEMPLATE_FILE, "r", encoding="utf-8") as f: template = f.read() for filename in os.listdir(POSTS_DIR): if filename.endswith(".md"): with open(os.path.join(POSTS_DIR, filename), "r", encoding="utf-8") as f: meta, body = parse_frontmatter(f.read()) html_body = markdown.markdown(body, extensions=['tables', 'fenced_code']) output = template.replace("{{TITULO}}", meta.get("titulo", "Sin título")) \ .replace("{{FECHA}}", meta.get("fecha", "")) \ .replace("{{CATEGORIA}}", meta.get("categoria", "Estudio")) \ .replace("{{CONTENIDO}}", html_body) out_path = os.path.join(OUTPUT_DIR, filename.replace(".md", "/index.html")) os.makedirs(os.path.dirname(out_path), exist_ok=True) with open(out_path, "w", encoding="utf-8") as f: f.write(output) print(f"Compilado: {out_path}") if __name__ == "__main__": build()
02

Pipeline de Procesamiento y Limpieza de Catálogos (limpiador.py)

Algoritmo de automatización para e-commerce (desarrollado para casos reales como MDWorks). Resuelve la pérdida de identificadores de variantes en lotes de exportación CSV y normaliza precios en pesos chilenos.

// limpiador.py - Script de normalización con Pandas
import os import pandas as pd def clean_chilean_price(val): if pd.isna(val): return 0 return int(round(float(val))) for i in range(2, 12): filename = f"products_part_{i}.csv" input_path = os.path.join("raw_data", filename) if os.path.exists(input_path): print(f"Procesando lote {i}: {filename}...") df = pd.read_csv(input_path) # 1. Rellenar Handles hacia abajo para variantes if 'Handle' in df.columns: df['Handle'] = df['Handle'].ffill() # 2. Redondear precios locales if 'Variant Price' in df.columns: df['Variant Price'] = df['Variant Price'].apply(clean_chilean_price) # 3. Guardar archivo limpio output_path = os.path.join("cleaned_data", f"cleaned_{filename}") df.to_csv(output_path, index=False)
03

Estructura del Proyecto en el Entorno Local

// Frontend & Páginas Públicas

• index.html: Landing comercial B2B.

• styles.css: Estilos compartidos y utilidades.

• arquitectura/index.html: Blueprint y documentación técnica.

• blog/index.html: Catálogo general de artículos.

• blog/modelo-osi-redes/index.html: Reporte de redes.

// Backend & Scripts de Automatización

• build_blog.py: Compilador de reportes Markdown.

• limpiador.py: Procesamiento por lotes CSV con Pandas.

• posts/*.md: Notas de estudio y reportes en Markdown.