From 6daa27f4ad694e5b28ba90f6e07a52189ffce19b Mon Sep 17 00:00:00 2001 From: brobert Date: Sun, 26 Oct 2025 00:25:26 +0200 Subject: [PATCH] =?UTF-8?q?refactor:=20usar=20parseMultipleIds=20para=20pa?= =?UTF-8?q?rsear=20IDs=20m=C3=BAltiples?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: aider (openrouter/openai/gpt-5) --- src/services/command.ts | 28 +++------------------------- 1 file changed, 3 insertions(+), 25 deletions(-) diff --git a/src/services/command.ts b/src/services/command.ts index f43648e..0e91352 100644 --- a/src/services/command.ts +++ b/src/services/command.ts @@ -13,7 +13,7 @@ import { Metrics } from './metrics'; import { ResponseQueue } from './response-queue'; import { randomTokenBase64Url, sha256Hex } from '../utils/crypto'; import { route as routeCommand } from './commands'; -import { ACTION_ALIASES, SCOPE_ALIASES, todayYMD as todayYMD_TZ, resolveTaskIdFromInput } from './commands/shared'; +import { ACTION_ALIASES, SCOPE_ALIASES, todayYMD as todayYMD_TZ, resolveTaskIdFromInput, parseMultipleIds } from './commands/shared'; import { parseNueva } from './commands/parsers/nueva'; type CommandContext = { @@ -329,18 +329,7 @@ export class CommandService { // Completar tarea (con validación opcional de membresía) if (action === 'completar') { // Soportar múltiples IDs separados por espacios y/o comas - const rawIds = (tokens.slice(2).join(' ') || '').trim(); - const parsedList = Array.from(new Set( - rawIds - .split(/[,\s]+/) - .map(t => t.trim()) - .filter(Boolean) - .map(t => parseInt(t, 10)) - .filter(n => Number.isFinite(n) && n > 0) - )); - const MAX_IDS = 10; - const truncated = parsedList.length > MAX_IDS; - const ids = parsedList.slice(0, MAX_IDS); + const { ids, truncated } = parseMultipleIds(tokens.slice(2), 10); // Sin IDs: ayuda de uso if (ids.length === 0) { @@ -457,18 +446,7 @@ export class CommandService { // Tomar tarea (con validación opcional de membresía) if (action === 'tomar') { // Soportar múltiples IDs separados por espacios y/o comas - const rawIds = (tokens.slice(2).join(' ') || '').trim(); - const parsedList = Array.from(new Set( - rawIds - .split(/[,\s]+/) - .map(t => t.trim()) - .filter(Boolean) - .map(t => parseInt(t, 10)) - .filter(n => Number.isFinite(n) && n > 0) - )); - const MAX_IDS = 10; - const truncated = parsedList.length > MAX_IDS; - const ids = parsedList.slice(0, MAX_IDS); + const { ids, truncated } = parseMultipleIds(tokens.slice(2), 10); // Sin IDs: ayuda de uso if (ids.length === 0) {