mirror of
https://github.com/siop-spelev/siop2.git
synced 2026-08-08 12:41:54 +00:00
- Stock : alertes sous seuil (strie ambre), « Préparer le BC » sur la ligne ; fiche pièce où les mouvements SONT le stock (entrée / ajustement motivé) - Bons de commande : liste + panneau (envoi, annulation, réception → entrées de stock à PU figé) ; création préremplie depuis l'alerte de seuil - Fiche OT : carte « Pièces & main-d'œuvre » réelle (consommation à prix figé annoncé avant le clic, temps au taux figé) + carte Documents (upload/download) ; même carte Documents sur la fiche ascenseur - Statistiques : 4 KPI, pannes par organe (bilans codés), coûts par mois, top équipements ; le tableau de bord allume « Pannes par organe » - Tiers, bibliothèque (upload rattaché, filtre par type), taux horaire éditable dans Personnes ; nav Ressources/Pilotage activée par la matrice - Recette R3 Playwright (2 parcours autonomes) ; cleanup-e2e étendu aux entités R3 ; le formulaire BC attend la fin du refetch (stock périmé en cache) 13/13 e2e verts. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
61 lines
2.4 KiB
TypeScript
61 lines
2.4 KiB
TypeScript
/** Purge des données créées par les parcours Playwright (motifs dédiés).
|
|
* Appelé par le globalSetup e2e — la base locale reste propre entre les runs. */
|
|
import 'dotenv/config';
|
|
import { PrismaClient } from '@prisma/client';
|
|
|
|
const prisma = new PrismaClient();
|
|
|
|
async function main() {
|
|
// R3 — d'abord les traces de gestion (les mouvements liés à un OT E2E
|
|
// seraient orphelins après sa suppression et fausseraient les stocks seedés)
|
|
await prisma.stockMovement.deleteMany({
|
|
where: {
|
|
OR: [
|
|
{ part: { designation: { contains: 'E2E' } } },
|
|
{ workOrder: { title: { contains: 'E2E' } } },
|
|
{ purchaseOrder: { supplier: { name: { contains: 'E2E' } } } },
|
|
],
|
|
},
|
|
});
|
|
await prisma.document.deleteMany({
|
|
where: {
|
|
OR: [
|
|
{ fileName: { contains: 'e2e' } },
|
|
{ workOrder: { title: { contains: 'E2E' } } },
|
|
],
|
|
},
|
|
});
|
|
await prisma.purchaseOrderLine.deleteMany({
|
|
where: {
|
|
OR: [
|
|
{ part: { designation: { contains: 'E2E' } } },
|
|
{ purchaseOrder: { supplier: { name: { contains: 'E2E' } } } },
|
|
],
|
|
},
|
|
});
|
|
await prisma.purchaseOrder.deleteMany({
|
|
where: { supplier: { name: { contains: 'E2E' } } },
|
|
});
|
|
await prisma.part.deleteMany({ where: { designation: { contains: 'E2E' } } });
|
|
await prisma.partner.deleteMany({ where: { name: { contains: 'E2E' } } });
|
|
|
|
await prisma.request.deleteMany({ where: { description: { contains: 'E2E' } } });
|
|
await prisma.workOrder.deleteMany({ where: { title: { contains: 'E2E' } } });
|
|
await prisma.meterReading.deleteMany({ where: { value: { gte: 90_000_000 } } });
|
|
// Un appareil de test peut avoir reçu grilles/demandes (génération du mois) :
|
|
// on purge ses dépendances avant lui (FK RESTRICT).
|
|
await prisma.request.deleteMany({ where: { asset: { reference: { startsWith: 'E2E-' } } } });
|
|
await prisma.workOrder.deleteMany({ where: { asset: { reference: { startsWith: 'E2E-' } } } });
|
|
await prisma.asset.deleteMany({ where: { reference: { startsWith: 'E2E-' } } });
|
|
await prisma.location.deleteMany({ where: { name: { contains: 'E2E' }, parentId: { not: null } } });
|
|
await prisma.location.deleteMany({ where: { name: { contains: 'E2E' } } });
|
|
await prisma.user.deleteMany({ where: { email: { startsWith: 'recrue-' } } });
|
|
}
|
|
|
|
main()
|
|
.catch((e) => {
|
|
console.error(e);
|
|
process.exitCode = 1;
|
|
})
|
|
.finally(() => prisma.$disconnect());
|