Bucle de Verificación de Calidad

LeadFlow AI — feat/ai-pipeline-v2 → main
feat/ai-pipeline-v2
PR target: main  |  11 archivos · ~340 líneas
1
Build Verification
PASS
$ pnpm build 2>&1 | tail -20
▶ Building Next.js app...
Compiled successfully
✓ Route (app) — /api/deals/[id]/score — 2.3 kB
✓ Route (app) — /api/pipeline/reorder — 1.8 kB
✓ /pipeline — 4.1 kB (First Load JS: 142 kB)
Build completed in 18.4s
Duración18.4s
Bundle size142 kB
2
Type Check
1 ERROR
$ npx tsc --noEmit 2>&1 | head -30
src/components/AIScorer.tsx(47,18): error TS2322:
Type 'number | undefined' is not assignable to
type 'number'. Property 'score' may be undefined.
⚠ 1 error encontrado — corregir antes de continuar
Errores críticos1
Archivos analizados47
3
Lint Check
2 WARN
$ npm run lint 2>&1 | head -30
⚠ src/hooks/useDeals.ts:23:7
react-hooks/exhaustive-deps: 'onSuccess' missing in deps
⚠ src/components/DealCard.tsx:89:5
@typescript-eslint/no-unused-vars: 'prevScore' is defined
but never used.
Errores bloqueantes0
Warnings2
4
Test Suite + Coverage
1 FAIL
$ npm run test -- --coverage 2>&1 | tail -50
PASS src/__tests__/AIScorer.test.ts (8 tests)
PASS src/__tests__/PipelineBoard.test.tsx (12 tests)
FAIL src/__tests__/useDeals.test.ts
✗ optimistic update should rollback on error (timeout)
Coverage: 74.3% (threshold: 80%)
Tests pasados29 / 30
Cobertura74.3% ⚠ <80%
5
Security Scan
1 ISSUE
$ grep -rn "console.log" --include="*.ts" src/ | head -10
src/components/AIScorer.tsx:83: console.log('[DEBUG] raw score:', rawScore, prompt)
$ grep -rn "sk-" --include="*.ts" src/ | head -10
(sin resultados)
Secretos expuestos0
console.log en prod1
6
Diff Review
11 archivos
$ git diff --stat HEAD~1
src/components/AIScorer.tsx | 127 ++++--
src/components/DealCard.tsx | 84 +++-
src/hooks/useDeals.ts | 56 ++--
src/app/api/deals/[id]/score.ts | 38 ++
... 7 archivos más
Líneas añadidas+287
Líneas eliminadas-53
⚠️

NO LISTO para PR — 3 issues bloqueantes

El feature está bien encaminado (build OK, 29/30 tests) pero hay 3 correcciones obligatorias antes de abrir el PR a main.

1
Fix type error en AIScorer.tsx:47
2
Eliminar console.log en AIScorer.tsx:83
3
Fix test timeout en useDeals → cobertura 80%

VERIFICATION REPORT — feat/ai-pipeline-v2

Fase Estado Detalle
Build PASS 18.4s · bundle 142 kB
Types FAIL 1 error TS2322
Lint WARN 2 warnings (no bloqueantes)
Tests FAIL 29/30 · 74.3% cov (< 80%)
Security FAIL 1 console.log con datos sensibles
Diff OK 11 archivos · +287 / -53
Overall NOT READY for PR
Issues a corregir (3)
🔴
Type error TS2322: score puede ser undefined — añadir guard ?? 0 o ajustar el tipo en la interfaz Deal. src/components/AIScorer.tsx:47
🔴
console.log con datos sensibles: el rawScore y prompt del modelo IA no deben llegar a los logs de producción. Reemplazar por process.env.DEBUG && o eliminar. src/components/AIScorer.tsx:83
🟡
Test timeout en rollback optimista: el mock de Prisma no rechaza la promesa en el test. Revisar jest.spyOn(db.deal, 'update').mockRejectedValueOnce() y cobertura en useDeals para superar el 80%. src/__tests__/useDeals.test.ts:102
💬
[Opcional] react-hooks/exhaustive-deps: añadir onSuccess al array de dependencias del useCallback en useDeals para evitar stale closures. src/hooks/useDeals.ts:23
Archivos modificados +287 -53 en 11 archivos
AIScorer.tsx +127 -31
DealCard.tsx +84 -7
useDeals.ts +56 -12
score.ts (API) +38 -0
reorder.ts (API) +29 -0
PipelineBoard.tsx +21 -3
types/deal.ts +8 -0
AIScorer.test.ts +14 -0
schema.prisma +5 -0
useDeals.test.ts +3 -0
index.ts (exports) +2 -0