Files
Suanming-Web/README.md
2026-01-08 18:02:08 +08:00

120 lines
3.1 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.
# Suanming Web Gateway
统一的算命网页入口:后端调用 suanming API 获取原始命理数据,再调用 DeepSeek LLM 输出自然语言解读,前端只需请求 `/api/fortune`
## 功能概览
- `POST /api/fortune`:校验参数 → 调用 `suanming` → 调用 `DeepSeek` → 返回 `ai_text + raw_suanming`
- Express 静态站点单页表单包含示例填充、请求状态、AI 文本展示、原始 JSON 展开、免责声明等。
- Token 自动管理:启动时自动登录获取 Token过期后自动刷新无需人工干预。
- `.env` 控制 suanming、DeepSeek、端口与超时。
## 文件结构
```
Suanming-Web/
├── public/ # 静态前端资源index.html / styles.css / app.js
├── server.js # Express 网关及 API 实现
├── package.json # 项目依赖
└── .env # 环境变量配置
```
## 快速开始
1. **安装依赖**
```bash
cd Suanming-Web
npm install
```
2. **配置环境变量**
```bash
# 创建 .env 文件,填入以下配置
```
```env
# HTTP 监听端口
PORT=4173
# suanming API 配置
SUANMING_API_BASE=http://localhost:3001/api
SUANMING_EMAIL=your-email@example.com
SUANMING_PASSWORD=your-password
SUANMING_TIMEOUT_MS=12000
# DeepSeek API 配置
DEEPSEEK_API_KEY=your-deepseek-api-key
DEEPSEEK_API_URL=https://api.deepseek.com
DEEPSEEK_MODEL=deepseek-chat
DEEPSEEK_TIMEOUT_MS=20000
```
3. **启动服务**
```bash
npm run dev
# 浏览器访问 http://localhost:4173
```
4. **PM2 生产部署**
```bash
pm2 start server.js --name suanming-web
pm2 save
```
## API 说明
```
POST /api/fortune
Content-Type: application/json
```
请求示例:
```json
{
"type": "bazi",
"name": "张三",
"birth_date": "1990-01-01",
"birth_time": "12:00",
"gender": "male",
"is_lunar": false,
"question": "想了解近期事业与财运",
"extra_options": { "focus": "career" }
}
```
返回示例:
```json
{
"success": true,
"data": {
"ai_text": "DeepSeek 的自然语言解读",
"raw_suanming": { "...": "原始 suanming JSON" },
"meta": {
"type": "bazi",
"model": "deepseek-chat",
"elapsed_ms": 2143,
"warnings": []
}
}
}
```
## Token 自动管理
- **启动预热**:服务启动时自动登录获取 Token
- **自动刷新**:请求遇到 401 错误时自动刷新 Token 并重试
- **并发安全**:多个并发请求共用同一个登录 Promise避免重复登录
## 自定义
- DeepSeek 调用通过 `openai` SDK 完成,`.env` 中的 `DEEPSEEK_API_URL` 只需设置到根域名(默认 `https://api.deepseek.com`)。
- 若暂未配置 DeepSeek Key会返回提示并保留 `raw_suanming`,方便调试。
- 如需拓展 `name`、`fortune` 等类型,可在 `server.js` 的 `buildSuanmingRequest` 中补充对应 endpoint/payload。
- 前端使用原生 JS便于在任何环境下部署若后续需要组件化框架可直接复用当前 API。
## 免责声明
页面底部及 DeepSeek Prompt 均包含"仅供娱乐参考"的提示,请在生产部署时继续保留。