diff --git a/CHANGELOG.md b/CHANGELOG.md index a8c7afd..3dee213 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog - project.linkedcorp.net +## [1.10.0] - 2026-09-11 +### Added +- Ordenar proyectos por Prioridad ahora usa la severidad real (Baja→Media→Alta→Crítica), no el + orden alfabético del texto. El resto de columnas (Nombre, Estado, Creado, etc.) ya se podían + ordenar con clic en el encabezado — no era nuevo, solo Prioridad tenía este detalle. +### Changed +- "Páginas web y dominios" separada en dos tareas dentro de "Inventario de servicios de + tecnología": "Páginas web" y "Dominios". + ## [1.9.3] - 2026-09-11 ### Added - Nueva actividad en Infraestructura y redes: "Inventario de servicios de tecnología", con 8 diff --git a/VERSION b/VERSION index 77fee73..81c871d 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.9.3 +1.10.0 diff --git a/backend/database/migrations/009_split_web_dominios.sql b/backend/database/migrations/009_split_web_dominios.sql new file mode 100644 index 0000000..04cb5a0 --- /dev/null +++ b/backend/database/migrations/009_split_web_dominios.sql @@ -0,0 +1,18 @@ +-- "Paginas web y dominios" separada en dos tareas. Idempotente: DELETE de la vieja es inofensivo +-- si ya no existe; INSERT de las nuevas protegido por NOT EXISTS. +SET NAMES utf8mb4; + +DELETE t FROM tasks t +JOIN activities a ON a.id = t.activity_id +WHERE a.name = 'Inventario de servicios de tecnologia' + AND t.name = 'Paginas web y dominios (hosting, registrador, fechas de vencimiento)'; + +INSERT INTO tasks (activity_id, name) +SELECT a.id, x.name +FROM activities a +JOIN ( + SELECT 'Paginas web (hosting, actualizaciones, responsables)' AS name + UNION ALL SELECT 'Dominios (registrador, fechas de vencimiento, renovacion)' +) x ON 1=1 +WHERE a.name = 'Inventario de servicios de tecnologia' + AND NOT EXISTS (SELECT 1 FROM tasks y WHERE y.activity_id = a.id AND y.name = x.name); diff --git a/backend/package.json b/backend/package.json index f7f36bb..8cb2a1d 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,6 +1,6 @@ { "name": "project-linkedcorp-backend", - "version": "1.9.3", + "version": "1.10.0", "private": true, "type": "module", "main": "src/server.js", diff --git a/backend/src/modules/projects/repository.js b/backend/src/modules/projects/repository.js index 55c2633..2b96a83 100644 --- a/backend/src/modules/projects/repository.js +++ b/backend/src/modules/projects/repository.js @@ -2,7 +2,7 @@ import { pool } from '../../config/db.js'; const LIST_SELECT = ` SELECT p.id, p.code, p.name, p.description, p.objective, p.project_type_id, pt.name AS project_type_name, - p.priority_id, pr.name AS priority_name, pr.color AS priority_color, + p.priority_id, pr.name AS priority_name, pr.color AS priority_color, pr.level AS priority_level, p.status_id, ps.name AS status_name, ps.color AS status_color, ps.is_closed AS status_is_closed, p.owner_user_id, u.name AS owner_name, p.requesting_department_id, rd.name AS requesting_department_name, diff --git a/frontend/package.json b/frontend/package.json index 2248f19..a8b0700 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,7 +1,7 @@ { "name": "project-linkedcorp-frontend", "private": true, - "version": "1.9.3", + "version": "1.10.0", "type": "module", "scripts": { "dev": "vite", diff --git a/frontend/src/pages/Proyectos/ProyectosPage.jsx b/frontend/src/pages/Proyectos/ProyectosPage.jsx index e6f1631..e22ce3b 100644 --- a/frontend/src/pages/Proyectos/ProyectosPage.jsx +++ b/frontend/src/pages/Proyectos/ProyectosPage.jsx @@ -123,7 +123,7 @@ export default function ProyectosPage() { { key: 'code', label: t('project_code') }, { key: 'name', label: t('common_name') }, { key: 'status_name', label: t('common_status'), render: (r) => }, - { key: 'priority_name', label: t('common_priority'), render: (r) => }, + { key: 'priority_name', label: t('common_priority'), sortValue: (r) => r.priority_level, render: (r) => }, { key: 'owner_name', label: t('project_owner') }, { key: 'progress_pct', label: t('project_progress'), render: (r) =>
}, { key: 'risk_level', label: t('project_risk'), render: (r) => {t(`risk_${r.risk_level}`)} },