// KSANET — Plataforma · Vistas (Avance, Aportaciones, Auditoría, Documentos, Asambleas, Mensajes) // ═══════════════════════════════════════════════════════════ // AVANCE DE OBRA // ═══════════════════════════════════════════════════════════ function ViewObra() { const hitos = [ { n: '01', name: 'Suelo y licencia', date: 'Mar 2024', s: 'done' }, { n: '02', name: 'Cimentación', date: 'Sep 2024', s: 'done' }, { n: '03', name: 'Estructura', date: 'En curso', s: 'current' }, { n: '04', name: 'Cerramientos', date: 'Q4 2026', s: 'pending' }, { n: '05', name: 'Instalaciones', date: 'Q1 2027', s: 'pending' }, { n: '06', name: 'Acabados', date: 'Q2 2027', s: 'pending' }, { n: '07', name: 'Entrega llaves', date: 'Sep 2027', s: 'pending' }, ]; const ConstructionSVG = ({ tone='warm' }) => { // Render simbólico de obra (sin foto real). 'warm' = atardecer; 'cool' = mañana const sky = tone === 'warm' ? '#e9c896' : '#cdd5dc'; const sky2 = tone === 'warm' ? '#c97a4a' : '#9aa6b1'; return ( {/* edificios fondo */} {/* edificio principal en obra */} {Array.from({ length: 14 }).map((_, c) => Array.from({ length: 11 }).map((_, r) => ( )) )} {/* grúa */} {/* suelo */} ); }; return ( <>
Avance de obra

Tu edificio, en construcción.

Última visita auditor · 22 marzo 2026
Avance global42%
Plazo+3d
Coste vs. plan−1,2%
Entrega previstaSep'27
Edificio Victoria · Las Tablas · Madrid
Estructura · planta 4 de 7
{hitos.map((h, i) => (
Hito {h.n}
{h.name}
{h.date}
))}
Reportaje fotográfico · semana 12 Ver galería completa →
{[ { c: 'Forjado planta 4', t: 'cool' }, { c: 'Pilares planta 5', t: 'warm' }, { c: 'Acopio armaduras', t: 'cool' }, { c: 'Encofrado núcleo', t: 'warm' }, { c: 'Vista sur', t: 'cool' }, { c: 'Cubierta planta 3', t: 'warm' }, ].map((p, i) => (
{p.c} · 22.03.26
))}
Mediciones recientes
{[ { k: 'm² de forjado ejecutados', v: '1.840 / 4.380 m²' }, { k: 'm³ hormigón vertido', v: '1.220 m³' }, { k: 'kg de acero corrugado', v: '184.500 kg' }, { k: 'Operarios en obra (media)', v: '32 / día' }, { k: 'Horas trabajadas semana 12', v: '1.420 h' }, ].map((a, i) => (
{a.k} {a.v}
))}
Próximos hitos
{[ { d: '15 abr 2026', c: 'Forjado planta 5 completado', s: 'next' }, { d: '30 may 2026', c: 'Forjado planta 6', s: 'pending' }, { d: '15 jul 2026', c: 'Cubierta', s: 'pending' }, { d: '30 sep 2026', c: 'Inicio cerramientos', s: 'pending' }, { d: '15 dic 2026', c: 'Fachada concluida', s: 'pending' }, ].map((p, i) => (
{p.d} {p.c} {p.s === 'next' ? '● Próximo' : '○ Programado'}
))}
); } // ═══════════════════════════════════════════════════════════ // APORTACIONES // ═══════════════════════════════════════════════════════════ function ViewPagos() { const pagos = [ { d: '15 sep 2024', c: 'Cuota inicial', dt: 'Reserva de plaza · transferencia', a: 6000, s: 'paid' }, { d: '15 dic 2024', c: 'Aportación 1', dt: 'Suelo y licencia', a: 4200, s: 'paid' }, { d: '15 mar 2025', c: 'Aportación 2', dt: 'Cimentación', a: 4200, s: 'paid' }, { d: '15 jun 2025', c: 'Aportación 3', dt: 'Estructura · planta 1', a: 4200, s: 'paid' }, { d: '15 sep 2025', c: 'Aportación 4', dt: 'Estructura · planta 2', a: 4200, s: 'paid' }, { d: '15 dic 2025', c: 'Aportación 5', dt: 'Estructura · planta 3', a: 4200, s: 'paid' }, { d: '15 mar 2026', c: 'Aportación 6', dt: 'Estructura · planta 4', a: 4200, s: 'paid' }, { d: '01 abr 2026', c: 'Aportación 7', dt: 'Estructura · planta 5', a: 4200, s: 'next' }, { d: '15 jun 2026', c: 'Aportación 8', dt: 'Estructura · planta 6', a: 4200, s: 'pending' }, { d: '15 sep 2026', c: 'Aportación 9', dt: 'Cubierta', a: 4200, s: 'pending' }, { d: '15 dic 2026', c: 'Aportación 10', dt: 'Cerramientos', a: 4200, s: 'pending' }, { d: '15 mar 2027', c: 'Aportación 11', dt: 'Instalaciones', a: 4200, s: 'pending' }, { d: '15 jun 2027', c: 'Aportación final', dt: 'Acabados y entrega', a: 12420, s: 'pending' }, ]; return ( <>
Aportaciones

Tu inversión, al detalle.

IBAN ES76 **** **** **** 4218 · KSA Custodia
Total aportado
38.420
46 % del total · 7 de 13 cuotas
Pendiente
45.420
6 cuotas restantes hasta entrega
Próxima aportación
4.200
1 abr 2026 · en 6 días
Coste total vivienda
232.400
96 m² · 2.420 €/m² · al coste
Plan de aportaciones · 2024 – 2027 Descargar plan PDF →
{pagos.map((p, i) => (
{p.d}
{p.c}
{p.dt}
{new Intl.NumberFormat('es-ES').format(p.a)} € {p.s === 'paid' && '✓ Pagado'} {p.s === 'next' && '● Próximo'} {p.s === 'pending' && '○ Pendiente'}
))}
Tu vivienda · ficha económica
{[ { k: 'Suelo (proporcional)', v: '52.300 €' }, { k: 'Construcción', v: '148.620 €' }, { k: 'Honorarios técnicos', v: '12.480 €' }, { k: 'Licencias y tasas', v: '6.200 €' }, { k: 'Honorarios KSANET (gestora)', v: '8.400 €' }, { k: 'Reserva contingencia', v: '4.400 €' }, ].map((a, i) => (
{a.k} {a.v}
))}
Total al coste 232.400 €
Datos bancarios · domiciliación
Cuenta de socioES76 **** **** **** 4218
CustodiaCaixaBank · cuenta tutelada
Aval bancarioActivo · ley 38/1999
Forma de pagoDomiciliación SEPA
); } // ═══════════════════════════════════════════════════════════ // AUDITORÍA TÉCNICA // ═══════════════════════════════════════════════════════════ function ViewAudit() { return ( <>
Auditoría técnica

Una mirada independiente.

Auditor · KSA-TECH Ingeniería · marzo 2026
Calificación global · marzo 2026
A+
● Sin desviaciones críticas

La obra avanza dentro del cronograma, con un margen positivo de tres días. La calidad de los materiales y las mediciones de control cumplen o superan las especificaciones del proyecto técnico. No se han registrado incidencias de seguridad ni desviaciones presupuestarias significativas.

Datos del informe
AuditorKSA-TECH
Visita de obra22 mar 2026
Informe nº2026-03-VIC-12
Próxima visita22 abr 2026
PeriodicidadMensual
Calidad técnica · materiales
{[ { k: 'Calidad de hormigón H-30', v: 'Conforme', s: 'ok' }, { k: 'Resistencia probetas 28 días', v: '34,2 N/mm²', s: 'ok' }, { k: 'Acero corrugado B500S', v: 'Certificado', s: 'ok' }, { k: 'Verticalidad muros', v: '± 2 mm', s: 'ok' }, { k: 'Planeidad forjados', v: '± 3 mm/2m', s: 'ok' }, { k: 'Recubrimientos armadura', v: 'Conforme', s: 'ok' }, { k: 'Tolerancias ejecución', v: 'Dentro de norma', s: 'ok' }, ].map((a, i) => (
{a.k} {a.v}
))}
Seguridad, salud y entorno
{[ { k: 'Incidencias seguridad (mes)', v: '0', s: 'ok' }, { k: 'Incidencias graves (acumulado)', v: '0', s: 'ok' }, { k: 'EPIs y protecciones', v: 'Conforme', s: 'ok' }, { k: 'Plan de emergencia', v: 'Vigente', s: 'ok' }, { k: 'Residuos · gestión autorizada', v: '94 % reciclado', s: 'ok' }, { k: 'Ruido perimetral', v: '< 65 dB', s: 'ok' }, { k: 'Polvo y vertidos', v: 'Sin incidencias', s: 'ok' }, ].map((a, i) => (
{a.k} {a.v}
))}
Histórico de auditorías
{[ { d: 'Mar 2026', n: '2026-03-VIC-12', s: 'A+', c: 'Sin desviaciones · forjado planta 4', t: 'ok' }, { d: 'Feb 2026', n: '2026-02-VIC-11', s: 'A+', c: 'Sin desviaciones · forjado planta 3', t: 'ok' }, { d: 'Ene 2026', n: '2026-01-VIC-10', s: 'A', c: 'Retraso 2 d. recuperado · ferralla', t: 'warn' }, { d: 'Dic 2025', n: '2025-12-VIC-09', s: 'A+', c: 'Sin desviaciones · forjado planta 2', t: 'ok' }, { d: 'Nov 2025', n: '2025-11-VIC-08', s: 'A+', c: 'Sin desviaciones · pilares planta 2', t: 'ok' }, { d: 'Oct 2025', n: '2025-10-VIC-07', s: 'A+', c: 'Sin desviaciones · forjado planta 1', t: 'ok' }, ].map((a, i) => (
{a.d} {a.n} {a.c} {a.s}
))}
); } // ═══════════════════════════════════════════════════════════ // DOCUMENTOS // ═══════════════════════════════════════════════════════════ function ViewDocs() { const [filter, setFilter] = useState('all'); const docs = [ { ic: 'PDF', n: 'Estatutos de la cooperativa', m: '15 ene 2024 · v3', sz: '420 KB', tag: 'Firmado', tagS: 'signed', cat: 'legal' }, { ic: 'PDF', n: 'Contrato de incorporación · socio nº 042', m: '01 sep 2024 · firma electrónica', sz: '380 KB', tag: 'Firmado', tagS: 'signed', cat: 'legal' }, { ic: 'PDF', n: 'Reglamento de régimen interno', m: '15 ene 2024 · v2', sz: '210 KB', tag: 'Firmado', tagS: 'signed', cat: 'legal' }, { ic: 'PDF', n: 'Memoria de calidades · Edificio Victoria', m: '20 jul 2024 · v4', sz: '5,2 MB', tag: 'Firmado', tagS: 'signed', cat: 'tecnica' }, { ic: 'DWG', n: 'Plano de planta · 3B (96 m², 3 dorm)', m: '20 jul 2024', sz: '1,8 MB', tag: '', tagS: '', cat: 'tecnica' }, { ic: 'PDF', n: 'Proyecto básico · arquitectura', m: '12 mar 2024', sz: '14,4 MB', tag: '', tagS: '', cat: 'tecnica' }, { ic: 'PDF', n: 'Licencia urbanística · Ayto. Madrid', m: '04 abr 2024', sz: '180 KB', tag: 'Firmado', tagS: 'signed', cat: 'legal' }, { ic: 'PDF', n: 'Aval bancario · CaixaBank · ley 38/1999', m: '15 sep 2024', sz: '120 KB', tag: 'Firmado', tagS: 'signed', cat: 'legal' }, { ic: 'PDF', n: 'Auditoría técnica marzo 2026', m: '22 mar 2026', sz: '2,4 MB', tag: 'Firmado', tagS: 'signed', cat: 'auditoria' }, { ic: 'PDF', n: 'Auditoría técnica febrero 2026', m: '22 feb 2026', sz: '2,2 MB', tag: 'Firmado', tagS: 'signed', cat: 'auditoria' }, { ic: 'PDF', n: 'Acta asamblea · 12 dic 2025', m: '14 dic 2025', sz: '180 KB', tag: 'Firmado', tagS: 'signed', cat: 'asamblea' }, { ic: 'PDF', n: 'Acta asamblea · 14 sep 2025', m: '16 sep 2025', sz: '160 KB', tag: 'Firmado', tagS: 'signed', cat: 'asamblea' }, { ic: 'PDF', n: 'Modificación de proyecto · zona coworking', m: '10 mar 2026', sz: '640 KB', tag: 'Pendiente firma', tagS: 'pending', cat: 'asamblea' }, { ic: 'XLSX', n: 'Cuenta de explotación · Q1 2026', m: '31 mar 2026', sz: '85 KB', tag: '', tagS: '', cat: 'economica' }, { ic: 'PDF', n: 'Justificante aportación · mar 2026', m: '15 mar 2026', sz: '60 KB', tag: '', tagS: '', cat: 'economica' }, ]; const filtered = filter === 'all' ? docs : docs.filter(d => d.cat === filter); return ( <>
Documentos

Tu cooperativa archivada, firmada, segura.

{docs.length} documentos · 28 firmados · 1 pendiente
{[ { k: 'all', l: 'Todos' }, { k: 'legal', l: 'Legal' }, { k: 'tecnica', l: 'Técnica' }, { k: 'auditoria', l: 'Auditoría' }, { k: 'asamblea', l: 'Asambleas' }, { k: 'economica', l: 'Económica' }, ].map(c => ( ))}
{filtered.map((d, i) => (
{d.ic}
{d.n}
{d.m}
{d.tag ? {d.tag} : } {d.sz}
))}
); } // ═══════════════════════════════════════════════════════════ // ASAMBLEAS // ═══════════════════════════════════════════════════════════ // Email del proyecto / cooperativa al que se envía la confirmación. // Para cambiar el destinatario, edita esta constante. const PROJECT_EMAIL = 'cooperativa.victoria@ksanet.es'; const SOCIO = { nombre: 'David Aroca', num: '042', vivienda: '3B · 96 m² · 3 dorm' }; function confirmarAsistencia({ fecha, hora, lugar, modo = 'presencial' }) { const subject = `Confirmación de asistencia · Asamblea ${fecha} · Socio nº ${SOCIO.num}`; const body = [ 'Estimados,', '', `Mediante el presente correo confirmo mi asistencia a la asamblea convocada para el ${fecha} a las ${hora} en ${lugar}.`, '', `Modalidad de asistencia: ${modo === 'online' ? 'videollamada' : 'presencial'}.`, '', 'Datos del socio:', `· Nombre: ${SOCIO.nombre}`, `· Nº de socio: ${SOCIO.num}`, `· Vivienda: ${SOCIO.vivienda}`, `· Cooperativa: Edificio Victoria (COOP-2026-LCH-46)`, '', 'Un saludo,', SOCIO.nombre, '', '— Enviado automáticamente desde la Plataforma KSA del cooperativista.' ].join('\n'); const mailto = `mailto:${PROJECT_EMAIL}?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(body)}`; window.location.href = mailto; } function ViewAsambleas() { const [confirmado, setConfirmado] = useState(false); const proximaAsamblea = { fecha: '14 de abril de 2026', hora: '19:00 h', lugar: 'Sede KSANET, c/ Velázquez 122 (Madrid) · y por videollamada', }; const handleConfirmar = () => { confirmarAsistencia(proximaAsamblea); setConfirmado(true); }; return ( <>
Asambleas

Cada decisión, tuya.

Próxima · 14 abril 2026 · 19:00
{/* Próxima asamblea */}
Próxima asamblea
14 abril 2026
19:00 h · Sede KSANET, c/ Velázquez 122 · y por videollamada
● Inscripción abierta
Orden del día
{[ { n: '01', name: 'Aprobación del acta de la asamblea anterior', v: 'Vota →' }, { n: '02', name: 'Informe de gestión Q1 2026', v: 'Vota →' }, { n: '03', name: 'Modificación del proyecto: ampliación zona coworking (+22 m²)', v: 'Vota →' }, { n: '04', name: 'Aprobación calendario aportaciones 2026-2027', v: 'Vota →' }, { n: '05', name: 'Propuestas de socios y ruegos', v: '—' }, ].map((it, i) => (
{it.n} {it.name} {it.v}
))}
Punto 03 · Ampliación de la zona de coworking en planta baja (+22 m²)
Coste estimado · +18.400 € · 219 € por socio
A favor
45
En contra
12
Abstención
4
Sin votar
10
{confirmado && (
✓ Se ha abierto tu cliente de correo con la confirmación dirigida a {PROJECT_EMAIL}. Revisa y pulsa enviar.
)}
{/* Histórico */}
Asambleas anteriores
{[ { d: '12', m: 'diciembre', y: '2025', tag: 'Ordinaria · cierre 2025', loc: 'Sede KSANET · 24 socios presenciales · 47 online', agenda: [ 'Aprobación cuentas anuales 2025 · 71 a favor · 0 en contra', 'Renovación contrato auditor técnico · 68 a favor · 3 abstención', 'Calendario asambleas 2026 · 71 a favor', 'Aprobación calidades · alicatado baño principal · 65 a favor · 6 en contra', ] }, { d: '14', m: 'septiembre', y: '2025', tag: 'Extraordinaria · estructura', loc: 'Videollamada · 71 socios', agenda: [ 'Aprobación inicio fase estructura · 71 a favor', 'Modificación menor proyecto · trasteros planta -1 · 69 a favor · 2 en contra', 'Selección empresa de instalaciones · 71 a favor', ] }, { d: '20', m: 'abril', y: '2025', tag: 'Ordinaria', loc: 'Sede KSANET · 21 presenciales · 50 online', agenda: [ 'Informe avance · cimentación completada', 'Aprobación segundo desembolso de aportaciones · 71 a favor', 'Información sobre auditoría técnica anual', ] }, ].map((a, i) => (
{a.d} {a.m.substring(0,3)}
{a.tag}
{a.loc}
✓ Celebrada
{a.agenda.map((it, j) => (
· {it} Aprobado
))}
))} ); } // ═══════════════════════════════════════════════════════════ // MENSAJES // ═══════════════════════════════════════════════════════════ function ViewMensajes() { const threads = [ { id: 0, from: 'Lucía Bermejo', role: 'Tu gestora KSANET', initials: 'LB', av: 'team', subj: 'Próxima visita de obra · viernes 28', prev: 'Hola David, te confirmo que la visita de obra abierta a socios será...', time: 'Hoy 11:42', unread: true }, { id: 1, from: 'KSA-TECH Auditor', role: 'Auditoría técnica', initials: 'KT', av: 'audit', subj: 'Informe auditoría marzo · firmado y publicado', prev: 'Buenas tardes, ya tienes disponible el informe de auditoría correspondiente al mes...', time: 'Ayer', unread: true }, { id: 2, from: 'Cooperativa Victoria', role: 'Junta rectora', initials: 'CV', av: 'team', subj: 'Convocatoria asamblea 14 abril', prev: 'Estimados socios, se convoca asamblea ordinaria para el próximo 14 de abril...', time: '23 mar', unread: false }, { id: 3, from: 'Marta Hidalgo', role: 'Personalización vivienda', initials: 'MH', av: 'team', subj: 'Confirmación de tus calidades · 3B', prev: 'David, hemos recibido tu selección de acabados. Te confirmo...', time: '20 mar', unread: false }, { id: 4, from: 'KSANET Administración', role: 'Sistema', initials: 'KS', av: 'team', subj: 'Recibo aportación marzo · descarga disponible', prev: 'Tu aportación nº 6 ha sido cobrada correctamente. Adjuntamos...', time: '15 mar', unread: false }, { id: 5, from: 'Lucía Bermejo', role: 'Tu gestora KSANET', initials: 'LB', av: 'team', subj: 'Cambio puntual en plan de pagos', prev: 'Hola David, te informo de un pequeño ajuste en el calendario...', time: '08 mar', unread: false }, ]; const [active, setActive] = useState(0); const cur = threads[active]; return ( <>
Mensajes

Habla con tu cooperativa.

2 sin leer · 6 conversaciones
{threads.map((t, i) => (
setActive(i)} style={{ position: 'relative' }}>
{t.initials}
{t.from} {t.time}
{t.subj}
{t.prev}
))}
{cur.subj}
De · {cur.from} ({cur.role}) · {cur.time}
{active === 0 && <>

Hola David,

Te confirmo que la visita de obra abierta a socios será el viernes 28 de marzo a las 17:00. Nos reuniremos en la caseta de obra (acceso por calle Tablas, 14) con casco y chaleco que proporcionamos en sitio.

Recorreremos las plantas 1 a 4 (forjado finalizado) acompañados de Roberto, jefe de obra, y Marina, nuestra arquitecta auditora. Después tendremos un café para resolver dudas.

Si prefieres asistir por videollamada, te enviaré el enlace 15 minutos antes.

Confírmame asistencia respondiendo a este mensaje. Un abrazo,
Lucía Bermejo · gestora cooperativa Victoria

PDF
Plan de visita · viernes 28.pdf
180 KB · 2 páginas
} {active === 1 && <>

Buenas tardes, David:

Ya tienes disponible el informe de auditoría técnica correspondiente a marzo de 2026. La obra continúa avanzando dentro del plan, con un margen positivo de 3 días respecto al cronograma y sin desviaciones presupuestarias relevantes.

Calificación global: A+. Sin incidencias críticas. Las probetas de hormigón H-30 alcanzan 34,2 N/mm², muy por encima del mínimo exigido.

Cualquier consulta técnica, respondemos por aquí o en la asamblea del 14 de abril.

Un saludo,
KSA-TECH · Auditoría independiente

PDF
Auditoria-Victoria-2026-03.pdf
2,4 MB · firmada electrónicamente
} {active >= 2 && <>

Hola David,

{cur.prev}

Quedamos a tu disposición para cualquier aclaración.

Un saludo,
{cur.from}

}
); } // Exportamos al window para que platform.jsx los pueda usar Object.assign(window, { ViewObra, ViewPagos, ViewAudit, ViewDocs, ViewAsambleas, ViewMensajes });