From e47b64a5b58fe873ae61c8559123a29e3f393a6f Mon Sep 17 00:00:00 2001 From: VPS 4 Deploy Agent Date: Sun, 28 Jun 2026 14:52:25 +0200 Subject: [PATCH] =?UTF-8?q?feat(media):=20index=20e=20delete=20em=20lote?= =?UTF-8?q?=20de=20m=C3=ADdias=20(Wasabi,=20coordenado=20DB=E2=86=94storag?= =?UTF-8?q?e)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - StorageProvider.deleteObjects(paths): delete seletivo em lote (chunks de 1000), no provider concreto (Wasabi DeleteObjectsCommand + fallback local). - GET /api/instances/:id/media-index: index/auditoria por chat/tipo/período (baseado no DB, com agregado byType, paginado). - POST /api/instances/:id/media-batch-delete: delete coordenado DB↔Wasabi, dryRun por padrão (precisa dryRun:false p/ apagar); limpa mediaPath/mediaUrl. Co-Authored-By: Claude Opus 4.8 --- .../backend/src/core/StorageProvider.ts | 9 ++ .../newwhats.local/backend/src/core/types.ts | 2 + .../modules/whatsapp/whatsapp.media.routes.ts | 99 +++++++++++++++++++ .../plugins/UnifiedStorageProvider/index.js | 36 +++++++ .../UnifiedStorageProvider/index.js.map | 2 +- .../plugins/UnifiedStorageProvider/index.ts | 37 +++++++ 6 files changed, 184 insertions(+), 1 deletion(-) diff --git a/newwhats.clube67.com/newwhats.local/backend/src/core/StorageProvider.ts b/newwhats.clube67.com/newwhats.local/backend/src/core/StorageProvider.ts index f2ecd13..df8dc6e 100644 --- a/newwhats.clube67.com/newwhats.local/backend/src/core/StorageProvider.ts +++ b/newwhats.clube67.com/newwhats.local/backend/src/core/StorageProvider.ts @@ -103,6 +103,15 @@ class StorageProviderRegistry { return this.provider.deletePrefix(prefix) } + async deleteObjects(paths: string[]): Promise<{ deleted: number }> { + if (!this.provider) { + rootLogger.warn('[StorageProvider] deleteObjects chamado mas nenhum provider está registrado') + return { deleted: 0 } + } + if (paths.length === 0) return { deleted: 0 } + return this.provider.deleteObjects(paths) + } + unregister(): void { this.provider = null this.healthy = false diff --git a/newwhats.clube67.com/newwhats.local/backend/src/core/types.ts b/newwhats.clube67.com/newwhats.local/backend/src/core/types.ts index 8090489..e316dba 100644 --- a/newwhats.clube67.com/newwhats.local/backend/src/core/types.ts +++ b/newwhats.clube67.com/newwhats.local/backend/src/core/types.ts @@ -133,6 +133,8 @@ export interface StorageProviderInterface { checkDetailedHealth(): Promise upload(payload: StorageUploadPayload): Promise<{ provider: string; path: string }> deletePrefix(prefix: string): Promise<{ deleted: number }> + /** Deleta uma lista específica de paths (delete em lote seletivo, até 1000/req no S3) */ + deleteObjects(paths: string[]): Promise<{ deleted: number }> /** Recupera os bytes de um arquivo pelo seu path relativo no bucket */ getBuffer(path: string): Promise } diff --git a/newwhats.clube67.com/newwhats.local/backend/src/modules/whatsapp/whatsapp.media.routes.ts b/newwhats.clube67.com/newwhats.local/backend/src/modules/whatsapp/whatsapp.media.routes.ts index 74488e8..a0a4251 100644 --- a/newwhats.clube67.com/newwhats.local/backend/src/modules/whatsapp/whatsapp.media.routes.ts +++ b/newwhats.clube67.com/newwhats.local/backend/src/modules/whatsapp/whatsapp.media.routes.ts @@ -360,9 +360,108 @@ export function buildMediaRoutes(manager: WhatsAppConnectionManager): Router { } }) + // ── GET /api/instances/:instanceId/media-index ───────────────────────────── + // Index/auditoria de mídias desta instância (baseado no DB, sem listObjects). + // Query: chatId?, type?, from?, to? (ISO), page=1, pageSize=50 + router.get('/media-index', async (req: Request, res: Response) => { + try { + const tenantId = req.tenantId! + const instanceId = req.params['instanceId'] as string + const where = buildMediaWhere(tenantId, instanceId, req.query) + + const page = Math.max(1, parseInt(String(req.query['page'] ?? '1'), 10) || 1) + const pageSize = Math.min(200, Math.max(1, parseInt(String(req.query['pageSize'] ?? '50'), 10) || 50)) + + const [total, byTypeRaw, items] = await Promise.all([ + prisma.message.count({ where }), + prisma.message.groupBy({ by: ['type'], where, _count: { _all: true } }), + prisma.message.findMany({ + where, + select: { id: true, type: true, chatId: true, remoteJid: true, mediaPath: true, mediaUrl: true, mimeType: true, timestamp: true }, + orderBy: { timestamp: 'desc' }, + skip: (page - 1) * pageSize, + take: pageSize, + }), + ]) + + const byType = Object.fromEntries(byTypeRaw.map((r) => [r.type, r._count._all])) + res.json({ total, page, pageSize, byType, items }) + } catch (err: any) { + logger.error({ err }, 'Erro no media-index') + res.status(500).json({ error: err.message ?? 'Erro ao indexar mídias' }) + } + }) + + // ── POST /api/instances/:instanceId/media-batch-delete ───────────────────── + // Delete em lote coordenado DB↔Wasabi. Body: { chatId?, type?, from?, to?, dryRun? } + // dryRun=true (padrão) só conta; para apagar de fato, enviar dryRun:false. + router.post('/media-batch-delete', async (req: Request, res: Response) => { + try { + const tenantId = req.tenantId! + const instanceId = req.params['instanceId'] as string + const { dryRun = true } = req.body ?? {} + const where = buildMediaWhere(tenantId, instanceId, req.body ?? {}) + + const matchedRows = await prisma.message.findMany({ + where, + select: { id: true, mediaPath: true }, + }) + const matched = matchedRows.length + + if (dryRun) { + res.json({ dryRun: true, matched, willDeleteObjects: matchedRows.filter((m) => m.mediaPath).length }) + return + } + if (matched === 0) { + res.json({ dryRun: false, matched: 0, deletedObjects: 0, dbCleared: 0 }) + return + } + + // 1. Apaga objetos do storage (só os que têm path relativo no bucket) + const paths = matchedRows.map((m) => m.mediaPath).filter((p): p is string => Boolean(p) && !p!.startsWith('http')) + let deletedObjects = 0 + if (paths.length > 0 && storageProvider.isRegistered()) { + const r = await storageProvider.deleteObjects(paths) + deletedObjects = r.deleted + } + + // 2. Limpa referências no DB (não deixa link quebrado nem órfão lógico) + const upd = await prisma.message.updateMany({ + where: { id: { in: matchedRows.map((m) => m.id) } }, + data: { mediaPath: null, mediaUrl: null }, + }) + + logger.info({ instanceId, matched, deletedObjects, dbCleared: upd.count }, 'Delete em lote de mídias concluído') + res.json({ dryRun: false, matched, deletedObjects, dbCleared: upd.count }) + } catch (err: any) { + logger.error({ err }, 'Erro no media-batch-delete') + res.status(500).json({ error: err.message ?? 'Erro ao apagar mídias em lote' }) + } + }) + return router } +// ─── Helper: monta o filtro Prisma para index/delete de mídias ──────────────── +const MEDIA_TYPES = ['IMAGE', 'VIDEO', 'AUDIO', 'DOCUMENT', 'STICKER'] as const + +function buildMediaWhere(tenantId: string, instanceId: string, src: Record) { + const where: any = { tenantId, instanceId, mediaPath: { not: null } } + if (src['chatId']) where.chatId = String(src['chatId']) + if (src['type']) { + const t = String(src['type']).toUpperCase() + if ((MEDIA_TYPES as readonly string[]).includes(t)) where.type = t + } + const from = src['from'] ? new Date(String(src['from'])) : null + const to = src['to'] ? new Date(String(src['to'])) : null + if ((from && !isNaN(from.getTime())) || (to && !isNaN(to.getTime()))) { + where.timestamp = {} + if (from && !isNaN(from.getTime())) where.timestamp.gte = from + if (to && !isNaN(to.getTime())) where.timestamp.lte = to + } + return where +} + // ─── Helpers ────────────────────────────────────────────────────────────────── const EXT_MAP: Record = { diff --git a/newwhats.clube67.com/newwhats.local/plugins/UnifiedStorageProvider/index.js b/newwhats.clube67.com/newwhats.local/plugins/UnifiedStorageProvider/index.js index 3d60088..19aaae3 100644 --- a/newwhats.clube67.com/newwhats.local/plugins/UnifiedStorageProvider/index.js +++ b/newwhats.clube67.com/newwhats.local/plugins/UnifiedStorageProvider/index.js @@ -271,6 +271,42 @@ class UnifiedStorageProviderPlugin { } return { deleted: deletedCount }; } + /** Delete em lote seletivo: apaga exatamente os paths informados (não por prefixo). */ + async deleteObjects(paths) { + const keys = paths.filter((p) => p && !p.startsWith('http')); + if (keys.length === 0) + return { deleted: 0 }; + let deletedCount = 0; + // 1. Wasabi — em chunks de 1000 (limite do DeleteObjectsCommand) + if (this.s3 && this.bucket) { + for (let i = 0; i < keys.length; i += 1000) { + const chunk = keys.slice(i, i + 1000); + try { + await this.s3.send(new client_s3_1.DeleteObjectsCommand({ + Bucket: this.bucket, + Delete: { Objects: chunk.map((Key) => ({ Key })), Quiet: true }, + })); + deletedCount += chunk.length; + this.ctx.logger.info(`[UnifiedStorageProvider] ${chunk.length} objetos deletados do Wasabi (lote seletivo)`); + } + catch (err) { + this.ctx.logger.error(`[UnifiedStorageProvider] Erro no delete em lote do Wasabi: ${err.message}`); + } + } + } + // 2. Fallback local + for (const key of keys) { + const localPath = path_1.default.join(this.localFallbackDir, key); + try { + if (fs_1.default.existsSync(localPath)) + fs_1.default.unlinkSync(localPath); + } + catch (err) { + this.ctx.logger.error(`[UnifiedStorageProvider] Erro ao remover fallback local ${key}: ${err.message}`); + } + } + return { deleted: deletedCount }; + } async upload(payload) { const { category, file } = payload; if (!VALID_CATEGORIES.includes(category)) diff --git a/newwhats.clube67.com/newwhats.local/plugins/UnifiedStorageProvider/index.js.map b/newwhats.clube67.com/newwhats.local/plugins/UnifiedStorageProvider/index.js.map index 7b93e19..4df322f 100644 --- a/newwhats.clube67.com/newwhats.local/plugins/UnifiedStorageProvider/index.js.map +++ b/newwhats.clube67.com/newwhats.local/plugins/UnifiedStorageProvider/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/newwhats.clube67.com/newwhats.local/plugins/UnifiedStorageProvider/index.ts b/newwhats.clube67.com/newwhats.local/plugins/UnifiedStorageProvider/index.ts index bf39be5..2b2eb8f 100644 --- a/newwhats.clube67.com/newwhats.local/plugins/UnifiedStorageProvider/index.ts +++ b/newwhats.clube67.com/newwhats.local/plugins/UnifiedStorageProvider/index.ts @@ -301,6 +301,43 @@ class UnifiedStorageProviderPlugin implements PluginInstance, StorageProviderInt return { deleted: deletedCount }; } + /** Delete em lote seletivo: apaga exatamente os paths informados (não por prefixo). */ + async deleteObjects(paths: string[]): Promise<{ deleted: number }> { + const keys = paths.filter((p) => p && !p.startsWith('http')); + if (keys.length === 0) return { deleted: 0 }; + + let deletedCount = 0; + + // 1. Wasabi — em chunks de 1000 (limite do DeleteObjectsCommand) + if (this.s3 && this.bucket) { + for (let i = 0; i < keys.length; i += 1000) { + const chunk = keys.slice(i, i + 1000); + try { + await this.s3.send(new DeleteObjectsCommand({ + Bucket: this.bucket, + Delete: { Objects: chunk.map((Key) => ({ Key })), Quiet: true }, + })); + deletedCount += chunk.length; + this.ctx.logger.info(`[UnifiedStorageProvider] ${chunk.length} objetos deletados do Wasabi (lote seletivo)`); + } catch (err: any) { + this.ctx.logger.error(`[UnifiedStorageProvider] Erro no delete em lote do Wasabi: ${err.message}`); + } + } + } + + // 2. Fallback local + for (const key of keys) { + const localPath = path.join(this.localFallbackDir, key); + try { + if (fs.existsSync(localPath)) fs.unlinkSync(localPath); + } catch (err: any) { + this.ctx.logger.error(`[UnifiedStorageProvider] Erro ao remover fallback local ${key}: ${err.message}`); + } + } + + return { deleted: deletedCount }; + } + async upload(payload: StorageUploadPayload): Promise<{ provider: string; path: string }> { const { category, file } = payload; if (!VALID_CATEGORIES.includes(category)) throw new Error(`Categoria inválida: ${category}`);