# HelpDesk ICHN (Frontend) Frontend Next.js del sistema de HelpDesk (estilo Freshdesk/Zammad). > **El backend vive en el proyecto principal**: `ICHN/sam` — > `backend/SAM.API/Controllers/HelpdeskController.cs` (ruta `/api/helpdesk/*`, > datos en schema `helpdesk.*` de la DB compartida). Este repo es **solo frontend**. ## Estructura ``` helpdesk/ ├── frontend/ # Next.js 16 + Bootstrap 5 │ └── src/ │ ├── app/ # App Router pages │ │ ├── (auth)/ # Login │ │ └── (app)/ # Dashboard, Tickets, KB, Settings │ ├── components/ # UI reutilizable │ └── lib/ # API client, auth context ├── gateway/ # (legado, no se usa en deploy) ├── scripts/ # (legado, no se usa en deploy) ├── docker-compose.yml # Solo frontend (red sam-net) └── README.md ``` ## Stack | Componente | Tecnología | |--------------|-----------------------------------| | Frontend | Next.js 16 (App Router) | | UI | Bootstrap 5 + React-Bootstrap | | Auth | Bearer token propio del backend | | Icons / Font | Bootstrap Icons / Fira Sans | ## Desarrollo Local ```bash cd frontend pnpm install pnpm dev # Frontend en http://localhost:3000 ``` Variables de entorno (`frontend/.env.local`, no versionado): ``` NEXT_PUBLIC_API_URL=https://api.ichn.local # dev (.254), cliente (bundle) # NEXT_PUBLIC_API_URL=https://api.devops.norteamericano.cl # prod (.4) # Solo servidor (route /api/correos → POST /api/email/send, jamás NEXT_PUBLIC_): # MAIL_API_KEY=clave del módulo helpdesk (POST /api/email/modules, se muestra una vez) # SAM_API_URL=https://api.ichn.local # default: NEXT_PUBLIC_API_URL, luego prod # MAIL_MODULE=helpdesk # default helpdesk ``` Auth: login con `idUsuario` + password (valida contra `sige_sam_v3.usuario` en el backend). El primer integrante del equipo queda `admin` (bootstrap). Roles del equipo (`helpdesk.team_members`): | Rol | Alcance | |---|---| | `admin` | Todo + Configuración (departamentos, equipo, SLA, correo) | | `agent` | Todos los tickets | | `supervisor` | Solo su departamento (+ sus propios tickets); requiere departamento asignado; no puede mover tickets de departamento ni gestionar configuración | ## Deploy Lo publica el deployer de SAM desde este repo (módulo `helpdesk`): push a `main` → webhook Gitea → build + up en `.4` (`https://helpdesk.devops.norteamericano.cl`). ## Endpoints que consume (backend SAM) Base: `NEXT_PUBLIC_API_URL/api/helpdesk` - `POST /login {idUsuario, password}` · `GET /me` - `GET /tickets?...` · `GET /ticket/{id}` · `POST /tickets` · `PUT /ticket/{id}` (+ `/status`, `/assign`) · `DELETE /ticket/{id}` - `GET|POST /comments/{ticketId}` - `GET /kb/published` · `GET /kb/search?q=` · `GET /kb/categories` - `GET /stats` - `GET|POST /groups` · `PUT|DELETE /groups/{id}` (admin) - `GET|POST /users` · `PUT /users/{id}` (admin) - `GET|POST /sla` · `PUT /sla/{id}` (admin) - `GET /email/templates` · `POST /email/templates` · `PUT /email/templates/{key}` · `GET /email/log?module=helpdesk&limit=` · `GET|POST /email/modules` · `DELETE /email/modules/{m}` (admin, banco único `mail.*`) - `POST /api/correos` (route propio server-side → `POST /api/email/send` con `X-Module: helpdesk` + `X-Api-Key`) · `POST /helpdesk/email/inbound/sync` (admin, inbound Gmail sin cambios)