Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: 1406 contrib affichage des status sur ladmin #1425

Merged
merged 24 commits into from
Jun 20, 2024

Conversation

Viczei
Copy link
Contributor

@Viczei Viczei commented Jun 6, 2024

No description provided.

@Viczei Viczei self-assigned this Jun 6, 2024
@Viczei Viczei linked an issue Jun 6, 2024 that may be closed by this pull request
6 tasks
@Viczei Viczei changed the title 1406 contrib affichage des status sur ladmin feat: 1406 contrib affichage des status sur ladmin Jun 6, 2024
@github-advanced-security
Copy link

This pull request sets up GitHub code scanning for this repository. Once the scans have completed and the checks have passed, the analysis results for this pull request branch will appear on this overview. Once you merge this pull request, the 'Security' tab will show more code scanning analysis results (for example, for the default branch). Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results. For more information about GitHub code scanning, check out the documentation.

@@ -24,6 +24,7 @@ describe("mapContributionToDocument", () => {
};

it("devrait mapper l'answer d'un document sans fiche SP", async () => {
// @ts-ignore
Copy link
Member

Choose a reason for hiding this comment

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

Pourquoi un ts-ignore, tu aurais pu mocker directement les valeurs, ça aurait été plus clean

Copy link
Contributor

Choose a reason for hiding this comment

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

Et ça permet en cas de modification des données d'avoir un retour plus rapide sur ces tests. Après c'est vraiment galère des jeux de données aussi gros à maintenir :(

- intro
- description
Copy link
Member

Choose a reason for hiding this comment

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

Pourquoi on le modifie dans cette PR ça

Copy link
Contributor Author

Choose a reason for hiding this comment

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

ah non ca c'est une erreur. Je comprends pas pourquoi mon hasura remet toujours ce champs description alors que je l'ai dégagé

Comment on lines +6 to +9
export_id:
custom_name: exportId
custom_column_names:
export_id: exportId
Copy link
Member

Choose a reason for hiding this comment

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

Mais du coup, tous les documents auront le même exportId, je vois pas comment c'est possible que les deux soient différents

Copy link
Contributor

Choose a reason for hiding this comment

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

Pour le coup la gymnastique n'est pas la plus clean peut être mais au moment de l'export, on détecte les documents qui ont changé depuis la dernière mise à jour des données. Puis on va mettre à jour l'export id seulement pour ces documents. Cela ne concerne que les contributions pour le moment d'ailleurs.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Oui j'initialise dans mon script de migration tous les documents sur le dernier export mais ensuite ils sont maj indépendamment au niveau de l'export

Comment on lines +20 to +30
let tooltipText: string | undefined;
if (!exportDate) {
status = "NOT_PUBLISHED";
tooltipText = statusesMapping[status].text;
} else {
status = "PUBLISHED";
tooltipText = `${statusesMapping[status].text} le ${format(
parseISO(exportDate),
"dd/MM/yyyy HH:mm:ss"
)}`;
}
Copy link
Member

Choose a reason for hiding this comment

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

On aurait pu le mettre dans un useEffect, ça aurait opti un peu plus le code car là ça va se trigger à chaque fois

Copy link
Contributor

Choose a reason for hiding this comment

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

C'est un écran de visualisation sans édition, il n'y a pas de modification de ces données donc pas de refresh.

Comment on lines +22 to +29
if (status === "TO_PUBLISH") {
if (statusDate && exportDate && isPublished({ statusDate, exportDate })) {
status = "TO_PUBLISH";
} else {
status = "PUBLISHING";
}
}
const tooltipTitle = statusesMapping[status].text;
Copy link
Member

Choose a reason for hiding this comment

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

Là aussi

@@ -66,6 +71,8 @@ export async function cdtnDocumentsGen(
const glossaryTerms = await getGlossary();
const addGlossary = createGlossaryTransform(glossaryTerms);

const contributionsToPublish = await fetchContributionDocumentToPublish();
Copy link
Member

Choose a reason for hiding this comment

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

C'est dommage qu'on soit obligé de fetch deux fois les contributions, on aurait pu éviter cela en vérifiant une propriété des contributions, non ?

Copy link
Contributor

Choose a reason for hiding this comment

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

On ne fetch pas toutes les contribs là je crois, on ne récupère que celle qui ont été modifiées : https://github.com/SocialGouv/cdtn-admin/pull/1425/files#diff-046031753264baf1637cef36c0bc23cd316e32a73e7250a81133410e2c0eed4fR8

Je pense que le nommage peut être amélioré ici pour éviter cette confusion :

Suggested change
const contributionsToPublish = await fetchContributionDocumentToPublish();
const editedContributionsSinceLastPublish = await fetchEditedContributionDocument();

@@ -89,7 +92,8 @@ async function runIngester(
suggestIndexName: string | undefined,
bufferSize: number | undefined,
suggestFile: string | undefined,
disableGlossary: boolean | undefined
disableGlossary: boolean | undefined,
isProd: boolean
Copy link
Member

Choose a reason for hiding this comment

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

Pour toutes ces variables, on utilise des contexte globaux pour éviter de faire du props forwarding, c'est dommage de changer cette approche

Copy link
Member

Choose a reason for hiding this comment

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

ça revient à deux approches différentes dans le même code

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Faudra que tu me montre, j'avais compris qu'il fallait faire avec du props forwarding de mon côté

Copy link
Contributor

@m-maillot m-maillot left a comment

Choose a reason for hiding this comment

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

Quelques remarques mais pas bloquants pour une mise en prod pour moi.

@@ -66,6 +71,8 @@ export async function cdtnDocumentsGen(
const glossaryTerms = await getGlossary();
const addGlossary = createGlossaryTransform(glossaryTerms);

const contributionsToPublish = await fetchContributionDocumentToPublish();
Copy link
Contributor

Choose a reason for hiding this comment

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

On ne fetch pas toutes les contribs là je crois, on ne récupère que celle qui ont été modifiées : https://github.com/SocialGouv/cdtn-admin/pull/1425/files#diff-046031753264baf1637cef36c0bc23cd316e32a73e7250a81133410e2c0eed4fR8

Je pense que le nommage peut être amélioré ici pour éviter cette confusion :

Suggested change
const contributionsToPublish = await fetchContributionDocumentToPublish();
const editedContributionsSinceLastPublish = await fetchEditedContributionDocument();

@@ -71,7 +71,7 @@ export const ContributionsAnswer = ({
cdtnReferences: data.cdtnReferences,
otherReferences: data.otherReferences,
});
if (newStatus === "PUBLISHED") {
if (newStatus === "TO_PUBLISH") {
Copy link
Contributor

Choose a reason for hiding this comment

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

Idée de nommage : READY

Le TO_PUBLISH est confusant car il va rester même après une mise à jour des données. Le status READY indique qu'elle est prête pour la prod. Une fois en prod, elle reste READY qui ne porte pas à confusion comme le TO_PUBLISH.

Copy link
Contributor

Choose a reason for hiding this comment

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

Je crois que j'aurai laissé "PUBLISHED" qui correspond à ce qu'on affiche su l'ui.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Un des retours du métier c'était justement que ce status "PUBLISHED" n'était pas claire parce que ca prête à confusion vu que le document n'est pas encore en prod. J'aime bien l'idée de le nommé "READY" (ou "prêt" en francais)

Copy link
Contributor

Choose a reason for hiding this comment

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

c'est pour ça que dans le court moment où la contrib est publié mais pas encore mis en prod on affiche "à publier" et on la mets en orange. Mais le reste du temps elle est bien publié

Comment on lines +20 to +30
let tooltipText: string | undefined;
if (!exportDate) {
status = "NOT_PUBLISHED";
tooltipText = statusesMapping[status].text;
} else {
status = "PUBLISHED";
tooltipText = `${statusesMapping[status].text} le ${format(
parseISO(exportDate),
"dd/MM/yyyy HH:mm:ss"
)}`;
}
Copy link
Contributor

Choose a reason for hiding this comment

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

C'est un écran de visualisation sans édition, il n'y a pas de modification de ces données donc pas de refresh.

@@ -24,6 +24,7 @@ describe("mapContributionToDocument", () => {
};

it("devrait mapper l'answer d'un document sans fiche SP", async () => {
// @ts-ignore
Copy link
Contributor

Choose a reason for hiding this comment

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

Et ça permet en cas de modification des données d'avoir un retour plus rapide sur ces tests. Après c'est vraiment galère des jeux de données aussi gros à maintenir :(

Comment on lines +6 to +9
export_id:
custom_name: exportId
custom_column_names:
export_id: exportId
Copy link
Contributor

Choose a reason for hiding this comment

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

Pour le coup la gymnastique n'est pas la plus clean peut être mais au moment de l'export, on détecte les documents qui ont changé depuis la dernière mise à jour des données. Puis on va mettre à jour l'export id seulement pour ces documents. Cela ne concerne que les contributions pour le moment d'ailleurs.

update public.documents d
set export_id = le.id
from _last_export le
where (d.source = 'contributions' or d.source = 'information' or d.source = 'modeles_de_courriers')
Copy link
Contributor

Choose a reason for hiding this comment

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

on ne le fait pas que sur les contributions ? Car actuellement, on ne gère que ces documents là : https://github.com/SocialGouv/cdtn-admin/pull/1425/files#diff-046031753264baf1637cef36c0bc23cd316e32a73e7250a81133410e2c0eed4fR31
Autant laisser à NULL dans la table pour le moment (car pas fiable vu que pas mis à jour).

Copy link
Contributor Author

Choose a reason for hiding this comment

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

ok oui je peux faire que les contribs pour le moment

@@ -81,7 +82,9 @@ export const Comment = ({ comment, onDelete }: Props) => {
}}
>
{" "}
{statusesMapping[comment.status].text}
{statusesMapping[comment.status].text === "Publié"
Copy link
Contributor

Choose a reason for hiding this comment

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

En fait ici, on peut laisser "Publié" dans les commentaires, comme ça c'est cohérent partout
Screenshot from 2024-06-20 14-37-28

Copy link

Copy link

🎉 Deployment for commit c554821 :

Ingresses
Docker images
  • 📦 docker pull harbor.fabrique.social.gouv.fr/cdtn/cdtn-admin/export:sha-c55482127cd2065f9dcedf25270e56cef4ac3f31
  • 📦 docker pull harbor.fabrique.social.gouv.fr/cdtn/cdtn-admin/frontend:sha-c55482127cd2065f9dcedf25270e56cef4ac3f31
  • 📦 docker pull harbor.fabrique.social.gouv.fr/cdtn/cdtn-admin/hasura:sha-c55482127cd2065f9dcedf25270e56cef4ac3f31
Debug

@Viczei Viczei merged commit 9f63a2a into master Jun 20, 2024
29 checks passed
@Viczei Viczei deleted the 1406-contrib-affichage-des-status-sur-ladmin branch June 20, 2024 14:08
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.

[Contrib] Affichage des status sur l'admin
5 participants