CognxSafeTrack commited on
Commit
41885bb
·
1 Parent(s): f9b06cf

fix: Anti-False Validation for Card Interactions

Browse files
apps/whatsapp-worker/src/index.ts CHANGED
@@ -240,7 +240,14 @@ const worker = new Worker('whatsapp-queue', async (job: Job) => {
240
  if (!updatedBadges.includes(b)) updatedBadges.push(b);
241
  }
242
 
243
- const newStatus = (isDeepDive && feedbackData?.isForcedClosure !== true) ? 'PENDING_DEEPDIVE' : 'COMPLETED';
 
 
 
 
 
 
 
244
 
245
  // @ts-ignore - Prisma types may be out of sync after schema update
246
  await prisma.userProgress.update({
 
240
  if (!updatedBadges.includes(b)) updatedBadges.push(b);
241
  }
242
 
243
+ let newStatus = (isDeepDive && feedbackData?.isForcedClosure !== true) ? 'PENDING_DEEPDIVE' : 'COMPLETED';
244
+
245
+ // 🚨 Card/Button Bypass Logic (Lead Fullstack Developer Requirement)
246
+ // Ensure that a button click never completes the lesson, even if the AI validates it.
247
+ if (isButtonChoice) {
248
+ console.log(`[WORKER] 🛡️ Button choice detected for User ${userId}. Overriding COMPLETED with PENDING.`);
249
+ newStatus = 'PENDING';
250
+ }
251
 
252
  // @ts-ignore - Prisma types may be out of sync after schema update
253
  await prisma.userProgress.update({
tasks/lessons.md CHANGED
@@ -16,7 +16,8 @@ Ce fichier archive les échecs et solutions liées à la **stabilité technique*
16
  - **[FLOW] Re-validation Window** : Ne jamais bloquer une analyse entrante sous prétexte que le statut est COMPLETED si le délai depuis la dernière validation est inférieur à 5 minutes (cas de correction immédiate par l'utilisateur) ou si un nouvel élément multimédia est présent.
17
  - **[FLOW] Day 7 Card Blockage** : Risque de blocage lors du choix de carte. Toujours valider que l'entrée textuelle courte (ex: "WhatsApp") déclenche la même logique que l'audio en baissant le seuil de `minWordCount`.
18
  - **[UX] Card Interaction (Hook)** : L'interaction par cartes/boutons ne doit jamais être bloquante. Elle doit servir de "hook" : le Coach valide le choix et relance immédiatement sur le "pourquoi" pour enrichir l'analyse.
19
- - **[UX] Guidance Post-Validation** : Si un utilisateur envoie un message alors qu'il est en statut `COMPLETED`, le système ne doit pas rester muet. Il doit lui renvoyer un message de navigation (ex: "Tape SUITE pour continuer").
 
20
 
21
  ## 🛡️ Règle d'Or de l'Intégrité
22
  **Les correctifs techniques ne doivent JAMAIS impacter la logique de personnalisation du prompt `generatePersonalizedLesson` ou des feedbacks.** Toute simplification technique qui réduit la spécificité de l'IA est un échec.
 
16
  - **[FLOW] Re-validation Window** : Ne jamais bloquer une analyse entrante sous prétexte que le statut est COMPLETED si le délai depuis la dernière validation est inférieur à 5 minutes (cas de correction immédiate par l'utilisateur) ou si un nouvel élément multimédia est présent.
17
  - **[FLOW] Day 7 Card Blockage** : Risque de blocage lors du choix de carte. Toujours valider que l'entrée textuelle courte (ex: "WhatsApp") déclenche la même logique que l'audio en baissant le seuil de `minWordCount`.
18
  - **[UX] Card Interaction (Hook)** : L'interaction par cartes/boutons ne doit jamais être bloquante. Elle doit servir de "hook" : le Coach valide le choix et relance immédiatement sur le "pourquoi" pour enrichir l'analyse.
19
+ - **[UX] Anti-False Validation (Card Click)** : Un clic sur une carte/bouton ne doit JAMAIS valider une étape (`COMPLETED`). Il doit servir de point d'entrée ("hook") pour une explication riche. Forcer le statut à `PENDING` après un choix par bouton pour obliger l'utilisateur à donner son explication audio/texte.
20
+ - **[FLOW] Validation Subordonnée** : Le passage en `COMPLETED` est strictement réservé au feedback positif de l'IA sur une réponse de fond. L'UI d'attente ("Analyse de votre réponse...") doit être envoyée, mais le statut ne doit bouger que sur confirmation IA.
21
 
22
  ## 🛡️ Règle d'Or de l'Intégrité
23
  **Les correctifs techniques ne doivent JAMAIS impacter la logique de personnalisation du prompt `generatePersonalizedLesson` ou des feedbacks.** Toute simplification technique qui réduit la spécificité de l'IA est un échec.