1. Extract shared module: consolidate getLogDir() and isProduction() into shared.ts, eliminate duplication across logger modules 2. Make retention config effective: delay file transport creation until config is loaded, apply appRetention/auditRetention from config.yaml 3. Add before-quit log flush: close logger and audit logger on app exit to prevent log loss 4. Unify logError entry point: remove duplicate logError from index.ts, re-export from error-utils.ts with richer error context 5. Renderer log level filtering: add client-side level check in preload to skip IPC for filtered-out messages 6. Child logger cache + audit cleanup: cache child loggers in IPC handler for performance, remove redundant timestamp format in audit logger Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
模块文档索引
本目录收录项目核心业务模块的开发文档。
这些文档的目标不是替代源码,而是帮助开发者快速理解:
- 每个模块负责什么
- 模块的入口文件在哪里
- 模块之间如何协作
- 主要数据和调用链怎么流动
- 改某个功能时应该先看哪些文件
推荐阅读方式
如果你是第一次进入模块层,建议按下面顺序阅读:
authextractorvalidationcleanerupdatesettings
这个顺序基本对应项目的主要业务路径和依赖关系。
模块关系图
graph TD
Auth[auth]
Extractor[extractor]
Validation[validation]
Cleaner[cleaner]
Update[update]
Settings[settings]
Auth --> Extractor
Auth --> Cleaner
Auth --> Settings
Auth --> Update
Extractor --> Validation
Validation --> Cleaner
可以把它理解成:
auth提供用户上下文,是多个模块的前置条件extractor负责输入和提取,是共享订单号的来源之一validation把共享数据和数据库数据转成 Cleaner 可消费结果cleaner消费校验结果并执行 ERP 清理update根据当前用户上下文给出更新能力和状态settings提供 ERP 凭据等配置能力
模块目录一览
| 模块 | 文档 | 核心职责 |
|---|---|---|
| Auth | auth.md |
登录、silent login、管理员代切用户、用户上下文同步 |
| Extractor | extractor.md |
订单号输入、提取执行、日志与共享订单号同步 |
| Validation | validation.md |
共享 Production IDs、校验查询、结果富化、Cleaner 数据准备 |
| Cleaner | cleaner.md |
物料校验展示、删除计划保存、ERP 清理执行、报告展示 |
| Update | update.md |
更新目录、状态广播、下载、安装、用户/管理员更新视图 |
| Settings | settings.md |
ERP 凭据加载与保存、当前用户配置管理 |
模块入口地图
graph LR
Renderer[Renderer Pages / Hooks]
Preload[Preload APIs]
IPC[IPC Handlers]
Services[Main Services]
Modules[业务模块文档]
Renderer --> Preload
Preload --> IPC
IPC --> Services
Modules --> Renderer
Modules --> IPC
Modules --> Services
阅读模块文档时,建议同时关注三层入口:
- renderer 入口 页面、组件、hooks
- IPC 入口 handler
- main service 入口 application service / domain service
按任务选择阅读路径
如果你是按任务来看文档,可以参考下面这张图:
flowchart TD
Task[当前任务]
Login[登录 / 用户切换]
Extract[订单提取]
Validate[物料校验]
Clean[ERP 清理]
UpdateTask[应用更新]
Config[配置修改]
Task --> Login
Task --> Extract
Task --> Validate
Task --> Clean
Task --> UpdateTask
Task --> Config
Login --> AuthDoc[auth.md]
Extract --> ExtractorDoc[extractor.md]
Validate --> ValidationDoc[validation.md]
Clean --> CleanerDoc[cleaner.md]
UpdateTask --> UpdateDoc[update.md]
Config --> SettingsDoc[settings.md]
和 architecture 文档的关系
modules/ 和 architecture/ 的关系如下:
graph LR
Architecture[architecture/]
Modules[modules/]
Guides[guides/]
Architecture --> Modules
Modules --> Guides
理解方式可以是:
- 先看
architecture/建立系统整体认知 - 再看
modules/深入理解业务模块 - 最后看
guides/落到具体开发动作
后续扩展建议
如果后续业务边界继续演进,可以在这里继续增加模块文档,例如:
report.mdmaterials.mdconfig.mdlogger.md
新增模块文档时,建议同步更新这份索引页,让 modules/README.md 持续保持为模块层总入口。