Pages corrections pages missions

This commit is contained in:
alma 2026-01-16 14:17:17 +01:00
parent 0e20e7b4b4
commit 6fc50e1765

View File

@ -6,12 +6,13 @@ import { S3Client, ListObjectsV2Command, GetObjectCommand, PutObjectCommand, Del
import { Readable } from 'stream';
// S3 Configuration for missions bucket
// Use the same configuration as mission-uploads.ts for consistency
const MISSIONS_S3_CONFIG = {
endpoint: (process.env.MINIO_S3_UPLOAD_BUCKET_URL || 'https://dome-api.slm-lab.net').replace(/\/$/, ''),
region: process.env.MINIO_AWS_REGION || 'us-east-1',
bucket: process.env.MINIO_MISSIONS_BUCKET || 'missions',
accessKey: process.env.MINIO_ACCESS_KEY || '',
secretKey: process.env.MINIO_SECRET_KEY || ''
endpoint: 'https://dome-api.slm-lab.net',
region: 'us-east-1',
bucket: 'missions',
accessKey: process.env.MINIO_ACCESS_KEY || '4aBT4CMb7JIMMyUtp4Pl',
secretKey: process.env.MINIO_SECRET_KEY || 'HGn39XhCIlqOjmDVzRK9MED2Fci2rYvDDgbLFElg'
};
const missionsS3Client = new S3Client({
@ -21,7 +22,7 @@ const missionsS3Client = new S3Client({
accessKeyId: MISSIONS_S3_CONFIG.accessKey,
secretAccessKey: MISSIONS_S3_CONFIG.secretKey
},
forcePathStyle: true
forcePathStyle: true // Required for MinIO
});
// Helper function to check if user has access to mission
@ -71,11 +72,13 @@ export async function GET(
const path = searchParams.get('path') || ''; // Subfolder path within mission
// Construct prefix for listing
// Note: In MinIO, files are stored without the "missions/" prefix (it's removed during upload)
// So the prefix should be just "{missionId}/" or "{missionId}/{path}/"
// Based on mission-uploads.ts, files are stored in MinIO without the "missions/" prefix
// The filePath in DB is "missions/{missionId}/attachments/{filename}"
// But in MinIO it's stored as "{missionId}/attachments/{filename}"
// So we need to use just "{missionId}/" or "{missionId}/{path}/" as prefix
const prefix = path ? `${missionId}/${path}/` : `${missionId}/`;
console.log(`[GET /api/missions/${missionId}/files] Listing with prefix: ${prefix} in bucket: ${MISSIONS_S3_CONFIG.bucket}`);
console.log(`[GET /api/missions/${missionId}/files] Listing with prefix: "${prefix}" in bucket: "${MISSIONS_S3_CONFIG.bucket}"`);
const command = new ListObjectsV2Command({
Bucket: MISSIONS_S3_CONFIG.bucket,
@ -83,7 +86,31 @@ export async function GET(
Delimiter: '/'
});
const response = await missionsS3Client.send(command);
console.log(`[GET /api/missions/${missionId}/files] S3 command:`, {
bucket: MISSIONS_S3_CONFIG.bucket,
prefix: prefix,
endpoint: MISSIONS_S3_CONFIG.endpoint,
accessKey: MISSIONS_S3_CONFIG.accessKey.substring(0, 4) + '...'
});
let response;
try {
response = await missionsS3Client.send(command);
console.log(`[GET /api/missions/${missionId}/files] S3 response success:`, {
commonPrefixes: response.CommonPrefixes?.length || 0,
contents: response.Contents?.length || 0
});
} catch (s3Error: any) {
console.error(`[GET /api/missions/${missionId}/files] S3 error:`, {
code: s3Error.Code,
message: s3Error.message,
bucket: MISSIONS_S3_CONFIG.bucket,
prefix: prefix,
endpoint: MISSIONS_S3_CONFIG.endpoint,
fullError: s3Error
});
throw s3Error;
}
// Extract folders (CommonPrefixes)
const folders = (response.CommonPrefixes || []).map(commonPrefix => {