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>
112 lines
2.7 KiB
YAML
112 lines
2.7 KiB
YAML
title: Projet
|
|
icon: page
|
|
buttons:
|
|
refresh-cache: true
|
|
- open
|
|
- settings
|
|
- status
|
|
status:
|
|
draft:
|
|
label: Brouillon
|
|
text: Accessible uniquement aux éditeurs connectés ou via un lien secret
|
|
listed: En cours
|
|
unlisted: Archivé
|
|
|
|
tabs:
|
|
steps:
|
|
label: Étapes
|
|
icon: circle-nested
|
|
columns:
|
|
- width: 1/1
|
|
fields:
|
|
lastCacheUpdate:
|
|
type: hidden
|
|
# Champs pour project-request
|
|
isClientRequest:
|
|
type: hidden
|
|
default: "false"
|
|
requestDetails:
|
|
label: Demande client
|
|
type: textarea
|
|
disabled: true
|
|
when:
|
|
isClientRequest: "true"
|
|
requestAuthor:
|
|
type: hidden
|
|
requestAuthorName:
|
|
type: hidden
|
|
requestAuthorEmail:
|
|
type: hidden
|
|
requestDate:
|
|
type: hidden
|
|
requestReadby:
|
|
type: hidden
|
|
# Champs pour appointment-request (DTL)
|
|
hasOptimizationRequest:
|
|
type: hidden
|
|
default: "false"
|
|
optimizationRequestDetails:
|
|
type: hidden
|
|
optimizationAuthor:
|
|
type: hidden
|
|
optimizationAuthorName:
|
|
type: hidden
|
|
optimizationAuthorEmail:
|
|
type: hidden
|
|
optimizationDate:
|
|
type: hidden
|
|
optimizationReadby:
|
|
type: hidden
|
|
currentStep:
|
|
label: Étape en cours
|
|
type: radio
|
|
columns: 6
|
|
options:
|
|
type: query
|
|
query: page.getSteps
|
|
text: "{{ item.label }}"
|
|
value: "{{ item.id }}"
|
|
required: true
|
|
- width: 1/3
|
|
fields:
|
|
projectType:
|
|
label: Type de projet
|
|
type: select
|
|
options:
|
|
dtp: Design to pack
|
|
morphoz: Morphoz
|
|
other: autre
|
|
client:
|
|
type: pages
|
|
multiple: false
|
|
query: site.find("clients").childrenAndDrafts
|
|
subpages: false
|
|
image:
|
|
query: page.logo.toFile
|
|
layout: cardlets
|
|
required: true
|
|
|
|
- width: 2/3
|
|
sections:
|
|
stepsSection:
|
|
label: Étapes
|
|
type: pages
|
|
sortBy: stepIndex asc
|
|
create: false
|
|
templates:
|
|
- client-brief
|
|
- proposal
|
|
- extended-brief
|
|
- industrial-ideation
|
|
- virtual-sample
|
|
- physical-sample
|
|
|
|
designToLight: tabs/design-to-light
|
|
|
|
files: tabs/files
|
|
|
|
notificationsTab:
|
|
label: Notifications
|
|
icon: bell
|
|
fields:
|
|
notifications: fields/notifications
|