mirror of
https://github.com/MaksTinyWorkshop/_Assistant_Lead_Tech
synced 2026-04-06 21:41:42 +02:00
Lead_tech: intégrer capitalisations (24-03-2026)
Backend — Risques & vigilance: - Code d’erreur générique sur 409 (conflict) — +index/+ancre/+section - Tests e2e d’autorisation avec buildApp isolé — +index/+ancre/+section - MAJ date Frontend — Risques & vigilance: - Guard de rôle via return conditionnel dans le render — +index/+ancre/+section - Méthodes Zustand sans rethrow — +index/+ancre/+section - Regex globale singleton (/g) — +index/+ancre/+section - MAJ date Divers: - Purge 95_a_capitaliser.md (tampon vidé)
This commit is contained in:
@@ -8,7 +8,7 @@ Ce fichier recense des risques back-end susceptibles de provoquer :
|
||||
- régressions coûteuses,
|
||||
- incohérences de données.
|
||||
|
||||
Dernière mise à jour : 23-03-2026
|
||||
Dernière mise à jour : 24-03-2026
|
||||
|
||||
---
|
||||
|
||||
@@ -64,6 +64,8 @@ Dernière mise à jour : 23-03-2026
|
||||
- [Redirect vers la page désactivée elle-même (boucle infinie feature flags)](#risque-redirect-boucle-infinie)
|
||||
- [Champ `tenantId` sans FK ni relation Prisma vers `Tenant`](#risque-tenantid-sans-fk-relation)
|
||||
- [NestJS `@UseGuards(AdminRoleGuard)` sans `@RequireAdminRole()` — silencieusement ouvert](#risque-adminroleguard-sans-decorateur)
|
||||
- [Code d’erreur générique sur 409 (conflict)](#risque-code-erreur-generique-409)
|
||||
- [Tests e2e d’autorisation avec buildApp isolé](#risque-e2e-autorisation-buildapp-isole)
|
||||
|
||||
---
|
||||
|
||||
@@ -1093,3 +1095,51 @@ async showcaseThread(...): Promise<CurationResponse> { ... }
|
||||
```
|
||||
|
||||
- Contexte technique : NestJS / Zod / contracts-first — app-alexandrie 23-03-2026
|
||||
|
||||
---
|
||||
|
||||
<a id="risque-code-erreur-generique-409"></a>
|
||||
## Code d’erreur générique sur 409 (conflict)
|
||||
|
||||
### Risques
|
||||
|
||||
- Erreurs indistinguables côté client et monitoring
|
||||
- Tests/automatisations incapables de réagir à des cas métier distincts
|
||||
|
||||
### Symptômes
|
||||
|
||||
- Utilisation de codes génériques (ex: `VALIDATION_ERROR`, `INTERNAL_ERROR`) pour des 409 CONFLICT
|
||||
- Impossibilité de distinguer “alias déjà pris” vs “autre conflit métier” côté client
|
||||
|
||||
### Bonnes pratiques / mitigations
|
||||
|
||||
- 1 scénario métier distinct = 1 code d’erreur dédié (ex: `ALIAS_ALREADY_RESOLVED`, `HANDLE_ALREADY_TAKEN`)
|
||||
- Centraliser les codes dans `error-code.ts` et les mapper systématiquement
|
||||
|
||||
---
|
||||
|
||||
<a id="risque-e2e-autorisation-buildapp-isole"></a>
|
||||
## Tests e2e d’autorisation avec buildApp isolé
|
||||
|
||||
### Risques
|
||||
|
||||
- Scénarios non‑abonné / droits inactifs impossibles à tester si le `buildApp` partagé active des entitlements en `beforeAll`
|
||||
- Pollution croisée des tests e2e par partage d’instance
|
||||
|
||||
### Symptômes
|
||||
|
||||
- Impossible de reproduire un 403 “non abonné” dans un `describe` qui mocke des droits actifs globalement
|
||||
|
||||
### Bonnes pratiques / mitigations
|
||||
|
||||
- Créer une instance isolée pour les scénarios alternatifs:
|
||||
|
||||
```ts
|
||||
const app = await buildApp({
|
||||
getEntitlementsForUser: jest.fn().mockResolvedValue({ subscription: { isActive: false, ... } })
|
||||
});
|
||||
// ... test ...
|
||||
await app.close();
|
||||
```
|
||||
|
||||
- Ne pas surcharger un mock global partagé; préférer un `buildApp` dédié par scénario
|
||||
|
||||
Reference in New Issue
Block a user