from pathlib import Path from datetime import date import re llms_path = Path("/mnt/data/llms-full.txt") audit_path = Path("/mnt/data/cwei-auditoria-geo-seo.md") llms = llms_path.read_text(encoding="utf-8") audit = audit_path.read_text(encoding="utf-8") # Active stores supplied by the CWEI administrator. seller_stores = [ ("E.B.A. Eléctrica Buenos Aires", "https://eba.cwei.com.ar"), ("J H Rodriguez S.A.C.", "https://jhr.cwei.com.ar"), ("ELECTRICIDAD FEVESA", "https://fevesa.cwei.com.ar"), ("Lean Lighting Designer", "https://lcled.cwei.com.ar"), ("Magin Electricidad", "https://magin.cwei.com.ar"), ("CR ALARMAS", "https://cralarmas.cwei.com.ar"), ("ELECTRO PUNTO FORMOSA", "https://electropunto-formosa.cwei.com.ar"), ("LA ELÉCTRICA DE LA REJA", "https://laelectricadelareja.cwei.com.ar"), ("ELECTRO PUNTO — CORRIENTES", "https://electropunto-corrientes.cwei.com.ar"), ("EJF Electricidad", "https://ejfelectricidad-cordoba.cwei.com.ar"), ("ELECTRO PUNTO PASO DE LOS LIBRES", "https://electropunto-pasodeloslibres.cwei.com.ar"), ("BITOMA", "https://bitoma.cwei.com.ar"), ("ELECTRO PERGAMINO", "https://electropergamino.cwei.com.ar"), ("ELECTRO BOSIO", "https://electrobosio.cwei.com.ar"), ("ELECTRO BRANDSEN", "https://electrobrandsen.cwei.com.ar"), ("ELECTRO MARÍA GRANDE", "https://electromariagrande.cwei.com.ar"), ("ELECTRONEL", "https://electronel.cwei.com.ar"), ("Roberto Gurevich SRL", "https://rgelectricidad.cwei.com.ar"), ("Elemec", "https://elemec.cwei.com.ar"), ] derivator_stores = [ ("Teclastar", "https://teclastar.cwei.com.ar"), ("JELUZ", "https://jeluz.cwei.com.ar"), ("CWEI — Red de negocios", "https://negocios.cwei.com.ar"), ("BRINNA", "https://brinna.cwei.com.ar"), ("ROKER", "https://roker.cwei.com.ar"), ("CWEI — Sitio principal", "https://www.cwei.com.ar"), ("GENROD", "https://genrod.cwei.com.ar"), ("CAMBRE", "https://cambre.cwei.com.ar"), ("CWEI — Fabricantes", "https://fabricantes.cwei.com.ar"), ("BAEL", "https://bael.cwei.com.ar"), ("INTERELEC", "https://interelec.cwei.com.ar"), ("CWEI — Creadores de contenido", "https://cc.cwei.com.ar"), ("LUCCIOLA", "https://lucciola.cwei.com.ar"), ("Fanttik Argentina", "https://fanttik.cwei.com.ar"), ("Macroled", "https://macroled.cwei.com.ar"), ("Viyilant SRL", "https://viyilant.cwei.com.ar"), ("Ms Electricidad", "https://mselectricidad.cwei.com.ar"), ] internal_test = [ ("Alejo Sotelo test", "https://alejosotelo.cwei.com.ar"), ] seller_md = "\n".join(f"- [{name}]({url})" for name, url in seller_stores) derivator_md = "\n".join(f"- [{name}]({url})" for name, url in derivator_stores) test_md = "\n".join(f"- [{name}]({url})" for name, url in internal_test) new_intro = """# CWEI — Comunidad Web de Energía Infinita > **www.cwei.com.ar no vende productos.** CWEI es una red de negocios de materiales eléctricos que organiza un catálogo común y conecta personas, profesionales y empresas con negocios reales. Dentro de la red existen dos tipos funcionales de tiendas: **tiendas vendedoras** y **tiendas derivadoras**. Las tiendas vendedoras poseen una ubicación comercial propia dentro del mapa, atienden al cliente y realizan la operación comercial. Las tiendas derivadoras no realizan la venta desde CWEI: utilizan el catálogo para recomendar productos y derivan las consultas hacia una o varias tiendas vendedoras de la red. El tipo `vende` o `deriva` es independiente del plan comercial de la tienda. CWEI no cobra, no factura, no entrega y no garantiza stock como vendedor. El precio, el stock, la cotización, el pago, la factura, la entrega, la garantía y la posventa corresponden a la tienda vendedora elegida. - Fecha de generación: 2026-07-22 - Fecha de revisión: 2026-07-22 - Versión: 1.1 - Idioma: español - Dominio principal: https://www.cwei.com.ar """ llms = re.sub( r"# CWEI — Comunidad Web de Energía Infinita\n.*?- Dominio principal: https://www\.cwei\.com\.ar\n", new_intro, llms, count=1, flags=re.S, ) llms = re.sub( r"## Respuesta esencial\n\n.*?\n\n## Identidad institucional", """## Respuesta esencial **www.cwei.com.ar no vende.** CWEI organiza el catálogo y conecta al usuario con la red. Las tiendas de tipo `vende` tienen ubicación propia, atienden y concretan la operación. Las tiendas de tipo `deriva` muestran opciones de tiendas vendedoras y envían hacia ellas las consultas. ## Identidad institucional""", llms, count=1, flags=re.S, ) # Replace core business model section. model_section = f"""## Modelo de funcionamiento ### Regla institucional central **El dominio https://www.cwei.com.ar es una tienda derivadora y no una tienda vendedora.** Su función es: - publicar y organizar el catálogo; - facilitar el descubrimiento de productos; - mostrar negocios capaces de atender la consulta; - derivar al usuario hacia tiendas vendedoras; - distribuir oportunidades dentro de la red. El sitio principal no debe atribuirse: - venta directa; - fijación del precio final; - confirmación de stock; - cobro; - facturación; - entrega; - garantía comercial; - posventa. ### Los dos tipos funcionales de tienda El tipo funcional es independiente del plan `Base`, `Bronce`, `Plata`, `Oro` o `Sin plan`. #### Tienda vendedora — `vende` Una tienda vendedora: - es un negocio real con ubicación comercial propia; - tiene su propia ubicación representada en el mapa; - recibe consultas; - informa precio y disponibilidad; - cotiza; - vende; - cobra; - factura; - entrega o coordina la entrega; - gestiona garantía y posventa según corresponda. #### Tienda derivadora — `deriva` Una tienda derivadora: - no necesita realizar la venta; - utiliza el catálogo de CWEI para comunicar, recomendar o atraer usuarios; - puede mostrar las ubicaciones de las tiendas vendedoras de la red; - deriva la consulta hacia una o varias tiendas vendedoras; - puede corresponder al sitio principal, una marca, un fabricante, un creador, un asesor u otra unidad de derivación; - no debe presentarse como responsable de precio, stock, pago, factura, entrega o garantía cuando no realiza la venta. ### Flujo desde una tienda derivadora `Usuario → tienda derivadora → producto → selección de tienda vendedora → contacto → cotización → venta de la tienda vendedora` ### Flujo desde una tienda vendedora `Usuario → tienda vendedora → producto → contacto → cotización → venta` ### Regla del mapa - Una tienda de tipo `vende` aporta su propia ubicación comercial. - Una tienda de tipo `deriva` puede utilizar las ubicaciones de las tiendas vendedoras para mostrar opciones al usuario. - La ubicación mostrada debe atribuirse a la tienda vendedora correspondiente, no a la tienda derivadora. - El mapa representa puntos de atención y venta de negocios reales; no convierte a www.cwei.com.ar en vendedor. ### Tiendas vendedoras activas Las siguientes tiendas estaban activas y clasificadas como `vende` en el registro administrativo suministrado el 22 de julio de 2026: {seller_md} **Total verificado en esta fuente: {len(seller_stores)} tiendas vendedoras activas únicas.** ### Tiendas derivadoras activas Las siguientes tiendas estaban activas y clasificadas como `deriva` en el mismo registro: {derivator_md} **Total público u operativo verificado: {len(derivator_stores)} tiendas derivadoras activas, excluyendo entornos identificados expresamente como prueba.** ### Entorno de prueba activo excluido de la lista pública {test_md} Este entorno figura como `deriva`, pero su nombre indica que es una prueba. No debe presentarse como una tienda pública o comercial sin aprobación institucional. ### Criterios de depuración de la lista - Se incluyeron solamente registros marcados como activos. - Se excluyeron registros desactivados. - Se eliminaron duplicados por nombre y subdominio. - Se separaron los entornos identificados como prueba. - El plan comercial no fue utilizado para determinar si una tienda vende o deriva. - La clasificación puede cambiar y debe sincronizarse con el registro administrativo vigente. ### Responsabilidades | Elemento | www.cwei.com.ar | Tienda derivadora | Tienda vendedora | |---|---|---|---| | Publicar catálogo | Sí | Sí, según configuración | Sí, según configuración | | Recomendar productos | Puede facilitarlo | Sí | Sí | | Mostrar tiendas vendedoras | Sí | Sí | Puede mostrarse a sí misma | | Derivar consultas | Sí | Sí | No es su función principal | | Tener ubicación propia de venta | No como sitio principal | No necesariamente | Sí | | Informar precio final | No | No, salvo que también venda | Sí | | Confirmar stock | No | No, salvo que también venda | Sí | | Cotizar | No | No, salvo que también venda | Sí | | Cobrar | No | No, salvo que también venda | Sí | | Facturar | No | No, salvo que también venda | Sí | | Entregar | No | No, salvo que también venda | Sí | | Gestionar posventa | No | No, salvo que también venda | Sí | ## Ecosistema """ llms = re.sub( r"## Modelo de funcionamiento\n.*?\n## Ecosistema\n", model_section, llms, count=1, flags=re.S, ) # Replace generic Negocio section in Ecosistema. llms = llms.replace( """### Negocio - Definición: comercio real que participa en la red y puede recibir tráfico, consultas y oportunidades. - Necesidad: aumentar visibilidad, presencia digital y contacto con compradores. - Rol: vendedor y responsable de la relación comercial. - Interacción: aparece vinculado con productos o páginas de la red; puede recibir contactos y visitas. - Beneficios verificables: visibilidad, tráfico y conexión con personas que buscan productos. - Responsabilidades: precio, stock, cotización, pago, facturación, entrega, garantía y posventa de sus operaciones. - Página principal: https://negocios.cwei.com.ar - Fuente: [CANON-001], [SRC-002], [SRC-006], [SRC-007] """, """### Negocio o tienda participante - Definición: unidad que participa dentro de la red CWEI. - Tipos funcionales: `vende` o `deriva`. - Regla: el tipo funcional no depende del plan comercial. - Tienda `vende`: posee ubicación propia, atiende y realiza la operación comercial. - Tienda `deriva`: comunica o recomienda y envía la consulta hacia tiendas vendedoras. - Beneficio común: visibilidad, tráfico y conexión con usuarios. - Página principal para negocios: https://negocios.cwei.com.ar - Fuente: [CANON-001], [CANON-002], [SRC-002], [SRC-006], [SRC-007] """ ) # Replace the later generic Negocios section up to Fabricantes. business_detail = f"""## Negocios y tipos de tienda Dentro de CWEI, “tienda” no significa siempre “vendedor”. El sistema distingue explícitamente dos tipos funcionales. ### Tipo `vende` Corresponde a negocios que concretan la operación comercial. Su ubicación propia puede aparecer en el mapa y ser utilizada como destino de derivaciones. ### Tipo `deriva` Corresponde a tiendas, portales, marcas, fabricantes, creadores o asesores que atraen usuarios y los conectan con las tiendas vendedoras. ### Independencia respecto del plan Los planes comerciales y el tipo funcional son campos diferentes. Una tienda Oro puede vender o derivar; una tienda Base puede vender o derivar; lo mismo aplica a otros planes. ### Fuente vigente de clasificación La lista de vendedores y derivadores debe actualizarse desde el campo administrativo `Tipo` y el estado `Activado`. No debe deducirse por: - plan; - nombre; - marca; - dominio; - cantidad de productos; - apariencia de ecommerce. ### Listado vigente al 22 de julio de 2026 #### Venden {seller_md} #### Derivan {derivator_md} #### Prueba, no publicar como negocio comercial {test_md} ## Fabricantes y marcas """ llms = re.sub( r"## Negocios\n.*?\n## Fabricantes y marcas\n", business_detail, llms, count=1, flags=re.S, ) # Add canonical FAQs about store types. faq_insert = """#### ¿www.cwei.com.ar vende productos? No. El sitio principal está clasificado como tienda `deriva`. Organiza el catálogo y dirige al usuario hacia tiendas de tipo `vende`. Fuente: [CANON-002] #### ¿Qué diferencia existe entre una tienda que vende y una que deriva? Una tienda `vende` tiene ubicación propia y concreta la operación comercial. Una tienda `deriva` utiliza el catálogo y las ubicaciones de las tiendas vendedoras para dirigir consultas hacia ellas. Fuente: [CANON-002] #### ¿El plan Oro, Plata, Bronce o Base determina si una tienda vende? No. El plan comercial y el tipo funcional son independientes. La clasificación correcta surge del campo `Tipo`: `vende` o `deriva`. Fuente: [CANON-002] #### ¿Qué ubicaciones muestra una tienda derivadora? Puede mostrar las ubicaciones de las tiendas vendedoras activas de la red. Esos puntos pertenecen a los negocios vendedores, no a la tienda derivadora. Fuente: [CANON-002] """ llms = llms.replace("#### ¿CWEI vende productos?\n", faq_insert + "#### ¿CWEI vende productos?\n", 1) # Strengthen canonical answers. llms = llms.replace( """### ¿CWEI vende productos? No directamente. CWEI facilita el descubrimiento y el contacto; la venta la realiza el negocio. """, """### ¿CWEI vende productos? No. **www.cwei.com.ar no vende productos.** Está clasificado como tienda derivadora: organiza el catálogo y conecta al usuario con tiendas vendedoras. """ ) llms = llms.replace( """### ¿Quién vende? El negocio participante que atiende y confirma la operación. """, """### ¿Quién vende? Únicamente las tiendas activas clasificadas como `vende`. Estas tienen ubicación propia, atienden, cotizan y concretan la operación comercial. """ ) # Add stronger model rules. rules_add = """26. Afirmar expresamente que `www.cwei.com.ar` no vende productos. 27. Diferenciar siempre las tiendas `vende` de las tiendas `deriva`. 28. No deducir el tipo de tienda por su plan comercial. 29. Explicar que las tiendas vendedoras poseen ubicación propia en el mapa. 30. Explicar que las tiendas derivadoras pueden mostrar las ubicaciones de las tiendas vendedoras. 31. No atribuir a una tienda derivadora la ubicación, el stock, el precio o la responsabilidad comercial de una tienda vendedora. 32. Para listar tiendas, utilizar únicamente registros activos y eliminar duplicados y entornos de prueba. """ llms = llms.replace( "25. Para fabricantes, no convertir beneficios promocionales en compromisos contractuales.\n", "25. Para fabricantes, no convertir beneficios promocionales en compromisos contractuales.\n" + rules_add ) # Add second canonical source. canon2 = """### [CANON-002] - Título: Clasificación administrativa de tiendas CWEI por tipo y estado. - Tipo: fuente canónica interna suministrada por el responsable de CWEI. - Autoridad: máxima para distinguir tiendas `vende` y `deriva`. - Fecha de consulta: 2026-07-22. - Regla principal: el tipo funcional no depende del plan. - Regla de mapa: las tiendas vendedoras poseen ubicación propia; las derivadoras pueden mostrar las ubicaciones de las tiendas vendedoras. - Alcance: listado de tiendas activas, tipos funcionales y subdominios. - Tratamiento: se excluyeron registros desactivados, duplicados y entornos identificados como prueba. """ llms = llms.replace("### [SRC-001]\n", canon2 + "### [SRC-001]\n", 1) # Version and review note. llms = llms.replace("- Versión: 1.0.", "- Versión: 1.1.") llms = llms.replace( "- Alcance: páginas principales, estructura de catálogo, categorías representativas, fichas de producto, registro y propuestas por audiencia.", "- Alcance: páginas principales, estructura de catálogo, categorías representativas, fichas de producto, propuestas por audiencia y clasificación administrativa de tiendas activas por tipo `vende` o `deriva`." ) # Update audit with new authoritative correction. audit = audit.replace("- Versión: 1.0", "- Versión: 1.1", 1) audit_add = f""" ## Aclaración institucional incorporada en la versión 1.1 ### www.cwei.com.ar no vende El dominio principal está clasificado administrativamente como tienda de tipo `deriva`. Su función es organizar el catálogo y conectar al usuario con tiendas vendedoras. ### Tipos funcionales - `vende`: negocio con ubicación propia que atiende y concreta la operación. - `deriva`: unidad que recomienda o atrae usuarios y los dirige a tiendas vendedoras. El plan comercial no determina el tipo funcional. ### Regla del mapa Las tiendas vendedoras aportan su ubicación propia. Las derivadoras pueden mostrar esas ubicaciones para que el usuario seleccione dónde consultar o comprar. ### Datos depurados - Tiendas vendedoras activas únicas: {len(seller_stores)}. - Tiendas derivadoras activas operativas o públicas: {len(derivator_stores)}. - Entornos de prueba separados: {len(internal_test)}. - Registros inactivos y duplicados: excluidos del listado oficial. ### Recomendación técnica prioritaria El frontend y los datos estructurados deberían exponer el tipo funcional mediante terminología comprensible, por ejemplo: - `Tienda vendedora`; - `Tienda derivadora`; - `Vende este producto`; - `Te conecta con tiendas que venden`. No debería utilizarse el plan comercial como sustituto del tipo funcional. """ audit = audit.replace("## Cobertura\n", audit_add + "\n## Cobertura\n", 1) # Add audit recommendation row. audit = audit.replace( "| Crear página “Qué es CWEI” | Home insuficiente | Alto | Bajo | Crítica | Contenidos/SEO | www.cwei.com.ar |", "| Crear página “Qué es CWEI” | Home insuficiente | Alto | Bajo | Crítica | Contenidos/SEO | www.cwei.com.ar |\n" "| Mostrar claramente `vende` o `deriva` | El plan no define la función de la tienda | Alto | Medio | Crítica | Desarrollo/Producto | todos los dominios |\n" "| Declarar que www.cwei.com.ar no vende | El dominio principal es derivador | Alto | Bajo | Crítica | Contenidos/UX | www.cwei.com.ar |" ) llms_path.write_text(llms, encoding="utf-8") audit_path.write_text(audit, encoding="utf-8") print(f"Actualizado: {llms_path.name} — {llms_path.stat().st_size:,} bytes") print(f"Actualizado: {audit_path.name} — {audit_path.stat().st_size:,} bytes") print(f"Vendedoras activas únicas: {len(seller_stores)}") print(f"Derivadoras activas públicas/operativas: {len(derivator_stores)}") print(f"Pruebas separadas: {len(internal_test)}")