feat: migrate to S3 storage with automatic download and timestamped filenames
- Replace local file storage with S3-compatible object storage - Add automatic PDF download after generation - Include timestamps in filenames to ensure uniqueness - Remove unused static volume from Kubernetes deployment - Update ConfigMap to remove unused variables and add S3 configuration - Configure S3 credentials via Kubernetes secrets for both dev and prod environments - Add boto3 dependency for S3 integration
This commit is contained in:
+24
-18
@@ -176,31 +176,37 @@
|
||||
})
|
||||
});
|
||||
|
||||
const result = await response.json();
|
||||
|
||||
const resultContainer = document.getElementById('resultContainer');
|
||||
const resultMessage = document.getElementById('resultMessage');
|
||||
const downloadLinkContainer = document.getElementById('downloadLinkContainer');
|
||||
const downloadLink = document.getElementById('downloadLink');
|
||||
|
||||
if (result.error) {
|
||||
resultMessage.innerHTML = `<div class="alert alert-danger">${result.error}</div>`;
|
||||
downloadLinkContainer.classList.add('d-none');
|
||||
} else {
|
||||
// Check if it's a redirect response (for automatic download)
|
||||
if (response.redirected) {
|
||||
// Automatically trigger download
|
||||
window.location.href = response.url;
|
||||
|
||||
// Show success message
|
||||
const resultContainer = document.getElementById('resultContainer');
|
||||
const resultMessage = document.getElementById('resultMessage');
|
||||
resultMessage.innerHTML = `
|
||||
<div class="alert alert-success">
|
||||
<h6>${result.message}</h6>
|
||||
<h6>PDF généré avec succès!</h6>
|
||||
<p>Le téléchargement devrait commencer automatiquement.</p>
|
||||
<ul class="mb-0">
|
||||
<li>Tables de ${result.min_table} à ${result.max_table}</li>
|
||||
<li>${result.num_exercises} exercices générés</li>
|
||||
<li>Tables de ${minTable} à ${maxTable}</li>
|
||||
<li>${numExercises} exercices générés</li>
|
||||
</ul>
|
||||
</div>
|
||||
`;
|
||||
downloadLink.href = `/download/${result.pdf_filename}`;
|
||||
downloadLinkContainer.classList.remove('d-none');
|
||||
resultContainer.classList.remove('d-none');
|
||||
} else {
|
||||
// Handle JSON response (error case)
|
||||
const result = await response.json();
|
||||
const resultContainer = document.getElementById('resultContainer');
|
||||
const resultMessage = document.getElementById('resultMessage');
|
||||
|
||||
if (result.error) {
|
||||
resultMessage.innerHTML = `<div class="alert alert-danger">${result.error}</div>`;
|
||||
}
|
||||
|
||||
resultContainer.classList.remove('d-none');
|
||||
}
|
||||
|
||||
resultContainer.classList.remove('d-none');
|
||||
} catch (error) {
|
||||
const resultContainer = document.getElementById('resultContainer');
|
||||
const resultMessage = document.getElementById('resultMessage');
|
||||
|
||||
Reference in New Issue
Block a user