fix(b5): la notification ntfy ne porte jamais d'extrait du texte libre ; lien de modération public ; trackingUrl mort retiré

Checkpoint Fable 27/09 : sans lien, nomSuggere() reprenait 60 caractères du texte du contributeur et les envoyait sur un topic ntfy (public par URL). Le nom n'est transmis que s'il vient d'un hostname. Click → sheets.trans-former.fr (localhost inutilisable depuis un téléphone). trackingUrl pointait nav.trans-former.fr/suivi/, page inexistante.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Jules
2026-09-27 20:20:22 +02:00
co-authored by Claude Fable 5.1
parent 695cc8bbc2
commit 043e2e2348
+18 -6
View File
@@ -207,7 +207,7 @@ export default defineEventHandler(async (event) => {
nomSuggere: data.nom,
typeSuggere: data.submission_type,
nbLiens: data.url ? 1 : 0,
nocodbAdminUrl: 'http://localhost:8070',
nocodbAdminUrl: NOCODB_ADMIN_URL,
}),
).catch((e) => console.warn('[submit] Notification ntfy échouée:', e?.message ?? e))
@@ -274,10 +274,10 @@ async function handleLibreSubmit(body: unknown) {
process.env.NTFY_TOPIC,
buildSubmissionNotif({
submissionId,
nomSuggere: payload.nom,
nomSuggere: nomPourNotif(payload.nom, data),
typeSuggere: payload.submission_type,
nbLiens: data.liens.length,
nocodbAdminUrl: 'http://localhost:8070',
nocodbAdminUrl: NOCODB_ADMIN_URL,
}),
).catch((e) => console.warn('[submit] Notification ntfy échouée (libre):', e?.message ?? e))
@@ -285,10 +285,22 @@ async function handleLibreSubmit(body: unknown) {
status: 201,
submissionId,
message: 'Ta fiche est en cours de traitement.',
trackingUrl: submissionId ? `https://nav.trans-former.fr/suivi/${submissionId}` : null,
trackingUrl: null,
}
}
/** URL de modération cliquable depuis la notification (téléphone) — jamais localhost. */
const NOCODB_ADMIN_URL = 'https://sheets.trans-former.fr'
/**
* Sans lien, `nomSuggere()` retombe sur les 60 premiers caractères du texte libre :
* ce texte ne doit jamais partir vers ntfy (topic public par URL). On ne transmet
* le nom que lorsqu'il est dérivé d'un hostname.
*/
function nomPourNotif(nom: string, data: LibreSubmitInput): string {
return data.liens.length > 0 ? nom : '[à qualifier] texte seul (voir NocoDB)'
}
async function insertReferenceLibre(config: ReturnType<typeof useRuntimeConfig>, data: LibreSubmitInput) {
const payload = toReferencePayload(data)
const insertUrl = `${config.nocodbUrl}/api/v1/db/data/noco/${config.nocodbBase}/${config.referencesTableId}`
@@ -311,10 +323,10 @@ async function insertReferenceLibre(config: ReturnType<typeof useRuntimeConfig>,
process.env.NTFY_TOPIC,
buildSubmissionNotif({
submissionId: referenceId,
nomSuggere: payload.titre,
nomSuggere: nomPourNotif(payload.titre, data),
typeSuggere: 'references',
nbLiens: data.liens.length,
nocodbAdminUrl: 'http://localhost:8070',
nocodbAdminUrl: NOCODB_ADMIN_URL,
}),
).catch((e) => console.warn('[submit] Notification ntfy échouée (référence libre):', e?.message ?? e))