Files
Mdeical_Sur_Report/package.json
admin 750cf4129d Add audit log UI and backend API seeded E2E
- Add Auth Context route role guards so doctors cannot directly enter template management, user management, or audit logs.

- Add Audit Logs page, sidebar entry, frontend audit API client, and API client test.

- Add backend audit log query endpoint with super/admin visibility rules and query filtering.

- Extend PostgreSQL integration tests to cover audit log query permissions.

- Move Playwright E2E away from localStorage seed data to real backend API login and seed helpers.

- Add E2E coverage for route guards and audit log visibility.

- Run Playwright backend on port 3100 and proxy Vite API requests there to avoid local port conflicts.

- Make server:dev use the compiled NestJS server path, avoiding tsx parameter-property injection issues.

- Update README, AGENTS, feature, testing, security, deployment, progress, API, backendization, and auth/user module docs.
2026-05-02 02:04:56 +08:00

72 lines
2.1 KiB
JSON

{
"name": "react-example",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite --port=3001 --host=0.0.0.0",
"server:dev": "npm run server:build && node server/dist/main.js",
"server:build": "tsc -p server/tsconfig.json",
"server:start": "node server/dist/main.js",
"build": "vite build",
"preview": "vite preview",
"clean": "rm -rf dist",
"lint": "tsc --noEmit",
"test": "vitest run",
"test:e2e": "playwright test",
"prisma:generate": "prisma generate --schema server/prisma/schema.prisma",
"prisma:migrate": "prisma migrate dev --schema server/prisma/schema.prisma",
"prisma:seed": "prisma db seed --schema server/prisma/schema.prisma"
},
"dependencies": {
"@nestjs/common": "^11.1.19",
"@nestjs/config": "^4.0.4",
"@nestjs/core": "^11.1.19",
"@nestjs/platform-express": "^11.1.19",
"@prisma/adapter-pg": "^7.8.0",
"@prisma/client": "^7.8.0",
"@tailwindcss/vite": "^4.1.14",
"@vitejs/plugin-react": "^5.0.4",
"argon2": "^0.44.0",
"cookie-parser": "^1.4.7",
"diff": "^9.0.0",
"express": "^4.21.2",
"express-session": "^1.19.0",
"lucide-react": "^0.546.0",
"motion": "^12.23.24",
"pg": "^8.20.0",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"react-router-dom": "^7.14.1",
"reflect-metadata": "^0.2.2",
"rxjs": "^7.8.2",
"sanitize-html": "^2.17.3",
"vite": "^6.2.0",
"ws": "^8.20.0",
"zod": "^4.4.1"
},
"devDependencies": {
"@nestjs/testing": "^11.1.19",
"@playwright/test": "^1.59.1",
"@testing-library/jest-dom": "^6.9.1",
"@testing-library/react": "^16.3.2",
"@types/cookie-parser": "^1.4.10",
"@types/express": "^4.17.21",
"@types/express-session": "^1.19.0",
"@types/node": "^22.14.0",
"@types/pg": "^8.20.0",
"@types/sanitize-html": "^2.16.1",
"@types/supertest": "^7.2.0",
"@types/ws": "^8.18.1",
"autoprefixer": "^10.4.21",
"jsdom": "^29.1.1",
"prisma": "^7.8.0",
"supertest": "^7.2.2",
"tailwindcss": "^4.1.14",
"tsx": "^4.21.0",
"typescript": "~5.8.2",
"vite": "^6.2.0",
"vitest": "^4.1.5"
}
}