Skip to content

[Task-Contract] Refactorizar matchFilter() para reducir complejidad ciclomática de 54 a 15 #29

Description

@MauricioPerera

task: refactor-match-filter
intent: Extraer la lógica de evaluación de operadores lógicos y relacionales a funciones auxiliares puras para reducir la complejidad masiva del motor de consultas.
target: js-doc-store.js
language: javascript
signature: "function matchFilter(doc, filter)"
tests: test-docstore.js
test_command: "node test-docstore.js"
budget:
cyclomatic_max: 15
nesting_max: 4

Descripción del Problema

Un análisis estático de CCDD Gate determinó que el archivo js-doc-store.js sufre de extrema deuda técnica en su motor de consultas. Específicamente, la función matchFilter tiene una complejidad ciclomática de 54. Esta función evalúa operadores estilo MongoDB ($eq, $gt, $in, $and, $or), y al tener todo hardcodeado en una sola función gigante, es un "God Object" que se vuelve imposible de mantener o testear de manera exhaustiva.

Regla de Parada y Verificación

  1. Refactorización Segura: Crea un Dispatch Table u objeto de estrategias para los operadores de MongoDB (ej. const operators = { $gt: (a,b) => a > b, ... }) para eliminar el Switch/If masivo dentro de matchFilter.
  2. Validación Determinista: El agente debe correr python runners/complexity_gate.py js-doc-store.js. El ticket se considera cerrado única y exclusivamente cuando el validador retorne PASS para matchFilter (cyclomatic <= 15).
  3. Tests Congelados: Todos los tests existentes en test-docstore.js deben seguir pasando en verde. Ejecuta el test_command estricto del frontmatter para validar tu trabajo sin modificar el test original.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions