4.9 KiB
4.9 KiB
Fixes Applied
Data: May 7, 2026
Problemi Risolti
1. Persistenza Piano Abbonamento (Pro/Free)
Problema: La data del piano pro era statica e il piano non era registrato nel database.
Fix:
backend/src/models/User.js: Aggiunto camposubscriptionPlan(enum: 'free'|'pro') esubscriptionExpiresAtbackend/src/models/UserProfile.js: Aggiunto camposubscriptionPlanesubscriptionExpiresAtallo schemabackend/src/routes/profile.js:- GET
/api/profileora restituiscesubscriptionPlanesubscriptionExpiresAt - PUT
/api/profileaccettasubscriptionStateper aggiornare piano (pro imposta expiry 30 giorni) - Sincronizzazione con
UserProfilecollection
- GET
2. Handlers Abbonamento Implementati
Problema: onCancelSubscription e onUpgrade in AccountSettings.tsx erano void (non facevano nulla).
Fix:
frontend-BriefAI/src/pages/SettingsPage.tsx:handleUpgrade()ora chiamaupdateProfile({ subscriptionState: 'pro' })handleCancelSubscription()ora chiamaupdateProfile({ subscriptionState: 'free' })- Entrambi sincronizzano lo stato con localStorage e il backend
- Aggiunto stato
subscriptionExpiresAtlocale
frontend-BriefAI/src/components/AccountSettings.tsx:- Riceve
subscriptionExpiresAtcome prop - Mostra data reale di scadenza invece della data statica "12/12/2026"
- Riceve
3. Validazione Email Migliorata
Problema: Email veniva accettata a prescindere, anche se non aveva senso.
Fix:
backend/src/routes/auth.js: Aggiunta validazione regex/^[^\s@]+@[^\s@]+\.[^\s@]+$/in POST/auth/registerfrontend-BriefAI/src/pages/RegisterPage.tsx: Aggiunta validazione client-side pre-submit
4. Token Handling in FeedService
Problema: Incertezza se il token fosse quello impostato o random.
Fix:
frontend-BriefAI/src/services/feedService.ts:- Importato
getMeda authService - Se il token non è decodificabile localmente, fa fallback a
getMe()per ottenere userId dal backend - Logging migliorato con messaggi di errore più chiari
- Importato
5. Rimozione Link da Articoli Processed
Problema: Gli articoli processati contenevano link.
Fix:
backend/src/routes/articles.js:- Aggiunta funzione
stripLinks()che rimuove:- Anchor tag HTML
<a href="...">text</a>→text - Markdown link
[text](url)→text - Plain URL
https://...
- Anchor tag HTML
- Per articoli con
status='processed', viene pulitocontentesummaryprima di rispondere
- Aggiunta funzione
6. Implementazione Salvataggio Articoli (Save/Bookmark)
Problema: Il bottone "Salva" era presente ma non faceva nulla (non aveva handler).
Fix:
frontend-BriefAI/src/services/feedbackService.ts:- Aggiunta funzione
saveArticle(articleId)che invia il salvataggio al webhook n8n - Utilizza stessa logica di timeout e error handling di
sendFeedback
- Aggiunta funzione
frontend-BriefAI/src/components/MagicCard.tsx:- Aggiunto parametro
isSavedper mostrare stato visivo - Aggiunto parametro
savePendingper disabilitare bottone durante il caricamento - Aggiunto parametro
onSavecallback - Bottone Salva ora ha handler
handleSavee disabilitazione appropriata
- Aggiunto parametro
frontend-BriefAI/src/components/FeedContent.tsx:- Aggiunto stato
savedByArticleper tracciare articoli salvati - Aggiunto stato
savePendingByArticleper gestire loading - Aggiunto handler
handleSaveArticlecon error handling - Aggiunto messaggio di errore
saveErrorvisibile all'utente - Passa
isSaved,savePending,onSavea cada MagicCard
- Aggiunto stato
File Modificati
Backend
/root/brief_ai/digital-twin-news-feature-nicol-ai-frontend/backend/src/models/User.js/root/brief_ai/digital-twin-news-feature-nicol-ai-frontend/backend/src/models/UserProfile.js/root/brief_ai/digital-twin-news-feature-nicol-ai-frontend/backend/src/routes/auth.js/root/brief_ai/digital-twin-news-feature-nicol-ai-frontend/backend/src/routes/profile.js/root/brief_ai/digital-twin-news-feature-nicol-ai-frontend/backend/src/routes/articles.js/root/brief_ai/digital-twin-news-feature-nicol-ai-frontend/backend/.env(credenziali MongoDB Atlas aggiornate)
Frontend
/root/brief_ai/frontend-BriefAI/src/components/AccountSettings.tsx/root/brief_ai/frontend-BriefAI/src/pages/SettingsPage.tsx/root/brief_ai/frontend-BriefAI/src/pages/RegisterPage.tsx/root/brief_ai/frontend-BriefAI/src/services/apiService.ts/root/brief_ai/frontend-BriefAI/src/services/feedService.ts/root/brief_ai/frontend-BriefAI/src/services/feedbackService.ts(aggiunta funzione saveArticle)/root/brief_ai/frontend-BriefAI/src/components/MagicCard.tsx(implementato onSave handler)/root/brief_ai/frontend-BriefAI/src/components/FeedContent.tsx(gestione stato salvataggio)
Credenziali Configurate
- MongoDB: Atlas cluster (briefai-cluster)
- JWT_SECRET: Configurato in
.envbackend - CORS_ORIGIN: http://localhost:5173 (frontend)
- Env: development