refactor: centralize configuration management with type-safe schema

Major changes:
- Add dataclass-based configuration schema with validation (config/schema.py)
- Create centralized config loader and default values (config/defaults.py, config/loader.py)
- Remove duplicate database_config.py, merge into unified structure
- Consolidate browser settings into ERP config
- Add batch_size parameter support to extractor

Bug fixes:
- Fix settings save error by updating config paths (browser.* → erp.*)
- Fix batch_size not being applied in data extraction

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Misaka_Company
2026-02-05 14:27:28 +08:00
parent 885d87dff8
commit 13bc4520bf
11 changed files with 431 additions and 136 deletions

View File

@@ -114,7 +114,7 @@ class DataExtractionTab(ttk.Frame):
self.verbose_var = tk.BooleanVar(value=self.config.get('extraction.verbose', True))
ttk.Checkbutton(options_group, text="详细日志", variable=self.verbose_var).grid(row=0, column=0, sticky="w", padx=5)
self.headless_var = tk.BooleanVar(value=self.config.get('browser.headless', True))
self.headless_var = tk.BooleanVar(value=self.config.get('erp.headless', True))
ttk.Checkbutton(options_group, text="无头模式 (不显示浏览器)", variable=self.headless_var).grid(row=0, column=1, sticky="w", padx=5)
# 进度显示
@@ -200,7 +200,8 @@ class DataExtractionTab(ttk.Frame):
username=self.config.get('erp.username'),
password=self.config.get('erp.password'),
headless=self.headless_var.get(),
verbose=self.verbose_var.get()
verbose=self.verbose_var.get(),
batch_size=self.config.get('extraction.batch_size', 100)
)
# 创建实时输出流,每次写入立即更新 GUI