Files
Inventario-IT/README.md

139 lines
7.6 KiB
Markdown
Raw Permalink Normal View History

2025-10-07 14:51:18 -03:00
# Inventario IT 🖥️
**Inventario IT** es un sistema de gestión de inventario de hardware diseñado para ser poblado tanto por scripts automáticos como por gestión manual. Permite tener un registro centralizado y detallado de todos los equipos informáticos de una organización, sus componentes y su historial de cambios.
El sistema se compone de un **backend RESTful API desarrollado en ASP.NET Core** y un **frontend interactivo de tipo SPA (Single Page Application) construido con React, TypeScript y Vite**.
---
## 🚀 Funcionalidades Principales
El sistema está diseñado en torno a la gestión y visualización de activos de TI, con un fuerte énfasis en la calidad y consistencia de los datos.
2025-10-13 14:19:04 +00:00
### 🔒 Seguridad y Autenticación
- **Autenticación Basada en JWT:** Acceso a la API protegido mediante JSON Web Tokens.
- **Login Simple y Seguro:** Un único par de credenciales (usuario/contraseña) configurables en el backend para acceder a toda la aplicación.
- **Sesión Persistente Opcional:** En la pantalla de login, el usuario puede elegir "Mantener sesión iniciada".
- **Si se marca:** El token se almacena de forma persistente (`localStorage`), sobreviviendo a cierres del navegador. El token tiene una validez de **1 año**.
- **Si no se marca:** El token se almacena en la sesión del navegador (`sessionStorage`), cerrándose automáticamente al finalizar la sesión. El token tiene una validez de **6 horas**.
2025-10-07 14:51:18 -03:00
### 📋 Módulo de Equipos
- **Vista Principal Centralizada:** Una tabla paginada, con capacidad de búsqueda y filtrado por sector, que muestra todos los equipos del inventario.
- **Detalle Completo del Equipo:** Al hacer clic en un equipo, se abre una vista detallada con toda su información:
2025-10-09 13:46:57 +00:00
- **Datos Principales:** Hostname, IP, MAC, OS, etc.
2025-10-13 14:19:04 +00:00
- **Componentes Asociados:** Lista detallada de discos, módulos de RAM, usuarios asociados, CPU, Motherboard, RAM instalada, etc.
2025-10-07 14:51:18 -03:00
- **Estado en Tiempo Real:** Indicador visual que muestra si el equipo está `En línea` o `Sin conexión` mediante un ping.
- **Historial de Cambios:** Un registro cronológico de todas las modificaciones realizadas en el equipo.
- **Acciones Remotas:**
- **Wake On Lan (WOL):** 🚀 Botón para enviar un "Magic Packet" a través de un servidor SSH y encender un equipo de forma remota.
### ✍️ Gestión Manual vs. Automática
- **Origen de Datos:** El sistema diferencia entre datos generados por scripts automáticos (`⚙️ Automático`) y los introducidos manualmente (`⌨️ Manual`).
- **Protección de Datos:** Las entradas automáticas están protegidas contra modificaciones o eliminaciones desde la UI, asegurando la integridad de los datos recopilados en campo.
- **CRUD Completo para Entradas Manuales:**
- Creación de nuevos equipos con sus propiedades básicas.
- Edición de los campos principales de un equipo manual.
- Asociación manual de componentes (Discos, RAM, Usuarios).
- Eliminación segura de equipos y componentes de origen manual.
### 🗂️ Módulo de Administración
- **Gestión de Sectores:** Un CRUD completo para crear, editar y eliminar los sectores o departamentos de la organización.
- **Limpieza de Datos Maestros:** Una potente herramienta para asegurar la consistencia de los datos.
- **Visualización de Valores Únicos:** Permite ver todos los valores distintos existentes para un tipo de componente (ej: `Microsoft Windows 10 Pro`, `w10`, `Windows 10`) y cuántos equipos usan cada uno.
- **Unificación de Valores:** ✏️ Permite reemplazar todas las instancias de un valor incorrecto (ej: `w10`) por uno correcto (ej: `Microsoft Windows 10 Pro`) en toda la base de datos con un solo clic.
- **Eliminación de Registros Maestros:** 🗑️ Permite eliminar componentes maestros (ej: un módulo de RAM) que ya no están en uso por ningún equipo.
### 🎨 UI/UX
- **Interfaz Moderna y Responsiva:** Construida con Vite, React y TypeScript para una experiencia rápida y fluida.
- **Notificaciones en Tiempo Real:** El sistema utiliza `react-hot-toast` para dar feedback instantáneo sobre el estado de las operaciones (Cargando, Éxito, Error).
- **Consistencia de Datos Mejorada:** Uso de campos de autocompletado que sugieren valores existentes para campos como CPU, OS y Motherboard, reduciendo errores humanos.
- **Validación de Entradas:** Validación de formato en tiempo real para campos críticos como la MAC Address, con auto-formateo para ayudar al usuario.
---
## 🛠️ Stack Tecnológico
### Backend (`backend/`)
- **Framework:** ASP.NET Core 9
- **Lenguaje:** C#
- **Acceso a Datos:** Dapper (Micro ORM)
- **Base de Datos:** Microsoft SQL Server
2025-10-13 14:19:04 +00:00
- **Autenticación:** JWT Bearer Token (`Microsoft.AspNetCore.Authentication.JwtBearer`)
2025-10-07 14:51:18 -03:00
- **Comandos Remotos:** Renci.SshNet para ejecución de comandos SSH (Wake On Lan)
### Frontend (`frontend/`)
- **Framework/Librería:** React 19
- **Lenguaje:** TypeScript
- **Gestión de Tabla:** TanStack Table v8
2025-10-13 14:19:04 +00:00
- **Gráficos:** Chart.js con `react-chartjs-2`
2025-10-07 14:51:18 -03:00
- **Notificaciones:** React Hot Toast
- **Tooltips:** React Tooltip
2025-10-13 14:19:04 +00:00
- **Iconos:** Lucide React
2025-10-07 14:51:18 -03:00
- **Build Tool:** Vite
---
## 🚀 Puesta en Marcha (Getting Started)
Siga estos pasos para configurar y ejecutar el proyecto en un entorno de desarrollo local.
### Prerrequisitos
- **.NET SDK 9.0** o superior.
- **Node.js** v20.x o superior (con npm).
- **Microsoft SQL Server** (2019 o superior) y SQL Server Management Studio (SSMS).
- Un editor de código como **Visual Studio Code**.
### 1. Clonar el Repositorio
```bash
git clone <URL_DEL_REPOSITORIO_GITEA>
cd nombre-del-repositorio
```
### 2. Configuración de la Base de Datos
1. Abra SSMS y conecte a su instancia de SQL Server.
2. Cree una nueva base de datos llamada `InventarioDB`.
2025-10-13 14:19:04 +00:00
3. Ejecute el script SQL `InventarioDB.sql` (ubicado en la raíz del proyecto) sobre la base de datos recién creada. Esto creará todas las tablas, relaciones y claves necesarias.
2025-10-07 14:51:18 -03:00
### 3. Configuración del Backend
1. Navegue al directorio del backend: `cd backend`.
2025-10-13 14:19:04 +00:00
2. Abra el archivo `appsettings.Development.json` (o `appsettings.json` para producción).
3. **Modifique la `ConnectionString`** para que apunte a su instancia de SQL Server.
2025-10-07 14:51:18 -03:00
```json
"ConnectionStrings": {
"DefaultConnection": "Server=NOMBRE_SU_SERVIDOR;Database=InventarioDB;User Id=su_usuario_sql;Password=su_contraseña;TrustServerCertificate=True"
}
```
2025-10-13 14:19:04 +00:00
4. **Configure las credenciales de la aplicación y la clave JWT**. Es crucial cambiar los valores por defecto por unos seguros y únicos.
2025-10-07 14:51:18 -03:00
```json
2025-10-13 14:19:04 +00:00
"AuthSettings": {
"Username": "admin",
"Password": "SU_NUEVA_CLAVE_SEGURA_AQUI"
},
"Jwt": {
"Key": "SU_CLAVE_SECRETA_LARGA_Y_COMPLEJA_PARA_JWT",
"Issuer": "InventarioAPI",
"Audience": "InventarioClient"
2025-10-07 14:51:18 -03:00
}
```
2025-10-13 14:19:04 +00:00
5. **Configure las credenciales del servidor SSH** que se usará para la función Wake On Lan en la sección `SshSettings`.
6. Instale las dependencias y ejecute el backend:
2025-10-07 14:51:18 -03:00
```bash
dotnet restore
dotnet run
2025-10-13 14:19:04 +00:00
La API estará disponible en `http://localhost:5198` y la UI de Swagger en la misma URL.
2025-10-07 14:51:18 -03:00
### 4. Configuración del Frontend
1. En una nueva terminal, navegue al directorio del frontend: `cd frontend`.
2. Instale las dependencias:
```bash
npm install
2025-10-13 14:19:04 +00:00
3. **Verificar la configuración del Proxy.** El frontend utiliza un proxy de Vite para redirigir las peticiones de `/api` al backend. Esta configuración se encuentra en `frontend/vite.config.ts`. Si estás ejecutando el backend en el puerto por defecto (`5198`), no necesitas hacer ningún cambio.
2025-10-07 14:51:18 -03:00
4. Ejecute el frontend en modo de desarrollo:
```bash
npm run dev
2025-10-13 14:19:04 +00:00
La aplicación web estará disponible en `http://localhost:5173` (o el puerto que indique Vite).
2025-10-07 14:51:18 -03:00
---