docs: 适配单机场景,简化存储与认证方案

- 数据库:MySQL → SQLite,去掉连接池配置和 golang-migrate
- 文件存储:OSS 对象存储 → 本地文件系统,统一 Gin 静态文件服务
- ID 生成:Sonyflake → 前缀+随机字符串
- 认证:Bearer Token → httpOnly Cookie,WebSocket 同步改为 Cookie 认证
- 质检重试:PromptBuilder 重试时注入 RejectReason 改进提示词
- 合并 multi-agent-pipeline.md 到 backend.md,消除文档重复
- 移除缓存管理 API(暴露内部实现细节)
This commit is contained in:
2026-05-24 10:56:40 +08:00
parent f4c1a10403
commit cbcda82515
7 changed files with 206 additions and 255 deletions
+5 -4
View File
@@ -10,7 +10,7 @@ Vite 6 + React 18 + TypeScript + zustand + react-router-dom
| UI 框架 | React 18 | 函数组件 + Hooks |
| 状态管理 | zustand | 轻量,支持 devtools 中间件 |
| 路由 | react-router-dom v6 | SPA 模式 |
| 实时通信 | 原生 WebSocket | 连接后端 `/api/v1/tasks/:taskId/ws` |
| 实时通信 | 原生 WebSocket | 连接后端 `/api/v1/tasks/:taskId/ws`(Cookie 认证) |
| HTTP 请求 | fetch + 封装层 | 统一错误处理、响应解包 |
## 目录结构
@@ -97,7 +97,7 @@ sequenceDiagram
User->>GP: 点击提交
GP->>API: POST /api/v1/generate
API-->>GP: 返回 taskId
GP->>WS: ws://host/api/v1/tasks/:taskId/ws
GP->>WS: ws://host/api/v1/tasks/:taskId/ws(Cookie 自动携带)
loop 管线执行中
WS-->>GP: PipelineProgress(stage + progress)
GP->>GP: ProgressBar 更新阶段和进度
@@ -141,7 +141,7 @@ sequenceDiagram
### API 请求错误
- `api/client.ts` 统一拦截 `code !== 0` 的响应,抛出业务异常
- 401:自动清除本地 Token,跳转到登录页(或提示重新登录)
- 401:跳转到登录页(Token 已过期或无效,Cookie 会被服务端清除)
- 403:提示无权访问,不自动跳转
- 429:提示请求过于频繁,稍后重试
- 500:展示通用错误提示
@@ -224,9 +224,10 @@ type PipelineStage =
`api/client.ts` 统一封装:
- baseURL 从环境变量读取,开发模式默认 `/api/v1`
- 所有 fetch 请求设置 `credentials: 'include'`,自动携带 Cookie
- 所有响应按 `{ code, message, data }` 解包,`code !== 0` 时抛错
- 统一 401/403/500 错误处理
- WebSocket 连接封装为 `createTaskSocket(taskId)` 返回可订阅对象
- WebSocket 连接封装为 `createTaskSocket(taskId)` 返回可订阅对象(浏览器自动携带 Cookie)
### API 类型定义(api/types.ts)