Implement CHIS login flow

This commit is contained in:
ila
2026-07-05 11:01:30 +08:00
parent aaf35f2d7a
commit 07e6c2b9a3
13 changed files with 450 additions and 17 deletions
+32
View File
@@ -146,6 +146,38 @@
## 内部模块合约
### `ChisLoginClient.from_config(config).login(username, password)`
输入:
```python
username: str
password: str
```
输出:
```python
ChisLoginSession(
cookie=str,
jsessionid=str,
role_id=str,
role_name=str,
user_name=str,
roles_result=dict,
apps_result=dict,
)
```
职责:
- 从 `CHIS_BASE_URL`、`CHIS_PUBLIC_KEY`、`CHIS_PROXY` 创建登录客户端。
- 调用 `logon/myRoles`,使用 SM2 加密密码和时间戳 `d`。
- 优先选择 `责任医生助理` 或 `责任医生` 角色。
- 调用 `logon/myApps` 获取应用上下文。
- 从 `Set-Cookie` 提取 `JSESSIONID`,组装 CHIS cookie。
- 登录失败、缺少允许角色、缺少 cookie 时抛出 `ChisLoginError`,错误对象包含稳定 `code`。
### `ChisSessionManager.ensure_session(account_ref)`
输入: