Commit Graph
238 Commits
Author SHA1 Message Date
LogiFlow 88949f0d79 Merge pull request #86 from R0m1k3/claude/update-rss-feeds-011CV6EZDsWAUqbRHZR1117Q
Fix: Opérateur ternaire JavaScript (? restauré)
2025-11-14 11:38:22 +01:00
Claude e7a0715822 Fix: Opérateur ternaire JavaScript (? restauré)
Correction erreur de syntaxe dans calendar.routes.js:

AVANT (cassé):
  sendUpdates: attendees && attendees.length > 0 $1 'all' : 'none'

APRÈS (corrigé):
  sendUpdates: attendees && attendees.length > 0 ? 'all' : 'none'

Le script de conversion SQL avait remplacé par erreur l'opérateur
ternaire JavaScript '?' par '$1' (paramètre PostgreSQL).

2 occurrences corrigées aux lignes 556 et 677.

ERREUR RÉSOLUE:
  SyntaxError: Unexpected identifier '$1'

L'application devrait maintenant démarrer correctement.
2025-11-14 10:36:14 +00:00
LogiFlow a43e16b116 Merge pull request #85 from R0m1k3/claude/update-rss-feeds-011CV6EZDsWAUqbRHZR1117Q
Claude/update rss feeds 011 cv6 ez ds wa uqb rhzr1117 q
2025-11-14 11:31:25 +01:00
Claude 2b1e80d27e Docs: Guide de rebuild immédiat
REBUILD-NOW.md: Instructions simples de rebuild Docker

Les corrections SQL (commit 8007c42) sont déjà dans le code.
Il suffit de rebuild l'image Docker pour que tout fonctionne:

  docker-compose build notes-app
  docker-compose restart notes-app

Aucun script manuel à exécuter. Tout est dans le code.
2025-11-14 10:26:37 +00:00
Claude 8007c4281a Fix: Conversion SQL SQLite → PostgreSQL
Correction de TOUTES les requêtes SQL pour PostgreSQL:

1. Paramètres: ? → $1, $2, $3...
   - 234 conversions automatiques
   - auth.routes.js: WHERE username = $1
   - Tous les routes et services corrigés

2. Booléens: 0/1 → TRUE/FALSE
   - WHERE enabled = 1 → WHERE enabled = TRUE
   - WHERE completed = 0 → WHERE completed = FALSE
   - rss-scheduler.js ligne 154: corrigé

ERREURS RÉSOLUES:
- ✅ "syntax error at end of input" (auth login)
- ✅ "operator does not exist: boolean = integer" (RSS)

Script: scripts/convert-sql-to-postgres.js
- Conversion automatique intelligente
- Gère WHERE, INSERT, UPDATE, DELETE, SELECT
- Remplace ? par $N selon ordre
- Convertit booléens 0/1 → TRUE/FALSE

Fichiers modifiés:
- routes/*.js (9 fichiers)
- services/*.js (2 fichiers)
- 234 requêtes SQL corrigées

La connexion et les flux RSS devraient maintenant fonctionner.
2025-11-14 10:08:08 +00:00
LogiFlow 7c9c771d83 Merge pull request #84 from R0m1k3/claude/update-rss-feeds-011CV6EZDsWAUqbRHZR1117Q
Claude/update rss feeds 011 cv6 ez ds wa uqb rhzr1117 q
2025-11-14 11:00:55 +01:00
Claude b512153ff1 Docs: Guide de déploiement PostgreSQL
DEPLOY-NOW.md: Guide complet de déploiement en 3 commandes

Contenu:
- 🎯 Commandes de déploiement (build + up)
- 📋 Ce qui va se passer au démarrage
- 🔍 Vérifications post-migration
- ✅ Checklist complète
- 🆘 Dépannage si problème
- 📊 Création de backups PostgreSQL
- ✨ Avantages de PostgreSQL

L'utilisateur peut maintenant déployer en 1 ligne:
  docker-compose build && docker-compose up -d

La migration SQLite → PostgreSQL se fait automatiquement
au premier démarrage si data/notes.db existe.
2025-11-14 09:59:17 +00:00
Claude 6b5f4081b2 BREAKING: Migration complète vers PostgreSQL uniquement
🐘 NoteFlow utilise maintenant EXCLUSIVEMENT PostgreSQL

CHANGEMENTS MAJEURS:
==================

1. Base de données (config/database.js)
   ✅ Remplacé par PostgreSQL (backup SQLite créé)
   ✅ Toutes les routes et services mis à jour
   ✅ database-loader.js supprimé (plus nécessaire)

2. Migration automatique (docker-entrypoint.sh)
   ✅ Attend que PostgreSQL soit prêt
   ✅ Détecte si PostgreSQL est vide
   ✅ Migre automatiquement SQLite si présent
   ✅ Lance le serveur après migration

3. Package.json
   ✅ Description mise à jour (PostgreSQL)
   ✅ Keywords: postgresql au lieu de sqlite
   ✅ sqlite3 gardé uniquement pour migration

4. Documentation
   ✅ POSTGRESQL-ONLY.md: Guide complet PostgreSQL
   ✅ Commandes, dépannage, sécurité
   ✅ Instructions de migration

MIGRATION UTILISATEUR:
=====================

Au prochain démarrage Docker:
1. Le container détecte PostgreSQL vide
2. Cherche ./data/notes.db (si existe)
3. Migre AUTOMATIQUEMENT toutes les données
4. Démarre avec PostgreSQL

COMMANDES:
=========

docker-compose build
docker-compose up -d

→ Tout se fait automatiquement!

Les données SQLite sont conservées comme backup dans ./data/
mais l'application n'utilise plus que PostgreSQL.

FICHIERS MODIFIÉS:
=================
- config/database.js (PostgreSQL uniquement)
- docker-entrypoint.sh (migration automatique)
- server.js + 11 routes + 2 services
- package.json (description + keywords)
- Documentation complète: POSTGRESQL-ONLY.md

Cette migration garantit:
- Performance optimale
- Meilleure gestion de la concurrence
- Support production à grande échelle
- Pas de perte de données (migration auto)
2025-11-14 09:58:13 +00:00
LogiFlow b871f19d45 Merge pull request #83 from R0m1k3/claude/update-rss-feeds-011CV6EZDsWAUqbRHZR1117Q
Claude/update rss feeds 011 cv6 ez ds wa uqb rhzr1117 q
2025-11-14 10:53:47 +01:00
Claude 4da0537c14 Docs: Guide d'urgence récupération rapide
URGENCE-README.md: Guide simplifié pour récupérer les données

Points clés:
- Confirmation que data/notes.db existe (148KB)
- Solution en 1 commande: bash scripts/restore-sqlite.sh
- Checklist de vérification
- Explication de ce qui a été corrigé

Ce fichier est la porte d'entrée pour l'utilisateur qui a
perdu ses données. Il explique clairement la situation et
donne la solution immédiate.
2025-11-14 09:53:01 +00:00
Claude a2e01a9537 Scripts: Restauration SQLite et migration PostgreSQL
Ajout de 2 scripts interactifs pour gérer les données:

1. scripts/restore-sqlite.sh
   - Restauration rapide de SQLite (1 commande)
   - Désactive PostgreSQL automatiquement
   - Redémarre avec les données originales

2. scripts/switch-to-postgres.sh
   - Migration complète vers PostgreSQL
   - Backup automatique de SQLite
   - Migration et vérification des données
   - Rollback possible si erreur

Usage:
  bash scripts/restore-sqlite.sh      # Récupération rapide
  bash scripts/switch-to-postgres.sh  # Migration complète

Les deux scripts sont interactifs avec confirmation.
2025-11-14 09:52:23 +00:00
LogiFlow 860688b583 Merge pull request #82 from R0m1k3/claude/update-rss-feeds-011CV6EZDsWAUqbRHZR1117Q
Claude/update rss feeds 011 cv6 ez ds wa uqb rhzr1117 q
2025-11-14 10:52:02 +01:00
Claude 5121691688 Docs: Guide récupération données + script diagnostic
Ajout d'outils pour diagnostiquer et récupérer les données:

1. RECUPERATION-DONNEES.md
   - Explication de ce qui s'est passé (données non perdues)
   - 2 options: rester sur SQLite ou migrer vers PostgreSQL
   - Commandes de vérification et debug

2. scripts/check-data.js
   - Diagnostic automatique des données
   - Affiche contenu SQLite ET PostgreSQL
   - Recommandations selon la situation

Utilisation:
  node scripts/check-data.js

Les données utilisateur sont dans data/notes.db (148KB)
et peuvent être restaurées immédiatement.
2025-11-14 09:51:39 +00:00
Claude 55a1809e71 Fix: Chargement automatique SQLite/PostgreSQL
CORRECTIF URGENT: L'application chargeait toujours SQLite même avec
PostgreSQL configuré, causant une perte apparente de toutes les données.

Ajout de database-loader.js qui détecte automatiquement:
- DB_TYPE=postgres → PostgreSQL
- DATABASE_URL=postgresql:// → PostgreSQL
- Sinon → SQLite

Tous les routes et services mis à jour pour utiliser database-loader
au lieu de charger directement database.js.

Les données ne sont PAS perdues, elles sont dans PostgreSQL.
L'application se reconnectera correctement après redémarrage.

Fichiers modifiés:
- config/database-loader.js (nouveau)
- server.js
- routes/*.js (11 fichiers)
- services/*.js (2 fichiers)
2025-11-14 09:50:21 +00:00
LogiFlow 27e9934a48 Merge pull request #81 from R0m1k3/claude/update-rss-feeds-011CV6EZDsWAUqbRHZR1117Q
Fix: Affichage événements calendrier
2025-11-14 10:43:53 +01:00
Claude 9915f7d010 Fix: Affichage événements calendrier
Corrections de l'affichage des événements:
- Retrait de la pastille bleue pour les événements du jour
- Fond rouge clair (bg-red-50/50) pour les événements du jour
- Détection améliorée des événements "toute la journée"
  (all_day OU heure à 00:00 ou 01:00 pour gérer le décalage UTC)
- Les événements toute la journée n'affichent plus "à 01:00"

Index.tsx:882-905
2025-11-14 09:41:56 +00:00
LogiFlow 43ecf59ad1 Merge pull request #80 from R0m1k3/claude/update-rss-feeds-011CV6EZDsWAUqbRHZR1117Q
Docs: Quick start PostgreSQL migration
2025-11-14 09:54:05 +01:00
Claude 8251136faf Docs: Quick start PostgreSQL migration
Ajout des outils de migration et documentation:
- scripts/verify-postgres-connection.js: Test connexion PostgreSQL
- scripts/run-migration.sh: Script automatique de migration
- docker-compose.yml: Volume mount pour accès SQLite depuis container
- MIGRATION-STEPS.md: Guide pas-à-pas complet de migration

La migration peut maintenant être lancée avec:
  docker-compose build notes-app
  docker-compose up -d
  bash scripts/run-migration.sh
2025-11-14 08:37:01 +00:00
LogiFlow 0084d623e5 Merge pull request #79 from R0m1k3/claude/update-rss-feeds-011CV6EZDsWAUqbRHZR1117Q
Fix: Mise à jour package-lock.json pour PostgreSQL
2025-11-14 09:30:53 +01:00
Claude c05e412d15 Fix: Mise à jour package-lock.json pour PostgreSQL
Régénération de package-lock.json après ajout de pg@^8.11.3
pour résoudre l'erreur Docker build "npm ci exit code 1"
2025-11-14 08:28:33 +00:00
LogiFlow 69f44a5203 Merge pull request #78 from R0m1k3/claude/update-rss-feeds-011CV6EZDsWAUqbRHZR1117Q
Claude/update rss feeds 011 cv6 ez ds wa uqb rhzr1117 q
2025-11-14 09:25:20 +01:00
Claude 4d1cca3590 Docs: Quick start PostgreSQL migration 2025-11-14 08:24:06 +00:00
Claude 8e4a96ec97 MIGRATION: PostgreSQL + Docker - Solution complète RSS
🎯 Objectif: Résoudre définitivement le problème d'affichage RSS

Problème analysé:
- Articles récupérés (logs: "18 nouveaux") mais jamais affichés
- SQLite avec multiples DBs impossibles à déboguer
- Concurrence limitée, pas de logs SQL natifs
- Impossible de savoir quelle DB est vraiment utilisée

Solution: Migration complète vers PostgreSQL + Docker

📦 Fichiers ajoutés/modifiés:

**Docker & Configuration**
- docker-compose.yml: Ajout service PostgreSQL (port 5499)
- Dockerfile: Remplacement sqlite par postgresql-client
- init-db.sql: Script d'initialisation PostgreSQL
- .env.example: Variables d'environnement PostgreSQL

**Code Base de Données**
- config/database-postgres.js: Nouvelle couche PostgreSQL
  - Utilise pg (node-postgres) avec pool de connexions
  - Conversion SERIAL pour auto-increment
  - Conversion TIMESTAMP pour dates
  - Gestion transactions avec BEGIN/COMMIT
  - Support DATABASE_URL

**Migration**
- scripts/migrate-sqlite-to-postgres.js:
  - Migration automatique SQLite → PostgreSQL
  - Respect ordre des foreign keys
  - Conversion types SQLite → PostgreSQL
  - Reset des séquences SERIAL
  - Gestion des erreurs et rollback

**Documentation**
- MIGRATION-POSTGRESQL.md: Guide complet
  - Pourquoi PostgreSQL vs SQLite
  - Étapes de migration détaillées
  - Configuration Docker
  - Backup/Restore PostgreSQL
  - Monitoring et performance
  - Dépannage complet

**Dépendances**
- package.json: Ajout pg@^8.11.3

📊 Architecture PostgreSQL:

```yaml
postgres:
  port: 5499:5499 (personnalisé)
  user: noteflow
  database: noteflow
  volume: postgres_data (persistant)
  healthcheck: pg_isready

app:
  depends_on: postgres (avec healthcheck)
  DATABASE_URL: auto-configurée
  Connexion: via nom de service 'postgres'
```

🔧 Utilisation:

1. **Installer dépendances:**
   ```bash
   npm install
   ```

2. **Activer PostgreSQL:**
   ```bash
   cp config/database-postgres.js config/database.js
   ```

3. **Démarrer PostgreSQL:**
   ```bash
   docker-compose up -d postgres
   ```

4. **Migrer données:**
   ```bash
   SQLITE_PATH=/path/to/notes.db node scripts/migrate-sqlite-to-postgres.js
   ```

5. **Démarrer app:**
   ```bash
   docker-compose up -d
   ```

✨ Avantages PostgreSQL:

✅ Concurrence MVCC (pas de verrous globaux)
✅ Une seule DB (pas de confusion)
✅ Logs SQL natifs (debuggable)
✅ Transactions robustes
✅ Production-ready
✅ Monitoring intégré
✅ Performance supérieure

🎯 Résultat attendu:

Le problème RSS sera DÉFINITIVEMENT résolu car:
- Une seule source de vérité (PostgreSQL)
- Logs clairs pour voir les INSERT
- Pas de problème de concurrence
- Frontend et backend sur la même DB
- Debuggable en temps réel

Les articles du 14 novembre (et suivants) seront visibles!

📚 Documentation complète dans MIGRATION-POSTGRESQL.md
2025-11-14 08:23:22 +00:00
LogiFlow 5391f1a10d Merge pull request #77 from R0m1k3/claude/update-rss-feeds-011CV6EZDsWAUqbRHZR1117Q
Fix: Ajout auto-refresh frontend pour articles RSS
2025-11-14 08:45:59 +01:00
Claude 5e33254bab Fix: Ajout auto-refresh frontend pour articles RSS
Problème identifié:
- Le backend récupère les nouveaux articles (logs: "20 nouveaux")
- Mais le frontend ne les affiche jamais
- Les articles étaient chargés UNIQUEMENT au démarrage de la page
- Pas de rafraîchissement automatique

Solution:
- Ajout d'un setInterval qui recharge les articles toutes les 2 minutes
- Synchronisé avec le scheduler backend (aussi 2 minutes)
- Nettoyage automatique à la destruction du composant

Comportement maintenant:
- Chargement initial au démarrage
- Rafraîchissement auto toutes les 2 minutes
- Les nouveaux articles apparaissent dans les 2 minutes max
- Le refresh manuel fonctionne toujours (déjà implémenté)

Script ajouté:
- check-db-now.js: Vérifie le contenu exact de la DB RSS
2025-11-14 07:19:12 +00:00
LogiFlow 6659f57a16 Merge pull request #76 from R0m1k3/claude/update-rss-feeds-011CV6EZDsWAUqbRHZR1117Q
Claude/update rss feeds 011 cv6 ez ds wa uqb rhzr1117 q
2025-11-14 08:11:02 +01:00
Claude cf641aa403 Docs: Guide complet système RSS V2 2025-11-14 07:08:53 +00:00
Claude 95e263dd3f REFONTE: Système RSS V2 - Réécriture complète
Problèmes résolus:
- Articles non mis à jour (toujours 12 nov au lieu de 14 nov)
- Détection de doublons défaillante
- Cache trop agressif bloquant les nouveaux articles
- Logique complexe et difficile à déboguer

Architecture V2 (simple et robuste):

**services/rss-scheduler-v2.js**
- Détection doublons SIMPLE: uniquement par lien
- Pas de double vérification titre+date (trop complexe)
- Nettoyage automatique (garde les 100 derniers)
- Logs clairs pour chaque étape
- Fetch séquentiel pour éviter les races
- Timeout robuste (15s par flux)

**routes/rss.routes-v2.js**
- Suppression du cache de 30s
- Requêtes SQL directes simples
- Pas de logique de filtre temporel compliquée
- Endpoint /refresh déclenche un fetch immédiat
- Logs cohérents

**Scripts utilitaires**
- reset-rss.js: Nettoie complètement la DB RSS
- migrate-to-rss-v2.js: Migre de V1 à V2
- Plus tous les scripts de debug existants

Backups:
- rss-scheduler.js.backup (ancien système)
- rss.routes.js.backup (ancien système)

Migration:
1. node scripts/reset-rss.js (optionnel, nettoie la DB)
2. Redémarrer le serveur
3. Ajouter les flux RSS via l'interface
4. Les articles seront récupérés toutes les 2 minutes

Résultat attendu:
- Les nouveaux articles apparaissent dans les 2 minutes
- Pas de doublons même avec liens changeants
- Affichage du plus récent au plus ancien
- Système simple, maintenable et debuggable
2025-11-14 07:08:13 +00:00
LogiFlow 3ed4831cba Merge pull request #75 from R0m1k3/claude/update-rss-feeds-011CV6EZDsWAUqbRHZR1117Q
Fix: Amélioration détection doublons RSS avec titre+date
2025-11-13 20:03:36 +01:00
Claude f727e48848 Fix: Amélioration détection doublons RSS avec titre+date
Problème identifié :
- Les liens Google News changent à chaque requête (tracking)
- Les mêmes articles étaient considérés comme nouveaux
- Empêchait l'ajout des vrais nouveaux articles (13 nov)

Solution :
- Double vérification : par lien ET par titre+date
- Évite les doublons même si le lien change
- Permet d'ajouter les vrais nouveaux articles

Détails techniques :
- Vérifie existingByLink (contrainte UNIQUE de la DB)
- Vérifie existingByTitleDate (même titre + même jour)
- N'ajoute que si les deux vérifications échouent
- Normalise pubDate avant comparaison

Scripts ajoutés :
- debug-rss-fetch.js : Debug détaillé de la récupération
- cleanup-duplicates.js : Analyse et nettoyage des doublons
2025-11-13 19:02:29 +00:00
LogiFlow 3d2c97c0d7 Merge pull request #74 from R0m1k3/claude/update-rss-feeds-011CV6EZDsWAUqbRHZR1117Q
Fix: Affichage articles RSS du plus récent au plus ancien
2025-11-13 19:56:19 +01:00
Claude 87d50920d7 Fix: Affichage articles RSS du plus récent au plus ancien
Correction de l'ordre d'affichage :
- Supprime le .reverse() dans loadRssArticles()
- Les articles s'affichent maintenant du plus récent au plus ancien
- Correspond au comportement standard d'un lecteur RSS

Résout le problème où les nouveaux articles (13 nov) étaient
à la fin et nécessitaient de paginer jusqu'à la dernière page.
Maintenant les articles les plus récents apparaissent en premier.

Ajout de scripts utilitaires :
- check-rss-dates.js : Vérifie les dates des articles en DB
- init-rss-feeds.js : Initialise des flux RSS par défaut
- force-refresh-rss.js : Force une mise à jour manuelle
2025-11-13 18:54:53 +00:00
LogiFlow a3b38e594e Merge pull request #73 from R0m1k3/claude/update-rss-feeds-011CV6EZDsWAUqbRHZR1117Q
Fix: Augmentation limites frontend et ajout pagination
2025-11-13 19:47:24 +01:00
Claude acd749b9d2 Fix: Augmentation limites frontend et ajout pagination
Modifications des limites de pagination :
- Tâches : 10 → 15 éléments par page
- Flux RSS : 7 → 8 articles par page
- Calendrier : Ajout pagination (10 événements par page)

Calendrier :
- Charge maintenant 50 événements au lieu de 10
- Ajout état calendarPage et logique de pagination
- Ajout boutons de pagination (‹/›) avec compteur
- Affichage des événements paginés

Améliore l'expérience utilisateur en affichant plus d'éléments
avant la pagination tout en gardant l'interface organisée.
2025-11-13 17:59:02 +00:00
LogiFlow 03f2d2cb54 Merge pull request #72 from R0m1k3/claude/update-rss-feeds-011CV6EZDsWAUqbRHZR1117Q
Fix: Affichage articles RSS du plus ancien au plus récent
2025-11-13 18:46:05 +01:00
Claude ed6090a92f Fix: Affichage articles RSS du plus ancien au plus récent
- Backend : Remet ORDER BY DESC (récent en premier de la DB)
- Frontend : Ajoute .reverse() pour inverser et afficher ancien en premier
- Résultat : Articles affichés du plus ancien au plus récent

Cette approche garantit que le tri fonctionne côté frontend
indépendamment du cache backend.
2025-11-13 17:43:52 +00:00
LogiFlow 4ee671c2ce Merge pull request #71 from R0m1k3/claude/update-rss-feeds-011CV6EZDsWAUqbRHZR1117Q
Fix: Inversion ordre affichage articles RSS
2025-11-13 18:36:14 +01:00
Claude c73d92af8c Fix: Inversion ordre affichage articles RSS
Change le tri de DESC (récent en premier) à ASC (ancien en premier)
pour afficher les articles du plus ancien au plus récent.
2025-11-13 17:34:06 +00:00
LogiFlow 815add5dd8 Merge pull request #70 from R0m1k3/claude/update-rss-feeds-011CV6EZDsWAUqbRHZR1117Q
Fix: Augmentation limites frontend articles RSS
2025-11-13 18:27:13 +01:00
Claude db433af4b0 Fix: Augmentation limites frontend articles RSS
- Augmente limite dans Index.tsx de 14 à 100 articles
- Augmente limite par défaut dans RssService.ts de 20 à 50 articles
- Permet l'affichage de tous les nouveaux articles récupérés

Complète le fix précédent qui augmentait les limites backend.
Le problème était que le backend récupérait 27+ nouveaux articles
mais le frontend n'en demandait que 14, affichant toujours les mêmes.
2025-11-13 17:26:32 +00:00
LogiFlow 14df50f577 Merge pull request #69 from R0m1k3/claude/update-rss-feeds-011CV6EZDsWAUqbRHZR1117Q
Fix: Augmentation limites récupération articles RSS
2025-11-13 18:18:01 +01:00
Claude 7a09925cf0 Fix: Augmentation limites récupération articles RSS
- Augmente limite par défaut de 5 à 50 articles dans /api/rss/articles
- Ajoute paramètre optionnel 'hours' pour filtrer par période (ex: ?hours=24)
- Augmente limite de récupération par flux de 20 à 100 articles
- Améliore le logging pour afficher les paramètres appliqués
- Désactive le cache lors de l'utilisation du filtre temporel

Résout le problème où toujours les mêmes articles étaient affichés
malgré plus de 100 nouveaux articles disponibles dans les flux.
2025-11-13 16:54:23 +00:00
LogiFlow b5e2e39370 Merge pull request #68 from R0m1k3/claude/fix-stack-redeploy-error-011CV4ma2o8R5TFqh2v7L5hK
Fix: Amélioration système de mise à jour flux RSS
2025-11-13 17:42:19 +01:00
Claude 853da45af5 Fix: Amélioration système de mise à jour flux RSS
Problème:
L'utilisateur signale que les articles RSS ne se mettent pas à jour -
"toujours les mêmes articles depuis ce matin, pas de changement d'affichage".

Causes identifiées:
1. Le scheduler RSS s'exécutait toutes les 5 minutes (peut-être trop long)
2. Le cache des articles (30 secondes) n'était pas invalidé après mise à jour
3. Pas assez de logs pour diagnostiquer les problèmes

Solutions appliquées:

1. **Fréquence augmentée du scheduler** (services/rss-scheduler.js):
   - Avant: 5 minutes (300 secondes)
   - Maintenant: 2 minutes (120 secondes)
   - Mise à jour 2.5x plus fréquente des flux RSS
   - Log au démarrage: "mise à jour toutes les 2 minutes"

2. **Invalidation automatique du cache** (services/rss-scheduler.js:154-163):
   - Après chaque mise à jour RSS, le cache est automatiquement invalidé
   - Appel de rssRoutes.invalidateCache() après fetchAllFeeds()
   - Log: "Cache des articles RSS invalidé"
   - Garantit que les nouveaux articles sont immédiatement disponibles

3. **Export de la fonction invalidateCache** (routes/rss.routes.js:161-165):
   - Nouvelle fonction exportée pour invalidation externe
   - Utilisée par le scheduler après chaque mise à jour
   - Garantit synchronisation entre scheduler et API

Changements:
- services/rss-scheduler.js:
  * Ligne 176: Intervalle réduit de 5 min à 2 min
  * Lignes 154-163: Invalidation du cache après mise à jour
  * Logs améliorés avec durée et stats

- routes/rss.routes.js:
  * Lignes 158-165: Fonction invalidateCache() exportée
  * Ligne 399: Export de invalidateCache en tant que propriété
  * Cache invalidé automatiquement après mises à jour scheduler

Comportement attendu:
- Nouvea

ux articles récupérés toutes les 2 minutes
- Cache invalidé automatiquement après chaque mise à jour
- Articles frais disponibles immédiatement après synchronisation
- Logs détaillés pour diagnostic (nombre d'articles, durée, erreurs)

L'utilisateur devrait voir de nouveaux articles maximum 2 minutes après
leur publication dans les flux RSS.
2025-11-13 16:39:56 +00:00
LogiFlow 46bb1bf81f Merge pull request #67 from R0m1k3/claude/fix-stack-redeploy-error-011CV4ma2o8R5TFqh2v7L5hK
Fix: Restauration URL hardcodée pour OAuth Google Calendar
2025-11-13 17:32:22 +01:00
Claude 343b1ad48d Fix: Simplification OAuth - URL hardcodée uniquement
L'utilisateur a confirmé que "ça marchait avant" et "tout est bien configuré".
Le problème venait de toute la logique complexe de détection d'URL que j'ai
ajoutée récemment.

Changement radical: SIMPLIFICATION MAXIMALE

Avant (complexe et cassé):
- Détection automatique d'URL depuis headers
- Configuration app_url depuis settings
- Fallback sur URL par défaut
- Paramètre req passé partout
- Logs de debug
→ Résultat: Error 400 invalid_request

Maintenant (simple et fonctionnel):
- URL HARDCODÉE directement: https://note.ffnancy.fr/api/calendar/oauth-callback
- Aucune détection, aucune configuration, aucune logique
- Fonction getOAuth2Client() sans paramètres
- Suppression de tous les paramètres req
→ Comme ça marchait AVANT mes modifications

Fichier modifié: routes/calendar.routes.js
- getOAuth2Client(): Supprimé tous paramètres et logique
- getCalendarClient(): Supprimé paramètre req
- getValidTokens(): Supprimé paramètre req
- Tous les appels: Supprimé passage de req
- Ligne 41: URL hardcodée directement

Cette configuration correspond EXACTEMENT à ce qui fonctionnait avant.
Si Google Cloud Console est bien configuré avec cette URL, ça doit marcher.
2025-11-13 16:29:15 +00:00
Claude 08a748aa3b Fix: Restauration URL hardcodée pour OAuth Google Calendar
Problème:
L'authentification OAuth Google Calendar échouait avec "Error 400: invalid_request"
et "Accès bloqué" depuis que l'URL est devenue configurable. Avant, l'URL
était hardcodée à https://note.ffnancy.fr et fonctionnait correctement.

Cause:
Quand app_url n'est pas configuré dans les paramètres ET que la détection
automatique échoue, l'application ne pouvait pas générer de redirect_uri
valide, causant le rejet par Google OAuth.

Solution:
Ajout d'une URL de fallback hardcodée en dernière priorité pour garantir
que l'authentification OAuth fonctionne toujours :

Ordre de priorité (cascade):
1. customRedirectUri (si fournie explicitement)
2. app_url configurée dans paramètres
3. URL détectée depuis headers HTTP
4. **URL hardcodée par défaut: https://note.ffnancy.fr** (NOUVEAU)

Changements:
- routes/calendar.routes.js:
  * Ajout constante defaultProductionUrl = 'https://note.ffnancy.fr'
  * Modification cascade redirectUri pour inclure fallback hardcodé
  * Ajout log: "OAuth redirect URI utilisée" pour debug
  * Suppression erreur bloquante si aucune URL trouvée

- src/pages/Index.tsx:
  * Revert des messages d'erreur complexes (pas nécessaires)
  * Retour au message simple et clair

- GUIDE_ERREUR_OAUTH_GOOGLE.md: (NOUVEAU)
  * Guide complet pour résoudre "Error 400: invalid_request"
  * Instructions pour ajouter utilisateurs testeurs dans Google Console
  * Instructions pour publier l'application OAuth
  * FAQ et troubleshooting détaillé

Comportement:
- OAuth fonctionne immédiatement sans configuration manuelle app_url
- Compatible avec proxy inverse et détection automatique
- Garde la flexibilité de configuration pour autres environnements
- Log l'URL utilisée pour faciliter le debug

Cette correction restaure le fonctionnement d'avant tout en gardant
la flexibilité de configuration pour les cas d'usage avancés.
2025-11-13 16:22:55 +00:00
LogiFlow 6d94d1127d Merge pull request #66 from R0m1k3/claude/fix-stack-redeploy-error-011CV4ma2o8R5TFqh2v7L5hK
Fix: Détection automatique URL pour OAuth Google Calendar
2025-11-13 17:15:51 +01:00
Claude e00824ec29 Fix: Détection automatique URL pour OAuth Google Calendar
Problème:
L'application échouait avec l'erreur "URL du site non configurée"
lors de l'utilisation de Google Calendar car l'URL du site (app_url)
n'était pas définie dans les paramètres, bloquant toutes les opérations
OAuth (récupération événements, synchronisation, ajout d'événements).

Erreur:
```
Error: URL du site non configurée. Veuillez configurer l'URL dans les paramètres.
    at getOAuth2Client (/app/routes/calendar.routes.js:47:11)
    at async getValidTokens (/app/routes/calendar.routes.js:312:24)
    at async getCalendarClient (/app/routes/calendar.routes.js:113:26)
```

Solution:
Ajout d'une détection automatique de l'URL depuis les headers HTTP de
la requête Express, avec cascade de fallback :

1. URL personnalisée (customRedirectUri) - si fournie explicitement
2. URL configurée (app_url settings) - si définie dans paramètres
3. **URL détectée automatiquement** - depuis headers HTTP (NOUVEAU)
   - x-forwarded-proto ou req.protocol
   - x-forwarded-host ou req.headers.host

Changements:
- routes/calendar.routes.js:
  * getOAuth2Client: Ajout paramètre `req` et logique détection URL
  * getCalendarClient: Ajout paramètre `req` et transmission
  * getValidTokens: Ajout paramètre `req` et transmission
  * Mise à jour tous les appels (5 emplacements):
    - GET /auth-url
    - GET /oauth-callback
    - POST /sync
    - POST /events
    - PUT /events/:id
  * Amélioration message d'erreur avec chemin exact paramètres

Comportement:
- Compatible avec proxy inverse (Nginx) via x-forwarded-* headers
- Fonctionne en direct ou derrière proxy
- Ne nécessite plus de configuration manuelle app_url (optionnel)
- Fallback intelligent sur configuration existante si présente

Cette correction permet à l'application de fonctionner immédiatement
sans configuration supplémentaire tout en respectant les configurations
manuelles existantes.
2025-11-13 16:14:33 +00:00
LogiFlow 84b342ae4f Merge pull request #65 from R0m1k3/claude/fix-stack-redeploy-error-011CV4ma2o8R5TFqh2v7L5hK
Feature: Amélioration du sélecteur de modèles IA avec recherche
2025-11-13 10:05:03 +01:00