Files
2026-03-21 20:48:09 +08:00

190 lines
3.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 调试指南
本文档说明项目里最常见的调试入口、日志观察方式和问题定位路径。
## 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. 调试原则
- 先缩小层级,再深入代码
- 先看入口与边界,再看实现细节
- 能复现就尽量用最小路径复现
- 复杂主链路优先画调用链再改代码