fix: Authorization 改为标准 Bearer 格式,补充 CLAUDE.md 架构文档
- request.js: Authorization 头添加 Bearer 前缀 - CLAUDE.md: 新增路由与认证流程、markRaw 说明、getGenerateDataExtras 接口 - CLAUDE.md: 修正 request.js 描述和环境变量表
This commit is contained in:
parent
6d922b66ff
commit
97808fa21b
@ -8,7 +8,8 @@
|
||||
"Bash(git -C \"D:/WebUI/Kexue/操作平台/AI_Painting_V2.0\" log --oneline --all -- src/components/dialogBox/index.vue)",
|
||||
"Bash(git -C \"D:/WebUI/Kexue/操作平台/AI_Painting_V2.0\" log --all --oneline --follow -p -- src/stores/display.js)",
|
||||
"Bash(git -C \"D:/WebUI/Kexue/操作平台/AI_Painting_V2.0\" log --all --oneline -p -- src/components/dialogBox/index.vue)",
|
||||
"Bash(npx eslint *)"
|
||||
"Bash(npx eslint *)",
|
||||
"Bash(codegraph sync *)"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
16
CLAUDE.md
16
CLAUDE.md
@ -22,6 +22,15 @@ AI 绘画/视频/音乐生成前端操作平台,通过 HTTP 接口对接算力
|
||||
|
||||
**核心架构:Platform Descriptor 模式。** Painting、Video 和 Music 是三个独立的平台包,通过统一的注册表动态加载。dialogBox 是通用编排壳,不包含任何平台特定逻辑。
|
||||
|
||||
### 路由与认证
|
||||
|
||||
- **路由表**:`/` → 重定向 `/home`;`/login` → 登录页(懒加载);`/home` 和 `/generate` → 同一主页组件 `views/home/index.vue`
|
||||
- **Token 来源**:两种方式 — localStorage(`auth.ts` 存取)或 URL query `?token=xxx`(外部认证回调跳转)
|
||||
- **路由守卫**(`router/index.js:32`):`beforeEach` 中先检查 URL query 是否有 token,有则写入 localStorage;无则检查 localStorage;都没有 → 重定向 `/login`
|
||||
- **白名单**:`/login` 直接放行,不触发 token 校验
|
||||
- **Token 校验**:非白名单路径调 `userStore.checkTokenValid()` → `checkUsertokenApi()` 验证,失败则跳转 `/login`
|
||||
- **用户信息**:token 有效且 `userInfo.id` 为空时自动调用 `getInfo()` 获取用户信息(含 `sessionId`)。`userStore` 使用 pinia persist 将 `token`/`roles`/`permissions` 等持久化到 localStorage
|
||||
|
||||
### 关键目录
|
||||
|
||||
```
|
||||
@ -82,7 +91,7 @@ src/
|
||||
│ └── canvas/ # 图片画布编辑(圆/矩形选区,局部重绘,undo/redo)
|
||||
├── views/ # 页面(home、login)
|
||||
└── utils/
|
||||
├── request.js # Axios 实例 + 拦截器:统一 Auth(不带 Bearer)+ 按前缀路由 baseURL
|
||||
├── request.js # Axios 实例 + 拦截器:统一 Auth(Bearer 格式)+ 按前缀路由 baseURL
|
||||
├── taskPolling.js # 任务生成入口:组装参数 → POST 创建任务 → 首次 5s + 后续 20s HTTP 轮询直至完成/失败
|
||||
├── modelApi.js # 模型业务层:localStorage 缓存 + 并发去重。平台模型列表(30s TTL) + 模型参数配置(60s TTL)
|
||||
├── modelConfigHelper.js # 模型配置共享工具:syncDefaults / syncParamValues / getDimConfig / checkShowWhen
|
||||
@ -95,7 +104,7 @@ src/
|
||||
|
||||
### Platform Descriptor 模式
|
||||
|
||||
每个平台通过 `defineXxxPlatform()` 工厂函数返回标准接口:
|
||||
每个平台通过 `defineXxxPlatform()` 工厂函数返回标准接口。`markRaw()` 标记组件使其不被 Vue 变为响应式代理 —— 控件组件只通过 `props()` 函数接收响应式绑定,组件本身不需要响应式追踪。
|
||||
|
||||
```js
|
||||
const platform = {
|
||||
@ -126,6 +135,7 @@ const platform = {
|
||||
isImageRequired() { ... }, // 图片是否必填
|
||||
buildTaskBody({ prompt, referenceImages }) { ... }, // 构造扁平 modelParams,需将 referenceImages 映射到 imageUpload 参数
|
||||
fillFromResult(resultData) { ... }, // 从历史结果回填参数
|
||||
getGenerateDataExtras() { ... }, // (可选)返回平台专属字段,在 handleStart 中合并到 generateData,用于回填和任务列表展示
|
||||
}
|
||||
```
|
||||
|
||||
@ -362,7 +372,7 @@ Music 平台与 Painting/Video 的关键差异:
|
||||
|
||||
### 请求拦截器路由
|
||||
|
||||
拦截器统一设置 `Authorization: <token>`(不带 Bearer 前缀),根据请求 URL 前缀(由环境变量 `VITE_API_TASK_PREFIX` / `VITE_API_PAY_PREFIX` / `VITE_API_AIGC_PREFIX` 定义)切换后端:
|
||||
拦截器统一设置 `Authorization: Bearer <token>`(标准 Bearer 格式),根据请求 URL 前缀(由环境变量 `VITE_API_TASK_PREFIX` / `VITE_API_PAY_PREFIX` / `VITE_API_AIGC_PREFIX` 定义)切换后端:
|
||||
|
||||
| URL 前缀(由环境变量定义) | 目标环境变量 |
|
||||
|---------------------------|-------------|
|
||||
|
||||
@ -33,8 +33,7 @@ service.interceptors.request.use(
|
||||
config.headers = {}
|
||||
}
|
||||
|
||||
// 统一 Auth 头不带 Bearer 前缀
|
||||
if (token) config.headers.Authorization = token
|
||||
if (token) config.headers.Authorization = `Bearer ${token}`
|
||||
|
||||
if (config.url?.startsWith(import.meta.env.VITE_API_TASK_PREFIX)) { // 算力调度后端
|
||||
config.baseURL = import.meta.env.VITE_API_TASK_TARGET
|
||||
|
||||
Loading…
Reference in New Issue
Block a user