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

@@ -198,10 +198,10 @@ class SettingsTab(ttk.Frame):
self.db_username_var.set(self.config.get('database.username', ''))
self.db_password_var.set(self.config.get('database.password', ''))
# 浏览器设置
self.browser_headless_var.set(self.config.get('browser.headless', True))
self.browser_ignore_https_var.set(self.config.get('browser.ignore_https_errors', True))
self.browser_auto_close_var.set(self.config.get('browser.auto_close', True))
# 浏览器设置(已合并到 ERP 配置中)
self.browser_headless_var.set(self.config.get('erp.headless', True))
self.browser_ignore_https_var.set(self.config.get('erp.ignore_https_errors', True))
self.browser_auto_close_var.set(self.config.get('erp.auto_close_browser', True))
# 路径设置
self.data_dir_selector.set(self.config.get('paths.data_dir', ''))
@@ -226,10 +226,10 @@ class SettingsTab(ttk.Frame):
self.config.set('database.username', self.db_username_var.get())
self.config.set('database.password', self.db_password_var.get())
# 浏览器设置
self.config.set('browser.headless', self.browser_headless_var.get())
self.config.set('browser.ignore_https_errors', self.browser_ignore_https_var.get())
self.config.set('browser.auto_close', self.browser_auto_close_var.get())
# 浏览器设置(已合并到 ERP 配置中)
self.config.set('erp.headless', self.browser_headless_var.get())
self.config.set('erp.ignore_https_errors', self.browser_ignore_https_var.get())
self.config.set('erp.auto_close_browser', self.browser_auto_close_var.get())
# 路径设置
self.config.set('paths.data_dir', self.data_dir_selector.get())