docs: add developer guides

This commit is contained in:
Misaka
2026-03-21 20:48:09 +08:00
parent 31a32db899
commit 180f4aab0a
6 changed files with 957 additions and 0 deletions

View File

@@ -0,0 +1,189 @@
# 调试指南
本文档说明项目里最常见的调试入口、日志观察方式和问题定位路径。
## 1. 调试总览
```mermaid
flowchart TD
Problem[出现问题]
Area{问题在哪一层}
Renderer[Renderer]
Preload[Preload / IPC]
Main[Main / Services]
External[ERP / DB / Update]
Problem --> Area
Area --> Renderer
Area --> Preload
Area --> Main
Area --> External
```
## 2. 常见调试入口
项目里当前有几个现成的调试入口:
```bash
npm run debug:erp-login
npm run debug:config-path
npm run test:rustfs
```
对应文件:
- `src/main/tools/erp-login-debug.ts`
- `src/main/tools/config-path-debug.ts`
- `src/main/tools/rustfs-test.ts`
## 3. 调试分层思路
### 3.1 Renderer 问题
适合从这里开始:
- `src/renderer/src/App.tsx`
- `src/renderer/src/pages/*`
- `src/renderer/src/hooks/*`
常见现象:
- 页面不更新
- 弹窗打不开
- 表单状态异常
- 请求重复触发
### 3.2 Preload / IPC 问题
```mermaid
graph LR
Renderer --> Preload
Preload --> Handler
Handler --> Service
```
定位顺序建议:
1. renderer 是否正确调用 `window.electron.xxx`
2. preload facade 是否暴露了正确接口
3. handler 是否已注册
4. service 是否返回了预期结构
### 3.3 Main 进程问题
适合从这里开始:
- `src/main/index.ts`
- `src/main/bootstrap/*`
- `src/main/ipc/*`
- `src/main/services/*`
常见现象:
- 启动失败
- 数据库连接失败
- ERP 登录失败
- 更新检查失败
## 4. Cleaner 调试路径
```mermaid
flowchart TD
CleanerIssue[Cleaner 问题]
UI[CleanerPage / useCleaner]
Validation[validation-handler / service]
Handler[cleaner-handler]
AppSvc[cleaner-application-service]
ERP[erp/cleaner.ts]
Report[report / rustfs]
CleanerIssue --> UI
UI --> Validation
Validation --> Handler
Handler --> AppSvc
AppSvc --> ERP
ERP --> Report
```
## 5. Extractor 调试路径
```mermaid
flowchart TD
ExtractorIssue[Extractor 问题]
Input[ExtractorPage / OrderNumberInput]
Hook[useExtractor]
Shared[useSharedProductionIds]
Handler[extractor-handler]
Service[erp/extractor.ts]
ExtractorIssue --> Input
Input --> Hook
Input --> Shared
Hook --> Handler
Handler --> Service
```
## 6. Update 调试路径
```mermaid
flowchart TD
UpdateIssue[Update 问题]
Hook[useAppBootstrap]
Dialog[UpdateDialog / useUpdateDialogState]
Handler[update-handler]
Service[UpdateService]
Catalog[UpdateCatalogService]
Installer[UpdateInstaller]
Storage[UpdateStorageClient]
UpdateIssue --> Hook
UpdateIssue --> Dialog
Hook --> Handler
Dialog --> Handler
Handler --> Service
Service --> Catalog
Service --> Installer
Service --> Storage
```
## 7. 认证调试路径
```mermaid
sequenceDiagram
participant App as useAppBootstrap
participant Auth as auth-handler
participant AppSvc as auth-application-service
participant Session as session-manager
App->>Auth: silentLogin / login / switchUser
Auth->>AppSvc: application service
AppSvc->>Session: user resolution
Session-->>AppSvc: session result
AppSvc-->>Auth: response
Auth-->>App: auth state
```
## 8. 日志观察建议
调试时优先关注:
- renderer 控制台输出
- main 进程日志
- 关键 application service 的 logger 输出
- audit log如果问题涉及登录、清理等操作记录
## 9. 定位建议
出现问题时,建议优先回答这几个问题:
1. 问题发生在哪一层
2. 是状态流问题还是外部依赖问题
3. 是请求没发出、没到 handler还是 service 失败
4. 是同步返回问题,还是事件推送问题
## 10. 调试原则
- 先缩小层级,再深入代码
- 先看入口与边界,再看实现细节
- 能复现就尽量用最小路径复现
- 复杂主链路优先画调用链再改代码