Files
suanming/docs/LOCAL_DEPLOYMENT.md
patdelphi 71ec3b4615 feat: Update to v3.0.0 with AI-enhanced analysis and documentation cleanup
- Update project version to 3.0.0
- Add AI-enhanced analysis features for Ziwei numerology
- Add detailed star strength explanations (旺/得地/平/不得地/陷)
- Add comprehensive Ming Gong position analysis
- Update all project branding from 三算命 to 神机阁
- Remove outdated Supabase-based documentation
- Update README with latest tech stack and features
- Clean up docs directory, keeping only relevant files
2025-08-20 18:03:32 +08:00

393 lines
8.3 KiB
Markdown
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.
# 本地化部署指南
本文档详细说明如何部署和运行完全本地化的神机阁应用。
## 🎯 本地化改造概述
本项目已从基于Supabase的云端架构完全转换为本地化架构
### 架构变更
- **数据库**: PostgreSQL (Supabase) → SQLite (本地文件)
- **后端**: Supabase Edge Functions → Express.js 服务器
- **认证**: Supabase Auth → JWT + bcrypt
- **API**: Supabase客户端 → 本地API客户端
### 保留功能
- ✅ 完整的八字、紫微、易经分析功能
- ✅ 用户注册、登录、档案管理
- ✅ 历史记录存储和查询
- ✅ 所有业务逻辑和算法
- ✅ 原有的用户界面和体验
## 📋 环境要求
### 系统要求
- Node.js >= 18.0.0
- npm >= 9.0.0 或 pnpm >= 8.0.0
- Git >= 2.0.0
### 检查环境
```bash
node --version # 应该 >= 18.0.0
npm --version # 应该 >= 9.0.0
git --version # 应该 >= 2.0.0
```
## 🚀 快速开始
### 1. 克隆项目
```bash
git clone <repository-url>
cd ai-numerology-refactored
```
### 2. 安装依赖
```bash
npm install
```
### 3. 环境配置
```bash
# 复制环境变量模板
cp .env.example .env
# 编辑环境变量(可选)
# 默认配置已经可以直接使用
```
### 4. 初始化数据库
```bash
npm run db:init
```
执行成功后会看到:
```
🎉 数据库初始化完成!
📍 数据库文件位置: ./numerology.db
✅ 管理员用户创建成功
邮箱: admin@localhost
密码: admin123
✅ 示例数据创建成功
测试用户邮箱: test@example.com
测试用户密码: test123
```
### 5. 启动应用
#### 开发模式(推荐)
```bash
npm run dev
```
这会同时启动后端服务器和前端开发服务器。
#### 分别启动
```bash
# 终端1启动后端服务器
npm run server
# 终端2启动前端开发服务器
npx vite
```
### 6. 访问应用
- 前端地址: http://localhost:5173
- 后端API: http://localhost:3001
- 健康检查: http://localhost:3001/health
## 🔧 配置说明
### 环境变量
#### 前端环境变量
```env
# 本地API服务器地址
VITE_API_BASE_URL=http://localhost:3001/api
```
#### 后端环境变量
```env
# 服务器端口
PORT=3001
# JWT密钥生产环境请更改
JWT_SECRET=your-super-secret-jwt-key-change-in-production
JWT_EXPIRES_IN=7d
# 数据库文件路径
DB_PATH=./numerology.db
# 运行环境
NODE_ENV=development
```
### 数据库配置
数据库文件默认位置:`./numerology.db`
#### 数据库管理命令
```bash
# 初始化数据库
npm run db:init
# 备份数据库
node server/scripts/initDatabase.cjs backup
# 清理过期数据
node server/scripts/initDatabase.cjs cleanup
```
## 🏗️ 项目结构
```
ai-numerology-refactored/
├── server/ # 后端服务器
│ ├── database/ # 数据库相关
│ │ ├── index.cjs # 数据库管理器
│ │ └── schema.sql # 数据库结构
│ ├── middleware/ # 中间件
│ │ ├── auth.cjs # JWT认证
│ │ ├── errorHandler.cjs # 错误处理
│ │ └── logger.cjs # 日志记录
│ ├── routes/ # API路由
│ │ ├── auth.cjs # 认证路由
│ │ ├── analysis.cjs # 分析路由
│ │ ├── history.cjs # 历史记录路由
│ │ └── profile.cjs # 用户档案路由
│ ├── services/ # 业务逻辑服务
│ │ ├── baziAnalyzer.cjs # 八字分析
│ │ ├── yijingAnalyzer.cjs # 易经分析
│ │ └── ziweiAnalyzer.cjs # 紫微分析
│ ├── scripts/ # 工具脚本
│ │ └── initDatabase.cjs # 数据库初始化
│ └── index.cjs # 服务器入口
├── src/ # 前端源码
│ ├── lib/
│ │ └── localApi.ts # 本地API客户端
│ ├── contexts/
│ │ └── AuthContext.tsx # 认证上下文
│ └── ...
├── logic/ # 原始推理逻辑(参考)
├── numerology.db # SQLite数据库文件
├── .env.example # 环境变量模板
└── package.json # 项目配置
```
## 🔐 用户账户
### 预设账户
#### 管理员账户
- 邮箱: `admin@localhost`
- 密码: `admin123`
- 权限: 完整访问权限
#### 测试账户
- 邮箱: `test@example.com`
- 密码: `test123`
- 权限: 普通用户权限
- 包含示例分析记录
### 创建新用户
1. 访问注册页面
2. 填写邮箱和密码
3. 可选填写姓名
4. 点击注册
## 📊 API接口
### 认证接口
- `POST /api/auth/register` - 用户注册
- `POST /api/auth/login` - 用户登录
- `POST /api/auth/logout` - 用户登出
- `GET /api/auth/me` - 获取当前用户信息
### 分析接口
- `POST /api/analysis/bazi` - 八字分析
- `POST /api/analysis/ziwei` - 紫微斗数分析
- `POST /api/analysis/yijing` - 易经占卜分析
- `GET /api/analysis/types` - 获取分析类型
### 历史记录接口
- `GET /api/history` - 获取历史记录
- `GET /api/history/:id` - 获取单个记录
- `DELETE /api/history/:id` - 删除记录
### 用户档案接口
- `GET /api/profile` - 获取用户档案
- `PUT /api/profile` - 更新用户档案
## 🛠️ 开发指南
### 开发模式启动
```bash
# 同时启动前后端(推荐)
npm run dev
# 或分别启动
npm run server # 后端
npx vite # 前端
```
### 代码热重载
- 后端:使用 nodemon 自动重启
- 前端:使用 Vite 热模块替换
### 调试
- 后端日志:控制台输出
- 前端调试:浏览器开发者工具
- API测试可使用 Postman 或 curl
## 🚢 生产部署
### 1. 构建前端
```bash
npm run build
```
### 2. 启动生产服务器
```bash
# 设置生产环境
export NODE_ENV=production
# 启动服务器
npm start
```
### 3. 使用 PM2 管理进程(推荐)
```bash
# 安装 PM2
npm install -g pm2
# 启动应用
pm2 start server/index.cjs --name "numerology-app"
# 查看状态
pm2 status
# 查看日志
pm2 logs numerology-app
```
### 4. 反向代理配置Nginx
```nginx
server {
listen 80;
server_name your-domain.com;
# 前端静态文件
location / {
root /path/to/dist;
try_files $uri $uri/ /index.html;
}
# API代理
location /api {
proxy_pass http://localhost:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
```
## 🔧 故障排除
### 常见问题
#### 1. 数据库初始化失败
```bash
# 删除现有数据库文件
rm numerology.db
# 重新初始化
npm run db:init
```
#### 2. 端口被占用
```bash
# 查看端口占用
netstat -ano | findstr :3001
# 修改端口(在 .env 文件中)
PORT=3002
```
#### 3. 前端无法连接后端
- 检查后端服务器是否启动
- 检查 `VITE_API_BASE_URL` 配置
- 检查防火墙设置
#### 4. JWT token 过期
```bash
# 清除浏览器 localStorage
# 或重新登录
```
### 日志查看
```bash
# 后端日志
npm run server
# 如果使用 PM2
pm2 logs numerology-app
```
## 📈 性能优化
### 数据库优化
- 定期清理过期会话:`node server/scripts/initDatabase.cjs cleanup`
- 数据库备份:`node server/scripts/initDatabase.cjs backup`
### 前端优化
- 构建优化:`npm run build`
- 启用 gzip 压缩
- 使用 CDN 加速静态资源
## 🔒 安全建议
### 生产环境安全
1. **更改默认密码**
```env
JWT_SECRET=your-very-secure-random-string
```
2. **启用 HTTPS**
- 使用 SSL 证书
- 配置安全头
3. **数据库安全**
- 定期备份数据库
- 限制数据库文件访问权限
4. **API安全**
- 实施请求频率限制
- 输入验证和清理
- 错误信息不暴露敏感信息
## 📞 技术支持
### 获取帮助
- 查看项目文档
- 检查 GitHub Issues
- 查看错误日志
### 报告问题
请提供以下信息:
- 操作系统版本
- Node.js 版本
- 错误日志
- 复现步骤
---
## 🎉 恭喜!
您已成功部署本地化的神机阁应用!现在可以:
- 🔮 进行八字、紫微、易经分析
- 👤 管理用户账户和档案
- 📚 查看和管理历史记录
- 🔒 享受完全本地化的数据隐私保护
应用完全运行在本地环境,无需依赖任何外部服务,数据安全可控。