Aller au contenu

Liste admin des demandes de financement (BO Projets)

GET /administration/project-financing-request (AdminAuthGuard) liste les dossiers Espace Financement pour la page « Demandes de financement » du BO Projets (BRI-2196). Pagination côté serveur : 8 500 dossiers Bubble à reprendre, +20 par jour.

Source : project-financing-request-administration.controller.ts, contrat getProjectFinancingRequests.endpoint.ts (api-communication-bricksoffice).

Query

  • offset / take (défaut 100, max 200 = TABLE_PAGE_SIZES du BO).
  • q : ILIKE sur nom, id, business id, société porteuse, email du créateur. % et _ saisis sont échappés (recherche littérale).
  • status et category : paramètres répétés (status=a&status=b), une valeur seule arrive en string.
  • createdOn : jour civil YYYY-MM-DD lu at time zone 'Europe/Paris'.
  • sort : whitelist createdAt|name|status × asc|desc, défaut createdAt:desc. id DESC ajouté en second critère pour une pagination stable.

Réponse

{ items, totalCount }. Le contrat n'expose que ce que le BO rend : id, businessId, projectId, name, category, companyName, leiExpiresAt, status, creatorEmail, createdAt.

  • Nom et catégorie viennent de la présentation (absents en draft, nullif(trim(name), '') côté SQL).
  • projectId = projectId_view, l'id projet réservé à la création (BRI-1549) : toujours présent, c'est la clé d'URL de la fiche Projet, que la row properties existe ou non.
  • Business id vient de properties (dossiers financés seulement).
  • Société et LEI viennent de project_owner_company ; leiExpiresAt = leiObtainedAt + 1 an, dérivé par computeLeiExpiresAt (business/), le repo renvoie leiObtainedAt.
  • creatorEmail = better_auth_user.email du createdByUserId via project_financing_request_user — le créateur n'est pas forcément le représentant.

Choix

  • Sans présign S3 : le listing PDP présigne une image par ligne, ne pas le réutiliser.
  • Pas d'index dédié : 8 500 lignes, un seq scan suffit.
  • Le validateur de row est inliné dans listForAdministration (projection admin, uuidv7_zod local ; ProjectFinancingRequestPgSchema.id reste z.uuid()).