discovery-media-player 0.1.82 → 0.1.83
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/server/retention.js +8 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "discovery-media-player",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.83",
|
|
4
4
|
"description": "Self-hosted document viewer: per-recipient tracked links, reading analytics, live presentation. The core knows nothing about the application hosting it — everything it borrows arrives through an injected context.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pdf-viewer",
|
package/server/retention.js
CHANGED
|
@@ -211,14 +211,20 @@ async function purgerRetention(now, optsBrutes = {}) {
|
|
|
211
211
|
// Présentations mortes : bornées à PLAFOND_PRESENTATIONS par exécution ; la ligne, ses messages,
|
|
212
212
|
// ses présences — et les fichiers du bucket si storage.remove est fourni (OPTIONNELLE).
|
|
213
213
|
const bPres = borne(now, f.presentationsMois);
|
|
214
|
-
|
|
214
|
+
// ⚠️ On interroge PLAFOND+1 pour départager « pile PLAFOND présentations, rien après » (non
|
|
215
|
+
// tronqué) de « il y en a plus » — `>= PLAFOND` seul rendait un faux positif à exactement 500
|
|
216
|
+
// (P3 douzième audit : annoncé en 0.1.82, mais l'édition avait été perdue, sans essai pour la
|
|
217
|
+
// garder — c'est cet essai-ci qui manquait).
|
|
218
|
+
const mortesLot = await PLAYER.db.request(`doc_presentations?active=eq.false&updated_at=lt.${enc(bPres)}&select=slug&order=slug.asc&limit=${PLAFOND_PRESENTATIONS + 1}`);
|
|
219
|
+
const troncPres = Array.isArray(mortesLot) && mortesLot.length > PLAFOND_PRESENTATIONS;
|
|
220
|
+
const mortes = Array.isArray(mortesLot) ? mortesLot.slice(0, PLAFOND_PRESENTATIONS) : [];
|
|
215
221
|
// ⚠️ BUDGET GLOBAL AUX PRÉSENTATIONS (P2 dixième audit). Le plafond n'était appliqué qu'À CHAQUE
|
|
216
222
|
// présentation : 500 présentations × 5 000 = 2,5 M de messages en une exécution, timeout et
|
|
217
223
|
// contention avec le chat. Deux budgets partagés — messages et présences — décrémentés au fil
|
|
218
224
|
// des présentations ; la boucle s'arrête quand ils sont épuisés (tronque), sans supprimer les
|
|
219
225
|
// parents restants. En dry-run, on parcourt quand même pour REMONTER ce que la vraie purge
|
|
220
226
|
// ferait (examinés), sans jamais détruire.
|
|
221
|
-
const presRapport = { examinees: 0, supprimees: 0, messages: 0, presences: 0, messagesExaminees: 0, presencesExaminees: 0, fichiers: 0, fichiersErreur: 0, fichiersCandidats: 0, tronque:
|
|
227
|
+
const presRapport = { examinees: 0, supprimees: 0, messages: 0, presences: 0, messagesExaminees: 0, presencesExaminees: 0, fichiers: 0, fichiersErreur: 0, fichiersCandidats: 0, tronque: troncPres };
|
|
222
228
|
let budgetMessages = opts.plafond, budgetPresences = opts.plafond;
|
|
223
229
|
for (const p of (Array.isArray(mortes) ? mortes : [])) {
|
|
224
230
|
const slug = p && p.slug; if (!slug) continue;
|