From bcb9c9d714b48b51078c9955cb8434031aa4c8ef Mon Sep 17 00:00:00 2001 From: Milton Gonzalez Date: Wed, 21 Oct 2026 08:26:57 -0500 Subject: [PATCH] refactor: version 2.18.2 -- Panel: se quita "Mis actividades pendientes" El detalle vive en los popups de las tarjetas; se elimina tambien la consulta myPendingActivities del backend, que quedaba sin uso. Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 5 +++++ VERSION | 2 +- backend/package.json | 2 +- backend/src/modules/dashboard/controller.js | 4 +--- backend/src/modules/dashboard/repository.js | 13 ------------- frontend/package.json | 2 +- frontend/src/i18n/messages.js | 2 -- frontend/src/pages/Dashboard/DashboardPage.jsx | 17 +---------------- 8 files changed, 10 insertions(+), 37 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cb73d7d..d960e13 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog - project.linkedcorp.net +## [2.18.2] - 2026-10-21 +### Removed +- Panel: se quita el bloque "Mis actividades pendientes" (el detalle ya se ve en el popup de + cada tarjeta). Queda solo "Proyectos por estado" debajo de las tarjetas. + ## [2.18.1] - 2026-10-21 ### Fixed - Panel → popups de detalle: las barras de avance quedan alineadas una debajo de otra aunque la diff --git a/VERSION b/VERSION index a36e9b0..61dc334 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.18.1 +2.18.2 diff --git a/backend/package.json b/backend/package.json index f9d717b..962629a 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,6 +1,6 @@ { "name": "project-linkedcorp-backend", - "version": "2.18.1", + "version": "2.18.2", "private": true, "type": "module", "main": "src/server.js", diff --git a/backend/src/modules/dashboard/controller.js b/backend/src/modules/dashboard/controller.js index fca0879..7256f38 100644 --- a/backend/src/modules/dashboard/controller.js +++ b/backend/src/modules/dashboard/controller.js @@ -14,10 +14,9 @@ function memberFilterFor(currentUser) { export const getSummary = asyncHandler(async (req, res) => { const memberUserId = memberFilterFor(req.currentUser); - const [kpis, myActivities, byStatus, overdueProjects, activeProjects, dueSoonProjects, + const [kpis, byStatus, overdueProjects, activeProjects, dueSoonProjects, pendingActivities, overdueActivities, todayActivities] = await Promise.all([ repo.summary(memberUserId), - repo.myPendingActivities(req.currentUser.id, memberUserId), repo.projectsByStatus(memberUserId), repo.overdueProjectsList(memberUserId), repo.activeProjectsList(memberUserId), @@ -30,7 +29,6 @@ export const getSummary = asyncHandler(async (req, res) => { const withActivityDue = (a) => ({ ...a, dueStatus: dueStatus(a.due_date) }); ok(res, { kpis, - myActivities: myActivities.map(withActivityDue), projectsByStatus: byStatus, // Detalle de cada tarjeta del Panel (popup al hacer clic). overdueProjects: overdueProjects.map((p) => ({ ...p, dueStatus: 'overdue' })), diff --git a/backend/src/modules/dashboard/repository.js b/backend/src/modules/dashboard/repository.js index 20ab54e..af51789 100644 --- a/backend/src/modules/dashboard/repository.js +++ b/backend/src/modules/dashboard/repository.js @@ -152,19 +152,6 @@ export async function overdueProjectsList(memberUserId) { return rows; } -export async function myPendingActivities(userId, memberUserId) { - const memberClause = memberUserId ? 'AND EXISTS (SELECT 1 FROM project_members pm WHERE pm.project_id = p.id AND pm.user_id = ?)' : ''; - const params = memberUserId ? [userId, memberUserId] : [userId]; - const [rows] = await pool.query( - `SELECT a.id, a.code, a.name, a.due_date, a.progress_pct, p.id AS project_id, p.name AS project_name - FROM activities a JOIN activity_statuses st ON st.id = a.status_id JOIN projects p ON p.id = a.project_id - WHERE st.is_closed = 0 AND p.deleted_at IS NULL AND a.responsible_user_id = ? ${memberClause} - ORDER BY (a.due_date IS NULL), a.due_date LIMIT 20`, - params - ); - return rows; -} - export async function calendarActivities(monthStart, monthEnd, memberUserId) { const memberClause = memberUserId ? 'AND EXISTS (SELECT 1 FROM project_members pm WHERE pm.project_id = p.id AND pm.user_id = ?)' : ''; const params = memberUserId ? [monthStart, monthEnd, memberUserId] : [monthStart, monthEnd]; diff --git a/frontend/package.json b/frontend/package.json index bdfce66..947f686 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,7 +1,7 @@ { "name": "project-linkedcorp-frontend", "private": true, - "version": "2.18.1", + "version": "2.18.2", "type": "module", "scripts": { "dev": "vite", diff --git a/frontend/src/i18n/messages.js b/frontend/src/i18n/messages.js index e942106..e8826da 100644 --- a/frontend/src/i18n/messages.js +++ b/frontend/src/i18n/messages.js @@ -154,7 +154,6 @@ export const messages = { dashboard_overdue_activities: 'Actividades vencidas', dashboard_today_activities: 'Para hoy', dashboard_average_progress: 'Avance promedio', - dashboard_my_activities: 'Mis actividades pendientes', common_of: 'de', dashboard_projects_by_status: 'Proyectos por estado', @@ -640,7 +639,6 @@ export const messages = { dashboard_overdue_activities: 'Overdue activities', dashboard_today_activities: 'Due today', dashboard_average_progress: 'Average progress', - dashboard_my_activities: 'My pending activities', common_of: 'of', dashboard_projects_by_status: 'Projects by status', diff --git a/frontend/src/pages/Dashboard/DashboardPage.jsx b/frontend/src/pages/Dashboard/DashboardPage.jsx index 7673825..aa1b281 100644 --- a/frontend/src/pages/Dashboard/DashboardPage.jsx +++ b/frontend/src/pages/Dashboard/DashboardPage.jsx @@ -63,7 +63,7 @@ export default function DashboardPage() { const [detail, setDetail] = useState(null); if (!data) return
{t('common_loading')}
; - const { kpis, myActivities, projectsByStatus } = data; + const { kpis, projectsByStatus } = data; const activeTotal = Number(kpis.activeProjects) || 0; const nonCancelledTotal = Number(kpis.nonCancelledProjects) || 0; const activitiesTotal = Number(kpis.nonCancelledActivities) || 0; @@ -125,21 +125,6 @@ export default function DashboardPage() { /> -
-

{t('dashboard_my_activities')}

- {myActivities.length === 0 &&
{t('common_empty')}
} - {myActivities.map((a) => ( -
navigate(`/proyectos/${a.project_id}`)} style={ROW_STYLE}> -
-
{a.name}
-
{a.project_name} · {a.due_date || '—'}
-
-
- -
- ))} -
-

{t('dashboard_projects_by_status')}

{projectsByStatus.map((s) => (