feat: AI沙箱流式对话+引导学习+静态服务优化

- 后端: AI沙箱流式对话(SSE), reasoning_content 回退支持
- 前端: 沙箱页流式渲染, 引导学习面板, 默认场景/Starter兜底
- 优化: 前端改用静态文件服务器(node server.js)替代next dev, CSS永不丢失
- 修复: 通用模型默认改为可用模型, predev不再删.next缓存
This commit is contained in:
yuzhiran-dev
2026-05-27 18:26:30 +08:00
parent 0b66d752ce
commit 417fb266d4
14 changed files with 947 additions and 203 deletions
+41
View File
@@ -66,3 +66,44 @@
- 沙盒 JWT 认证保留
- Mock 支付自动完成闭环,无需手动触发回调;真实微信支付上线后自动切换
- 运营助手采用 Tool Calling 架构:system prompt 描述工具 → AI 返回 JSON 工具调用 → 后端执行 → 结果喂回 AI 总结 → 展示给用户
## 2026-05-27 Session
### Changes Made
- **Fixed OpenAI default model**: Changed `OPENAI_MODEL` in `.env` from `meituan/longcat-flash-lite` (invalid, returned 400) to `deepseek/deepseek-v4-flash` (confirmed working on qnaigc API). The "通用模式" (general model) now returns real AI responses instead of mock fallback.
- **Fixed empty content handling**: Updated `OpenAICompatibleProvider.chat()` to fall back to `reasoning_content` when `content` is empty (SenseNova models return content in `reasoning_content`). Same fix applied in `chatStream()` for delta content.
### Verification
- Backend successfully registers: `OpenAI 兼容接口已注册: deepseek/deepseek-v4-flash`
- 5 test chat requests to `POST /api/v1/sandbox/chat` with `model:"general"` all returned 201 in 1.3-12.7s (vs. previous mock/fallback)
- No more `AIGatewayService` "调用失败" errors in logs for OpenAI provider
- Backend runs under PM2 (v7.0.1), managed via `pm2 restart backend --update-env`
### Known Issues
- SenseNova API (`token.sensenova.cn`) still returns 404 "model is not found" for `deepseek-v4-flash` et al — models might need different naming on that endpoint
- Server: backend `node dist/main.js` on port 4000, frontend Next.js on port 3000, both managed by PM2
### 2026-05-27 后续优化
**彻底修复 CSS 丢失问题**
根本原因:PM2 用 `npm run dev``next dev`)运行前端,每次重启都会重新编译,`.next` 缓存被销毁导致 CSS 丢失。
解决方案:改用 `output: 'export'` 静态导出 + 独立 HTTP 服务器。
| 文件 | 变更 |
|------|------|
| `frontend/server.js` | **新增** — Node.js 静态文件服务器,支持 Next.js 静态导出 URL 模式(`/about``about.html`),CSS/JS 缓存一年,HTML 不缓存 |
| `ecosystem.config.js` | 前端从 `npm run dev` 改为 `node server.js`NODE_ENV=production |
| `frontend/package.json` | `predev` 改为仅删 `out/`,不再删 `.next/` |
部署流程:
1. `npm run build` → 生成 `out/` 静态目录
2. PM2 运行 `node server.js` → 直接提供静态文件
3. 重启后 CSS 不变,无需重新编译
当前状态:
- 前端 `localhost:3000` (static server, 无编译延迟)
- 后端 `localhost:4000` (NestJS)
- 所有路由正常 (/, /about, /sandbox 均为 200)
- CSS 持久化,重启后不丢失