feat: add django user center auth integration
This commit is contained in:
+91
-13
@@ -21,11 +21,18 @@ API base: http://127.0.0.1:8000/api/v1
|
||||
|
||||
### 1.2 必传 Header
|
||||
|
||||
所有业务接口都必须携带以下 Header:
|
||||
正式联调时,前端必须携带宿主系统登录态,推荐使用 `Authorization`:
|
||||
|
||||
| Header | 类型 | 说明 |
|
||||
|---|---:|---|
|
||||
| `X-User-Id` | string | 宿主系统传入的用户标识。后端按该字段隔离会话、提交、评价和历史记录。 |
|
||||
| `Authorization` | string | 宿主系统登录 token,例如 `Bearer <token>`。医疗问诊 Agent 会转发到 Django `/api/user/users/me/`。 |
|
||||
| `Cookie` | string | 如果宿主系统使用 Cookie 登录,浏览器可通过 `withCredentials` 携带 Cookie。 |
|
||||
|
||||
本地 Demo 兼容以下 Header:
|
||||
|
||||
| Header | 类型 | 说明 |
|
||||
|---|---:|---|
|
||||
| `X-User-Id` | string | Demo 兼容用户标识。正式联调启用外部鉴权后,以 Django `/me/` 返回的用户为准。 |
|
||||
| `X-Entry-Scene` | string | 入口场景。Demo 前端默认 `vue_demo`。 |
|
||||
|
||||
可选 Header:
|
||||
@@ -78,11 +85,16 @@ API base: http://127.0.0.1:8000/api/v1
|
||||
| `CASE_SQL_FILE_EMPTY` | SQL 文件为空 | 提示重新导出文件。 |
|
||||
| `CASE_SQL_FILE_TOO_LARGE` | 文件超过 5MB | 提示压缩或拆分。 |
|
||||
| `CASE_SQL_IMPORT_INVALID` | SQL 解析或字段映射失败 | 展示 `errors`,不允许确认导入。 |
|
||||
| `AUTH_CREDENTIAL_REQUIRED` | 启用外部鉴权后未携带 Authorization/Cookie | 引导用户回宿主系统登录。 |
|
||||
| `AUTH_USER_CENTER_UNAVAILABLE` | Django 用户中心不可访问或超时 | 提示稍后重试,检查用户中心服务。 |
|
||||
| `AUTH_USER_INVALID` | Django 返回用户无效或登录态过期 | 引导用户重新登录。 |
|
||||
| `AUTH_USER_PARSE_FAILED` | Django 返回结构无法提取 user_id | 联系后端确认用户接口字段。 |
|
||||
|
||||
## 2. 前端主流程
|
||||
|
||||
```text
|
||||
入口页
|
||||
-> GET /auth/me
|
||||
-> GET /agent/hello
|
||||
病例页
|
||||
-> GET /cases
|
||||
@@ -130,7 +142,73 @@ inquiry -> diagnosis -> treatment -> evaluating -> evaluated
|
||||
| `evaluating` | 生成评价报告 |
|
||||
| `evaluated` | 查看报告、导出 PDF、查看历史 |
|
||||
|
||||
## 3. Agent Hello
|
||||
## 3. 认证接口
|
||||
|
||||
### `GET /auth/me`
|
||||
|
||||
用途:进入医疗问诊 Agent 前校验当前登录用户,并返回标准化用户信息。
|
||||
|
||||
调用链路:
|
||||
|
||||
```text
|
||||
Vue 前端
|
||||
-> GET /api/v1/auth/me
|
||||
FastAPI 医疗问诊 Agent
|
||||
-> GET http://192.168.2.76:8000/api/user/users/me/
|
||||
Django 用户中心
|
||||
-> 返回当前登录用户
|
||||
FastAPI
|
||||
-> 提取 user_id 并返回标准结构
|
||||
```
|
||||
|
||||
正式联调请求头:
|
||||
|
||||
```http
|
||||
Authorization: Bearer <宿主系统token>
|
||||
X-Entry-Scene: mac_vue_dev
|
||||
```
|
||||
|
||||
Cookie 登录时:
|
||||
|
||||
```http
|
||||
Cookie: sessionid=...
|
||||
X-Entry-Scene: mac_vue_dev
|
||||
```
|
||||
|
||||
Response `data`:
|
||||
|
||||
```json
|
||||
{
|
||||
"user_id": "123",
|
||||
"source": "django_user_center",
|
||||
"username": "zhangsan",
|
||||
"display_name": "张三",
|
||||
"tenant_id": null,
|
||||
"role": null
|
||||
}
|
||||
```
|
||||
|
||||
本地 Demo 兼容模式中,如果未开启外部鉴权或允许 `X-User-Id` 兜底,返回:
|
||||
|
||||
```json
|
||||
{
|
||||
"user_id": "demo_user_001",
|
||||
"source": "demo_header",
|
||||
"username": null,
|
||||
"display_name": null,
|
||||
"tenant_id": null,
|
||||
"role": null
|
||||
}
|
||||
```
|
||||
|
||||
前端处理规则:
|
||||
|
||||
- 进入 Agent 时先调用 `/auth/me`。
|
||||
- 成功后使用返回的 `user_id` 展示当前用户。
|
||||
- 后续业务接口继续携带相同 `Authorization` 或 Cookie。
|
||||
- 正式联调不要让用户手动输入 `X-User-Id`。
|
||||
|
||||
## 4. Agent Hello
|
||||
|
||||
### `GET /agent/hello`
|
||||
|
||||
@@ -170,7 +248,7 @@ Response `data`:
|
||||
- `llm_fallback_to_mock`:真实模型失败时是否回退 mock。
|
||||
- `runtime_memory_backend`:短期记忆后端,通常为 `redis` 或 `memory`。
|
||||
|
||||
## 4. 病例接口
|
||||
## 5. 病例接口
|
||||
|
||||
### `GET /cases`
|
||||
|
||||
@@ -301,7 +379,7 @@ Response `data`:
|
||||
- 用户输入固定确认文案后再调用 `DELETE`。
|
||||
- 删除成功后清空当前病例、会话、检查结果、报告缓存,并刷新 `/cases`。
|
||||
|
||||
## 5. 会话与问诊接口
|
||||
## 6. 会话与问诊接口
|
||||
|
||||
### `POST /sessions`
|
||||
|
||||
@@ -436,7 +514,7 @@ Response `data`:
|
||||
- 练习模式中是否点击提示不影响评分链路。
|
||||
- 教学互动模式当前不显示提示入口。
|
||||
|
||||
## 6. 检查/检验接口
|
||||
## 7. 检查/检验接口
|
||||
|
||||
### `GET /sessions/{session_id}/order-items`
|
||||
|
||||
@@ -491,7 +569,7 @@ Response `data`:
|
||||
- 重复申请不重复写入 runtime memory。
|
||||
- 前端按 `item_code` 去重展示。
|
||||
|
||||
## 7. 阶段提交接口
|
||||
## 8. 阶段提交接口
|
||||
|
||||
### `POST /sessions/{session_id}/complete-inquiry`
|
||||
|
||||
@@ -554,7 +632,7 @@ Response `data`:
|
||||
}
|
||||
```
|
||||
|
||||
## 8. 评价与报告接口
|
||||
## 9. 评价与报告接口
|
||||
|
||||
### `POST /sessions/{session_id}/evaluation`
|
||||
|
||||
@@ -650,7 +728,7 @@ Response `data`:
|
||||
}
|
||||
```
|
||||
|
||||
## 9. 病例 SQL 导入接口
|
||||
## 10. 病例 SQL 导入接口
|
||||
|
||||
### `POST /imports/case-sql/preview`
|
||||
|
||||
@@ -726,7 +804,7 @@ Response `data`:
|
||||
- 导入成功后刷新病例列表。
|
||||
- 如果源 SQL 缺少 `case_exam_item`,后端会生成基础检查项,保证新病例可训练。
|
||||
|
||||
## 10. 知识检索接口
|
||||
## 11. 知识检索接口
|
||||
|
||||
### `GET /knowledge/search`
|
||||
|
||||
@@ -750,7 +828,7 @@ Response `data`:
|
||||
}
|
||||
```
|
||||
|
||||
## 11. LLM 测试接口
|
||||
## 12. LLM 测试接口
|
||||
|
||||
### `POST /llm/test/deepseek-fast`
|
||||
|
||||
@@ -787,7 +865,7 @@ Request 同 Fast 测试。
|
||||
|
||||
Response 字段同 Fast 测试。
|
||||
|
||||
## 12. 前端字段枚举
|
||||
## 13. 前端字段枚举
|
||||
|
||||
| 字段 | 允许值 |
|
||||
|---|---|
|
||||
@@ -797,7 +875,7 @@ Response 字段同 Fast 测试。
|
||||
| `session.status` | `inquiry`、`diagnosis`、`treatment`、`evaluating`、`evaluated` |
|
||||
| `patient.gender` | `male`、`female`、`null` |
|
||||
|
||||
## 13. 前端联调注意事项
|
||||
## 14. 前端联调注意事项
|
||||
|
||||
1. 所有请求必须带 `X-User-Id`,否则后端返回 `USER_ID_REQUIRED`。
|
||||
2. 当前 Demo 不做登录注册,`user_id` 由宿主系统或测试页传入。
|
||||
|
||||
Reference in New Issue
Block a user