From af800b2eb58847fd082954f1fe349eba69e91c66 Mon Sep 17 00:00:00 2001 From: WangDL Date: Sun, 24 May 2026 10:22:56 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20TypeScript=20build=20errors=20=E2=80=94?= =?UTF-8?q?=20RedisService.keys(),=20eventBus=20void,=20Qdrant=20API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add keys() method to RedisService for WorkerHeartbeat - Wrap eventBus.publish() calls in try/catch (returns void) - Fix Qdrant createPayloadIndex API signature (2 args, not 3) Co-Authored-By: Claude Opus 4.7 --- src/infrastructure/redis/redis.service.ts | 4 ++++ src/modules/ai/gateway/ai-gateway.service.ts | 22 +++++++++++--------- src/modules/vector/vector.service.ts | 6 +++--- 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/src/infrastructure/redis/redis.service.ts b/src/infrastructure/redis/redis.service.ts index 865e28e..030546e 100644 --- a/src/infrastructure/redis/redis.service.ts +++ b/src/infrastructure/redis/redis.service.ts @@ -90,6 +90,10 @@ export class RedisService implements OnModuleInit, OnModuleDestroy { return result === 'OK' ? token : null; } + async keys(pattern: string): Promise { + return this.client.keys(pattern); + } + async unlock(key: string, token: string): Promise { const script = ` if redis.call('get', KEYS[1]) == ARGV[1] then diff --git a/src/modules/ai/gateway/ai-gateway.service.ts b/src/modules/ai/gateway/ai-gateway.service.ts index 4f7e54e..bcf7c5e 100644 --- a/src/modules/ai/gateway/ai-gateway.service.ts +++ b/src/modules/ai/gateway/ai-gateway.service.ts @@ -90,7 +90,7 @@ export class AiGatewayService { }).catch(() => {}); // Publish cost event for Quota/Cost module - this.eventBus?.publish(new AIUsageRecorded({ + try { this.eventBus?.publish(new AIUsageRecorded({ userId: request.userId, feature: request.feature, provider: target.provider, @@ -99,7 +99,7 @@ export class AiGatewayService { outputTokens: output.usage.outputTokens, estimatedCost, timestamp: new Date().toISOString(), - })).catch(() => {}); + })); } catch {} clearTimeout(timeoutId); return { @@ -135,14 +135,16 @@ export class AiGatewayService { }, }).catch(() => {}); - this.eventBus?.publish(new ModelFallbackTriggered({ - tier: request.tier, - fromProvider: tierConfig.preferred.provider, - fromModel: tierConfig.preferred.model, - toProvider: fb.provider, - toModel: fb.model, - errorMessage: lastError.message?.slice(0, 200), - })).catch(() => {}); + try { + this.eventBus?.publish(new ModelFallbackTriggered({ + tier: request.tier, + fromProvider: tierConfig.preferred.provider, + fromModel: tierConfig.preferred.model, + toProvider: fb.provider, + toModel: fb.model, + errorMessage: lastError.message?.slice(0, 200), + })); + } catch {} } } } diff --git a/src/modules/vector/vector.service.ts b/src/modules/vector/vector.service.ts index 036c385..d5d912a 100644 --- a/src/modules/vector/vector.service.ts +++ b/src/modules/vector/vector.service.ts @@ -70,9 +70,9 @@ export class VectorService implements OnModuleInit { vectors: { size: VECTOR_SIZE, distance: 'Cosine' }, hnsw_config: { m: 16, ef_construct: 100 }, }); - await this.client.createPayloadIndex(COLLECTION_NAME, 'userId', { type: 'keyword' }); - await this.client.createPayloadIndex(COLLECTION_NAME, 'knowledgeBaseId', { type: 'keyword' }); - await this.client.createPayloadIndex(COLLECTION_NAME, 'deleted', { type: 'bool' }); + await this.client.createPayloadIndex(COLLECTION_NAME, { field_name: 'userId', field_schema: 'keyword' }); + await this.client.createPayloadIndex(COLLECTION_NAME, { field_name: 'knowledgeBaseId', field_schema: 'keyword' }); + await this.client.createPayloadIndex(COLLECTION_NAME, { field_name: 'deleted', field_schema: 'bool' }); this.logger.log(`Created Qdrant collection: ${COLLECTION_NAME}`); } catch (err: any) { this.logger.error(`Failed to create Qdrant collection: ${err.message}`);