## Phase 3 Complete: Hashing por stream y soporte en importService TL;DR: Implementado `computeHashesFromStream` y adaptado `importDirectory` para procesar entradas internas de archivos usando `archiveReader.streamArchiveEntry`. Añadidos tests unitarios TDD que validan hashing desde streams y el flujo de import para entradas internas. **Files created/changed:** - backend/src/services/checksumService.ts (añade `computeHashesFromStream`) - backend/src/services/importService.ts (usa `streamArchiveEntry` y `computeHashesFromStream` para `isArchiveEntry`) - backend/tests/services/checksumService.stream.spec.ts (nuevo) - backend/tests/services/importService.archiveEntry.spec.ts (nuevo) **Functions created/changed:** - `computeHashesFromStream(rs)` — calcula `md5`, `sha1`, `crc32` y `size` desde un `Readable`. - `importDirectory` — para objetos con `isArchiveEntry` obtiene un stream con `streamArchiveEntry(containerPath, entryPath)` y calcula hashes en streaming. **Tests creados/ejecutados:** - `backend/tests/services/checksumService.stream.spec.ts` — pasa (1 test). - `backend/tests/services/importService.archiveEntry.spec.ts` — pasa (1 test). **Review Status:** APPROVED with minor recommendations **Notas / Recomendaciones:** - Se sugiere limpiar listeners en `computeHashesFromStream` (evitar fugas con streams inusuales). - Algunos specs usan casts `as unknown as vi.Mock`; si TypeScript da errores, convertir esos casts a `import type { Mock } from 'vitest'` y usar `Mock` o usar `any`. **Git Commit Message:** feat: stream hashing and archive-entry import support - Añade `computeHashesFromStream` para hashing desde streams - Adapta `importDirectory` para procesar entradas internas usando `streamArchiveEntry` - Añade tests unitarios para hashing por stream e import de entradas de archive