Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

sfinx13
Copy link
Collaborator

@sfinx13 sfinx13 commented Feb 7, 2025

Ticket

#3622

Remarque

  • Envisager un passage en asynchrone avant d'augmenter la limitation afin d'éviter de long temps de réponse.
  • Envisager une migration de doctrine à une autre solution de queuing (indépendant de la DB, plus performante) pour le transport des messages car la typologie de messages gérés en asynchrones augmente (~ une dizaine).

Le choix pourra se porter sur Redis car le service est dispo sur scalingo.
Autre avantage, ça permettra de réduire la charge en écriture sur la base de donnée.

Description

Mise à disposition deux routes pour la gestion des documents (Limitation à 5 pour commencer et observer l'usage)

1. Requête (Dépôt des fichiers)

POST {{baseUrl}}/api/signalements/00000000-0000-0000-2022-000000000001/files

image

2. Requête (Edition des fichiers déposés via uuid)

PATCH {{baseUrl}}/api/files/94da1620-ce9b-43eb-a75c-abe0f8f6fac0kk

Payload

{
    "documentType": "PROCEDURE_ARRETE_PREFECTORAL"
}

Changements apportés

  • Ajout d'un événement file.uploaded
  • Ajout de la propriété uuid dans la classe modèle file
  • Usage de l'uuid pour permettre l'édition du fichier

Pré-requis

Tests

  • Tester la route d'upload et vérifier la fiche signalement ainsi que la création de suivi
  • Tester la route d'édition et vérifier les types de documents

@sfinx13 sfinx13 force-pushed the feature/3622-api-upload-file branch from e2df3ff to aaa0946 Compare February 7, 2025 20:57
@sfinx13 sfinx13 marked this pull request as ready for review February 7, 2025 21:11
@sfinx13 sfinx13 force-pushed the feature/3622-api-upload-file branch 2 times, most recently from 3dc517d to 5bef770 Compare February 11, 2025 16:55
Copy link
Collaborator

@hmeneuvrier hmeneuvrier left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

J'ai un test KO.

Sur un signalement, j'envoie un fichier dans files[]
C'est une image jpg.

Je reçois

[
    {
        "uuid": "abd44081-e86c-4022-8fb7-454446c07c86",
        "titre": "capture-essence-juicy-ripe-pears-600nw-2518963683.jpg",
        "documentType": "AUTRE",
        "url": "http://localhost:8080/show/abd44081-e86c-4022-8fb7-454446c07c86"
    }
]

quand je vais dans la fiche du signalement, elle apparait comme Photo Usager/

Je vais ensuite dans la route d'édition de fichier.
J'envoie le payload

{
  "documentType": "PROCEDURE_ARRETE_MUNICIPAL",
  "description": "tertre"
}

je reçois

{
    "uuid": "abd44081-e86c-4022-8fb7-454446c07c86",
    "titre": "capture-essence-juicy-ripe-pears-600nw-2518963683.jpg",
    "documentType": "PROCEDURE_ARRETE_MUNICIPAL",
    "url": "http://localhost:8080/show/abd44081-e86c-4022-8fb7-454446c07c86"
}

Et l'image n'apparait plus nulle part, car je pense qu'on a une limitation sur les formats de fichier qui sont en contradiction avec le documentType.

Je ne sais pas trop comment résoudre ça. Je pense qu'il faut prendre en compte le file_type (document ou photo), et qu'il faut faire des checks sur format/documentType au moment de l'édition.

)]
#[Assert\NotBlank()]
#[Assert\Choice(
choices: [
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Apparemment dans Symfony 7.3 on pourra utiliser les enum en contraintes : symfony/symfony#54226

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

c'est cool :-D ça fait longtemps qu'on souffre

@sfinx13
Copy link
Collaborator Author

sfinx13 commented Feb 12, 2025

En plus de la revue, ne pas hésiter à intervenir directement sur la branche @numew @emilschn @hmeneuvrier

Copy link
Collaborator

@numew numew left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suite à mes test et commentaires d'Hélène, ajout d'un commit qui:

  • Corrige le message d'erreur en cas de format de fichier invalide pour lister ceux autorisés
  • Corrige l'affichage des documents sur la fiche usager afin que ceux uploadé via un user ROLE_API_USER n'apparaissent pas dans la liste des documents usager
  • Bloque les documentType invalide pour les fileType "photo"

Concernant le dernier point c'est imparfait car :

  • Si le type est invalide on l'ignore (sans remonter d'erreur)
  • En théorie on peux avoir des image de fileType "document", plusieurs possibilités :
    --> soit permettre lors de l'upload d'indiquer le fileType -et dans ce cas aussi le documentType et description- pour chacun des éléments mais je ne sais pas avec quelle approche.
    --> soit à l'édition permettre de redéfinir manuellement le fileType
    --> soit implicitement si le documentType n'est pas autorisé, basculer automatiquement en fileType document

Cette dernière solution est la plus simple mais avec l'inconvénient de ne pas pouvoir revenir en arrière quand le doc est passé en fileType "document"

@hmeneuvrier hmeneuvrier force-pushed the feature/3622-api-upload-file branch from 2e52d36 to c2ba0fa Compare February 13, 2025 16:51
Copy link
Collaborator

@numew numew left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok

Copy link

Quality Gate Failed Quality Gate failed

Failed conditions
5.3% Duplication on New Code (required ≤ 3%)

See analysis details on SonarQube Cloud

Copy link
Collaborator

@hmeneuvrier hmeneuvrier left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK

@hmeneuvrier hmeneuvrier merged commit f376018 into develop Feb 21, 2025
3 of 4 checks passed
@sfinx13 sfinx13 deleted the feature/3622-api-upload-file branch March 13, 2025 16:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants