Skip to content

feat(applications): stack technique & licences sur la fiche d'application (#1099)#1943

Open
JulienLeotier wants to merge 3 commits into
mainfrom
1099-stack-technique-licences
Open

feat(applications): stack technique & licences sur la fiche d'application (#1099)#1943
JulienLeotier wants to merge 3 commits into
mainfrom
1099-stack-technique-licences

Conversation

@JulienLeotier

Copy link
Copy Markdown
Collaborator

Closes #1099.

Ajoute deux nouvelles sections à la fiche d'application : Stack technique (technologies + versions) et Licences, chacune avec affichage et gestion CRUD.

Choix de conception (MVP, cf. commentaire de cadrage sur #1099)

  • Stack technique : technology + version en saisie libre. Colonnes eolDate / eolCheckedAt (nullable) ajoutées dès maintenant pour brancher endoflife.date plus tard sans nouvelle migration (intégration = suivi).
  • Licences : name (identifiant SPDX recommandé, saisie libre conservée via datalist côté front) + version optionnelle.
  • Permissions : réutilisation de AppRead / AppWrite (pas de nouvelle permission).

Backend (calqué sur le module RGAA)

  • Schémas Prisma TechnologyStack et License (relations 1-N sur Application, onDelete: Cascade, @@unique([applicationId, …]), metadatas[]), FK technologyStackId / licenseId sur Metadata.
  • Migration add_technology_and_license_tables.
  • Deux modules (dto, service extends BaseService → métadonnées d'historique + recalcul IQ automatiques, controller REST imbriqué applications/:applicationId/{technologies,licenses}), enregistrés dans AppModule.

Frontend (calqué sur l'onglet Acteurs)

  • Deux onglets TechnologyTab / LicenseTab (table + modale + formulaire, région live a11y + focus au déclencheur), déclarés dans ApplicationOverview.vue.
  • Client API régénéré depuis le swagger.

Validation

  • nest build (compilation TS backend).
  • ✅ Backend boote proprement, endpoints exposés dans le swagger (validation DI/runtime).
  • 14 tests e2e (CRUD complet + conflit 409 + permissions) contre la vraie base, migration appliquée sur une DB fraîche : technologies.e2e-spec.ts + licenses.e2e-spec.ts verts.
  • ✅ Build front (bundling), type-check propre sur les nouveaux fichiers, eslint OK.

Suivi

  • Intégration endoflife.date (calcul de eolDate au save, sur le modèle de ecoindex.utils.ts) : à faire dans un ticket dédié — l'affichage « Fin de vie » côté front est déjà prêt.

@JulienLeotier JulienLeotier requested a review from Code-Oz July 3, 2026 10:42
@github-actions

github-actions Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

badge

Backend Coverage Summary

Filename                                                                       Stmts    Miss  Cover    Missing
---------------------------------------------------------------------------  -------  ------  -------  ---------------------------------------------------------------------------------------
prisma/seed-qa.ts                                                                 44      44  0.00%    1-274
prisma/seed.ts                                                                   129     129  0.00%    1-357
src/app.controller.ts                                                              7       0  100.00%
src/app.module.ts                                                                 40       0  100.00%
src/app.service.ts                                                                 3       0  100.00%
src/ecoindex.d.ts                                                                  0       0  100.00%
src/enum.ts                                                                       29       0  100.00%
src/main.ts                                                                       29      29  0.00%    3-57
src/swagger-config.ts                                                             25       7  72.00%   25, 98-111
src/actor/actor.controller.ts                                                     47      13  72.34%   59, 74, 94-100, 123-130, 147, 163-168, 178-183, 198
src/actor/actor.module.ts                                                         10       0  100.00%
src/actor/actor.service.ts                                                       123      66  46.34%   87, 109-216, 309, 335-406, 415, 426-429, 445-446
src/actor/dto/actor.dto.ts                                                        30       0  100.00%
src/actor/map/actor.map.ts                                                         2       2  0.00%    3-4
src/actorType/actorType.controller.ts                                             27       8  70.37%   74, 90, 112, 137, 151, 180-186, 197
src/actorType/actorType.module.ts                                                  6       0  100.00%
src/actorType/actorType.service.ts                                                30      24  20.00%   35-92
src/actorType/dto/actorType.dto.ts                                                 9       0  100.00%
src/actorType/dto/app-perms-matrix.dto.ts                                         22       0  100.00%
src/applications/application.controller.ts                                        51      11  78.43%   113, 127, 171, 205-226, 264, 285-286
src/applications/application.module.ts                                            16       0  100.00%
src/applications/application.service.ts                                          172      65  62.20%   29, 121-124, 132-133, 137-143, 180-272, 315, 340-349, 422-444, 452, 479, 507, 523-544
src/applications/export.service.ts                                                25      14  44.00%   21-72
src/applications/prisma-query-builder.service.ts                                 111      53  52.25%   83, 87-105, 560-566, 579-601, 666-776
src/applications/view.service.ts                                                  13       0  100.00%
src/applications/columnLabels/application-export.columnLabels.ts                   1       0  100.00%
src/applications/constants/application-export.sheet-labels.ts                      1       0  100.00%
src/applications/constants/enum-label.ts                                           8       0  100.00%
src/applications/constants/relation-type-labels.ts                                 1       0  100.00%
src/applications/dto/create-application.dto.ts                                    20       0  100.00%
src/applications/dto/get-application.dto.ts                                       62       5  91.93%   74, 84, 94, 182, 186
src/applications/dto/search-application.dto.ts                                    78      21  73.07%   93, 106, 131, 141, 151, 162, 170, 179, 188, 269, 280, 291, 306, 316, 329-339, 350
src/applications/dto/technical-debt-point.dto.ts                                   6       0  100.00%
src/applications/infrastructure/repository/application.repository.ts              38      17  55.26%   22, 156-197, 262
src/applications/map/application-export.map.ts                                    47      33  29.78%   15-35, 39-45, 54-55, 70-87, 91-95, 110-111, 121-122, 136-137, 147-148, 160-161, 173-174
src/applications/search/application-search.service.ts                             36       6  83.33%   127, 133-134, 140, 147-148
src/applications/usecases/application-export.usecase.ts                           14       5  64.28%   28-188
src/business-division/business-division.controller.ts                             14       2  85.71%   46, 61
src/business-division/business-division.module.ts                                  7       0  100.00%
src/business-division/business-division.service.ts                                12       4  66.66%   24-30
src/business-division/prisma-query-builder.service.ts                             11       9  18.18%   9-34
src/business-division/dto/business-division.dto.ts                                 8       0  100.00%
src/cmd/index.ts                                                                   5       5  0.00%    1-11
src/cmd/user/create.ts                                                            13      13  0.00%    2-54
src/cmd/user/index.ts                                                              4       4  0.00%    2-7
src/common/base.service.ts                                                        39       2  94.87%   21, 34
src/common/common.module.ts                                                        6       0  100.00%
src/common/decorators/impersonator.decorator.ts                                    4       2  50.00%   13-14
src/common/decorators/required-permissions.decorator.ts                            4       0  100.00%
src/common/decorators/user-id.decorator.ts                                         4       0  100.00%
src/common/decorators/user.decorator.ts                                            4       0  100.00%
src/common/dto/index.ts                                                            2       0  100.00%
src/common/dto/paginated-response.dto.ts                                           8       0  100.00%
src/common/dto/pagination.dto.ts                                                  10       0  100.00%
src/common/guards/permission.guard.ts                                             15       1  93.33%   26
src/common/service/check-permissions.service.ts                                   35      10  71.42%   66, 78-79, 92-125
src/common/service/excel-builder.service.ts                                       36      33  8.33%    13-80
src/common/service/prisma-query-builder.service.ts                                 8       6  25.00%   7-31
src/common/utils/enum.utils.ts                                                     3       2  33.33%   5-6
src/common/utils/excel.utils.ts                                                    2       2  0.00%    1-2
src/common/utils/quality.utils.ts                                                 17       0  100.00%
src/common/utils/types.ts                                                          9       0  100.00%
src/compliances/compliances.controller.ts                                         31       2  93.54%   44, 141
src/compliances/compliances.module.ts                                              8       0  100.00%
src/compliances/compliances.service.ts                                            31      11  64.51%   34, 69, 84-115
src/compliances/constants/compliance-metadata.constants.ts                         3       0  100.00%
src/compliances/dto/create-compliance.dto.ts                                      35       0  100.00%
src/compliances/dto/update-compliance.dto.ts                                       3       0  100.00%
src/compliances/entities/compliance.entity.ts                                      1       1  0.00%    3
src/compliances/utils/compliance.utils.ts                                          7       0  100.00%
src/compliances/utils/ecoindex.utils.ts                                           18      15  16.66%   10-35, 46-55
src/config/app-config.ts                                                           3       0  100.00%
src/config/config.controller.ts                                                    8       0  100.00%
src/config/config.module.ts                                                        4       0  100.00%
src/config/config.service.ts                                                       7       0  100.00%
src/config/configs/app.config.ts                                                  10       1  90.00%   23
src/config/configs/database.config.ts                                              6       1  83.33%   6
src/config/configs/email.config.ts                                                 2       0  100.00%
src/config/configs/index.ts                                                        6       0  100.00%
src/config/configs/oidc.config.ts                                                 12       3  75.00%   15, 18, 21
src/config/dto/config.dto.ts                                                      11       0  100.00%
src/data-catalog/data-catalog.controller.ts                                       24       0  100.00%
src/data-catalog/data-catalog.service.ts                                          21       1  95.23%   39
src/data-catalog/data-catalogue.module.ts                                          8       0  100.00%
src/data-catalog/dto/create-data-application.dto.ts                               48       0  100.00%
src/data-catalog/dto/create-data-description.dto.ts                               33       0  100.00%
src/data-catalog/infrastructure/data-catalog.repository.interface.ts               1       0  100.00%
src/data-catalog/infrastructure/data-catalog.repository.ts                        13       3  76.92%   22, 48, 75
src/email/email-templates.services.ts                                             38       6  84.21%   27-32, 60-65
src/email/email.controller.ts                                                     11       2  81.81%   30-31
src/email/email.module.ts                                                         11       0  100.00%
src/email/email.service.ts                                                       113      78  30.97%   54-55, 59-60, 86-88, 101-104, 108-111, 138-407
src/email/cron/application-validation-cron.service.ts                             61       4  93.44%   36-37, 159, 180
src/email/cron/email-cron.service.ts                                              68      60  11.76%   32-208
src/email/error/mail-send.exception.ts                                             4       1  75.00%   6
src/email/exception-filter/mail-exception.filter.ts                                7       7  0.00%    1-10
src/health/health-check.controller.ts                                             10       4  60.00%   40-44
src/health/health-check.module.ts                                                  4       0  100.00%
src/hosting-option/hosting-option.controller.ts                                   15       1  93.33%   79
src/hosting-option/hosting-option.module.ts                                        5       0  100.00%
src/hosting-option/hosting-option.service.ts                                      18       2  88.88%   29, 32
src/hosting-option/dto/hosting-option.dto.ts                                      18       0  100.00%
src/hostings/hostings.controller.ts                                               24       1  95.83%   46
src/hostings/hostings.module.ts                                                    9       0  100.00%
src/hostings/hostings.service.ts                                                  22       3  86.36%   20, 54-60
src/hostings/site.controller.ts                                                    7       1  85.71%   18
src/hostings/dto/hosting.dto.ts                                                   12       0  100.00%
src/hostings/entities/hosting.entity.ts                                            1       1  0.00%    1
src/import/excel-import.service.ts                                                30       0  100.00%
src/import/import.controller.ts                                                   23       0  100.00%
src/import/import.module.ts                                                       14       0  100.00%
src/import/dto/import-report.dto.ts                                               19       0  100.00%
src/import/processors/actors-sheet.processor.ts                                   77       1  98.70%   115
src/import/processors/applications-sheet.processor.ts                             77       0  100.00%
src/import/processors/compliances-sheet.processor.ts                              74       2  97.29%   142, 195
src/import/processors/hostings-sheet.processor.ts                                 84       7  91.66%   128, 203, 235-236, 247-251
src/import/utils/excel.utils.ts                                                   46      11  76.08%   25-32, 65, 76-81
src/label-source/label-source.controller.ts                                       18       0  100.00%
src/label-source/label-source.module.ts                                            6       0  100.00%
src/label-source/label-source.service.ts                                           9       0  100.00%
src/label-source/dto/label-source.dto.ts                                          13       0  100.00%
src/labels/labels.controller.ts                                                   26       1  96.15%   125
src/labels/labels.module.ts                                                        7       0  100.00%
src/labels/labels.service.ts                                                      15       7  53.33%   30-60
src/labels/dto/create-label.dto.ts                                                 5       0  100.00%
src/labels/dto/label.dto.ts                                                        6       0  100.00%
src/labels/entities/label.entity.ts                                                1       1  0.00%    1
src/license/license.controller.ts                                                 22       0  100.00%
src/license/license.module.ts                                                      8       0  100.00%
src/license/license.service.ts                                                    28       6  78.57%   41, 73, 77-86, 104
src/license/dto/license.dto.ts                                                    10       0  100.00%
src/license/entities/license.entity.ts                                             1       1  0.00%    1
src/links/links.controller.ts                                                     19       0  100.00%
src/links/links.module.ts                                                          8       0  100.00%
src/links/links.service.ts                                                        15       0  100.00%
src/links/dto/links.dto.ts                                                        15       0  100.00%
src/links/entities/link.entity.ts                                                  1       1  0.00%    5
src/logger/logger.module.ts                                                        6       0  100.00%
src/logger/logger.service.ts                                                      14       7  50.00%   13, 28-38
src/logger/request-logging.interceptor.ts                                         20      20  0.00%    1-51
src/mdit-campaign/mdit-campaign.controller.ts                                     18       0  100.00%
src/mdit-campaign/mdit-campaign.module.ts                                          6       0  100.00%
src/mdit-campaign/mdit-campaign.service.ts                                        18       3  83.33%   34-38
src/mdit-campaign/dto/mdit-campaign.dto.ts                                        15       0  100.00%
src/metadatas/metadatas.controller.ts                                             20       4  80.00%   31, 42, 67, 84
src/metadatas/metadatas.module.ts                                                  7       0  100.00%
src/metadatas/metadatas.service.ts                                                52       6  88.46%   24-28, 68, 70-73
src/metadatas/dto/metadata-filters.dto.ts                                          2       2  0.00%    1-3
src/metadatas/dto/metadata.dto.ts                                                 30       0  100.00%
src/metadatas/infrastructure/metadata.repository.ts                               32      27  15.62%   15-107
src/middlewares/auth.middleware.ts                                                49      13  73.46%   53, 83-87, 96-124
src/organization-maia-references/organization-maia-references.controller.ts       16       0  100.00%
src/organization-maia-references/organization-maia-references.module.ts            6       0  100.00%
src/organization-maia-references/organization-maia-references.service.ts          19       2  89.47%   46, 80
src/organization-maia-references/dto/organization-maia-references.dto.ts          13       0  100.00%
src/organizations/organizations.controller.ts                                     22       0  100.00%
src/organizations/organizations.module.ts                                          7       0  100.00%
src/organizations/organizations.service.ts                                        20       1  95.00%   66
src/organizations/prisma-query-builder.service.ts                                 10       5  50.00%   11-25, 32
src/organizations/dto/filters.dto.ts                                              14       4  71.42%   16, 20, 33, 47
src/organizations/dto/organizations.dto.ts                                        17       0  100.00%
src/permissions/role-to-permissions.ts                                            23       0  100.00%
src/prisma/prisma.module.ts                                                        4       0  100.00%
src/prisma/prisma.service.ts                                                      18       0  100.00%
src/prisma/extensions/decimal-to-number.extension.ts                              10       0  100.00%
src/prisma/extensions/pagination.extension.ts                                      8       0  100.00%
src/relationship/relation.controller.ts                                           23       0  100.00%
src/relationship/relation.module.ts                                                8       0  100.00%
src/relationship/relation.service.ts                                              24       0  100.00%
src/relationship/application/dto/relation-application.dto.ts                      32       0  100.00%
src/relationship/infrastructure/repository/relation.repository.ts                 41       3  92.68%   142, 146, 246
src/report/report.controller.ts                                                   43      10  76.74%   113-115, 166, 189, 205, 227-229, 247
src/report/report.module.ts                                                        9       0  100.00%
src/report/report.service.ts                                                      36      15  58.33%   36-37, 47, 94-102, 116, 174-214
src/report/user-notification.service.ts                                           10       4  60.00%   16-21
src/report/dto/create-report.dto.ts                                               11       0  100.00%
src/report/dto/report-filters.dto.ts                                              23       3  86.95%   29, 49, 55
src/report/dto/report-notify-query.dto.ts                                          7       1  85.71%   11
src/report/dto/report.dto.ts                                                      17       1  94.11%   17
src/report/dto/update-report.dto.ts                                                3       0  100.00%
src/rgaa/rgaa.controller.ts                                                       22       0  100.00%
src/rgaa/rgaa.module.ts                                                            8       0  100.00%
src/rgaa/rgaa.service.ts                                                          29       6  79.31%   43, 77, 81-90, 108
src/rgaa/dto/rgaa-compliance.dto.ts                                               14       0  100.00%
src/rgaa/entities/rgaa-compliance.entity.ts                                        1       1  0.00%    1
src/services/logging.service.ts                                                   17      12  29.41%   10-35
src/stats/stats.module.ts                                                          9       0  100.00%
src/stats/application/stats.service.ts                                            26      19  26.92%   17-61
src/stats/application/dto/get-iq-avg-grouped.dto.ts                                7       0  100.00%
src/stats/application/use-cases/get-iq-avg-grouped.use-case.ts.ts                  8       3  62.50%   15-21
src/stats/cron/stats.cron.service.ts                                              13       5  61.53%   15-20
src/stats/infrastructure/stats.repository.ts                                      14      10  28.57%   16-47
src/stats/infrastructure/helpers/stats.aggregator.ts                              26      24  7.69%    16-59
src/stats/infrastructure/helpers/stats.helper.ts                                  12      10  16.66%   9-30
src/stats/interfaces/stats.controller.ts                                           8       1  87.50%   67
src/statuses/statuses.controller.ts                                               40      20  50.00%   58-72, 85, 103-125, 142-154
src/statuses/statuses.module.ts                                                    9       0  100.00%
src/statuses/statuses.service.ts                                                   9       4  55.55%   13-26
src/statuses/dto/application-status.dto.ts                                        16       2  87.50%   34, 62
src/statuses/dto/update-application-status.dto.ts                                  3       0  100.00%
src/statuses/entities/status.entity.ts                                             1       1  0.00%    3
src/tag/prisma-query-builder.service.ts                                            8       3  62.50%   17-21
src/tag/tags.controller.ts                                                        20       0  100.00%
src/tag/tags.module.ts                                                             7       0  100.00%
src/tag/tags.service.ts                                                           14       3  78.57%   36-39
src/tag/dto/tag.dto.ts                                                            12       0  100.00%
src/tag/entities/tag.entity.ts                                                     1       1  0.00%    1
src/technical-debt-info/technical-debt-info.controller.ts                         19       0  100.00%
src/technical-debt-info/technical-debt-info.module.ts                              9       0  100.00%
src/technical-debt-info/technical-debt-info.service.ts                             9       0  100.00%
src/technical-debt-info/technical-debt.controller.ts                              13       0  100.00%
src/technical-debt-info/dto/create-technical-debt-info.dto.ts                     12       0  100.00%
src/technical-debt-info/dto/update-technical-debt-info.dto.ts                      3       3  0.00%    1-4
src/technical-debt-info/entities/technical-debt-info.entity.ts                     1       1  0.00%    1
src/technology/technology.controller.ts                                           22       0  100.00%
src/technology/technology.module.ts                                                8       0  100.00%
src/technology/technology.service.ts                                              35       7  80.00%   37, 59, 92, 96-105, 133
src/technology/dto/technology.dto.ts                                              12       0  100.00%
src/technology/entities/technology.entity.ts                                       1       1  0.00%    1
src/technology/utils/endoflife.utils.ts                                           27      12  55.55%   64-89
src/token/token.controller.ts                                                     26       7  73.07%   59, 78, 95, 114, 136, 154, 168
src/token/token.module.ts                                                          7       0  100.00%
src/token/token.service.ts                                                        78      61  21.79%   44-168, 175-299
src/token/domain/token-status.entity.ts                                            1       0  100.00%
src/token/domain/token.entity.ts                                                   2       2  0.00%    5-19
src/token/dto/token.dto.ts                                                        32       0  100.00%
src/token/use-cases.ts/token-control.use-case.ts                                  34      16  52.94%   18-30, 38-48
src/user/user-connexion-log.service.ts                                             9       0  100.00%
src/user/user-permission-log.service.ts                                            7       1  85.71%   14
src/user/user-permissions.interceptor.ts                                          10       2  80.00%   46-47
src/user/user.controller.ts                                                       44      11  75.00%   64, 82, 100, 116, 136, 191-194, 218, 247, 268
src/user/user.module.ts                                                           12       0  100.00%
src/user/user.service.ts                                                         105      61  41.90%   48-312, 322, 335, 365
src/user/dto/filters.dto.ts                                                        9       1  88.88%   21
src/user/dto/maia-organization-suggestion.dto.ts                                   7       0  100.00%
src/user/dto/sync-organizations-response.dto.ts                                    4       0  100.00%
src/user/dto/sync-organizations.dto.ts                                             4       0  100.00%
src/user/dto/update-user.dto.ts                                                   13       0  100.00%
src/user/dto/user.error.dto.ts                                                     4       0  100.00%
src/user/entities/user.entity.ts                                                  32       0  100.00%
src/user/errors/scope-permissions.exception.ts                                     5       0  100.00%
src/user/scope-permission/scoped-permission.service.ts                            48       2  95.83%   145, 176
src/user/utils/maia.tools.ts                                                      27      21  22.22%   22-40, 54-102, 106-115
src/utils/constants.util.ts                                                        3       0  100.00%
src/utils/functions.ts                                                            20      16  20.00%   9-13, 17-33, 37-39
src/utils/request-size.util.ts                                                     5       5  0.00%    1-6
src/utils/sanitize-headers.util.ts                                                 4       4  0.00%    1-6
src/utils/typeguard-includes.ts                                                    2       0  100.00%
tests/getToken.ts                                                                  6       0  100.00%
tests/setup.ts                                                                    22       0  100.00%
tests/test-database.utils.ts                                                      42      42  0.00%    1-108
tests/fakers/actor-type.faker.ts                                                  23       2  91.30%   56, 81
tests/fakers/actor.faker.ts                                                        7       0  100.00%
tests/fakers/application.faker.ts                                                 16       0  100.00%
tests/fakers/business-division.faker.ts                                            6       6  0.00%    1-13
tests/fakers/compliance.faker.ts                                                   9       0  100.00%
tests/fakers/data-application.faker.ts                                            21       3  85.71%   79, 93-101
tests/fakers/data-description.faker.ts                                             9       2  77.77%   81-88
tests/fakers/data-exposure.faker.ts                                               10       0  100.00%
tests/fakers/data-family.faker.ts                                                 15       9  40.00%   42-56
tests/fakers/data-sensibility.faker.ts                                            11       1  90.90%   19
tests/fakers/hosting-option.faker.ts                                               9       0  100.00%
tests/fakers/hosting.faker.ts                                                      7       0  100.00%
tests/fakers/label-source.faker.ts                                                 6       0  100.00%
tests/fakers/link.faker.ts                                                         4       0  100.00%
tests/fakers/organization.faker.ts                                                 5       0  100.00%
tests/fakers/prisma.ts                                                             5       0  100.00%
tests/fakers/stats.faker.ts                                                        9       9  0.00%    1-16
tests/fakers/tag.faker.ts                                                          6       0  100.00%
tests/fakers/technical-debt-info.faker.ts                                          9       9  0.00%    2-45
tests/fakers/user.faker.ts                                                        10       0  100.00%
TOTAL                                                                           5210    1467  71.84%

Diff against main

Filename                                        Stmts    Miss  Cover
--------------------------------------------  -------  ------  --------
src/app.module.ts                                  +2       0  +100.00%
src/license/license.controller.ts                 +22       0  +100.00%
src/license/license.module.ts                      +8       0  +100.00%
src/license/license.service.ts                    +28      +6  +78.57%
src/license/dto/license.dto.ts                    +10       0  +100.00%
src/license/entities/license.entity.ts             +1      +1  +100.00%
src/technology/technology.controller.ts           +22       0  +100.00%
src/technology/technology.module.ts                +8       0  +100.00%
src/technology/technology.service.ts              +35      +7  +80.00%
src/technology/dto/technology.dto.ts              +12       0  +100.00%
src/technology/entities/technology.entity.ts       +1      +1  +100.00%
src/technology/utils/endoflife.utils.ts           +27     +12  +55.55%
tests/fakers/data-application.faker.ts              0      +1  -4.76%
TOTAL                                            +176     +28  +0.43%

Results for commit: 94dded5

Minimum allowed coverage is 70%

♻️ This comment has been updated with latest results

@JulienLeotier

Copy link
Copy Markdown
Collaborator Author

Ajout : détection de fin de vie via endoflife.date

Suite au retour sur #1099 (le commentaire demandait de préciser si une technologie est en fin de vie, source endoflife.date), l'intégration est désormais implémentée — ce n'est plus un simple « suivi ».

  • endoflife.utils.ts : fetchTechnologyEol(technology, version) — normalise le nom en identifiant produit (Node.js → nodejs), interroge l'API v1 endoflife.date/api/v1/products/{produit}, associe la version au cycle de release et en extrait eolFrom. Best-effort (produit inconnu / réseau / timeout → date nulle).
  • Service : eolDate / eolCheckedAt calculés au create/update (recalcul si techno ou version change). Neutralisé en test (NODE_ENV=test) et via ENDOFLIFE_ENABLED=false — aucun appel réseau dans les tests.
  • Front : colonne « Fin de vie » → badge rouge « Fin de vie » si la date est passée, sinon date de fin de support.

Validation

  • 7 tests unitaires du parseur (mapping slug, association version→cycle, extraction date) sans réseau.
  • ✅ Vérification live contre l'API : Node.js 18.0 → 2025-04-30 (périmé), PostgreSQL 14 → 2026-11-12, Inconnu → null.
  • ✅ 14 e2e toujours verts, build back + front OK.

Total tests ajoutés par la PR : 21 (7 unit + 14 e2e).

Comment thread backend/src/technology/utils/endoflife.utils.ts Fixed
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.

[FP8 - ] 👽 Ajouter les informations « Stack technique » et « Licences » à la fiche d’application

3 participants