From 84c31f38a0a49827655f60467468d6f9fa662baf Mon Sep 17 00:00:00 2001 From: David Date: Thu, 20 Nov 2025 23:18:03 +0100 Subject: [PATCH] fix: load CSV files from MinIO instead of local filesystem for rate search MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Problem: - CSV files uploaded to MinIO via admin panel - But getAvailableCsvFiles() only listed local filesystem - Result: rate search returned 0 results even though files exist in MinIO Solution: - Modified getAvailableCsvFiles() to check MinIO first - Lists files from csv_rate_configs table with minioObjectKey - Falls back to local filesystem if MinIO not configured - Logs clearly which source is being used This ensures rate search uses the uploaded CSV files from MinIO storage. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../csv-loader/csv-rate-loader.adapter.ts | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/apps/backend/src/infrastructure/carriers/csv-loader/csv-rate-loader.adapter.ts b/apps/backend/src/infrastructure/carriers/csv-loader/csv-rate-loader.adapter.ts index 5ca7c3b..64710a0 100644 --- a/apps/backend/src/infrastructure/carriers/csv-loader/csv-rate-loader.adapter.ts +++ b/apps/backend/src/infrastructure/carriers/csv-loader/csv-rate-loader.adapter.ts @@ -237,7 +237,26 @@ export class CsvRateLoaderAdapter implements CsvRateLoaderPort { async getAvailableCsvFiles(): Promise { try { - // Ensure directory exists + // If MinIO/S3 is configured, list files from there + if (this.s3Storage && this.configService && this.csvConfigRepository) { + try { + const configs = await this.csvConfigRepository.findAll(); + const minioFiles = configs + .filter(config => config.metadata?.minioObjectKey) + .map(config => config.metadata?.minioObjectKey as string); + + if (minioFiles.length > 0) { + this.logger.log(`📂 Found ${minioFiles.length} CSV files in MinIO`); + return minioFiles; + } else { + this.logger.warn('⚠️ No CSV files configured in MinIO, falling back to local files'); + } + } catch (minioError: any) { + this.logger.warn(`⚠️ Failed to list MinIO files: ${minioError.message}. Falling back to local files.`); + } + } + + // Fallback: list from local file system try { await fs.access(this.csvDirectory); } catch {