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:
+5
-4
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user