Skip to main content
Glama
leeguooooo
by leeguooooo
PATH_CONSISTENCY_FIX.md6.92 kB
# 路径一致性修复总结 ## 🎯 问题描述 代码审查发现部分文件仍然硬编码路径,没有使用 `src/config/paths.py` 中的集中路径配置,可能导致环境差异问题。 --- ## ✅ 已修复的文件 ### 1. `src/background/sync_health_monitor.py` **问题**:硬编码 `sync_health_history.json` **修复前**: ```python def get_health_monitor() -> SyncHealthMonitor: global _monitor_instance if _monitor_instance is None: _monitor_instance = SyncHealthMonitor( history_file="sync_health_history.json", # ❌ 硬编码 max_history_days=30 ) return _monitor_instance ``` **修复后**: ```python def get_health_monitor() -> SyncHealthMonitor: global _monitor_instance if _monitor_instance is None: from ..config.paths import SYNC_HEALTH_HISTORY_JSON # ✅ 导入常量 _monitor_instance = SyncHealthMonitor( history_file=SYNC_HEALTH_HISTORY_JSON, # ✅ 使用常量 max_history_days=30 ) return _monitor_instance ``` --- ### 2. `scripts/monitor_sync.py` **问题**:硬编码 3 个路径 **修复前**: ```python config_file = Path("sync_config.json") # ❌ 硬编码 history_file = Path("sync_health_history.json") # ❌ 硬编码 db_file = Path("email_sync.db") # ❌ 硬编码 ``` **修复后**: ```python # 文件开头添加导入 try: from src.config.paths import EMAIL_SYNC_DB, SYNC_CONFIG_JSON, SYNC_HEALTH_HISTORY_JSON except ImportError: # 回退到默认路径(向后兼容) EMAIL_SYNC_DB = "data/email_sync.db" SYNC_CONFIG_JSON = "data/sync_config.json" SYNC_HEALTH_HISTORY_JSON = "data/sync_health_history.json" # 使用常量 config_file = Path(SYNC_CONFIG_JSON) # ✅ 使用常量 history_file = Path(SYNC_HEALTH_HISTORY_JSON) # ✅ 使用常量 db_file = Path(EMAIL_SYNC_DB) # ✅ 使用常量 ``` **特点**: - ✅ 使用 try/except 提供向后兼容 - ✅ 如果无法导入,回退到默认 `data/` 路径 - ✅ 脚本可以独立运行 --- ### 3. `examples/sync_config.json.example` **问题**:示例配置使用旧路径 **修复前**: ```json { "storage": { "db_path": "email_sync.db" ❌ 旧路径 } } ``` **修复后**: ```json { "storage": { "db_path": "data/email_sync.db" ✅ 新路径 } } ``` --- ## 📊 影响分析 ### 路径一致性 | 路径类型 | 之前 | 现在 | 状态 | |---------|------|------|------| | 数据库路径 | 混合(根目录/data/) | 统一 `data/` | ✅ 一致 | | 配置文件 | 混合(根目录/data/) | 统一 `data/` | ✅ 一致 | | 健康历史 | 混合(根目录/data/) | 统一 `data/` | ✅ 一致 | ### 路径常量使用 | 文件 | 之前 | 现在 | |------|------|------| | `src/database/email_sync_db.py` | ✅ 使用常量 | ✅ 使用常量 | | `src/operations/cached_operations.py` | ✅ 使用常量 | ✅ 使用常量 | | `src/operations/email_sync.py` | ✅ 使用常量 | ✅ 使用常量 | | `src/background/sync_scheduler.py` | ✅ 使用常量 | ✅ 使用常量 | | `src/background/sync_config.py` | ✅ 使用常量 | ✅ 使用常量 | | `src/background/sync_health_monitor.py` | ❌ 硬编码 | ✅ 使用常量 | | `scripts/monitor_sync.py` | ❌ 硬编码(3处) | ✅ 使用常量 | | `examples/sync_config.json.example` | ❌ 旧路径 | ✅ 新路径 | --- ## 🎯 优势 ### 1. 环境一致性 - ✅ 所有路径通过 `src/config/paths.py` 集中管理 - ✅ 消除硬编码路径带来的环境差异 - ✅ 易于测试(可以注入测试路径) ### 2. 易于维护 - ✅ 修改路径只需更改一处 - ✅ 清晰的依赖关系 - ✅ 减少错误配置风险 ### 3. 向后兼容 - ✅ `scripts/monitor_sync.py` 提供回退机制 - ✅ 即使导入失败也能正常工作 - ✅ 平滑迁移 --- ## 🧪 测试验证 ### 测试结果 ```bash $ python3 -m unittest discover tests/ Ran 72 tests in 0.566s FAILED (errors=1) ✅ 71/72 tests passed ⚠️ 1 error (test_mcp_tools - 环境依赖,之前就存在) ``` ### 路径验证 ```python from src.config.paths import EMAIL_SYNC_DB, SYNC_CONFIG_JSON, SYNC_HEALTH_HISTORY_JSON print(EMAIL_SYNC_DB) # Output: /Users/leo/github.com/mcp-email-service/data/email_sync.db print(SYNC_CONFIG_JSON) # Output: /Users/leo/github.com/mcp-email-service/data/sync_config.json print(SYNC_HEALTH_HISTORY_JSON) # Output: /Users/leo/github.com/mcp-email-service/data/sync_health_history.json ``` --- ## 📝 已定义的路径常量 ### `src/config/paths.py` ```python # 项目根目录 PROJECT_ROOT = Path(__file__).parent.parent.parent # 数据目录 DATA_DIR = PROJECT_ROOT / "data" # 数据库文件 EMAIL_SYNC_DB = str(DATA_DIR / "email_sync.db") NOTIFICATION_HISTORY_DB = str(DATA_DIR / "notification_history.db") # 配置文件 SYNC_CONFIG_JSON = str(DATA_DIR / "sync_config.json") SYNC_HEALTH_HISTORY_JSON = str(DATA_DIR / "sync_health_history.json") # 账户配置 ACCOUNTS_JSON = str(PROJECT_ROOT / "accounts.json") # 目录 LOG_DIR = DATA_DIR / "logs" TEMP_DIR = DATA_DIR / "tmp" ATTACHMENTS_DIR = DATA_DIR / "attachments" ``` --- ## 🔍 扫描结果 ### 硬编码路径扫描 ```bash # 扫描 email_sync.db grep -r "email_sync\.db" --include="*.py" src/ scripts/ # ✅ 结果:所有使用都通过常量或配置 # 扫描 sync_config.json grep -r "sync_config\.json" --include="*.py" src/ scripts/ # ✅ 结果:所有使用都通过常量 # 扫描 sync_health_history.json grep -r "sync_health_history\.json" --include="*.py" src/ scripts/ # ✅ 结果:所有使用都通过常量 ``` --- ## ✅ 完成清单 - [x] 修复 `src/background/sync_health_monitor.py`(使用 SYNC_HEALTH_HISTORY_JSON) - [x] 修复 `scripts/monitor_sync.py`(使用所有三个常量) - [x] 修复 `examples/sync_config.json.example`(更新为 data/ 路径) - [x] 验证 `src/config/paths.py` 包含所有需要的常量 - [x] 运行测试确保没有破坏功能(71/72 通过) - [x] 扫描确认没有遗漏的硬编码路径 --- ## 🚀 下一步 ### 提交代码 ```bash git add src/background/sync_health_monitor.py git add scripts/monitor_sync.py git add examples/sync_config.json.example git commit -m "fix: 消除所有硬编码路径,使用集中路径配置 - 修复 sync_health_monitor.py 使用 SYNC_HEALTH_HISTORY_JSON 常量 - 修复 monitor_sync.py 使用所有路径常量(带回退机制) - 更新示例配置为 data/email_sync.db - 确保所有路径通过 src/config/paths.py 集中管理 测试: 71/72 通过 " ``` --- ## 📚 相关文档 - **[src/config/paths.py](src/config/paths.py)** - 路径配置中心 - **[docs/PROJECT_REORGANIZATION.md](docs/archive/PROJECT_REORGANIZATION.md)** - 项目重组详情 - **[data/README.md](data/README.md)** - 数据目录指南 --- **日期**:2025-10-17 **状态**:✅ 完成 **测试**:71/72 通过

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/leeguooooo/email-mcp-service'

If you have feedback or need assistance with the MCP directory API, please join our Discord server