docs: armonización masiva de bitácoras, categorización de nodos y diagnóstico srv-dasu

This commit is contained in:
Ricardo Monla
2026-03-03 12:04:26 -03:00
parent 4fa6459442
commit ed1c493ff2
171 changed files with 37229 additions and 422 deletions
@@ -1,4 +1,67 @@
import React from 'react';
interface Milestone {
id: string;
title: string;
description: string;
status: 'completed' | 'in_progress' | 'pending';
date?: string;
icon: string;
}
const milestones: Milestone[] = [
{
id: 'DIGI01',
title: 'Gestión Clases POSG.EMIA',
description: 'Descarga, upload a YouTube y difusión de grabaciones.',
status: 'completed',
date: '2026-03-02',
icon: 'fas fa-video'
},
{
id: 'S01',
title: 'Estandarización de Recursos (Raíz)',
description: 'Unificación de dtic-NOTAs y dtic-DIGIs en la raíz del proyecto.',
status: 'completed',
date: '2026-03-03',
icon: 'fas fa-folder-tree'
},
{
id: 'S02',
title: 'Unificación dtic-BKPs v6.0',
description: 'Consolidación de herramientas de backup y jubilación de ns8-bkps.',
status: 'completed',
date: '2026-03-03',
icon: 'fas fa-database'
},
{
id: 'P2601',
title: 'Proyecto DASUTEN - VM sql-dasuten',
description: 'Instalación de motor SQL, restauración de DB y software de gestión.',
status: 'in_progress',
icon: 'fas fa-server'
},
{
id: 'P2602',
title: 'Proyecto Backups DTIC',
description: 'Automatización y hardening de copias de seguridad remotas.',
status: 'pending',
icon: 'fas fa-shield-halved'
}
];
const Estadoproyecto = () => {
const getStatusBadge = (status: Milestone['status']) => {
switch (status) {
case 'completed':
return <span className="badge bg-success"><i className="fas fa-check-circle me-1"></i>Completado</span>;
case 'in_progress':
return <span className="badge bg-primary"><i className="fas fa-spinner fa-spin me-1"></i>En Progreso</span>;
default:
return <span className="badge bg-secondary"><i className="fas fa-clock me-1"></i>Pendiente</span>;
}
};
return (
<div className="container mt-4">
{/* Header */}
@@ -8,24 +71,77 @@ const Estadoproyecto = () => {
<i className="fas fa-project-diagram fa-2x text-primary me-3"></i>
<div>
<h1 className="h3 mb-0">Estado del Proyecto</h1>
<p className="text-muted mb-0">Monitorea el estado general de los proyectos</p>
<p className="text-muted mb-0">Hoja de ruta y seguimiento de hitos del DTIC</p>
</div>
</div>
</div>
</div>
<div className="row">
<div className="col-12">
{/* Resumen de Progreso */}
<div className="col-lg-4 mb-4">
<div className="card h-100">
<div className="card-header">
<i className="fas fa-tachometer-alt me-2"></i>Resumen General
</div>
<div className="card-body">
<div className="mb-4">
<label className="form-label d-flex justify-content-between">
<span>Progreso de Etapa Actual</span>
<span>65%</span>
</label>
<div className="progress" style={{ height: '10px' }}>
<div className="progress-bar bg-primary" role="progressbar" style={{ width: '65%' }}></div>
</div>
</div>
<ul className="list-group list-group-flush">
<li className="list-group-item d-flex justify-content-between align-items-center bg-transparent">
Hitos Completados
<span className="badge bg-success rounded-pill">3</span>
</li>
<li className="list-group-item d-flex justify-content-between align-items-center bg-transparent">
En Ejecución (P2601)
<span className="badge bg-primary rounded-pill">1</span>
</li>
<li className="list-group-item d-flex justify-content-between align-items-center bg-transparent">
Próximos (P2602)
<span className="badge bg-secondary rounded-pill">1</span>
</li>
</ul>
</div>
</div>
</div>
{/* Timeline de Hitos */}
<div className="col-lg-8">
<div className="card">
<div className="card-body text-center py-5">
<h3>Módulo de Estado del Proyecto</h3>
<p className="text-muted">Funcionalidad en desarrollo</p>
<div className="card-header">
<i className="fas fa-list-check me-2"></i>Línea de Tiempo de Hitos
</div>
<div className="card-body">
<div className="timeline">
{milestones.map((m) => (
<div key={m.id} className={`mb-4 p-3 border-start border-4 ${m.status === 'completed' ? 'border-success' : m.status === 'in_progress' ? 'border-primary' : 'border-secondary'} bg-light rounded-end`}>
<div className="d-flex justify-content-between align-items-start">
<div>
<h5 className="mb-1">
<i className={`${m.icon} me-2 text-muted`}></i>
{m.id}: {m.title}
</h5>
<p className="mb-1 text-secondary">{m.description}</p>
{m.date && <small className="text-muted"><i className="fas fa-calendar-alt me-1"></i>{m.date}</small>}
</div>
{getStatusBadge(m.status)}
</div>
</div>
))}
</div>
</div>
</div>
</div>
</div>
</div>
)
}
);
};
export default Estadoproyecto
export default Estadoproyecto;