Files
suanming/package.json
patdelphi b0594d5131 feat: Complete AI interpretation system and fix database issues
- Fixed all database connection errors in aiInterpretation.cjs
- Updated better-sqlite3 API calls from callback to sync methods
- Removed AI interpretation buttons from history page
- Added pagination to history page (10 records per page)
- Fixed mobile responsive design for AI interpretation results
- Updated Koyeb deployment configuration to use npm instead of pnpm
- Resolved API limit issues for history records
2025-08-22 15:57:53 +08:00

108 lines
3.6 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"name": "shenjige-numerology",
"private": true,
"version": "3.0.0",
"description": "神机阁 - AI驱动的中华传统命理分析平台提供八字、紫微斗数、易经占卜等专业分析服务",
"type": "module",
"packageManager": "npm@10.0.0",
"scripts": {
"dev": "concurrently \"npm run server\" \"vite\"",
"server": "nodemon server/index.cjs",
"build": "tsc -b && vite build",
"build:prod": "tsc -b && BUILD_MODE=prod vite build",
"lint": "eslint .",
"preview": "vite preview",
"start": "node server/index.cjs",
"db:init": "node server/scripts/initDatabase.cjs",
"test": "node tests/integration.test.cjs",
"test:integration": "node tests/integration.test.cjs"
},
"dependencies": {
"@hookform/resolvers": "^3.10.0",
"@radix-ui/react-accordion": "^1.2.2",
"@radix-ui/react-alert-dialog": "^1.1.4",
"@radix-ui/react-aspect-ratio": "^1.1.1",
"@radix-ui/react-avatar": "^1.1.2",
"@radix-ui/react-checkbox": "^1.1.3",
"@radix-ui/react-collapsible": "^1.1.2",
"@radix-ui/react-context-menu": "^2.2.4",
"@radix-ui/react-dialog": "^1.1.4",
"@radix-ui/react-dropdown-menu": "^2.1.4",
"@radix-ui/react-hover-card": "^1.1.4",
"@radix-ui/react-label": "^2.1.1",
"@radix-ui/react-menubar": "^1.1.4",
"@radix-ui/react-navigation-menu": "^1.2.3",
"@radix-ui/react-popover": "^1.1.4",
"@radix-ui/react-progress": "^1.1.1",
"@radix-ui/react-radio-group": "^1.2.2",
"@radix-ui/react-scroll-area": "^1.2.2",
"@radix-ui/react-select": "^2.1.4",
"@radix-ui/react-separator": "^1.1.1",
"@radix-ui/react-slider": "^1.2.2",
"@radix-ui/react-slot": "^1.1.1",
"@radix-ui/react-switch": "^1.1.2",
"@radix-ui/react-tabs": "^1.1.2",
"@radix-ui/react-toast": "^1.2.4",
"@radix-ui/react-toggle": "^1.1.1",
"@radix-ui/react-toggle-group": "^1.1.1",
"@radix-ui/react-tooltip": "^1.1.6",
"bcryptjs": "^2.4.3",
"better-sqlite3": "^12.2.0",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"cmdk": "1.0.0",
"concurrently": "^8.2.2",
"cors": "^2.8.5",
"date-fns": "^3.0.0",
"embla-carousel-react": "^8.5.2",
"express": "^4.18.2",
"helmet": "^7.1.0",
"html2canvas": "^1.4.1",
"input-otp": "^1.4.2",
"jsonwebtoken": "^9.0.2",
"jspdf": "^3.0.1",
"lucide-react": "^0.364.0",
"next-themes": "^0.4.4",
"nodemon": "^3.0.2",
"puppeteer": "^24.17.0",
"react": "^18.3.1",
"react-day-picker": "8.10.1",
"react-dom": "^18.3.1",
"react-hook-form": "^7.54.2",
"react-markdown": "^10.1.0",
"react-resizable-panels": "^2.1.7",
"react-router-dom": "^6",
"recharts": "^2.12.4",
"remark-gfm": "^4.0.1",
"sonner": "^1.7.2",
"tailwind-merge": "^2.6.0",
"tailwindcss-animate": "^1.0.7",
"vaul": "^1.1.2",
"zod": "^3.24.1"
},
"devDependencies": {
"@eslint/js": "^9.15.0",
"@types/bcryptjs": "^2.4.6",
"@types/cors": "^2.8.17",
"@types/express": "^4.17.21",
"@types/jsonwebtoken": "^9.0.5",
"@types/node": "^22.10.7",
"@types/react": "^18.3.12",
"@types/react-dom": "^18.3.1",
"@types/react-router-dom": "^5",
"@vitejs/plugin-react": "^4.3.4",
"autoprefixer": "10.4.20",
"eslint": "^9.15.0",
"eslint-plugin-react-hooks": "^5.0.0",
"eslint-plugin-react-refresh": "^0.4.14",
"globals": "^15.12.0",
"node-fetch": "^2.7.0",
"postcss": "8.4.49",
"tailwindcss": "v3.4.16",
"typescript": "~5.6.2",
"typescript-eslint": "^8.15.0",
"vite": "^6.0.1",
"vite-plugin-source-info": "^1.0.0"
}
}