diff --git a/README.md b/README.md index 8c32d5df2d..4b5dd1ac21 100644 --- a/README.md +++ b/README.md @@ -244,3 +244,14 @@ If you want changes to be made locally instead of generating pull requests in pr - First, [contribuer/public/admin/config.yml#L19](https://github.com/betagouv/aides-jeunes/blob/main/contribuer/public/admin/config.yml#L19) ([`local_backend: true`](https://decapcms.org/docs/working-with-a-local-git-repository)) must be uncommented; - `npx netlify-cms-proxy-server` should be ran from `.` and + +## Check Link Validity + +Some parameters can be use to debug the command + +- `--dry-run` : this command is useful to not send update/new row to Grist +- `--no-priority` : without getting priority from analytic data +- `--only [slug benefit]` : work on specific benefit + +Here is an example of how using this parameters +`npm run tools:check-links-validity -- --dry-run` diff --git a/lib/benefits/link-validity.ts b/lib/benefits/link-validity.ts index 934d14542b..9780b10590 100644 --- a/lib/benefits/link-validity.ts +++ b/lib/benefits/link-validity.ts @@ -91,9 +91,39 @@ export function determineOperationsOnBenefitLinkError( : processCron const operations: GristOperation[] = [] const benefitId = benefitLinksCheckResult.id + const existingWarningsLink = existingWarnings?.[benefitId] + benefitLinksCheckResult.links.forEach((link) => { - const existingWarning = existingWarnings?.[benefitId]?.[link.type] + const existingWarning = existingWarningsLink?.[link.type] processor(benefitLinksCheckResult, link, existingWarning, operations) + if ( + (!existingWarning && existingWarningsLink) || + (existingWarning && Object.entries(existingWarningsLink).length > 1) + ) { + // cas ou le lien a été supprimé ainsi que sa propriété + for (const type in existingWarningsLink) { + if ( + !benefitLinksCheckResult.links.some( + (linkObject) => + linkObject.link === existingWarningsLink[type]?.fields?.Lien && + benefitLinksCheckResult.links.length > 0 + ) || //Si le lien analysé n'est pas présent dans la liste des liens d'erreurs et qu'il y a au moins un lien + (!existingWarning && + benefitLinksCheckResult.links.some( + (linkObject) => + linkObject.link === existingWarningsLink[type]?.fields?.Lien && + linkObject.ok + )) + ) { + processor( + benefitLinksCheckResult, + link, + existingWarningsLink[type], + operations + ) + } + } + } }) return operations @@ -111,11 +141,11 @@ export function determineExistingWarningsFixByPrivateBenefits( ) if (privateBenefit?.length) { for (const type in existingWarnings[warningBenefitId]) { - const fixPullRequestUrl = + const PR = pullRequestURL && existingWarnings[warningBenefitId][type].fields.PR !== pullRequestURL - ? pullRequestURL - : existingWarnings[warningBenefitId][type].fields.PR + ? { pullRequestURL } + : {} benefitOperationsList.push([ { type: "update", @@ -123,7 +153,7 @@ export function determineExistingWarningsFixByPrivateBenefits( id: existingWarnings[warningBenefitId][type].id, fields: { Corrige: true, - PR: fixPullRequestUrl, + ...PR, }, }, }, diff --git a/lib/types/link-validity.d.ts b/lib/types/link-validity.d.ts index 67962b3a82..4f813a1704 100644 --- a/lib/types/link-validity.d.ts +++ b/lib/types/link-validity.d.ts @@ -19,7 +19,7 @@ interface GristFields { Dans_une_PR: boolean Corrige: boolean Date_PR: number - Date_correction: number + Date_correction: Date PR: string Date_erreur_de_detection: string Aide: string diff --git a/tools/check-links-validity.ts b/tools/check-links-validity.ts index 824d20dd08..009282704f 100755 --- a/tools/check-links-validity.ts +++ b/tools/check-links-validity.ts @@ -47,6 +47,13 @@ async function getHTTPStatus(link) { headers: { "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:99.0) Gecko/20100101 Firefox/99.0", + Referer: "https://mes-aides.1jeune1solution.beta.gouv.fr/", + TE: "trailers", + "Upgrade-Insecure-Requests": 1, + "Sec-Fetch-Mode": "navigate", + "Sec-GPC": "1", + "Sec-Fetch-User": "?1", + "Sec-Fetch-Dest": "document", }, httpsAgent, }) @@ -266,7 +273,6 @@ async function main() { `Ajout: ${recordsByOperationTypes.add.length}`, `Mise à jour: ${recordsByOperationTypes.update.length}`, ].join("\n") - Mattermost.post(text, process.env.MATTERMOST_ALERTING_URL) } }