1G.1: 3 supervisor M2 producers (reminder/escalation/report) migrated to RouterService with feature flag ROUTER_USE_FOR_SUPERVISOR 1G.2: Soak report script (npm run router:soak-report) — 7-point analysis 1G.3: Admin dashboard NotificationDeliveriesTab (KPIs + filterable table + detail drawer) 1G.4: NotificationHelper dual-dispatch bridge (NOTIFICATION_HELPER_ROUTER flag, best-effort) 1G.5: Legacy /notifications sidebar + page removed, routes redirect to /agenda 1G.6: PushSubscription weekly cleanup cron (failureCount >= 5 OR stale > 90d) 1G.7: LEGACY-NOTIFICATIONS-DEBT.md documentation 1G.8: 10 Vitest tests (4 supervisor + 3 dual-dispatch + 2 feature flag + 1 cleanup) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
70 lines
2.1 KiB
JSON
70 lines
2.1 KiB
JSON
{
|
|
"name": "metallkart-erp",
|
|
"version": "1.0.0",
|
|
"type": "module",
|
|
"scripts": {
|
|
"build": "tsc",
|
|
"start": "node dist/server.js",
|
|
"dev": "tsx src/server.ts",
|
|
"prisma:migrate": "prisma migrate dev",
|
|
"prisma:generate": "prisma generate",
|
|
"prisma:seed": "tsx src/seed.ts",
|
|
"test:e2e:setup": "cross-env dotenv_config_path=.env.test tsx tests/e2e/seed-test.ts",
|
|
"test:e2e": "playwright test",
|
|
"test:e2e:headed": "playwright test --headed",
|
|
"test:e2e:ui": "playwright test --ui",
|
|
"test:e2e:debug": "playwright test --debug",
|
|
"test": "vitest run",
|
|
"seed:payment-templates": "tsx prisma/seeds/payment-templates.seed.ts",
|
|
"router:soak-report": "tsx scripts/router-soak-report.ts"
|
|
},
|
|
"dependencies": {
|
|
"@anthropic-ai/sdk": "^0.96.0",
|
|
"@fastify/cookie": "^9.3.1",
|
|
"@fastify/jwt": "^8.0.1",
|
|
"@fastify/multipart": "^8.3.1",
|
|
"@fastify/static": "^7.0.4",
|
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
"@prisma/client": "^5.22.0",
|
|
"@types/nodemailer": "^7.0.11",
|
|
"@types/pdfkit": "^0.17.5",
|
|
"@types/qrcode": "^1.5.6",
|
|
"adm-zip": "^0.5.16",
|
|
"bcryptjs": "^2.4.3",
|
|
"exceljs": "^4.4.0",
|
|
"fastify": "^4.28.1",
|
|
"fastify-plugin": "^4.5.1",
|
|
"file-type": "^22.0.1",
|
|
"handlebars": "^4.7.9",
|
|
"imapflow": "^1.2.15",
|
|
"jsonwebtoken": "^9.0.2",
|
|
"marked": "^18.0.4",
|
|
"node-cron": "^4.2.1",
|
|
"node-telegram-bot-api": "^0.67.0",
|
|
"nodemailer": "^8.0.2",
|
|
"pdf-parse": "^2.4.5",
|
|
"pdfkit": "^0.18.0",
|
|
"qrcode": "^1.5.4",
|
|
"web-push": "^3.6.7",
|
|
"xlsx": "^0.18.5",
|
|
"xstate": "^5.28.0",
|
|
"zod": "^3.23.8"
|
|
},
|
|
"devDependencies": {
|
|
"@playwright/test": "^1.58.2",
|
|
"@types/adm-zip": "^0.5.8",
|
|
"@types/bcryptjs": "^2.4.6",
|
|
"@types/jsonwebtoken": "^9.0.7",
|
|
"@types/node": "^20.17.6",
|
|
"@types/node-cron": "^3.0.11",
|
|
"@types/node-telegram-bot-api": "^0.64.14",
|
|
"cross-env": "^10.1.0",
|
|
"dotenv": "^17.4.2",
|
|
"prisma": "^5.22.0",
|
|
"sharp": "^0.34.5",
|
|
"tsx": "^4.19.1",
|
|
"typescript": "^5.6.3",
|
|
"vitest": "^4.1.5"
|
|
}
|
|
}
|