Nouvelles fonctionnalités : 1. Filtres par statut d'export : - Boutons de filtre rapide (Tous/Exportés/Non exportés/Erreurs) - Compteurs dynamiques pour chaque statut - Couleurs distinctives (vert/bleu/rouge) 2. Export Excel : - Nouveau bouton "Excel" dans la page Factures - Génération automatique de fichier .xlsx avec toutes les métadonnées - Colonnes : Fournisseur, N° Facture, Date, N° BL, N° Commande, Montant, Score, Statut, Dates 3. Page de détail de facture (/invoices/:id) : - Visualisation PDF intégrée dans iframe - Affichage des métadonnées extraites - Mode édition avec formulaire complet - Recalcul automatique du score de qualité après édition - Marquage "Modifié manuellement" - Badges de statut et qualité - Lien cliquable sur le nom du fournisseur dans la liste L'application offre maintenant une expérience complète de gestion des factures avec filtrage avancé, exports multiples et édition manuelle.
125 lines
4.1 KiB
JSON
125 lines
4.1 KiB
JSON
{
|
|
"name": "invoice_analyzer_v1",
|
|
"version": "1.0.0",
|
|
"type": "module",
|
|
"license": "MIT",
|
|
"scripts": {
|
|
"dev": "NODE_ENV=development tsx watch server/_core/index.ts",
|
|
"build": "vite build && esbuild server/_core/index.ts --platform=node --packages=external --bundle --format=esm --outdir=dist",
|
|
"start": "NODE_ENV=production node dist/index.js",
|
|
"check": "tsc --noEmit",
|
|
"format": "prettier --write .",
|
|
"test": "vitest run",
|
|
"db:push": "drizzle-kit generate && drizzle-kit migrate"
|
|
},
|
|
"dependencies": {
|
|
"@aws-sdk/client-s3": "^3.693.0",
|
|
"@aws-sdk/s3-request-presigner": "^3.693.0",
|
|
"@azure/msal-node": "^3.8.4",
|
|
"@hookform/resolvers": "^5.2.2",
|
|
"@radix-ui/react-accordion": "^1.2.12",
|
|
"@radix-ui/react-alert-dialog": "^1.1.15",
|
|
"@radix-ui/react-aspect-ratio": "^1.1.7",
|
|
"@radix-ui/react-avatar": "^1.1.10",
|
|
"@radix-ui/react-checkbox": "^1.3.3",
|
|
"@radix-ui/react-collapsible": "^1.1.12",
|
|
"@radix-ui/react-context-menu": "^2.2.16",
|
|
"@radix-ui/react-dialog": "^1.1.15",
|
|
"@radix-ui/react-dropdown-menu": "^2.1.16",
|
|
"@radix-ui/react-hover-card": "^1.1.15",
|
|
"@radix-ui/react-label": "^2.1.7",
|
|
"@radix-ui/react-menubar": "^1.1.16",
|
|
"@radix-ui/react-navigation-menu": "^1.2.14",
|
|
"@radix-ui/react-popover": "^1.1.15",
|
|
"@radix-ui/react-progress": "^1.1.7",
|
|
"@radix-ui/react-radio-group": "^1.3.8",
|
|
"@radix-ui/react-scroll-area": "^1.2.10",
|
|
"@radix-ui/react-select": "^2.2.6",
|
|
"@radix-ui/react-separator": "^1.1.7",
|
|
"@radix-ui/react-slider": "^1.3.6",
|
|
"@radix-ui/react-slot": "^1.2.3",
|
|
"@radix-ui/react-switch": "^1.2.6",
|
|
"@radix-ui/react-tabs": "^1.1.13",
|
|
"@radix-ui/react-toggle": "^1.1.10",
|
|
"@radix-ui/react-toggle-group": "^1.1.11",
|
|
"@radix-ui/react-tooltip": "^1.2.8",
|
|
"@tanstack/react-query": "^5.90.2",
|
|
"@trpc/client": "^11.6.0",
|
|
"@trpc/react-query": "^11.6.0",
|
|
"@trpc/server": "^11.6.0",
|
|
"@types/bcrypt": "^6.0.0",
|
|
"@types/jsonwebtoken": "^9.0.10",
|
|
"@types/ssh2-sftp-client": "^9.0.6",
|
|
"axios": "^1.12.0",
|
|
"bcrypt": "^6.0.0",
|
|
"class-variance-authority": "^0.7.1",
|
|
"clsx": "^2.1.1",
|
|
"cmdk": "^1.1.1",
|
|
"cookie": "^1.0.2",
|
|
"date-fns": "^4.1.0",
|
|
"dotenv": "^17.2.2",
|
|
"drizzle-orm": "^0.44.5",
|
|
"embla-carousel-react": "^8.6.0",
|
|
"express": "^4.21.2",
|
|
"framer-motion": "^12.23.22",
|
|
"input-otp": "^1.4.2",
|
|
"jose": "6.1.0",
|
|
"jsonwebtoken": "^9.0.3",
|
|
"lucide-react": "^0.453.0",
|
|
"mysql2": "^3.15.0",
|
|
"nanoid": "^5.1.5",
|
|
"next-themes": "^0.4.6",
|
|
"pdf-lib": "^1.17.1",
|
|
"react": "^19.2.1",
|
|
"react-day-picker": "^9.11.1",
|
|
"react-dom": "^19.2.1",
|
|
"react-hook-form": "^7.64.0",
|
|
"react-pdf": "^10.3.0",
|
|
"react-resizable-panels": "^3.0.6",
|
|
"recharts": "^2.15.2",
|
|
"sonner": "^2.0.7",
|
|
"ssh2-sftp-client": "^12.0.1",
|
|
"streamdown": "^1.4.0",
|
|
"superjson": "^1.13.3",
|
|
"tailwind-merge": "^3.3.1",
|
|
"tailwindcss-animate": "^1.0.7",
|
|
"vaul": "^1.1.2",
|
|
"wouter": "^3.3.5",
|
|
"xlsx": "^0.18.5",
|
|
"zod": "^4.1.12"
|
|
},
|
|
"devDependencies": {
|
|
"@builder.io/vite-plugin-jsx-loc": "^0.1.1",
|
|
"@tailwindcss/typography": "^0.5.15",
|
|
"@tailwindcss/vite": "^4.1.3",
|
|
"@types/express": "4.17.21",
|
|
"@types/google.maps": "^3.58.1",
|
|
"@types/node": "^24.7.0",
|
|
"@types/react": "^19.2.1",
|
|
"@types/react-dom": "^19.2.1",
|
|
"@vitejs/plugin-react": "^5.0.4",
|
|
"add": "^2.0.6",
|
|
"autoprefixer": "^10.4.20",
|
|
"drizzle-kit": "^0.31.4",
|
|
"esbuild": "^0.25.0",
|
|
"pnpm": "^10.15.1",
|
|
"postcss": "^8.4.47",
|
|
"prettier": "^3.6.2",
|
|
"tailwindcss": "^4.1.14",
|
|
"tsx": "^4.19.1",
|
|
"tw-animate-css": "^1.4.0",
|
|
"typescript": "5.9.3",
|
|
"vite": "^7.1.7",
|
|
"vite-plugin-manus-runtime": "^0.0.57",
|
|
"vitest": "^2.1.4"
|
|
},
|
|
"packageManager": "pnpm@10.4.1+sha512.c753b6c3ad7afa13af388fa6d808035a008e30ea9993f58c6663e2bc5ff21679aa834db094987129aa4d488b86df57f7b634981b2f827cdcacc698cc0cfb88af",
|
|
"pnpm": {
|
|
"patchedDependencies": {
|
|
"wouter@3.7.1": "patches/wouter@3.7.1.patch"
|
|
},
|
|
"overrides": {
|
|
"tailwindcss>nanoid": "3.3.7"
|
|
}
|
|
}
|
|
} |