Files
ai-learning-platform/docs/progress.md
T
yuzhiran-dev 417fb266d4 feat: AI沙箱流式对话+引导学习+静态服务优化
- 后端: AI沙箱流式对话(SSE), reasoning_content 回退支持
- 前端: 沙箱页流式渲染, 引导学习面板, 默认场景/Starter兜底
- 优化: 前端改用静态文件服务器(node server.js)替代next dev, CSS永不丢失
- 修复: 通用模型默认改为可用模型, predev不再删.next缓存
2026-05-27 18:26:30 +08:00

6.2 KiB
Raw Blame History

项目进度追踪

当前阶段:P3 — 体验增强

Phase 1-3 — 全部完成

P0 — 全局优化(全部完成

子项 说明 状态
P0a i18n 基础设施 + 翻译文件 + LanguageProvider + useT hook
P0b UI 统一 — Design Token + 共享组件库
P0c 逐页翻译 + 语言切换 — 沙盒页面 useT 化
P0d 会员定价页重构(用量可视化)
P0e 模型选择器升级(卡片式 + 能力标签)
P0f 会话分享链接 — HMAC 签名 + 分享查看页

P1 — 学习技能包(全部完成

子项 说明 状态
后端 SkillsModule + 8 技能定义 + 过滤/详情 API
前端 /skills 市场 + /skills/[id] 详情 + header 入口
沙盒集成 替代硬编码 SCENES,从 API 动态加载,?skill=xxx 支持

P2 — CSS 统一(全部完成

子项 说明 状态
Mobile variables.css Design Token 变量定义(Web/Mobile 统一)
Mobile 全站 18 页 批量替换 hardcoded color → CSS vars
PC 响应式 header/compare/sandbox/member/workshop 移动端修复

P3 — 体验增强(全部完成

优先级 项目 说明 状态
P4a 多模态 — 图片上传 + 沙盒 Vision 完成
P4b 代码语法高亮 highlight.js + CodeBlock 组件
P3c 会话重命名 PATCH endpoint + 双击编辑
SDK / 共享 UI 包 远期规划 📋

参考来源

  • opencode 源码克隆到 /tmp/opencode-source/21 packages, 147MB

P4 — 支付闭环(进行中 🔄

子项 说明 状态
P4a Mock 支付自动完成 — PaymentService.completeMockPayment() + OrdersService 检测 mock 结果后自动调用
P4b 会员页面 mock 提示优化 — 显示"订阅成功"而非"请扫码支付"
P4c 真实微信支付证书部署 — 商户证书/密钥已安装到 backend/cert/key/,参数与 .env 一致
P4d 下单切 NATIVE 扫码支付 — 默认 tradeType: 'NATIVE',前端展示二维码 Modal + 轮询支付状态
P4e JSAPI 支付集成 — 检测微信环境 + openid,在 Mini Program web-view 内自动调起 WeixinJSBridge;其他场景 NATIVE 兜底
订阅到期提醒 / 自动续费 📋 远期
获取公众号 appid 后补充 Web OAuth 流程 📋 待定

P5 — 运营助手(已完成

子项 说明 状态
P5a 新增 POST /admin/ai-assistant/chat 端点 — 管理员专用 AI 聊天,使用 AdminGuard
P5b 新增 AdminAiAssistantService — 19 个可执行工具定义(查看数据/用户管理/评论审核/状态切换等)
P5c 新增 POST /admin/ai-assistant/action 端点 — 工具执行 + AI 自然语言总结
P5d 前端运营助手改造 — Tool Calling 架构,AI 自动识别用户意图→调用工具→解释结果→展示
P5e system prompt 动态注入可用工具列表,覆盖仪表盘/用户/订单/评论/Banner/通知/配置/角色/企业版等

关键决策

  • frontend/src/lib/models.ts 作为模型列表单数据源
  • 所有颜色使用 CSS 变量(text-foreground/text-muted-foreground/bg-card/bg-muted/border-border
  • nest build 正常产出(--tsc 遗漏 prisma 模块)
  • 沙盒 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 devnext dev)运行前端,每次重启都会重新编译,.next 缓存被销毁导致 CSS 丢失。

解决方案:改用 output: 'export' 静态导出 + 独立 HTTP 服务器。

文件 变更
frontend/server.js 新增 — Node.js 静态文件服务器,支持 Next.js 静态导出 URL 模式(/aboutabout.html),CSS/JS 缓存一年,HTML 不缓存
ecosystem.config.js 前端从 npm run dev 改为 node server.jsNODE_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 持久化,重启后不丢失