docs: add developer module guides

This commit is contained in:
Misaka
2026-03-21 20:37:50 +08:00
parent 57ca1d5650
commit 14e7abe11e
6 changed files with 852 additions and 0 deletions

View File

@@ -0,0 +1,119 @@
# Auth 模块
`Auth` 模块负责桌面端用户认证、silent login、管理员代切用户以及把用户上下文同步给更新等后续模块。
## 1. 模块职责
- 获取机器名
- 执行 silent login
- 用户名密码登录
- 管理员查看用户列表并切换用户
- 登出并清理会话
- 同步当前用户类型到更新模块
## 2. 模块结构
```mermaid
graph TD
App[useAppBootstrap]
Preload[preload.auth]
Handler[auth-handler]
AppSvc[auth-application-service]
Session[session-manager]
Update[update-service]
App --> Preload
Preload --> Handler
Handler --> AppSvc
AppSvc --> Session
AppSvc --> Update
```
## 3. 关键入口文件
- `src/renderer/src/hooks/useAppBootstrap.ts`
- `src/renderer/src/components/app/UnauthenticatedApp.tsx`
- `src/main/ipc/auth-handler.ts`
- `src/main/services/auth/auth-application-service.ts`
- `src/main/services/user/session-manager.ts`
## 4. 认证主流程
```mermaid
sequenceDiagram
participant App as useAppBootstrap
participant Preload as preload.auth
participant Handler as auth-handler
participant AppSvc as auth-application-service
participant Session as session-manager
App->>Preload: getComputerName()
App->>Preload: silentLogin()
Preload->>Handler: invoke
Handler->>AppSvc: silentLogin()
AppSvc->>Session: loginByComputerName()
Session-->>AppSvc: userInfo
AppSvc-->>Handler: login result
Handler-->>Preload: IpcResult
Preload-->>App: auth state
```
## 5. 管理员分支
如果 silent login 或显式登录得到的是管理员账号,认证流程不会直接结束,而是进入“代切用户”分支。
```mermaid
flowchart TD
Login[登录成功]
Admin{是否 Admin}
Select[getAllUsers]
Switch[switchUser]
Authenticated[进入已认证态]
Login --> Admin
Admin -- 否 --> Authenticated
Admin -- 是 --> Select
Select --> Switch
Switch --> Authenticated
```
## 6. 与更新模块的关系
Auth 模块和 Update 模块之间有明确联动:
```mermaid
graph LR
Auth[AuthApplicationService]
UserType[UserType]
Update[UpdateService]
Auth --> UserType
UserType --> Update
```
在以下时机会同步用户上下文:
- silent login 成功
- 显式登录成功
- 用户切换成功
- logout
## 7. 最近的结构优化
Auth 相关逻辑最近做过两项关键收敛:
- 把编排逻辑从 `auth-handler` 下沉到 `auth-application-service`
-`silentLogin()` 中加入并发去重,避免重复 silent login 触发连接风暴
## 8. 常见改动点
- 改前端启动认证:`useAppBootstrap.ts`
- 改登录与切换流程:`auth-application-service.ts`
- 改会话层:`session-manager.ts`
- 改 IPC 契约:`auth-handler.ts`
## 9. 修改建议
- 页面不要直接堆认证细节,优先继续收敛到 bootstrap hook
- 用户上下文变化时,记得考虑 update 状态是否需要同步
- silent login 流程不要破坏当前的防重入保护