feat: inicializacion de Help Desk segun estandar Telcotronics con bitacora de errores e integracion MCP
This commit is contained in:
+125
@@ -0,0 +1,125 @@
|
||||
# Help Desk - Documentación del Proyecto
|
||||
|
||||
## Estructura del Proyecto
|
||||
|
||||
```
|
||||
help_desk/
|
||||
├── app.js # Entry point, configura Express
|
||||
├── package.json # Dependencias y scripts
|
||||
├── .env # Variables de entorno
|
||||
├── .gitignore
|
||||
├── config/
|
||||
│ ├── db.js # Conexión a MySQL/MariaDB con mysql2
|
||||
│ ├── init.sql # Script SQL inicial
|
||||
│ └── setup.js # Script Node para inicializar BD
|
||||
├── middleware/
|
||||
│ └── auth.js # Middleware: isAuthenticated, isAdmin, isAgent, isClient
|
||||
├── models/
|
||||
│ ├── User.js # CRUD usuarios
|
||||
│ ├── Ticket.js # CRUD tickets + respuestas
|
||||
│ └── Department.js # CRUD departamentos
|
||||
├── routes/
|
||||
│ ├── auth.js # Login, Register, Logout
|
||||
│ ├── client.js # Rutas para clientes (ver/crear tickets)
|
||||
│ ├── agent.js # Rutas para agentes (gestionar tickets)
|
||||
│ └── admin.js # Rutas para admin (usuarios, departamentos)
|
||||
├── views/
|
||||
│ ├── partials/
|
||||
│ │ ├── header.ejs # Head HTML + navbar
|
||||
│ │ ├── footer.ejs # Scripts + cierre
|
||||
│ │ ├── navbar.ejs # Barra de navegación superior
|
||||
│ │ └── sidebar.ejs # Menú lateral por rol
|
||||
│ ├── auth/
|
||||
│ │ ├── login.ejs
|
||||
│ │ └── register.ejs
|
||||
│ ├── client/
|
||||
│ │ ├── dashboard.ejs # Lista de tickets del cliente
|
||||
│ │ ├── new-ticket.ejs # Formulario crear ticket
|
||||
│ │ └── view-ticket.ejs # Ver ticket + respuestas
|
||||
│ ├── agent/
|
||||
│ │ ├── dashboard.ejs # Panel con todos los tickets
|
||||
│ │ └── view-ticket.ejs # Ver ticket + responder + cambiar estado
|
||||
│ └── admin/
|
||||
│ ├── dashboard.ejs # Estadísticas y accesos rápidos
|
||||
│ ├── users.ejs # CRUD usuarios
|
||||
│ ├── create-user.ejs # Formulario crear usuario
|
||||
│ └── departments.ejs # CRUD departamentos con modales
|
||||
├── public/
|
||||
│ ├── css/
|
||||
│ │ └── style.css # Estilos personalizados
|
||||
│ └── js/
|
||||
│ └── main.js # JS del lado cliente
|
||||
└── proyecto.md, memoria.md, readme.md
|
||||
```
|
||||
|
||||
## Base de Datos (MariaDB/MySQL)
|
||||
|
||||
### Tabla: `users`
|
||||
| Campo | Tipo | Descripción |
|
||||
|------------|-----------------------------|---------------------------|
|
||||
| id | INT AUTO_INCREMENT PK | ID único |
|
||||
| nombre | VARCHAR(100) NOT NULL | Nombre completo |
|
||||
| email | VARCHAR(100) NOT NULL UNIQUE| Correo electrónico |
|
||||
| password | VARCHAR(255) NOT NULL | Hash bcrypt |
|
||||
| rol | ENUM('admin','agent','client') DEFAULT 'client' | Rol del usuario |
|
||||
| created_at | TIMESTAMP DEFAULT CURRENT_TIMESTAMP | Fecha de registro |
|
||||
|
||||
### Tabla: `departments`
|
||||
| Campo | Tipo | Descripción |
|
||||
|------------|-----------------------------|---------------------------|
|
||||
| id | INT AUTO_INCREMENT PK | ID único |
|
||||
| nombre | VARCHAR(100) NOT NULL | Nombre del departamento |
|
||||
| descripcion| TEXT | Descripción |
|
||||
| created_at | TIMESTAMP DEFAULT CURRENT_TIMESTAMP | Fecha de creación |
|
||||
|
||||
### Tabla: `tickets`
|
||||
| Campo | Tipo | Descripción |
|
||||
|-------------|-----------------------------|------------------------------|
|
||||
| id | INT AUTO_INCREMENT PK | ID único (# ticket) |
|
||||
| user_id | INT NOT NULL FK → users.id | Cliente creador |
|
||||
| department_id| INT FK → departments.id | Departamento |
|
||||
| asunto | VARCHAR(200) NOT NULL | Asunto del ticket |
|
||||
| mensaje | TEXT NOT NULL | Descripción del problema |
|
||||
| status | ENUM('abierto','en_progreso','cerrado') DEFAULT 'abierto' | Estado |
|
||||
| prioridad | ENUM('baja','media','alta','critica') DEFAULT 'media' | Prioridad |
|
||||
| assigned_to | INT FK → users.id | Agente asignado |
|
||||
| created_at | TIMESTAMP DEFAULT CURRENT_TIMESTAMP | Fecha de creación |
|
||||
| updated_at | TIMESTAMP ON UPDATE | Última actualización |
|
||||
|
||||
### Tabla: `ticket_respuestas`
|
||||
| Campo | Tipo | Descripción |
|
||||
|-----------|-----------------------------|------------------------|
|
||||
| id | INT AUTO_INCREMENT PK | ID único |
|
||||
| ticket_id | INT NOT NULL FK → tickets.id| Ticket relacionado |
|
||||
| user_id | INT NOT NULL FK → users.id | Quién respondió |
|
||||
| mensaje | TEXT NOT NULL | Contenido respuesta |
|
||||
| created_at| TIMESTAMP DEFAULT CURRENT_TIMESTAMP | Fecha de respuesta |
|
||||
|
||||
## Roles y Permisos
|
||||
|
||||
| Rol | Descripción |
|
||||
|--------|------------------------------------------|
|
||||
| admin | Acceso total: gestiona usuarios, deptos, tickets |
|
||||
| agent | Gestiona tickets asignados, responde, cambia estado |
|
||||
| client | Crea tickets, ve sus propios tickets, responde |
|
||||
|
||||
## Tecnologías
|
||||
|
||||
- **Backend**: Node.js + Express 5
|
||||
- **Motor de plantillas**: EJS
|
||||
- **Base de Datos**: MariaDB/MySQL (mysql2)
|
||||
- **Autenticación**: express-session + bcryptjs
|
||||
- **Frontend**: Bootstrap 5 + Font Awesome
|
||||
- **Middleware**: morgan, connect-flash, express-fileupload
|
||||
|
||||
## Scripts
|
||||
|
||||
```bash
|
||||
npm start # Iniciar servidor producción
|
||||
npm run dev # Iniciar con nodemon (auto-reload)
|
||||
node config/setup.js # Inicializar BD (crear tablas + datos seed)
|
||||
```
|
||||
|
||||
## Credenciales por defecto
|
||||
|
||||
- **Admin**: admin@helpdesk.com / 123456
|
||||
Reference in New Issue
Block a user