From 531b4b2302c7d85110a555c6856163af89117931 Mon Sep 17 00:00:00 2001 From: Kevin Wong Date: Thu, 8 Jan 2026 18:02:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 44 ++++++++++++++++++++++++++++++++++++-------- 1 file changed, 36 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 571e564..75c11f7 100644 --- a/README.md +++ b/README.md @@ -6,30 +6,47 @@ - `POST /api/fortune`:校验参数 → 调用 `suanming` → 调用 `DeepSeek` → 返回 `ai_text + raw_suanming`。 - Express 静态站点:单页表单,包含示例填充、请求状态、AI 文本展示、原始 JSON 展开、免责声明等。 -- `.env` 控制 suanming、DeepSeek、端口与超时,示例参见 [.env.example](./.env.example)。 +- Token 自动管理:启动时自动登录获取 Token,过期后自动刷新,无需人工干预。 +- `.env` 控制 suanming、DeepSeek、端口与超时。 ## 文件结构 ``` -web/ +Suanming-Web/ ├── public/ # 静态前端资源(index.html / styles.css / app.js) ├── server.js # Express 网关及 API 实现 ├── package.json # 项目依赖 -└── .env.example # 环境变量模板 +└── .env # 环境变量配置 ``` ## 快速开始 1. **安装依赖** ```bash - cd web + cd Suanming-Web npm install ``` 2. **配置环境变量** ```bash - cp .env.example .env - # 修改 .env,填入真实的 suanming 地址、访问令牌以及 DeepSeek Key + # 创建 .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. **启动服务** @@ -38,6 +55,12 @@ web/ # 浏览器访问 http://localhost:4173 ``` +4. **PM2 生产部署** + ```bash + pm2 start server.js --name suanming-web + pm2 save + ``` + ## API 说明 ``` @@ -78,14 +101,19 @@ Content-Type: application/json } ``` +## Token 自动管理 + +- **启动预热**:服务启动时自动登录获取 Token +- **自动刷新**:请求遇到 401 错误时自动刷新 Token 并重试 +- **并发安全**:多个并发请求共用同一个登录 Promise,避免重复登录 + ## 自定义 - DeepSeek 调用通过 `openai` SDK 完成,`.env` 中的 `DEEPSEEK_API_URL` 只需设置到根域名(默认 `https://api.deepseek.com`)。 -- 若你的 suanming API 启用了认证,把登录后拿到的 Bearer token 填入 `SUANMING_API_TOKEN`,网关会自动加到 `Authorization` 头。 - 若暂未配置 DeepSeek Key,会返回提示并保留 `raw_suanming`,方便调试。 - 如需拓展 `name`、`fortune` 等类型,可在 `server.js` 的 `buildSuanmingRequest` 中补充对应 endpoint/payload。 - 前端使用原生 JS,便于在任何环境下部署,若后续需要组件化框架,可直接复用当前 API。 ## 免责声明 -页面底部及 DeepSeek Prompt 均包含“仅供娱乐参考”的提示,请在生产部署时继续保留。 +页面底部及 DeepSeek Prompt 均包含"仅供娱乐参考"的提示,请在生产部署时继续保留。