Commit graph

303 commits

Author SHA1 Message Date
isUnknown
30b7697c64 Ajout masquage de projets pour utilisateurs Pochet
All checks were successful
Deploy Preprod / Build and Deploy to Preprod (push) Successful in 28s
Backend :
- Blueprint pochet : champ hiddenProjects
- Route API toggle-hidden-project.php
- Controller site.php : retourne hiddenProjects + uuid dans projects

Frontend :
- Store user : hiddenProjects, visibleProjects, toggleHiddenProject()
- Store projects : filtrage automatique des projets masqués
- Store api : fonction toggleHiddenProject()
- Account.vue : section projets avec cartes horizontales + boutons toggle
  - Affichage pour Pochet (avec toggle) et Client (sans toggle)
  - Section client masquée pour Pochet

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-30 11:27:27 +01:00
isUnknown
7ca72c6d82 Extended-brief supporte maintenant images + PDF comme client-brief
All checks were successful
Deploy Preprod / Build and Deploy to Preprod (push) Successful in 28s
- Blueprint : ajout champs moodboard et description
- Kanban : utilise ClientBrief au lieu de SimpleDocument
- Validation : support extended-brief depuis PDF et page images
- Navigation : paths dynamiques basés sur step.slug

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-30 09:13:31 +01:00
isUnknown
2b5175900c Fix ordre des pistes dans virtual sample
All checks were successful
Deploy Preprod / Build and Deploy to Preprod (push) Successful in 30s
Respect de l'ordre des groupes défini dans le champ groups du panel.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-30 08:29:25 +01:00
isUnknown
78ac0940d0 config : enable panel install on production
Some checks failed
Deploy Preprod / Build and Deploy to Preprod (push) Failing after 28s
2026-01-30 08:02:50 +01:00
isUnknown
f994b1c982 Fix Forgejo CI workflows and add .gitkeep files
- Fix rsync exclusions to properly preserve accounts, cache, and sessions
- Remove tiles exclusion (not used in this project)
- Add .gitkeep files to track empty directories structure
- Update .gitignore to allow .gitkeep files

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-15 15:39:50 +01:00
isUnknown
95a8bf99cb build plugin refresh cache 2026-01-15 12:19:35 +01:00
isUnknown
378af9ac96 Fix : affichage progression dans le texte du bouton
La div en dessous ne s'affichait pas dans le panel Kirby.
La progression s'affiche maintenant directement dans le bouton :
"En cours 0%" → "En cours 20%" → "En cours 100%" → "Terminé"

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-15 12:18:33 +01:00
isUnknown
4669f03f16 Amélioration affichage progression du refresh cache
Ajout d'une ligne de texte sous le bouton pour afficher la progression :
- "Traitement : 10/50 projets (20%)" pendant le traitement
- "50 projets mis à jour avec succès" à la fin
- Tooltip aussi mis à jour avec la progression

Le bouton affiche "En cours…" et la progression détaillée est en dessous.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-15 12:13:26 +01:00
isUnknown
a57b0c203a Optimisation du refresh cache avec batch processing
Problème : Le refresh cache de tous les projets timeout côté serveur à cause
du trop grand nombre de projets à traiter en une seule requête.

Solution : Batch processing avec indicateur de progression
- Backend : traite 10 projets par batch avec offset/limit
- Frontend : fait plusieurs requêtes successives et affiche la progression
- Timeout réduit à 60s par batch au lieu de illimité
- Bouton désactivé pendant le traitement
- Ajout invalidateNotificationsCache() pour vider aussi ce cache

Affichage : "15/50 (30%)" pendant le traitement, puis "Terminé (50)"

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-15 12:08:13 +01:00
isUnknown
86db1f5a0c Fix collectLight() : inclure author, text, location pour l'affichage
Problème : collectLight() ne retournait que id/type/isRead/date, causant
notification.author undefined dans le frontend.

Solution : Inclure tous les champs nécessaires à l'affichage (author, text,
location) mais toujours alléger en excluant les gros détails inutiles.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-15 11:55:17 +01:00
isUnknown
2791bc4462 Ajout invalidation cache notifications dans hook file-update
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-15 11:42:40 +01:00
isUnknown
bb71da081b Ajout du système de cache pour les notifications
Problème : Les notifications étaient collectées à chaque requête sur
projects.json, causant des problèmes de performance et de mémoire.

Solution : Mise en cache des notifications par projet et par utilisateur
- Nouvelle méthode getNotificationsLight() dans ProjectPage avec cache
- Cache invalidé automatiquement via les hooks existants (page/file update)
- Cache par utilisateur pour inclure le isRead spécifique

Performance : Les notifications sont calculées une fois puis servies depuis
le cache jusqu'à ce qu'un changement survienne (commentaire, brief, etc.)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-15 11:42:20 +01:00
isUnknown
0a980603a4 Ajout de collectLight() pour optimiser le chargement du listing des projets
Problème : projects.json.php causait un dépassement mémoire en collectant
toutes les notifications complètes (avec author, location, text, etc.) pour
tous les projets.

Solution : Nouvelle méthode collectLight() qui ne retourne que les données
minimales nécessaires au frontend pour afficher les indicateurs :
- id, type, isRead, date
- location.project.uri (pour le filtrage)

Les détails complets sont toujours chargés dans project.json.php individuel.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-15 11:18:59 +01:00
isUnknown
0250dc1487 Fix : problème de mémoire lors du chargement des projets
Problème : projects.json.php collectait les notifications dérivées pour TOUS
les projets d'un coup, ce qui causait un dépassement de mémoire (HTTP 500).

Solution :
- projects.json.php : Ne collecte plus les notifications (retourne [])
- project.json.php : Collecte les notifications uniquement pour le projet affiché

Les notifications seront chargées à la demande quand on ouvre un projet,
pas lors du listing initial.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-15 11:16:17 +01:00
isUnknown
6ff59e9b07 Fix : URL correcte pour notifications de brief validé depuis PDF + redirect briefs vides
Problème 1 : Les notifications de brief validé depuis un PDF renvoyaient vers
/projects/xxx/client-brief au lieu de l'URL complète avec dialog et fileIndex.

Problème 2 : Les URL /projects/xxx/client-brief pour des briefs non créés
affichaient une page vide au lieu de rediriger vers le kanban.

Solutions :
- Stocker validationDialogUri lors de la validation du brief
- Utiliser ce dialogUri dans ContentProvider et Notifications.vue
- Rediriger vers le projet parent si brief vide et non validé

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-15 10:44:30 +01:00
isUnknown
a7d315942a Refonte du système de notifications : passage aux notifications dérivées
Remplace le système de notifications stockées par un système de providers
qui dérivent les notifications des données existantes (commentaires, réponses,
demandes de projet, demandes de rendez-vous, validations de brief).

- Ajout du NotificationCollector et de l'interface NotificationProvider
- Création de 5 providers : Comment, Reply, ProjectRequest, AppointmentRequest, Content
- Métadonnées de notifications stockées directement sur les entités source
- Nouvelles routes mark-as-read et mark-all-read
- Mise à jour du frontend pour le nouveau système
- Route de migration pour les données existantes

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-15 10:31:31 +01:00
isUnknown
d7e96541a0 remove cache busting based on query string 2025-10-08 15:50:25 +02:00
isUnknown
c6d973e126 CI : create specific build for preprod 2025-10-08 14:34:22 +02:00
isUnknown
3fc9d925e5 add js/css cache busting by query string 2025-10-08 12:41:07 +02:00
isUnknown
33ec908a23 merge main -> preprod 2025-10-05 17:31:53 +02:00
isUnknown
5deb07f09d #170 2025-10-02 12:42:15 +02:00
isUnknown
c11a85e7f8 vite config : ignore /local and /public/** to improve perf 2025-10-02 09:53:59 +02:00
isUnknown
ec1acc7671 CI : fix dep conflict 2025-09-24 09:32:30 +02:00
isUnknown
e185d15815 node : update vite plugin-vue 2025-09-24 09:17:59 +02:00
isUnknown
b1f7854510 refresh cache button plugin : add last cache update date and time on button title 2025-09-24 09:13:04 +02:00
isUnknown
3c9eed7804 remove refresh cache button plugin 2025-09-23 08:20:50 +02:00
isUnknown
2e0f28a13f #164 fix comment update 2025-09-23 08:20:17 +02:00
isUnknown
9a86d41254 update kirby to v5 and add refresh cache panel view button 2025-09-10 14:28:38 +02:00
isUnknown
28b99017fd update page after programmatic file remove (routes/remove-file.php) 2025-09-09 17:58:20 +02:00
isUnknown
58fbacaa52 merge dev branch 2025-09-09 17:28:45 +02:00
isUnknown
0f911a7a93 custom login : long sessions 2025-09-09 08:21:11 +02:00
isUnknown
0d8821f3a0 #156 - virtual samples : preserve views files original quality (only convert to webp) 2025-09-03 18:32:59 +02:00
isUnknown
b999d46ac6 update page after programmatic file remove (routes/remove-file.php) 2025-09-03 18:25:25 +02:00
isUnknown
603700cd98 routing : remove panel.js and its redirections 2025-09-03 17:44:23 +02:00
isUnknown
de2678d79c routing : remove panel.js and its redirections 2025-09-03 17:43:56 +02:00
isUnknown
d8fe9ad13a Merge branch 'account' into preprod 2025-09-03 11:01:27 +02:00
isUnknown
f373e4e89d custom client brief : unlock description length limit 2025-07-09 16:37:33 +02:00
isUnknown
4e2757ae3a panel : add project type 2025-06-18 18:41:42 +02:00
isUnknown
8580fead7a panel : fix hooks that refresh cache by mutualizing require 2025-06-17 12:24:17 +02:00
isUnknown
32d0752d78 panel : refresh cache on page status change 2025-06-17 12:13:38 +02:00
isUnknown
2568aac0e3 save 2025-06-11 15:42:15 +02:00
isUnknown
c2374f3fc6 panel > virtual sample : add track info on cards 2025-06-06 12:27:35 +02:00
isUnknown
e973cc12d0 change label 2025-06-06 12:25:54 +02:00
isUnknown
c1b00f0b3d panel > virtual sample : add group level 2025-06-06 12:24:58 +02:00
isUnknown
760e17287e track > variation : add bg color 2025-06-06 12:22:59 +02:00
isUnknown
099479dc45 panel > physical sample : remove required fields 2025-06-06 12:03:16 +02:00
isUnknown
c187bf3aaa change label blueprint 2025-06-06 12:02:27 +02:00
isUnknown
db52600618 change select placeholder 2025-06-06 10:48:28 +02:00
isUnknown
0c5c10791e tracks select : track selection inside groups working without comparison mode enabled 2025-06-05 18:41:01 +02:00
isUnknown
e6a27cdf0f cache : trigger regenerate cache on file update 2025-06-02 11:02:35 +02:00